سنتناول في هذا المقال أربع طرق لتقليل استهلاك الطاقة عند استخدام الأردوينو بنسبة 89%، تتعلّق ثلاث من هذه الطرق بالأجهزة المادية بينما تتعلق الطريقة الرابعة بالبرمجيات وهي كالتالي:
- استخدام متحكم أصغر حجماً (مادية)
- تخفيض سرعة المعالج (مادية)
- تخفيض جهد التشغيل (مادية)
- استخدام وضع توفير الطاقة (برمجية)
نتائج تخفيض استهلاك الطاقة في الأردوينو
يلخّص الجدول أدناه نتائج كلّ طريقة لتقليل استهلاك الطاقة عند استخدام الأردوينو ويوضّح أنواع المتحكمات الصغرية المستخدمة في هذا البحث:
المتحكم | الجهد المرجعي 9V | تخفيض سرعة المعالج 9V | تخفيض سرعة المعالج وجهد التشغيل 3.3V | تشغيل وضع توفير الطاقة 3.3V | تشغيل وضع توفير الطاقة 9V |
أردوينو نانو Arduino Nano | 22.1 mA | 18.5 mA (-16%) | 3.4 mA (-85%) | 3.4 mA (-84%) | 4.8 mA (-78%) |
أردوينو برو ميني 5V Arduino Pro Mini 5V | 14.6 mA | 10.0 mA (-32%) | 3.7 mA (-75%) | 1.6 mA (-89%) | 3.2 mA (-78%) |
أردوينو برو ميني 3V Arduino Pro Mini 3V | 5.1mA | 3.8 mA (-25%) | 3.7 mA (-27%) | 1.6 mA (-69%) | 3.2 mA (-38%) |
أردوينو أونو Arduino Uno | 98.4 mA | 42.8 mA (-57%) | 11.6 mA (-88%) | 11.5 mA (-88%) | 27.9 mA (-72%) |
أردوينو ميجا Arduino Mega | 73.2 mA | 61.8 mA (-16%) | 16.7 mA (-77%) | 11.9 mA (-84%) | 26.9 mA (-63%) |
نستخلص من الجدول السابق الذي يلخّص نتائج تخفيض الاستهلاك النقاط الرئيسية التالية:
- يكون أردوينو برو ميني ذو أقل استهلاك ممكن قدره 1.58 mA بعد تطبيق الطرق الممكنة كلّها؛ إذ ينخفض الاستهلاك بنسبة 89% لنسخة 5V و69% لنسخة 3.3V.
- أردوينو أونو هو الأعلى استهلاكاً للتيار المرجعي (98.43 mA)، رغم أنّ أردوينو ميجا أكبر حجماً ويحتوي على عدد أكبر من المكونات على اللوحة، إلا أنّ تياره المرجعي أقلّ (73.19 mA) لأنه يعمل بسرعة معالج 8MHz بدلاً من 16MHz.
- أردوينو برو ميني بنسخة 3.3V هو الأمثل للاستهلاك المرجعي (5.13 mA)، لذلك يفضّل استخدامه في حال لم يكن هناك حاجة إلى أيّ تحسينات في الطاقة أو تغذية 5V.
- إنّ أفضل طريقة لتقليل الاستهلاك هي دمج وضع توفير الطاقة مع خفض سرعة المعالج، حتى يتمكن المتحكم من العمل مباشرة بجهد 3.3V، وهذه الطريقة توفر 83% من الطاقة بالمتوسط مقارنةً بالاستهلاك المرجعي دون تحسين وبجهد 9V.
- عند خفض سرعة المعالج وجهد التشغيل إلى 3.3V، يصبح استهلاك التيار في أردوينو برو ميني بنسخة 5V مساوياً للاستهلاك في نسخة 3.3V من المتحكّم نفسه.
اختيار لوح أردوينو الملائم لتقليل استهلاك الطاقة
سنستعرض في هذا المقال مجموعة متنوعة من المتحكمات بدءاً من الأكبر حجماً، مثل أردوينو ميجا وانتهاءً بالأصغر مثل أردوينو برو ميني. عند العمل على مشروعٍ يتطلّب توفير الطاقة يجب الأخذ في الاعتبار أنّ كلّ عنصر كهربائي على اللوحة يستهلك طاقةً ليعمل. لذلك فإنّ الخطوة الأولى لتقليل استهلاك الطاقة في أردوينو هي استخدام أبسط متحكّم صغير يناسب احتياجات المشروع لتجنّب العناصر غير الضرورية.
اختيار أبسط متحكّم صغير يناسب احتياجات المشروع لتجنب العناصر غير الضرورية
مثلاً لبناء محطة طقس نحتاج لخمسة مدخلات رقمية ومدخل تماثلي واحد فقط، لذا يُفضّل استخدام أردوينو نانو (22.05 mA)، أو أردوينو برو ميني (14.62 mA) بدلاً من أرديونو أونو (98.43 mA).
أُجريَت هذه القياسات باستخدام مقياس USB متعدّد الوظائف في حالة عدم نشاط المتحكّم بعد تحميله ببرنامج أردوينو فارغ. تُظهر الصور التالية التوصيلات اللازمة لإجراء القياسات لبعض لوحات أردوينو.





التوصيلات اللازمة لإجراء القياس
يوضّح المخطّط البياني التالي القيَم المرجعيّة لاستهلاك الطاقة لجميع لوحات أردوينو، عند تشغيلها بجهد 9V. كلّ عامود يمثّل تيار أحد اللوحات بالمللي أمبير.

تخفيض سرعة المعالج لتخفيض استهلاك الطاقة
واحدة من الطرق التي تساعد على توفير الطاقة هي خفض سرعة المعالج (التردّد)، وتحدّد سرعة المعالج عدد العمليات التي يمكن للأردوينو تنفيذها في الثانية الواحدة. يُظهر الجدول التالي السرعة الافتراضية لمتحكّمات أردوينو المذكورة في المقال.
لوح الأردوينو | المتحكم | السرعة الافتراضية |
أردوينو نانو | ATmega328 | 16 MHz |
أردوينو ميني 5V | ATmega328 | 16 MHz |
أردوينو ميني 3.3V | ATmega328 | 8 MHz |
أردوينو أونو | ATmega328 | 16 MHz |
أردوينو ميجا REF3 | ATmega2560 | 8 MHz |
تعمل معظم متحكّمات أردوينو بسرعة 16 MHz والتي تعادل 16 مليون عمليّة في الثانية الواحدة، ولكن في معظم الحالات لا حاجة لهذه السرعات العالية وعلى هذا يمكن تغييرها.
تخفيض سرعة المعالج من 16 MHz إلى 8 MHz
من الجدير بالذكر أنّ لهذه العمليّة عيبٌ واحد، وهو أنّه عند التبديل إلى وضع توفير الطاقة لبعض الوقت بعد الانتهاء من تنفيذ البرنامج فإنّ المتحكّم سيستغرق وقتاً أطول لتشغيل البرنامج من جديد، لذا سيقلّل من الوقت الذي يقضيه المتحكّم في وضع توفير الطاقة، مثلاً إذا كان تشغيل البرنامج يستغرق 4 ثوان عند عمل المتحكّم بسرعة 16MHz ثم يتوقف مؤقتاً لمدة 10 ثوان في وضع توفير الطاقة قبل أن يعود للعمل، فإنّ تشغيل البرنامج نفسه بسرعة 8MHz يستغرق 8 ثوان وبذلك سينخفض الوقت الذي يبقى فيه المتحكّم في وضع توفير الطاقة من 10 إلى 6 ثوان، وفي ظروف استثنائية قد يزيد استهلاك الطاقة عند خفض سرعة المعالج بدلاً من أن يقلّ.
يوضح الشكل الآتي دورة العمل والراحة (التوقُّف المؤقت) عندما تكون سرعة المعالج 16 MHz أو MHz8.

يمكن استخدام مقسم السرعة الخاص بالنظام (System Cloce Prescale) الذي يخفض سرعة المعالج بعامل معين، تؤثّر السرعة المخفضة على المعالج و الأجهزة الملحقة المتزامنة كافّة، كالمداخل والمخارج (I/O) والمحوّلات التماثلية الرقمية والذاكرة.
لا بدّ من اتّباع إجراء كتابي من خطوتين لتغيير التردّد باستخدام بتات تحديد السرعة CLKPS (Clock Prescaler Selection) بسبب وجود آلية قفل تمنع تغيير التردد:
- ضع القيمة 1 في بت (bit) تفعيل التغيير (CLKPCE)، و0 في باقي البتات في مسجل التردد (CLKPR).
- في غضون أربع دورات، ضع القيمة المرغوبة في بتات تحديد السرعة (CLKPS) واكتب 0 في بت تفعيل التغيير (CLKPCE).
يمكن الرجوع إلى ملف البيانات (datasheets) الخاصة بالمتحكّم لمزيدٍ من التفاصيل، (مثلاً الصفحة 32 لمتحكم ATmega328P).
يوضح الجدول الآتي كيفيّة بناء مسجل مقسم السرعة (CLKPS) بحسب البتات التي يجب ضبطها إلى 1 أو 0:
البت (Bit) | 7 | 6 5 4 3 | 2 | 1 | 0 |
التعريف | CLKPCE | CLKPS2 | CLKPS1 | CLKPS0 |
والآن يجب أن نتعرّف على طريقة ضبط بتات CLKPS بما يتناسب مع عامل القسمة الذي نريد قسمة السرعة عليه، يوضّح الجدول التالي الخيارات المتاحة والبتات المطابقة لكلّ خيارٍ من CLKPS3:
عامل قسمة السرعة | CLKPS0 | CLKPS1 | CLKPS2 | CLKPS3 |
1 | 0 | 0 | 0 | 0 |
2 | 1 | 0 | 0 | 0 |
4 | 0 | 1 | 0 | 0 |
8 | 1 | 1 | 0 | 0 |
16 | 0 | 0 | 1 | 0 |
32 | 1 | 0 | 1 | 0 |
64 | 0 | 1 | 1 | 0 |
128 | 1 | 1 | 1 | 0 |
256 | 0 | 0 | 0 | 1 |
نص (كود) برنامج أردوينو لخفض سرعة المعالج
لخفض السرعة من 16MHz إلى 8MHz عن طريق برنامج أردوينو، يجب اتباع الخطوات التالية لتعديل بتات CLKPS في دالة الإنشاء setup:
- تفعيل التغيير في مقسم التردد بوضع 1 في بت CLKPCE و0 في باقي البتات وهذا يساوي 0x80
- ضبط عامل القسمة إلى القيمة 2 وهذا يساوي 0x01
تأثير السرعة المخفّضة على استهلاك الطاقة في أردوينو
لقياس مقدار استهلاك الطاقة لمختلف ألواح أردوينو في وضع السرعة المخفّضة نستخدم نفس التوصيلات التي قمنا باستخدامها لقياس الاستهلاك في الوضع المرجعي (قبل تطبيق أي طريقة لخفض الاستهلاك).
تغذّى كلّ المتحكّمات بجهدٍ قدره 9V عن طريق مصدر التغذية في المخبر، ويوصل المقياس الرقمي المتعدّد على التسلسل لقياس استهلاك التيار في كلّ لوحة. يوضّح المخطط البياني التالي جميع القياسات:

نتائج تخفيض السرعة:
- أردوينو أونو هو المتحكم الأكثر تأثراً بتخفيض السرعة؛ إذ يقلّ استهلاك التيار بنسبة 56.56% (من 98.43 mA إلى 42.76 mA)
- بينما يكون أردوينو ميجا هو الأقل تأثراً بتخفيض السرعة؛ إذ يقلّ استهلاك التيار بنسبة 15.62% فقط (من 73.19 mA إلى 61.76 mA)
- متوسط الانخفاض في الاستهلاك في هذه المتحكمات هو 29% ولكن هذا الرقم يتغير كثيراً باختلاف لوح أردوينو المستخدم.
خفض كلّ من سرعة المعالج وجهد التشغيل لتخفيض استهلاك الطاقة في أردوينو
الخطوة الأخيرة في تخفيض الاستهلاك عن طريق الأجهزة (هاردوير) هي خفض جهد التشغيل؛ إذ يتناسب استهلاك الطاقة طردياً مع جهد التشغيل (P=V*I) (الاستطاعة = الجهد * التيار)، ولكن لخفض جهد التشغيل لابدّ من خفض سرعة المعالج، وهذا ما فعلناه في الخطوة السابقة.
لإيجادِ العلاقة بين سرعة المعالج وجهد التشغيل يمكن الرجوع إلى ملف البيانات الخاصة بالمتحكم أردوينو المراد استخدامه، ويبيّن الشكل الآتي هذه العلاقة لكلٍّ من المتحكمين ATmega328 و ATmega2560:


يلخّص الجدول التالي خصائص ألواح أردوينو المفحوصة والمتحكّم المُدمَج بها والحدّ الأدنى المخفّض للجهد مع السرعة المناسبة، إضافةً إلى الحدّ الأدنى الطبيعي للجهد في حال السرعة الطبيعية.
لوح أردوينو | المتحكم | الجهد الأدنى المخفّض | الجهد الأدنى الطبيعي |
أردوينو نانو | ATmega328 | 2.7V (8 MHz) | 4.5V (16 MHz) |
أردوينو ميني 5V | ATmega328 | 2.7V (8 MHz) | 4.5V (16 MHz) |
أردوينو ميني 3.3V | ATmega328 | – | 2.7V (8 MHz) |
أردوينو أونو | ATmega328 | 2.7V (8 MHz) | 4.5V (16 MHz) |
أردوينو ميجا REF3 | ATmega2560 | 1.8V (4 MHz) | 2.7V (8 MHz) |
تأثير خفض كلٍّ من سرعة المعالج وجهد التشغيل على استهلاك الطاقة في أردوينو
نوصِل لوحات الأردوينو بمنبع التغذية مباشرةً عبر مشبك 3.3V ونخفِّض الجهد من 9V إلى 3.3V لقياس استهلاك تيار كلّ لوحة كما هو موضّح في الصور التالية:




يجب تفادي استخدام منظمات الجهد الخارجية وتوصيل المنبع مباشرةً بمشبك 3.3V بما أنّ منظّم الجهد المدمج يحتاج جهد أعلى للعمل.
استخدمنا نفس البرنامج المُستخدَم في تخفيض السرعة (في المقال أعلاه)، يوضّح الشكل الآتي القياسات الجديدة لاستهلاك الطاقة بعد تخفض السرعة وجهد التشغيل:

نلاحظ أنّ استهلاك الطاقة قد انخفض أكثر نتيجة لتخفيض جهد التشغيل وسرعة المعالج:
- خفض جهد التشغيل هو الطريقة الأكثر فعاليّة في تقليل الاستهلاك، لأنّه يسمح بتخفيض الجهد بمعدل يزيد عن 70% إلى جانب تخفيض السرعة.
- لم يتأثّر أردوينو نانو وأردوينو ميجا بخفض السرعة إلا نحوَ 16%، لكن عند تخفيض الجهد لوحظ انخفاض كبير في تيارهما؛ إذ بلغت نسبة الانخفاض 84.54% في أردوينو نانو و77.13% في أردوينو ميجا.
- بما أنّ الفرق الوحيد بين نسختي 5V و3.3V في أردوينو برو ميني هو السرعة وجهد التشغيل، فإنّ استهلاكهما متساوٍ بعد القياس بقيمة 3.73 mA
تأثير تخفيض الجهد على المنظومات التي تعمل بالبطارية
يحسّن تخفيض جهد التشغيل أداء المتحكّم الذي يستخدم البطارية مصدراً للتغذية؛ إذ يتناقص جهد البطارية تدريجياً حتى يبلغ أقلّ جهد يستطيع المتحكّم العمل به، وبتخفيض جهد التشغيل للمتحكم يمكن تأخير وصول البطارية إلى هذا المستوى كما في الشكل.

استخدام وضع توفير الطاقة في أردوينو لخفض استهلاك الطاقة
والآن وبعد إتمام الخطوات السابقة ننتقل إلى تفعيل وضع توفير الطاقة لتخفيض استهلاك الطاقة أكثر؛ إذ يعطل وضع توفير الطاقة هذه العمليات التي تستنزف طاقة إضافيّة:
غير فعّال | فعّال |
مؤقتات 0، 1، 2 Timer 0, 1, 2 | واجهة توصيل بسلكين Two-wire interface |
بروتوكولات الاتصال SPI وUART SPI and UART communication | جهاز مراقبة Watchdog |
هزاز خارجي External Oscillator | مقاطعة خارجية External interrupt |
من الممكن أيضاً تعطيل ميزتين إضافيتين لمتحكم ATmega بعد تغيير إعدادات المكتبة التي نستخدمها وهما:
- المحوّل التماثلي الرقمي (Analog to digital converter – ADC): تُستخدم هذه المحولات في مشابك (I/O) من لوح أردوينو، أي تحوّل جهد الدخل التماثلي الذي تتراوح قيمتهُ بين (0V-VCC) إلى قيمة رقمية باستخدام محول (10-bit) مثلاً، وبهذا تصبح الجهود قيمة رقمية بين (0-1023).
- حسّاس انخفاض الجهد (Brown-out detector – BOD): يراقب هذا الحساس جهد المنظومة ويطفئ المتحكّم في حال هبوط الجهد إلى قيمة محددة تعرف بقيمة العتبة إلى أن يرتفع الجهد مجدداً فوق قيمة العتبة.
لتفعيل وضع توفير الطاقة في لوح الأردوينو بسهولة نستخدم مكتبة Low-Power من rocketscream، لكن لا يمكن إضافة هذه المكتبة كالمكتبات المعتادة في بيئة تطوير أردوينو المتكاملة (Arduino IDE) لذا يمكن اتباع هذه الخطوات الثلاث لإضافتها يدوياً:
- تحميل المكتبة كمجلد مضغوط (ZIP folder) من الصفحة الرسمية لـ rocketsceam على github.
- استخراج محتويات المجلد ونضيفه إلى مجلد library root.
- إعادة تسمية المجلد دونَ اسم الإصدار.
برنامج أردوينو لتفعيل وضع توفير الطاقة
يظهر النص التالي برنامج تفعيل وضع توفير الطاقة في أردوينو، من أجل قياس استهلاك الطاقة في وضع توفير الطاقة في حالتي جهد التشغيل 9V – 3.3V يجب تحديد ما اذا كان المطلوب هو تخفيض السرعة أم لا في النص البرمجي، وللحصول على قراءة القياس عند 9V يجب تعليق عمل السطرين في دالة الإنشاء setup.
كود هنا
نضيف في السطر الأول مكتبة low power، وكنا قد تعرفنا مسبقاً على دالة الإنشاء setup حيث نخفض السرعة، نستخدم دالة التكرار delay لإيقاف التنفيذ لمدة 4 ثوانٍ لإدخال الأردوينو في وضع توفير الطاقة لمدة ثانيتين، وذلك بإيقاف كلٍّ من المحوّل التماثلي الرقمي وحساس Brown-out لتقليل الاستهلاك أكثر.
يمكن أيضاً ضبط المكتبة لتنبيه المتحكّم عند تلقيه أمر خارجي، ولكن لا يمكن تحديد وقت للراحة عشوائيّاً فمؤقت المراقبة مقيّد بفترات زمنية محددة يمكن اختيارها فقط (تُحدّد بتقسيم سرعة المعالج بعامل ثابت):
كود هنا
تأثير وضع توفير الطاقة على استهلاك الطاقة
لمعرفة تأثير جهد التشغيل على وضع توفير الطاقة يجب الحصول على قراءتين متباينتين لكل متحكم صغير.
وضع توفير الطاقة وجهد التغذية 9V
لاختبار مكتبة توفير الطاقة فقط، نصل مشبك VIN بمنبع التغذية ونضع تعليق على الأسطر المسؤولة عن تخفيض سرعة المعالج في النص البرمجي.
يُظهر الشكل التالي استهلاك الطاقة للأردوينو في وضع توفير الطاقة في حالة التغذية بجهد 9V.

نلاحظ لأول مرة أنّ استهلاك الطاقة ازداد بطريقةٍ متناسبة مع زيادة جهد التغذية إلى 9V مقارنةً بقيمته 3.3V في الجزء السابق.
في المقابل نجد أنّ استهلاك الطاقة في أردوينو نانو ازداد من 3.41 mA إلى 3.83 mA عند خفض سرعة المعالج وجهد التشغيل إلى 3.3V، وتزداد أيضاً قراءة استهلاك الطاقة في كلّ من أردوينو أونو وأردوينو ميجا في وضع توفير الطاقة بجهد تغذية 9V مقارنةً بخفض سرعة المعالج وجهد التشغيل 3.3V، ولكن انخفض استهلاك أردوينو برو ميني من 3.73 mA إلى 3.2 mA.
ولكن الحاجة لاستخدام وضع توفير الطاقة بجهد 9V بدلاً من خفض السرعة وجهد التغذية تعتمد أيضاً على العناصر المتصلة بالأردوينو، ففي حال وجود حساس أو أي عنصر الكتروني موصول بلوح الأردوينو يعمل على جهد 5V، فلا بدّ من استخدام وضع توفير الطاقة بجهد 9V لضمان جهد تشغيل ثابت 5V للحساس.
وضع توفير الطاقة وجهد التغذية 3.3V
لتخفيضِ جهد التغذية يجب تطبيق جميع الطرق السابقة للحصول على أفضل نتيجة لتخفيض الاستهلاك، وذلك عن طريق وصل منبع التغذية بمشبك 3.3V وتخفيض سرعة المعالج في النص البرمجي.
يوضّح المخطّط التالي استهلاك الطاقة للوحات أردوينو عندما تكون في وضع توفير الطاقة وجهد التغذية 3.3V:

في حال عدم الحاجة إلى جهد 5V في الدارة، يمكن الاستفادة من جميع الطرق السابقة مجتمعة لتخفيض استهلاك الطاقة إلى أدنى حدٍّ ممكن؛ إذ انخفض الاستهلاك في أردوينو أونو عند تطبيقها بنسبة 88.37% من 98.43 mA إلى 11.45 mA، كذلك لوحظ انخفاض كبير في استهلاك أردوينو ميجا مساوياً 11.85 mA رغم كبر حجم اللوحة.
تحقّقت أقلّ قيمة للاستهلاك عند استخدام أردوينو برو ميني باستهلاك 1.58 mA فقط، وهذا يمثّل تخفيضاً كبيراً في استهلاك نسخة 3.3V بنسبة 69.20% ونسخة 5V بنسبة 89.19%.
تُظهر الصورة التالية نتيجة قياس التيار لأردوينو برو ميني مباشرةً باستخدام المقياس المتعدّد وتوضّح كيفيّة انتقال أردوينو ميني دورياً إلى وضعِ توفير الطاقة ويخفض استهلاك التيار من 5.25 mA إلى 1.58 mA.
