一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

外置采集溫度_讓arduino用2顆5號(hào)電池運(yùn)行1年以上

 開啟美好每一天 2015-11-16
       這次講功耗.

      如果你想把a(bǔ)rduino avr類的開發(fā)項(xiàng)目用來便攜式設(shè)置上,不管商業(yè)還是個(gè)人DIY,那么你頭一個(gè)要對(duì)付的問題就是設(shè)備功耗!
我測(cè)試atmega328p(大部分arduino 都是基于這個(gè)處理器) 最小系統(tǒng)下(16Mhz)運(yùn)行功耗是10ma,那么如果不對(duì)處理器進(jìn)行任何節(jié)電處理的話一塊手機(jī)1500mah的電池只能不間斷運(yùn)行  1500/10/24=6.5天 ,這個(gè)還是在沒有任何外圍元器件的情況下的運(yùn)行時(shí)間!
    現(xiàn)在物聯(lián)網(wǎng)非?;?那么物聯(lián)網(wǎng)正常情況是需要多個(gè)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)采集,然后上報(bào)給主機(jī)進(jìn)行聯(lián)網(wǎng)操作,或者接收主機(jī)命令進(jìn)行對(duì)其他電器的操作. 那個(gè)問題就出現(xiàn)了,很多時(shí)候數(shù)據(jù)采集的地方是沒有電源的,比如外置氣象數(shù)據(jù)采集,這個(gè)時(shí)候就需要采集設(shè)備可以使用電池來驅(qū)動(dòng),而且不能頻繁的更換電池!這就需要用到處理器的節(jié)電方案!
   
    下面我將介紹ATMEGA328P的節(jié)電解決方案.


     328P有8種節(jié)電設(shè)置,分別是:



空閑模式
當(dāng)SM2..0 為000 時(shí), SLEEP 指令將使MCU 進(jìn)入空閑模式。在此模式下,CPU 停止運(yùn)
行,而SPI、USART、模擬比較器、ADC、兩線串行接口、定時(shí)器/ 計(jì)數(shù)器、看門狗和
中斷系統(tǒng)繼續(xù)工作。這個(gè)睡眠模式只停止了clkCPU 和clkFLASH,其他時(shí)鐘則繼續(xù)工作。
象定時(shí)器溢出與USART 傳輸完成等內(nèi)外部中斷都可以喚醒MCU。如果不需要從模擬比
較器中斷喚醒MCU,為了減少功耗,可以切斷比較器的電源。方法是置位模擬比較器控
制和狀態(tài)寄存器ACSR 的ACD。如果ADC 使能,進(jìn)入此模式后將自動(dòng)啟動(dòng)一次轉(zhuǎn)換。



ADC 噪聲抑制模式
當(dāng)SM2..0 為001 時(shí), SLEEP 指令將使MCU 進(jìn)入噪聲抑制模式。在此模式下,CPU 停
止運(yùn)行,而ADC、外部中斷、兩線接口地址配置、定時(shí)器/ 計(jì)數(shù)器2 和看門狗繼續(xù)工作。
這個(gè)睡眠模式只停止了clkI/O、clkCPU 和clkFLASH,其他時(shí)鐘則繼續(xù)工作。
此模式提高了ADC 的噪聲環(huán)境,使得轉(zhuǎn)換精度更高。ADC 使能的時(shí)候,進(jìn)入此模式將
自動(dòng)啟動(dòng)一次AD 轉(zhuǎn)換。ADC 轉(zhuǎn)換結(jié)束中斷、外部復(fù)位、看門狗復(fù)位、BOD 復(fù)位、兩線
接口地址匹配中斷、定時(shí)器/ 計(jì)數(shù)器2 中斷、SPM/EEPROM 準(zhǔn)備好中斷、外部電平中斷
INT0 或INT1,或外部中斷INT2 可以將MCU 從ADC 噪聲抑制模式喚醒。


掉電模式
當(dāng)SM2..0 為010 時(shí), SLEEP 指令將使MCU 進(jìn)入掉電模式。在此模式下,外部晶體停
振,而外部中斷、兩線接口地址匹配及看門狗(如果使能的話)繼續(xù)工作。只有外部復(fù)
位、看門狗復(fù)位、BOD 復(fù)位、兩線接口地址匹配中斷、外部電平中斷INT0 或INT1,或
外部中斷INT2 可以使MCU 脫離掉電模式。這個(gè)睡眠模式停止了所有的時(shí)鐘,只有異步
模塊可以繼續(xù)工作。


省電模式
當(dāng)SM2..0 為011 時(shí), SLEEP 指令將使MCU 進(jìn)入省電模式。這一模式與掉電模式只有
一點(diǎn)不同:
如果定時(shí)器/ 計(jì)數(shù)器2 為異步驅(qū)動(dòng),即寄存器ASSR 的AS2 置位,則定時(shí)器/ 計(jì)數(shù)器2 在
睡眠時(shí)繼續(xù)運(yùn)行。除了掉電模式的喚醒方式,定時(shí)器/ 計(jì)數(shù)器2 的溢出中斷和比較匹配中
斷也可以將MCU 從休眠方式喚醒,只要TIMSK 使能了這些中斷,而且SREG 的全局中
斷使能位I 置位。
如果異步定時(shí)器不是異步驅(qū)動(dòng)的,建議使用掉電模式,而不是省電模式。因?yàn)樵谑‰娔J?/font>
下,若AS2 為0,則MCU 喚醒后異步定時(shí)器的寄存器數(shù)值是沒有定義的。
這個(gè)睡眠模式停止了除clkASY 以外所有的時(shí)鐘,只有異步模塊可以繼續(xù)工作。



Standby 模式
當(dāng)SM2..0 為110 時(shí), SLEEP 指令將使MCU 進(jìn)入Standby 模式。這一模式與掉電模式
唯一的不同之處在于振蕩器繼續(xù)工作。其喚醒時(shí)間只需要6 個(gè)時(shí)鐘周期。

擴(kuò)展Standby 模式
當(dāng)SM2..0 為111 時(shí), SLEEP 指令將使MCU 進(jìn)入擴(kuò)展的Standby 模式。這一模式與省
掉電模式唯一的不同之處在于振蕩器繼續(xù)工作。其喚醒時(shí)間只需要6 個(gè)時(shí)鐘周期。




下圖是各個(gè)模式下關(guān)閉的模塊
QQ截圖20141230175514.png

那么我們正常使用的是掉電模式,在掉電模式下328p測(cè)試耗電1ua,這是什么概念,2顆5號(hào)電池在處理器沒有進(jìn)行其他操作的情況下可以工作79年!
當(dāng)然了,我們不可能讓處理器就這樣一直待機(jī)不做其他事情,我們需要定期喚醒328P,讓他處理事情,比如采集溫濕度,PM2.5數(shù)據(jù)發(fā)送給主機(jī).那么如何喚醒呢? 答案是在掉電模式下你只能通過外部中斷和看門狗來喚醒328P,外部中斷喚醒需要外圍電路,我們優(yōu)先選擇WDT看門狗進(jìn)行喚醒.這里的看門狗不是你們知道的只有重啟328P的功能!他也可以配置成中斷事件! " ISR(WDT_vect) "中斷函數(shù),通過看門狗我們就可以在不添加外圍元件的情況設(shè)置喚醒時(shí)間了!

下面看實(shí)例:

ARDUINO 代碼
  1. #include <avr/sleep.h>
  2. #include <avr/wdt.h>

  3. volatile byte data=0;

  4. void setup() {
  5.   pinMode(13,OUTPUT);
  6.   setup_watchdog(9);
  7. // 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
  8. // 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
  9.   ACSR |=_BV(ACD);//OFF ACD
  10.   ADCSRA=0;//OFF ADC
  11.   Sleep_avr();//Sleep_Mode
  12. }

  13. void loop() {

  14. if(data>=7){
  15.   data=0;
  16. //-------------------------------
  17.    digitalWrite(13,HIGH);
  18.   delay(100);                      //此處是到達(dá)設(shè)置喚醒時(shí)間允許的程序
  19.   digitalWrite(13,LOW);
  20. //--------------------------------   
  21. Sleep_avr();
  22. }
  23. else {
  24.   Sleep_avr();  //Continue Sleep
  25. }

  26. }

  27. //Sleep mode is activated
  28. void setup_watchdog(int ii) {

  29.   byte bb;

  30.   if (ii > 9 ) ii=9;
  31.   bb=ii & 7;
  32.   if (ii > 7) bb|= (1<<5);
  33.   bb|= (1<<WDCE);

  34.   MCUSR &= ~(1<<WDRF);
  35.   // start timed sequence
  36.   WDTCSR |= (1<<WDCE) | (1<<WDE);
  37.   // set new watchdog timeout value
  38.   WDTCSR = bb;
  39.   WDTCSR |= _BV(WDIE);


  40. }
  41. //WDT interrupt
  42. ISR(WDT_vect) {

  43.   ++data;
  44. // wdt_reset();

  45. }

  46. void Sleep_avr(){
  47.   set_sleep_mode(SLEEP_MODE_PWR_DOWN  ); // sleep mode is set here
  48.   sleep_enable();
  49.   sleep_mode();                        // System sleeps here
  50. }


這是一個(gè)配置成56秒喚醒一次對(duì)5號(hào)端口設(shè)置高電平100ms的程序,其中if(data>=7)是data(看門狗)超時(shí)大于7次就喚醒CPU進(jìn)行高電平100ms的函數(shù),看門狗超時(shí)時(shí)間已設(shè)置成8秒,你可以調(diào)節(jié)if(data>=7)設(shè)置成你想要的喚醒時(shí)間!
通過這樣的節(jié)電設(shè)置以后這個(gè)程序可以運(yùn)行至少幾年!

代碼用arduino IDE寫的,IDE不支持中文注釋,英文注釋將就看吧,不理解的代碼留言解答.

     要改變喚醒時(shí)間是改這個(gè)函數(shù):
    if(data>=7)
    函數(shù)里面7的意思是有7次看門狗8秒超時(shí)復(fù)位.比如你要設(shè)置24秒那就寫if(data>=3)
   公式是:3*8=24





使用休眠模式制作了一個(gè)外置氣象站,使用amtega328P用nrf24l01發(fā)送ds18b20采集的數(shù)據(jù),每2分鐘發(fā)生一次,平時(shí)待機(jī)功耗控制在10ua左右,設(shè)計(jì)可以使用2顆南孚電池工作超過1年時(shí)間

實(shí)物圖
436354243D2EC9B17FADAC1D02D5AD84.png



外置發(fā)送硬件先按照328P最小系統(tǒng)搭建,然后連接nrf24l01p與ds1820b.


按照arduino 引腳連接如下表
arduino     nrf24l01p
13->         SCK
12->         MISO     
11->         MOSI
8->           CE
7->           CSN
arduino     ds1820b
4->            數(shù)據(jù)引腳,其他連接GND  VCC


室內(nèi)接收機(jī)可以使用pro mini 和uno

接線方式如下:
arduino     nrf24l01p

13->         SCK

12->         MISO     
11->         MOSI
9->           CE
8->           CSN

2->                IRQ
注意nrf24l01電源要接3.3v




read_WDT是接收機(jī)
WDT_2是室外機(jī)


============================================
https://github.com/jcw/jeelib
推薦用這個(gè)吧,只有5uA,樓主的有25uA左右。


jeelib_uno.PNG
  
==================================================
2200uF可以保持哦,
2200uF保持.jpg  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    99久久国产综合精品二区| 熟女免费视频一区二区| 亚洲乱妇熟女爽的高潮片| 日韩女优视频国产一区| 国产传媒中文字幕东京热| 亚洲国产综合久久天堂| 国产又粗又猛又长又大| 亚洲第一区二区三区女厕偷拍| 欧美一级黄片欧美精品| 日韩欧美第一页在线观看| 免费久久一级欧美特大黄孕妇| 好吊视频有精品永久免费| 国产美女网红精品演绎| 一区二区三区日韩在线| 日韩欧美国产高清在线| av中文字幕一区二区三区在线| 久久99亚洲小姐精品综合| 国产福利在线播放麻豆| 亚洲国产av国产av| 日本一本不卡免费视频| 麻豆91成人国产在线观看| 色婷婷视频免费在线观看| av在线免费播放一区二区| 天堂av一区一区一区| 亚洲男人的天堂就去爱| 在线视频三区日本精品| 丝袜破了有美女肉体免费观看 | 亚洲综合日韩精品欧美综合区| 欧美二区视频在线观看| 亚洲最新中文字幕一区| 亚洲免费视频中文字幕在线观看| 91人人妻人人爽人人狠狠| 国产精品一区二区视频成人 | 精品少妇人妻av免费看| 欧美日韩国内一区二区| 欧美一区二区三区高潮菊竹| 日本欧美三级中文字幕| 在线日本不卡一区二区| 不卡免费成人日韩精品| 日韩精品一区二区毛片| 精品国自产拍天天青青草原|