وضع الإسبات Sleep Mode يوفر لنا أمكانية التحكم في كمية الطاقة التي يصرفها المتحكم الأصغري .
طرق الإسبات Sleep mode و الإيقاظ Wake up متعددة منها المبرمج و منها الخارجي المعتمد على تغير حالة أحد المخارج .
سأتحدث في البداية عن طرق توفير الطاقة و أختلاف كل طريقة عن الأخرى .
في النشرة الفنية لل Atmega168/328 تتحدث بالتفصيل عن هذه الطرق و الجول التالي يوضحها كلها :
يظهر من الجدول 6 وضعيات للإسبات :
الطريقة الأولى أقل طريقة توفيراً , و الأخيرة هي وضعية shutdown الأكثر اقتصادية في الإستهلاك .
اختيارك يجب أن يكون لإحدى هذه الوضعيات حسب طبيعة برنامجك "استخدام ADC او ال EEPROM او ال SRAM "خلال عمليه الإسبات حيث انك اذا استخدمت SLEEP_MODE_STANDBY لا يمكنك قراءة ال ADC خلاله , بعكس SLEEP_MODE_IDLE الذي يمكنك قراءة ال ADC خلال الإسبات, لكنه يستهلك طاقة أكبر .
سأتحدث في البداية عن طرق توفير الطاقة و أختلاف كل طريقة عن الأخرى .
في النشرة الفنية لل Atmega168/328 تتحدث بالتفصيل عن هذه الطرق و الجول التالي يوضحها كلها :
يظهر من الجدول 6 وضعيات للإسبات :
SLEEP_MODE_IDLE
SLEEP_MODE_ADC
SLEEP_MODE_PWR_SAVE
SLEEP_MODE_STANDBY
SLEEP_MODE_PWR_DOWN
الطريقة الأولى أقل طريقة توفيراً , و الأخيرة هي وضعية shutdown الأكثر اقتصادية في الإستهلاك .

اختيارك يجب أن يكون لإحدى هذه الوضعيات حسب طبيعة برنامجك "استخدام ADC او ال EEPROM او ال SRAM "خلال عمليه الإسبات حيث انك اذا استخدمت SLEEP_MODE_STANDBY لا يمكنك قراءة ال ADC خلاله , بعكس SLEEP_MODE_IDLE الذي يمكنك قراءة ال ADC خلال الإسبات, لكنه يستهلك طاقة أكبر .
في النشرة الفنية يوجد طريقة برمجة هذا النمط باستخدام لغة الألة Assembly
المسجلات اللتي تتحكم في الاوضاع و طريقة تنصيبها موجودة في الجدول .
قد يكون صعباً للبعض التعامل مع لغة الآلة لذلك سنسهل الموضوع هنا و ذلك باستخدام مكتبة رئيسية من مكتبات AVR التي وضعتها شركة أتميل تسهيلاً للمستخدمين " ليست هذه المكتبة حكراً على الأردوينو , يمكن استخدامها لأي برنامج AVR "
قد يكون صعباً للبعض التعامل مع لغة الآلة لذلك سنسهل الموضوع هنا و ذلك باستخدام مكتبة رئيسية من مكتبات AVR التي وضعتها شركة أتميل تسهيلاً للمستخدمين " ليست هذه المكتبة حكراً على الأردوينو , يمكن استخدامها لأي برنامج AVR "
تتنوع طرق الخروج من وضع الإسبات بين الطرق المبرمجة مثل ال watchdog Timer او عن طريق تغيير حالة المداخل مثل ال interrupt & Serial .
سأتحدث أولاً عن طريقة الإيقاظ عن طريق مقاطعة البرنامج خارجياً interrupt .
في هذا البرنامج سنقوم بجعل البرنامج يقوم بقراءة حساس كللمدة 10 ثواني و عرض هذه القراءة على ال Serial Monitor , ثم ادخال المتحكم في وضع الإسبات حتى نضغط على زر الإيقاظ .
في هذا البرنامج سنقوم بجعل البرنامج يقوم بقراءة حساس كللمدة 10 ثواني و عرض هذه القراءة على ال Serial Monitor , ثم ادخال المتحكم في وضع الإسبات حتى نضغط على زر الإيقاظ .
لن تحتاج لتنفيذ هذه التجربة سوى :
1) بطاقة أردوينو .
1) بطاقة أردوينو .
2) مفتاح كبسة push Button .
3)اسلاك توصيل Jumper .
التوصيل :
برنامج آخر يعمل على تطبيق برنامج blink لمدة 5 ثواني ثم اسبات النظام و تفعيله مجدداً عند الضغط على الزر .
بنفس التوصيلة السابقة .
بنفس التوصيلة السابقة .
تقل الطاقة المصروفة بنسبة 25% في هذه الحالة كما هو مبين بالصورة لقراءة الأميتر Ammeter .
0 التعليقات :
إرسال تعليق