يعد استهلاك الطاقة مشكلة بالغة الأهمية بالنسبة للجهاز الذي يعمل بشكل مستمر لفترة طويلة دون إيقاف تشغيله. لذلك للتغلب على هذه المشكلة ، تأتي كل وحدة تحكم تقريبًا مع وضع السكون ، والذي يساعد المطورين على تصميم أدوات إلكترونية لاستهلاك الطاقة الأمثل. يضع وضع السكون الجهاز في وضع توفير الطاقة عن طريق إيقاف تشغيل الوحدة غير المستخدمة.
لقد أوضحنا سابقًا وضع السكون العميق في ESP8266 لتوفير الطاقة. اليوم سنتعرف على أوضاع النوم في Arduino ونوضح استهلاك الطاقة باستخدام Ammeter. يُشار أيضًا إلى وضع Arduino Sleep باسم وضع Arduino Power Save أو Arduino Standby Mode.
أوضاع النوم اردوينو
تسمح أوضاع النوم للمستخدم بإيقاف أو إيقاف تشغيل الوحدات غير المستخدمة في وحدة التحكم الدقيقة مما يقلل بشكل كبير من استهلاك الطاقة. يأتي Arduino UNO و Arduino Nano و Pro-mini مزودًا بـ ATmega328P ويحتوي على كاشف بني (BOD) يراقب جهد الإمداد في وقت وضع السكون.
هناك ستة أوضاع للنوم في ATmega328P:
للدخول في أي من وضع السكون ، نحتاج إلى تمكين بت السكون في سجل التحكم في وضع السكون (SMCR.SE). ثم حدد وضع السكون بتات حدد وضع السكون من بين الخمول ، وتقليل الضوضاء ADC ، وإيقاف التشغيل ، وتوفير الطاقة ، والاستعداد ، والاستعداد الخارجي.
يمكن لمقاطعات Arduino الداخلية أو الخارجية أو إعادة التعيين إيقاظ Arduino من وضع السكون.
وضع الخمول
للدخول إلى وضع السكون الخامل ، اكتب وحدات بت SM لوحدة التحكم "000". يوقف هذا الوضع وحدة المعالجة المركزية ولكنه يسمح بتشغيل SPI ، والواجهة التسلسلية ثنائية الأسلاك ، و USART ، و Watchdog ، والعدادات ، والمقارنة التناظرية. يوقف وضع الخمول بشكل أساسي وحدة المعالجة المركزية CLK و CLK FLASH. يمكن إيقاظ Arduino في أي وقت باستخدام مقاطعة خارجية أو داخلية.
كود اردوينو لوضع الخمول:
LowPower.idle (SLEEP_8S، ADC_OFF، TIMER2_OFF، TIMER1_OFF، TIMER0_OFF، SPI_OFF، USART0_OFF، TWI_OFF) ،
توجد مكتبة لإعداد مختلف أوضاع الطاقة المنخفضة في اردوينو. لذا قم أولاً بتنزيل المكتبة وتثبيتها من الرابط المحدد واستخدم الكود أعلاه لوضع Arduino في وضع الخمول السكون. باستخدام الكود أعلاه ، سوف يدخل Arduino في وضع السكون لمدة ثماني ثوانٍ ويستيقظ تلقائيًا. كما ترى في الكود ، يقوم وضع الخمول بإيقاف تشغيل جميع أجهزة ضبط الوقت و SPI و USART و TWI (واجهة ثنائية الأسلاك).
وضع تقليل الضوضاء ADC
لاستخدام وضع السكون هذا ، اكتب SM bit إلى "001". يوقف الوضع وحدة المعالجة المركزية ولكنه يسمح بتشغيل ADC والمقاطعة الخارجية و USART والواجهة التسلسلية ثنائية الأسلاك و Watchdog والعدادات. يعمل وضع تقليل الضوضاء ADC بشكل أساسي على إيقاف وحدة المعالجة المركزية CLK و CLK I / O و CLK FLASH. يمكننا إيقاظ وحدة التحكم من وضع تقليل الضوضاء ADC بالطرق التالية:
- إعادة تعيين الخارجية
- إعادة تعيين نظام المراقبة
- حراسة المقاطعة
- براون التدريجي إعادة تعيين
- تطابق عنوان الواجهة التسلسلية بسلكين
- مقاطعة المستوى الخارجي على INT
- دبوس تغيير المقاطعة
- الموقت / عداد المقاطعة
- مقاطعة جاهزة SPM / EEPROM
وضع خفض الطاقة
يعمل وضع Power-Down على إيقاف جميع الساعات التي تم إنشاؤها ويسمح فقط بتشغيل الوحدات غير المتزامنة. يمكن تمكينه عن طريق كتابة وحدات بت SM إلى "010". في هذا الوضع ، يتم إيقاف تشغيل المذبذب الخارجي ، ولكن تستمر الواجهة التسلسلية المكونة من سلكين والرقابة والمقاطعة الخارجية في العمل. يمكن تعطيله بإحدى الطرق التالية فقط:
- إعادة تعيين الخارجية
- إعادة تعيين نظام المراقبة
- حراسة المقاطعة
- براون التدريجي إعادة تعيين
- تطابق عنوان الواجهة التسلسلية بسلكين
- مقاطعة المستوى الخارجي على INT
- دبوس تغيير المقاطعة
كود اردوينو للوضع الدوري لخفض الطاقة:
LowPower.powerDown (SLEEP_8S، ADC_OFF، BOD_OFF) ؛
يستخدم الرمز لتشغيل وضع خفض الطاقة. باستخدام الكود أعلاه ، سوف يدخل Arduino في وضع السكون لمدة ثماني ثوانٍ ويستيقظ تلقائيًا.
يمكننا أيضًا استخدام وضع خفض الطاقة مع المقاطعة ، حيث يدخل Arduino في وضع السكون ولكنه يستيقظ فقط عند توفير مقاطعة خارجية أو داخلية.
كود اردوينو لوضع انقطاع التيار الكهربائي:
حلقة فارغة () { // السماح بدبوس التنبيه لبدء المقاطعة عند مستوى منخفض. attachInterrupt (0، wakeUp، LOW) ؛ LowPower.powerDown (SLEEP_FOREVER، ADC_OFF، BOD_OFF) ، // تعطيل المقاطعة الخارجية على دبوس التنبيه. detachInterrupt (0) ، // افعل شيئًا هنا }
وضع توفير الطاقة
للدخول إلى وضع توفير الطاقة ، نحتاج إلى كتابة SM pin إلى "011". يشبه وضع السكون هذا وضع خفض الطاقة ، مع استثناء واحد فقط ، أي إذا تم تمكين المؤقت / العداد ، فسيظل في حالة التشغيل حتى في وقت السكون. يمكن إيقاظ الجهاز باستخدام فائض المؤقت.
إذا كنت لا تستخدم الوقت / العداد ، فمن المستحسن استخدام وضع خفض الطاقة بدلاً من وضع توفير الطاقة.
وضعيه الإستعداد
وضع الاستعداد مماثل لوضع Power-Down ، والفرق الوحيد بينهما هو أن المذبذب الخارجي ظل يعمل في هذا الوضع. لتمكين هذا الوضع ، اكتب SM pin إلى "110".
وضع الاستعداد الممتد
يشبه هذا الوضع وضع توفير الطاقة فقط مع استثناء واحد وهو استمرار تشغيل المذبذب. سيدخل الجهاز في وضع Extended Standby عندما نكتب SM pin إلى "111". سيستغرق الجهاز ست دورات على مدار الساعة للاستيقاظ من وضع الاستعداد الممتد.
فيما يلي متطلبات هذا المشروع ، بعد توصيل الدائرة حسب مخطط الدائرة. قم بتحميل كود وضع السكون إلى Arduino باستخدام Arduino IDE. سيدخل Arduino في وضع السكون الخامل. ثم تحقق من الاستهلاك الحالي في مقياس التيار USB. عدا ذلك ، يمكنك أيضًا استخدام مقياس المشبك لنفسه.
المكونات مطلوبة
- اردوينو UNO
- جهاز استشعار درجة الحرارة والرطوبة DHT11
- USB Ammeter
- اللوح
- توصيل الأسلاك
لمعرفة المزيد حول استخدام DHT11 مع Arduino ، اتبع الرابط. نحن هنا نستخدم USB Ammeter لقياس الجهد الذي يستهلكه Arduino في وضع السكون.
USB Ammeter
مقياس التيار USB هو جهاز توصيل وتشغيل يستخدم لقياس الجهد والتيار من أي منفذ USB. يتم توصيل الدونجل بين مصدر طاقة USB (منفذ USB للكمبيوتر) وجهاز USB (Arduino). يحتوي هذا الجهاز على مقاوم 0.05 أوم في خط مع دبوس الطاقة الذي يقيس من خلاله قيمة التيار المسحوب. يأتي الجهاز مزودًا بأربع شاشات عرض ذات سبعة أجزاء ، والتي تعرض على الفور قيم التيار والجهد الذي يستهلكه الجهاز المرفق. تنقلب هذه القيم بفاصل زمني كل ثلاث ثوان.
تخصيص:
- نطاق جهد التشغيل: 3.5 فولت إلى 7 فولت
- الحد الأقصى لتصنيف التيار: 3A
- حجم صغير ، يسهل حملها
- لا حاجة لإمدادات خارجية
تطبيق:
- اختبار أجهزة USB
- فحص مستويات الحمولة
- تصحيح شواحن البطاريات
- المصانع والمنتجات الإلكترونية والاستخدام الشخصي
مخطط الرسم البياني
في الإعداد أعلاه لإثبات أوضاع سكون Arduino Deep ، يتم توصيل Arduino بمقياس USB. ثم يتم توصيل مقياس التيار USB بمنفذ USB للكمبيوتر المحمول. يتم توصيل دبوس البيانات الخاص بمستشعر DHT11 بطرف D2 الخاص بـ Arduino.
شرح الكود
يتم تقديم الكود الكامل للمشروع مع الفيديو في النهاية.
يبدأ الرمز بتضمين مكتبة مستشعر DHT11 ومكتبة LowPower . لتنزيل مكتبة Low Power ، اتبع الرابط. ثم حددنا رقم دبوس Arduino الذي يتصل به دبوس البيانات الخاص بـ DHT11 وأنشأنا كائن DHT.
#تضمن
في وظيفة الإعداد الفارغ ، بدأنا الاتصال التسلسلي باستخدام serial.begin (9600) ، هنا 9600 هو معدل الباود. نحن نستخدم LED المدمج في Arduino كمؤشر على وضع السكون. لذلك ، قمنا بتعيين الدبوس كإخراج ، والكتابة الرقمية منخفضة.
إعداد باطل () { Serial.begin (9600) ؛ pinMode (LED_BUILTIN ، الإخراج) ؛ الكتابة الرقمية (LED_BUILTIN ، منخفضة) ؛ }
في وظيفة الحلقة الفارغة ، نجعل مؤشر LED المدمج عاليًا ونقرأ بيانات درجة الحرارة والرطوبة من المستشعر. هنا ، DHT.read11 () ؛ يقوم الأمر بقراءة البيانات من المستشعر. بمجرد حساب البيانات ، يمكننا التحقق من القيم عن طريق حفظها في أي متغير. هنا ، أخذنا متغيرين من النوع العائم 't' و 'h' . ومن ثم ، تتم طباعة بيانات درجة الحرارة والرطوبة بشكل متسلسل على الشاشة التسلسلية.
حلقة باطلة () { Serial.println ("إحضار بيانات من DHT11") ؛ تأخير (1000) ؛ الكتابة الرقمية (LED_BUILTIN ، عالية) ؛ int readData = DHT.read11 (dataPin) ؛ // DHT11 float t = DHT.temperature ؛ تعويم ح = رطوبة دهت ؛ Serial.print ("درجة الحرارة =") ؛ Serial.print (t) ؛ Serial.print ("C -") ؛ Serial.print ("الرطوبة =") ؛ Serial.print (ح) ؛ Serial.println ("٪") ؛ تأخير (2000) ؛
قبل تمكين وضع السكون ، نقوم بطباعة "Arduino: - أنا ذاهب لقيلولة" ونجعل مؤشر LED منخفضًا. بعد ذلك يتم تمكين وضع السكون Arduino باستخدام الأمر المذكور أدناه في الكود.
يتيح الكود أدناه وضع السكون الدوري الخمول في Arduino ويمنحك سكونًا لمدة ثماني ثوانٍ. يقوم بتحويل واجهة ADC و Timers و SPI و USART و 2-wire إلى حالة OFF.
ثم يستيقظ Arduino تلقائيًا من وضع السكون بعد 8 ثوانٍ ويطبع "Arduino: - Hey I just Woke up".
Serial.println ("Arduino: - أنا ذاهب لقيلولة") ؛ تأخير (1000) ؛ الكتابة الرقمية (LED_BUILTIN ، منخفضة) ؛ LowPower.idle (SLEEP_8S، ADC_OFF، TIMER2_OFF، TIMER1_OFF، TIMER0_OFF، SPI_OFF، USART0_OFF، TWI_OFF) ، Serial.println ("اردوينو: - لقد استيقظت للتو") ؛ Serial.println ("") ؛ تأخير (2000) ؛ }
لذلك باستخدام هذا الكود ، سيستيقظ Arduino لمدة 24 ثانية فقط في الدقيقة وسيظل في وضع السكون لبقية 36 ثانية ، مما يقلل بشكل كبير من الطاقة التي تستهلكها محطة الطقس Arduino.
لذلك ، إذا استخدمنا Arduino مع وضع السكون ، فيمكننا مضاعفة وقت تشغيل الجهاز تقريبًا.