精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>具有自適應亮度控制功能的節能LED燈

具有自適應亮度控制功能的節能LED燈

2022-12-30 | zip | 0.56 MB | 次下載 | 2積分

資料介紹

描述

這個想法背后的故事:

任何普通/智能家居或建筑物中使用的閃電系統仍在按照百年的開或關原理工作,需要對其進行現代化改造以實現安全能源。在白天,我們可以使用自然光來照亮我們的房屋/建筑物,但在清晨、傍晚或惡劣天氣期間,當可用的自然光較少時,我們必須使用人造光。使用當前的照明系統,我們只需將其全功率打開,而不是用人造光補充自然光。這導致大量能源的浪費,這也是我們星球上最大的危機。因此,為了節省能源,我們需要構建一個足夠智能的照明系統,以便在可用時補充自然光,而不是簡單地打開并消耗最大功率。

有目的的解決方案:

為我們的智能家居/建筑構建節能照明系統,設計具有自適應亮度控制的智能智能照明,以最大限度地利用自然光。在對這種解決方案進行很少的研究時,到目前為止我只發現了很少的 IEEE 研究論文所以這可能是第一個這樣的解決方案。這種系統的最大優勢是它的能源效率,通過改變亮度和補充自然光來保持充足的光線。

這個 Idea 被選為免費硬件,它通過 USPS 運送,但從未到貨。項目中使用的Sony Main + Ext板由Electromaker.IO提供

圖書館要求:

u8g2: https://github.com/olikraus/u8g2

apds9930: https://github.com/Depau/APDS9930

Arduino IDE 啟用 RTC:

需要 RTC 才能為 IOT 平臺啟用它并在夜間進入省電模式,因為由于外部(太陽)光不可用,我們不需要大量計算。最初我無法使用 Arduino IDE 使用 SONY Spresense 板的 CXD5602GG mcu 的內部 RTC 模塊,但在研究了它提供的 SDK 之后,我驚訝地發現了很多有用的內置函數、傳感器庫和 RTC。在這里我會要求SONY團隊提供一些關于SDK和MCU注冊及其功能的文檔。為了使用 RTC 模塊,我們需要使用給定代碼修改...\Arduino15\packages\SPRESENSE\tools\spresense-sdk\1.1.3\spresense\release\include\sdk\文件夾中可用的cxd56_rtc.h文件. 同時創建新的cxd56_rtc.c文件位于同一位置,其代碼如下所示。

使用 GPS 的自動 RTC 配置:

內置 GPS 令人印象深刻的室內性能鼓勵我添加自動 RTC 配置功能。啟動時,GPS 時間變量的值為 1980 年。因此,一旦該值發生變化,我們就可以使用 GPS 時間配置 RTC。RTC 模塊需要 Unix 時間,GPS 模塊提供標準的當前時間。可以使用time.hmktime()struct tm將 GPS 時間轉換為 Unix 時間。下面給出了通過 GPS 時間更新 RTC 模塊的代碼。

void setup_rtc(){
 if(!timeSinceEpoch){            /* check if RTC is already configured or not */
   if (Gnss.waitUpdate(-1)){     /* read GPS data */
     SpNavData NavData;
     Gnss.getNavData(&NavData);
     if (NavData.time.year!=1980){    /* check if GPS time is acquired or not */
       struct tm tm;                  /* create time struct variable */
/*
  tm_sec -> The number of seconds after the minute, normally in the range 0 to 59, but can be up to 60 to allow for leap seconds.
  tm_min -> The number of minutes after the hour, in the range 0 to 59.
  tm_hour -> The number of hours past midnight, in the range 0 to 23.
  tm_mday -> The day of the month, in the range 1 to 31.
  tm_mon -> The number of months since January, in the range 0 to 11.
  tm_year -> The number of years since 1900.
  tm_wday -> The number of days since Sunday, in the range 0 to 6.
  tm_yday -> The number of days since January 1, in the range 0 to 365. 
*/
       tm.tm_year = NavData.time.year-1900;   /*Subtract 1900 from GPS time to get years since 1900 */
       tm.tm_mon = NavData.time.month-1;      /*Subtract 1 from GPS months*/
       tm.tm_mday = NavData.time.day;
       tm.tm_hour = NavData.time.hour;
       tm.tm_min = NavData.time.minute;
       tm.tm_sec = NavData.time.sec;
       timeSinceEpoch = mktime(&tm);    /* get GMT unix time */
     }      
   }
   if(timeSinceEpoch){    /* Check if time is updated */
     rtcTime.tv_sec=timeSinceEpoch;    /* update the RTC module sec register */
     rtcTime.tv_nsec=0;                /* no info available to update nano sec register */
     up_rtc_settime(&rtcTime);        /* update the RTC time */
     rtc_status=true;                /* RTC status variable to ON/OFF RTC icon */
   }
 }
 else{
   rtc_status=false;
 }
}

PIR 傳感器接口

通用 PIR 傳感器的輸出不能與外部上拉條件一起使用。當它與任何單片機連接時,我們需要設置引腳“INPUT FLOAT”。對于具有 1.8V VDD-IO 及其 EXT 的 Sony spresense。LSF0204x 4 位雙向多電壓電平轉換器板(數據表此處) 用于輸出上拉電阻的 3.3/5V 電平轉換。所以這意味著 J2 和 J13 的每個數字 IO 引腳都不能用作浮動或下拉輸入。如果我們嘗試直接用 EXT 連接一個下拉電阻。電路板 IO 引腳將構成一個分壓器,這不是下拉電阻的目的。使用下拉的輸入低電平只能通過連接一個 R<<1K 的電阻來實現。(1K 上拉電阻用于 ext.board 上,詳情請參考 EXT.board schematic documents available HERE

為了克服這個問題,我們需要添加到外部緩沖器 IC,我使用74LS245(數據表:此處)作為 PIR 傳感器輸入和 LED 驅動器 pwm 輸出的輸入/輸出緩沖器(Fritzing 電路圖)。

APDS9930 環境光傳感器:

數字環境光傳感器 APDS9930(詳情:此處)由于其超低功耗和可編程中斷功能(此處未使用),用于代替模擬傳感器(LDR 等)進行光強度測量。這里使用的模塊有板載 5 至 3.3V LDOI2C 電平轉換電路,用于 5V 操作。

PIR 傳感器邏輯:

PIR 傳感器設置為最小延遲時間,具有超時功能的 Sony 外部中斷用于根據 PIR 傳感器輸出打開/關閉 LED。最低延遲時間設置用于使 LED 關閉延遲時間完全可編程。當 PIR 傳感器模塊設置為最小延遲時間時,如果檢測到任何物體,它會連續提供約 1 秒的開啟和約 1 秒的脈沖序列。如果 mcu 將繼續接收脈沖,則 LED 將保持點亮狀態,否則 LED 可以在接收到最后一個脈沖后經過用戶可編程的延遲時間后關閉。因此,它還可以讓我們在離開房間后(約 1 秒延遲)立即關閉 LED。

/* PIR senosr Input configured as external interrupt */
 pinMode(PIR_PIN, INPUT);
 attachInterrupt(PIR_PIN, pir_ISR, CHANGE); 

每次恢復 PIR 中斷時,我們都會使用用戶定義的延遲(秒)變量更新pir_delay變量。

/* PIR interrupt service routine */
void pir_ISR(){
  /* assign user defined delay value (seconds) to program pir delay value */
   pir_delay=pir_user_delay;
}

在我們的代碼中,我們每秒檢查一次pir_delay是否設置。如果它的設置然后打開 LED 并減少pir_delay直到變為零并關閉 LED,否則它可以通過 PIR ISR 繼續更新。這里的 pir_status變量用于在 OLED 顯示器上顯示 LED ON 或 OFF 圖標。

bool pir_sw(){
 if (pir_delay>0){
   pir_status=true;
   pir_delay--;
   return true;
 }
 else{
   pir_status=false;
   return false;
 }
}

LED驅動電路:

LED 亮度可以通過可編程恒流源或通過施加 PWM 控制的恒壓進行數字控制。在這個項目中,我使用恒壓源和 pwm 來調節 LED 亮度。

我在這個項目中使用的電源 LED (3W) 的開啟電壓約為 9.8V。為了從通用 12V 電源適配器生成此電壓,我使用了 DC-DC 降壓轉換器(也如下圖所示)。現在,將 Sony Spresense pwm 轉換為 LED 電源 pwm 所需的第二件事。經過一些在線研究,我找到了一個單電源驅動器 IC L9110(數據表:此處)。現在是從 EXT 的 3.3V 電壓電平安全驅動輸入引腳的問題。板 IO 板使用夏普PC817低成本光隔離器解決(數據表:此處)。

LED驅動邏輯:

本項目中使用的 L9110 板的數字輸入被上拉至電源電壓。因此,為了打開輸出,需要在數字 IO 引腳之一輸入低電平。這里是 EXT 的永久 PULL-UP IO 引腳。板變得非常有用,因為 LED 將保持關閉狀態,直到對其應用開啟信號對于 LED 的最大亮度(全功率打開),只需低電平(0 pwm 值-Arduino)輸入。要完全關閉 LED 高電平(1023 pwm 值-Arduino)輸入是必需的。

OLED 顯示器的圖標:

由于功耗低,該項目中使用的顯示模塊是雙色 0.96" OLED。顯示屏分為 128x16 黃色和 128x48 藍色兩半。黃色的上半部分用于顯示不同的圖標和相關的 LED 功耗級別。 LED 開/關和成功的自動 RTC 配置通過其內置 GPS 模塊也使用圖標顯示。為 OLED 模塊構建自定義圖標的最簡單方法之一是使用在線 XBM 編輯器(在此處用于此項目)。

索尼 Spresense 代碼優化問題:

當 u8g2 庫與 Arduino 或任何其他板一起使用時,代碼將毫無問題地編譯。但在 SONY 板上,它會給出 ram over flow 錯誤,因為沒有為編譯和鏈接過程設置“ gcc-arm-none-eabi ”的代碼優化標志。并使用 u8g2 庫為 RAM 提供流代碼。

憑借我有限的編譯器知識,我嘗試在 Sony Spresense 的platform.txt文件中設置代碼優化標志“-ffunction-sections,-fdata-sections”(位于 ...\AppData\Local\Arduino15\packages\SPRESENSE \hardware\spresense\1.1.3) 但生成的文件對我不起作用。所以我選擇修改字體文件。

為了克服這個 ram 溢出錯誤,我們需要修改u8g2 庫的“u8g2_fonts.c”“u8x8_fonts.c” ,如上一節所示。

畫廊:

?

?
pYYBAGOuNbSAXGxUAAIojkw-88A278.jpg
索尼 Spresense 主 + 分機。木板
?

?

?
poYBAGOuNbeAWCKtAAICGy7v-9k042.jpg
具有三態輸出的 74LS254 八通道總線收發器
?

?

?
pYYBAGOuNbmAVvYqAAF4RUyRVkQ033.jpg
LED 驅動器和 MCU 信號之間的夏普 PC817 光電隔離器
?

?

?
poYBAGOuNbyAJx88AAEmlGYVjY0980.jpg
Mini 360 DC-DC Buck Converter 為LED供電
?

?

?

?
2 色 0.96
2 色 0.96" Oled 模塊顯示 LED 狀態、帶時間和日期的 RTC 狀態以及 LED 功耗
?

?

?
pYYBAGOuNcKAfknyAACpzmSdJbg976.jpg
用于運動檢測和自動開/關 LED 燈的 PIR 傳感器
?

?

?
pYYBAGOuNcWAYEftAAGPTceqzCo796.jpg
L9110板作為LED驅動器
?

?

?

?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費