色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

基于Arduino的低功耗睡眠模式設計方案

電子設計 ? 來源:一板網 ? 作者:風箏 ? 2021-01-13 17:00 ? 次閱讀

功耗是設備長時間連續運行而不斷電的關鍵因素。因此,為了解決這個問題,幾乎每個控制器都帶有睡眠模式,這有助于開發人員設計電子設備以實現最佳功耗。休眠模式通過關閉未使用的模塊將器件置于省電模式。

今天我們將了解Arduino睡眠模式(Sleep Mode)并使用Ammeter演示功耗。 Arduino睡眠模式也稱為Arduino省電模式(Power Save mode)或Arduino待機模式(Standby Mode)。

Arduino睡眠模式

睡眠模式允許用戶停止或關閉微控制器中未使用的模塊,從而顯著降低功耗。 Arduino UNO、Arduino Nano和Pro-mini配備了ATmega328P,它有一個欠壓檢測器(BOD),用于監控睡眠模式時的電源電壓。

ATmega328P有六種睡眠模式:

pIYBAF_-tgmAa_0CAAFGMzyf0fU022.png

要進入任何睡眠模式,我們需要在睡眠模式控制寄存器(SMCR.SE)中啟用睡眠位。然后,睡眠模式選擇位選擇Idle、ADC noise reduction、Power-Down、Power-Save、Standby和External Standby的睡眠模式。

內部或外部Arduino中斷或復位可以將Arduino從睡眠模式喚醒。

空閑(Idle)模式

要進入空閑休眠模式,請寫入控制器“000”的SM [2,0]位。此模式停止CPU,但允許SPI、2線串行接口、USART、看門狗、計數器、模擬比較器工作。空閑模式基本上停止CLKCPU和CLKFLASH。通過使用外部或內部中斷,可以隨時喚醒Arduino。

空閑睡眠模式的Arduino代碼:

LowPower.idle(SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF, SPI_OFF, USART0_OFF, TWI_OFF);

有一個用于在arduino中設置各種低功耗模式的庫。因此,首先從給定鏈接下載并安裝庫,然后使用上面的代碼將Arduino置于空閑睡眠模式。通過使用上面的代碼,Arduino將進入8秒的睡眠狀態并自動喚醒。正如您在代碼中所看到的,空閑模式會關閉所有定時器、SPI、USART和TWI(2線接口)。

ADC降噪模式(ADC noise reduction)

要使用此睡眠模式,請將SM [2,0]位寫入“001”。該模式會停止CPU,但允許ADC、外部中斷、USART、2線串行接口、看門狗和計數器運行。 ADC降噪模式基本上停止CLKCPU、CLKI / O和CLKFLASH。我們可以通過以下方法從ADC降噪模式喚醒控制器:

● 外部復位

● 看門狗系統復位

● 看門狗中斷

● 欠壓復位

● 2線串行接口地址匹配

● INT上的外部電平中斷

● 引腳更改中斷

● 定時器/計數器中斷

● SPM / EEPROM就緒中斷

掉電模式(Power-Down Mode)

掉電模式會停止所有生成的時鐘,并且只允許異步模塊的操作。可以通過將SM [2,0]位寫入'010'來啟用它。在此模式下,外部振蕩器關閉,但2線串行接口、看門狗和外部中斷繼續運行。它只能通過以下方法之一禁用:

● 外部復位

● 看門狗系統復位

● 看門狗中斷

● 欠壓復位

● 2線串行接口地址匹配

● INT上的外部電平中斷

● 引腳更改中斷

用于掉電周期模式的Arduino代碼:

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

該代碼用于打開省電模式。通過使用上面的代碼,Arduino將進入8秒的睡眠狀態并自動喚醒。

我們還可以使用具有中斷的掉電模式,其中Arduino將進入休眠狀態,但僅在提供外部或內部中斷時才會喚醒。

用于掉電中斷模式的Arduino代碼:

void loop()

{

// Allow wake up pin to trigger interrupt on low.

attachInterrupt(0, wakeUp, LOW);

LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);

// Disable external pin interrupt on wake up pin.

detachInterrupt(0);

// Do something here

}

省電模式(Power-Save)

要進入省電模式,我們需要將SM [2,0]引腳寫入'011'。該睡眠模式類似于掉電模式,只有一個例外,即如果啟用定時器/計數器,即使在睡眠時它也將保持運行狀態。可以使用定時器溢出喚醒設備。

如果您沒有使用時間/計數器,建議使用掉電模式而不是省電模式。

待機模式(Standby)

待機模式與掉電模式相同,它們之間的唯一區別是外部振蕩器在此模式下保持運行。要啟用此模式,請將SM [2,0]引腳寫入“110”。

擴展待機模式(Extended Standby)

此模式類似于省電模式,只有振蕩器保持運行的一個例外。當我們將SM [2,0]引腳寫入'111'時,器件將進入擴展待機模式。從延長待機模式喚醒器件需要6個時鐘周期。

需要的組件

● Arduino UNO開發板

● DHT11溫濕度傳感器

USB電流

● 面包板

● 連接線

USB電流表

USB電流表是一種即插即用設備,用于測量任何USB端口的電壓和電流。加密狗插入USB電源(計算機USB端口)和USB設備(Arduino)之間。該器件具有與電源引腳串聯的0.05歐姆電阻,通過它可以測量所消耗的電流值。該設備配有四個七段顯示屏,可立即顯示連接設備消耗的電流和電壓值。這些值以每三秒的間隔刷新。

電路原理

o4YBAF_-tjSAH-3bAADYlj-mK98471.png

在上面的演示中演示了Arduino深度睡眠模式,Arduino插入USB電流表,然后將USB電流表插入筆記本電腦的USB端口。 DHT11傳感器的數據引腳連接到Arduino的D2引腳。

代碼說明

首先包含DHT11傳感器和LowPower庫。要下載LowPower庫,請單擊此鏈接。然后我們定義了DHT11的數據引腳所連接的Arduino引腳編號,并定義了一個DHT對象。

#include

#include

#define dataPin 2

dht DHT;

在void setup()函數中,我們使用serial.begin(9600)啟動了串行通信,這里9600是波特率。我們使用Arduino的內置LED作為睡眠模式的指示器。因此,我們將引腳設置為輸出,將數字寫入設置為低電平。

void setup() {

Serial.begin(9600);

pinMode(LED_BUILTIN,OUTPUT);

digitalWrite(LED_BUILTIN,LOW);

}

在void loop()函數中,我們將內置LED設為HIGH,并從傳感器讀取溫度和濕度數據。在這里,DHT.read11();函數是從傳感器讀取數據。計算完數據后,我們可以通過將值保存到任何變量來檢查這些值。在這里,我們采用了兩個浮點型變量't'和'h'。因此,溫度和濕度數據在串口監視器上串行打印。

void loop() {

Serial.println("Get Data From DHT11");

delay(1000);

digitalWrite(LED_BUILTIN,HIGH);

int readData = DHT.read11(dataPin); // DHT11

float t = DHT.temperature;

float h = DHT.humidity;

Serial.print("Temperature = ");

Serial.print(t);

Serial.print(" C | ");

Serial.print("Humidity = ");

Serial.print(h);

Serial.println(" % ");

delay(2000);

在啟用睡眠模式之前,我們正在打印“Arduino: - I am going for a Nap”并使內置LED為低電平。之后,在代碼中使用下面提到的命令啟用Arduino睡眠模式。

下面的代碼啟用Arduino的空閑周期性睡眠模式,并提供8秒的睡眠。它將ADC、定時器、SPI、USART、2線接口轉為OFF狀態。

然后它會在8秒后自動從睡眠中喚醒Arduino并打印出“Arduino:- Hey I just Woke up”。

Serial.println("Arduino:- I am going for a Nap");

delay(1000);

digitalWrite(LED_BUILTIN,LOW);

LowPower.idle(SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF,

SPI_OFF, USART0_OFF, TWI_OFF);

Serial.println("Arduino:- Hey I just Woke up");

Serial.println("");

delay(2000);

}

因此,通過使用此代碼,Arduino將在一分鐘內喚醒24秒,并在36秒的剩余時間內保持睡眠狀態,這將顯著降低Arduino氣象站的功耗。

因此,如果我們將Arduino與睡眠模式一起使用,我們可以將設備運行時間顯著增加。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16336

    瀏覽量

    177829
  • Arduino
    +關注

    關注

    188

    文章

    6469

    瀏覽量

    186962
  • 控制寄存器
    +關注

    關注

    0

    文章

    34

    瀏覽量

    11484
收藏 人收藏

    評論

    相關推薦

    CKS32F4xx系列MCU的低功耗模式睡眠模式

    本課講為大家講解CKS32F4xx系列產品的低功耗模式睡眠(Sleep)模式。MCU為滿足某些應用場景:如小型化低容量設備,長期監測設備等,低功耗
    發表于 06-26 10:02 ?643次閱讀
    CKS32F4xx系列MCU的<b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>之<b class='flag-5'>睡眠</b><b class='flag-5'>模式</b>

    第30章 FreeRTOS低功耗睡眠模式

    ,STM32F407和STM32F429的低功耗方式之睡眠模式的一些知識點,第33章講解FreeRTOS支持的tickless模式睡眠
    發表于 09-12 17:21

    第21章 RTX低功耗睡眠模式

    STM32F103和STM32F407的低功耗方式之睡眠模式在RTX操作系統上面的實現方法(RTX本身支持的tickless低功耗模式在第2
    發表于 10-08 17:40

    怎么使PIC處于低功耗睡眠模式

    你好,我正在使用PIC 18F26J50。對于一個應用程序,我需要使PIC處于低功耗睡眠模式,大部分時間。我已經編程了兩種中斷睡眠模式的可
    發表于 03-30 09:26

    STM32的低功耗模式

    STM32的低功耗模式1.睡眠模式2.停止模式3.待機模式各種
    發表于 08-11 07:35

    介紹STM32低功耗睡眠模式事件喚醒的實現

    STM32 低功耗睡眠模式(SLEEP)事件(EVENT)喚醒實現及優化1. 介紹STM32具有多種低功耗模式,當前以STM32L4系列的
    發表于 02-23 06:02

    模式電源管理IC的低功耗設計方案

    針對降低多模式電源管理IC在輕載與待機工作模式功耗,提高其全負載條件下工作效率的需要,提出一種電源管理IC供電系統的設計方案,實現了其在啟動、關斷、重載、輕載以及待機等各種工作情況下
    的頭像 發表于 05-20 09:50 ?3933次閱讀

    STM32CubeMX學習筆記(15)——電源管理(PWR)低功耗睡眠模式

    一、低功耗模式簡介系統提供了多個低功耗模式,可在 CPU 不需要運行時(例如等待外部事件時)節省功耗。由用戶根據應用選擇具體的
    發表于 12-05 11:06 ?0次下載
    STM32CubeMX學習筆記(15)——電源管理(PWR)<b class='flag-5'>低功耗</b><b class='flag-5'>睡眠</b><b class='flag-5'>模式</b>

    STM32低功耗模式測試

    stm32單片機低功耗模式共用3中,下來對3中低功耗進行分析測試。先看手冊上相關低功耗資料介紹:先來分析睡眠
    發表于 12-31 19:05 ?10次下載
    STM32<b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>測試

    STM32 低功耗睡眠模式(SLEEP)事件(EVENT)喚醒實現及優化

    STM32 低功耗睡眠模式(SLEEP)事件(EVENT)喚醒實現及優化1. 介紹STM32具有多種低功耗模式,當前以STM32L4系列的
    發表于 12-31 19:08 ?34次下載
    STM32 <b class='flag-5'>低功耗</b><b class='flag-5'>睡眠</b><b class='flag-5'>模式</b>(SLEEP)事件(EVENT)喚醒實現及優化

    STM32 低功耗睡眠模式(SLEEP)中斷(INTERRUPT)喚醒實現及優化

    STM32 低功耗睡眠模式(SLEEP)中斷(INTERRUPT)喚醒實現及優化1. 介紹STM32具有多種低功耗模式,當前以STM32L4
    發表于 12-31 19:09 ?38次下載
    STM32 <b class='flag-5'>低功耗</b><b class='flag-5'>睡眠</b><b class='flag-5'>模式</b>(SLEEP)中斷(INTERRUPT)喚醒實現及優化

    PWR低功耗模式介紹

    低功耗模式,以在低功耗、短啟動時間、可用外設和可用喚醒源之間實現最佳折衷。 睡眠模式 低功耗運行
    發表于 03-23 14:30 ?1301次閱讀
    PWR<b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>介紹

    PWR低功耗睡眠模式介紹

    添加進入低功耗睡眠模式的功能 /* 無限循環 */ /* USER CODE BEGIN WHILE */ while ( 1 ) { /* USER CODE END WHILE */ /* 用戶
    發表于 03-23 14:47 ?962次閱讀
    PWR<b class='flag-5'>低功耗</b><b class='flag-5'>睡眠</b><b class='flag-5'>模式</b>介紹

    您真的了解睡眠模式對超低功耗無線MCU有多重要嗎?(內附活動中獎名單)

    員應當仔細選擇采用藍牙低功耗技術的 MCU 的規格,確定超低功耗的真正含義。這不是對照數據表確定最低電流消耗值,針對應用尋求最佳解決方案并非易事。 睡眠
    的頭像 發表于 05-25 10:45 ?868次閱讀
    您真的了解<b class='flag-5'>睡眠</b><b class='flag-5'>模式</b>對超<b class='flag-5'>低功耗</b>無線MCU有多重要嗎?(內附活動中獎名單)

    低功耗無線 MCU:玩轉睡眠模式

    支持藍牙低功耗 (LE) 的設計可讓設備長時間處于非工作狀態,因此,您可能需要選用具有超低功耗睡眠模式的高能效無線微控制器 (MCU),這對于優化整體系統性能至關重要。
    的頭像 發表于 07-10 10:44 ?896次閱讀
    超<b class='flag-5'>低功耗</b>無線 MCU:玩轉<b class='flag-5'>睡眠</b><b class='flag-5'>模式</b>
    主站蜘蛛池模板: 亚洲高清一区二区三区电影| 久久日本片精品AAAAA国产| 99视频免费播放| 最近高清日本免费| 亚洲视频在线免费| 亚洲色图p| 亚洲人成www在线播放| 亚洲精品乱码电影在线观看| 亚洲大片免费观看| 亚洲国产在线精品国自产拍五月| 视频一区国产在线二区| 手机在线观看你懂的| 天海翼精品久久中文字幕| 日韩在线 无码 精品| 素人约啪第五季| 先锋影音av资源站av| 亚洲国产欧美在线人成aaaa20| 午夜国产理论| 亚洲精品永久免费| 伊人国产在线播放| 最新快播网站| CHINA篮球体育飞机2022网站| www红色一片| 国产成人精品s8p视频| 国产精品一区二区四区| 国内久经典AAAAA片| 精品夜夜澡人妻无码AV蜜桃| 久久免费电影| 欧美肥婆性生活| 色偷偷在线视频| 性女传奇 快播| 一区二区三区无码高清视频| 最近日本字幕MV免费观看在线| 97无码欧美熟妇人妻蜜桃天美| georgielyall装修工| 国产成人精品免费视频软件 | 小黄文纯肉短篇| 亚洲国产成人在线视频| 在线观看永久免费网站| av av在线| 国产美女视频一区二区二三区|