बैटरी पर एक साल तक चलने के लिए मुझे मेरा atmega328 कैसे मिल सकता है?


51

परिदृश्य

मैंने अपने डॉर्म रूम के लिए एक अच्छा इलेक्ट्रॉनिक डोर लॉक बनाया है। वर्तमान में यह एक Arduino Diecimila है जिसमें एक इमो [un] दरवाजा बंद है। इसमें 3x4 बटन और 5 एलईडी (2 सीरी जोड़े और एक सिंगल एलईडी) के साथ एक संख्यात्मक कीपैड है। यह वर्तमान में सेलफोन चार्जर पर भी चलता है।

मैंने अब इसे एक स्वसंपूर्ण Arduino (ATmega328) पर चलाने के लिए फिर से डिज़ाइन किया है, लेकिन क्या यह वास्तव में AA बैटरी या यहां तक ​​कि 9V बैटरी पर चलना पसंद करेगा।

सॉफ्टवेयर भाग के लिए, मुझे लगा कि मैं sleepATmega बिजली की खपत को कम से कम रखने के लिए लूप विधि के अंदर निश्चित समय के लिए कॉल डाल सकता हूं । और एलईडी के "फ्लैश" को यथासंभव लंबे समय तक बंद रहने दें।

प्रश्न 1

जब कुछ मिलीसेकंड के दौरान एक बटन दबाया जाता है जो बोर्ड सोता है, तो क्या यह "याद" / "आयोजित" होगा जब तक कि यह नींद से बाहर न निकले और फिर बटन प्रेस के रूप में उठाया जाए?

नींद पर इस बटन प्रेस को संभालने का सबसे अच्छा तरीका क्या होगा? क्या मैं इसे बटन गतिविधि पर जागने के लिए कोड कर सकता हूं, या क्या मुझे इसे उदाहरण के लिए सोने देना चाहिए जैसे 10 मी। हर लूप में

प्रश्न 2

10 महीने तक इस उपकरण को चलाने के लिए कितने AA बैटरी की आवश्यकता होगी, इसकी गणना करने के गणित से मैं कैसे संपर्क करूंगा?

इसके अलावा, मुझे नहीं पता कि प्रति मिनट या तो औसत बिजली के उपयोग को कैसे मापना है, क्योंकि यह जल्दी से वैकल्पिक होता है आदि।

उपकरण

मेरा दरवाजा लॉक डिवाइस

जवाबों:


35

Atmega328 छह बिजली की बचत मोड प्रदान करता है, कम से कम उत्कृष्ट ( इस मंच पोस्ट से अनुमानित वर्तमान खपत ) का आदेश दिया :

  • SLEEP_MODE_IDLE: 15 mA
  • SLEEP_MODE_ADC: 6.5 mA
  • SLEEP_MODE_PWR_SAVE: 1.62 mA
  • SLEEP_MODE_EXT_STANDBY: 1.62 mA
  • SLEEP_MODE_STANDBY: 0.84 mA
  • SLEEP_MODE_PWR_DOWN: 0.36 mA

मूल प्रश्न का हवाला देते हुए:

मुझे लगा कि मैं sleepलूप विधि के अंदर निश्चित समय के लिए कॉल कर सकता हूं "

sleep_cpu()ऊपर दी गई सूची से, आपको आवश्यक स्लीप मोड सेट करने के बाद उपयोग करने की आवश्यकता होगी। Arduino Playground में इस बारे में एक उपयोगी पोस्ट है

एप्लिकेशन को बाधित करने की आवश्यकता है, उपरोक्त नींद मोड का बड़े पैमाने पर उपयोग करें, और प्रोसेसर को बटन पुश, टाइमर ओवरफ्लो और वॉचडॉग टाइमर घटनाओं को वास्तव में कार्यों को निष्पादित करने के लिए जगाएं।

अतिरिक्त बिजली बचत निम्नलिखित चरणों के माध्यम से प्राप्त की जा सकती है:

  • माइक्रोकंट्रोलर के आंतरिक ऑसिलेटर और कम घड़ी दर (16 के बजाय 8MHz) का उपयोग करें - लेकिन यह सुनिश्चित करें कि समय और समय संबंधित कोड अभी भी उम्मीद के मुताबिक काम करता है। इसके लिए बूटलोडर के एक अलग संस्करण की आवश्यकता हो सकती है।
  • यदि एप्लिकेशन उनका उपयोग करता है, तो लंबे समय तक एलईडी रखने से बचें। छोटी अवधि की तीव्र डबल या ट्रिपल फ्लैश (0.05 सेकंड ऑन, 0.5 सेकंड ऑफ) का उपयोग करते हुए, बीच में सेकंड के अंतराल के साथ, न्यूनतम बिजली की खपत के साथ ध्यान देने योग्य संकेत सुनिश्चित करता है।
  • यदि एक नियामक की आवश्यकता है, तो एक रैखिक एक के बजाय एक स्विचिंग नियामक का उपयोग करें।
  • समर्थित होने पर निचले वोल्टेज पर माइक्रोकंट्रोलर चलाएं, 5 वोल्ट के बजाय 3.0 वोल्ट (जैसे CR2032 लिथियम सेल, कोई नियामक की आवश्यकता नहीं) या 3.3 वोल्ट।
  • न्यूनतम शक्ति अपव्यय के लिए अप्रयुक्त इनपुट और आउटपुट पिन सेटिंग्स के लिए डेटाशीट में सिफारिशों का पालन करें।

इन सुझावों को शामिल करने के लिए एक एकल CR2032 सिक्का सेल पर हफ्तों या महीनों के लिए माइक्रोकंट्रोलर एप्लिकेशन चलाने की अनुमति मिलती है, और LR123 लिथियम सेल पर वर्ष। बेशक, आपका माइलेज आपके सेंसर के लिए आवश्यक सेंसर, आउटपुट और वास्तविक प्रसंस्करण के आधार पर भिन्न हो सकता है।

कुछ उपयोगी संदर्भ:


मेरे अनुभव के साथ, SLEEP_MODE_PWR_DOWN में आप इसे 0.1uA से 6.0uA तक ले जा सकते हैं यदि आप हर छोटी चीज़ को बंद करने के बारे में स्मार्ट रहे हैं (जैसे ब्राउन-आउट डिटेक्शन)। मैंने बनाया है कि 60uA से कम का उपयोग करें जो पिछले 3-5 वर्षों में क्षारीय AA बैटरी के एक सेट पर उपयोग किया जाता है।
टिम एक्सेल

@TimEckel मैं एल ई डी के साथ स्थिति का संकेत देने के बारे में पागल हूं - जो बिजली के बजट को खाती है जैसे वह शैली से बाहर जा रही थी।
अंडो घोष

3
यह करने के लिए नहीं है। उच्च प्रतिरोध के साथ उच्च शक्ति वाले एलईडी का उपयोग करें। 20 mA के बजाय mA के एक अंश का उपयोग करेगा। इसके अलावा, लगातार कुछ सेकंड के बजाय हर कुछ सेकंड में 5-15 एमएस के लिए एलईडी स्थिति को फ्लैश करें। मेरे पास एक सस्ता मंद स्थिति वाला एलईडी था जो 30 एमए का उपयोग करता था, मैंने इसे 3.3k ओम अवरोधक के साथ उच्च शक्ति वाले एलईडी में बदल दिया, जिसे मैंने हर 8 सेकंड में एक बार 15 एमएस के लिए फ्लैश किया। 30 mA से 2.9 UA तक की औसत धारा, 1/1000 की शक्ति से गई!
टिम इकलेल

4
@TimEckel आप स्पष्ट रूप से ब्लिंक लाइट्स के लिए मेरे जुनून की सीमा को नहीं समझते हैं: -D ऐसा नहीं है क्योंकि मैं तीव्रता को कम करना चाहता हूं, मैं उन छोटी चीजों को पसंद करता हूं जैसे कि आग की लपटों की तरह, बिजली के बजट को धूमिल किया जाना चाहिए! अधिक गंभीर नोट पर: मैं उन छोटी-छोटी तरकीबों से वाकिफ हूं, और वास्तव में मैंने खुद से कुछ फैशन किया है, जो एल ई डी के माध्यम से बिजली को कम करते हुए दृश्य अलार्म प्रभाव को बढ़ाते हैं। पिछली टिप्पणी यह ​​( केवल आंशिक रूप से ) जेस्ट में थी, मैं यहां आसपास कई मजेदार एलईडी सवालों के साथ जाने के लिए ।
अंडो घोष

3
मैंने अलग-अलग वोल्टेज और आवृत्तियों पर
ATMega328P

19

मेरे पास अभी मेरी डेस्क पर एक Arduino Pro Mini है जो 2 AA बैटरी से चल रहा है और यदि आवश्यक हो तो एक वर्ष से अधिक के लिए चल सकता है।

डिजाइन के तीन पहलू हैं जिन्होंने इसे हासिल किया है।

1. एक अलग नियामक

मैं LTC3525 बूस्ट रेगुलेटर का उपयोग कर रहा हूं। इसमें बहुत कम मौन प्रवाह (7uA) और उच्च दक्षता (> 90% @ 0.2mA) है। कुछ इस तरह के स्पार्कफुन बोर्ड https://www.sparkfun.com/products/8999 को एक समान काम करना चाहिए। इसे Arduino पर 5V पिन से जोड़ना सुनिश्चित करें, न कि VIN, ताकि Arduino रेगुलेटर का उपयोग न हो।

2. स्लीपीईप

डिवाइस सक्रिय होने के समय का अनुपात छोटा होगा। बाकी समय के लिए डिवाइस को SLEEP_MODE_POWER_DOWN में सो जाना चाहिए। आप अपनी नींद की दिनचर्या को रॉकेटसेट्रेम लो पावर लाइब्रेरी से दूर कर सकते हैं । उस लिंक के अनुसार आप इसे ADC, BOD और WDT के साथ और पावर डाउन मोड में 1.7uA तक प्राप्त कर सकते हैं।

3. व्यवधान

दूसरी आधी नींद उसे जगाने के लिए बाधित होती है। पावर डाउन स्लीप मोड में, INT1 और INT2, TWI मैच पर केवल स्तर में बाधा आती है, और WDT इसे जगाएगा। इसलिए आपको या तो INT1 या INT2 से एक बटन जुड़ा होना चाहिए ताकि बटन दबाने पर वह जाग जाए।

अन्य सामान:

जब तक बिल्कुल आवश्यक न हो, सभी एलईडी बंद करें। यदि ताला घर के भीतर है, तो एल ई डी को उज्ज्वल नहीं होना चाहिए, अधिक शक्ति की बचत होगी। यदि आपको एमसीयू को नियमित रूप से कुछ कार्य करने की आवश्यकता है, तो समय-समय पर इसे जागृत करने के लिए वॉचडॉग टाइमर का उपयोग करें।

संपादित करें:

एक विधि जो काम कर सकती है, वह है लो पावर लाइब्रेरी का ऊपर प्रयोग करना, और 60 मिनट के लिए हर लूप को वॉचडॉग टाइमर के लिए धन्यवाद कहना। बटन प्रेस के लिए जागो पर। कॉल करने का कार्य होगा

LowPower.powerDown(SLEEP_60MS, ADC_CONTROL_OFF, BOD_OFF);

14

इन सभी टिप्पणियों पर हाजिर हैं। मैं कुछ और सुझाव जोड़ना चाहूंगा:

1) एलईडी के लिए, उच्च आउटपुट 20 एमएए एलईडी का उपयोग करें। यहाँ तर्क है। कहते हैं कि आप एक मंद स्थिति एलईडी चाहते हैं जो हर 8 सेकंड में झपके। आप चाहते हैं कि यह उज्ज्वल न हो, इसलिए आप कुछ यादृच्छिक एलईडी का उपयोग करते हैं। समस्या यह है कि एक मंद एलईडी अभी भी केवल 100 mcd आउटपुट के लिए 20 mA (या अधिक) का उपयोग करता है। इसके बजाय, एक उच्च आउटपुट एलईडी प्राप्त करें जो अभी भी 20 mA के लिए रेट किया गया है लेकिन 4000 mcd आउटपुट कर सकता है (सुनिश्चित करें कि आप आउटपुट कोण को देखते हैं, आप अभी भी चाहते हैं कि यह 30 डिग्री या उससे अधिक हो)। इस 4000 mcd LED के साथ, आप इसे 3.3 k ओहम रेसिस्टर की तरह कनेक्ट करते हैं और आपको लगभग 100 mcd लाइट आउटपुट मिलता है, लेकिन 1 mA से कम का उपयोग कर रहे हैं। इसलिए, स्थिति एलईडी के लिए 20 मा का उपयोग करने के बजाय, आप एक एकल मा के एक अंश का उपयोग कर रहे हैं। मैंने आमतौर पर केवल 5-15 एमएस के लिए समय पर एलईडी फ्लैश की स्थिति निर्धारित की है, जो कि यदि आप पहले 100 एमबी पर समय पर फ्लैश करते थे, तो बहुत अधिक बिजली बचा सकते हैं।

2) मेरी पसंद का वोल्टेज नियामक माइक्रोचिप MCP1700 है। यह केवल 1.6 centA के प्रतिसाद प्रवाह का उपयोग करता है और सुपर सस्ते (कम मात्रा में $ 0.30 के आसपास) है। यह केवल सीमा है कि अधिकतम इनपुट वोल्टेज केवल 6 वोल्ट है, इसलिए आप 9 वोल्ट की बैटरी का उपयोग नहीं कर सकते हैं। लेकिन, यह 4 एए बैटरी, एक एकल सेल लीपो या दो लिथियम सिक्का कोशिकाओं के लिए एकदम सही है।

3) 4 AA बैटरी के साथ ATmega सर्किट को पावर करने के लिए, मैं आमतौर पर VCC पर 1N4001 डायोड का उपयोग 4 बैटरी के अधिकतम 6 वोल्ट को 5.5 वोल्ट पर छोड़ने के लिए करता हूं। इसके अलावा, डायोड रिवर्स वोल्टेज से एटीमेगा को बचाता है, इसलिए यह दो उपयोगी उद्देश्यों को पूरा करता है। ऐसा करते हुए, मैं एक बैटरी संचालित सर्किट बना सकता हूं जो सोते समय 0.1 sleepingA के रूप में कम से कम उपयोग कर सकता है क्योंकि हर समय वर्तमान में कोई वोल्टेज नियामक नहीं होता है।


8

मैंने एक नंगे atmega328P-PU पर एक रॉकेटबोर्ड पर RocketScream LowPower लाइब्रेरी का उपयोग करके एक परीक्षण किया

इस स्केच का इस्तेमाल किया:

#include "LowPower.h"

void setup(){}

void loop()
{
    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);         
    delay(5000);
}

पावर डाउन मोड में एक uCurrent गोल्ड के साथ मैंने 7.25 यूए मापा।


1
अच्छा! मैं जल्द से जल्द यह कोशिश करूँगा। क्या यह CR2032 बैटरी के साथ वर्षों के लिए atmega238 चलाने की अनुमति देता है?
बसज

6

यहां दो प्रश्न हैं, लेकिन केवल दूसरा एक प्रश्न शीर्षक का हिस्सा है, इसलिए यह शायद बेहतर है यदि आप एक और एक को Arduino प्रोग्रामिंग प्रश्न के लिए खोलते हैं। मैं यहाँ दूसरे प्रश्न का उत्तर दूंगा।

सिंगल टॉप-एंड अल्कलाइन 1.5V AA बैटरी की क्षमता लगभग 2600mAh है। यदि आप लिथियम बैटरी के लिए जाते हैं, तो आप भाग्यशाली होने पर लगभग 3400mAh पा सकते हैं। आइए उस आकृति के साथ निरपेक्ष रूप से सर्वोत्तम स्थिति के लिए आधार रेखा के रूप में जाएं।

जिस तरह से आप लोड के लिए सैद्धांतिक अधिकतम चलने के समय की गणना करते हैं, वह लोड द्वारा विभाजित क्षमता है। यदि आपका लोड 1mA है, तो आप इसे 3400/1 = 3400 घंटे = 141 दिन = ~ 5 महीने तक चला सकते हैं। हालाँकि, यह केवल एक सैद्धांतिक अधिकतम है , क्योंकि आप उस समय में 65% के आसपास महत्वपूर्ण वोल्टेज ड्रॉपिंग शुरू कर देंगे। यदि आप आउटपुट को नियंत्रित कर रहे हैं, तो आपको एक भगोड़ा प्रभाव मिलेगा जहां बैटरी वोल्टेज कम होता है, विनियमित वोल्टेज को बनाए रखने के लिए उच्चतर वर्तमान की आवश्यकता होती है, जो बैटरी को तेजी से सूखा देती है। यदि आप अपने डिवाइस को चलाने के लिए पर्याप्त वोल्टेज के साथ इसमें से 80% से अधिक विज्ञापित क्षमता प्राप्त कर सकते हैं तो मुझे आश्चर्य होगा।

तो, मान लें कि आपको उस समय का 80% वोल्टेज ड्रॉपिंग और नियामक अक्षमताओं के बाद मिलता है। हम मान लेंगे कि आप श्रृंखला में तीन बैटरी से 3.3V पर चल रहे हैं। यह आपको अभी भी समान क्षमता देगा, लेकिन वोल्टेज एक नियामक के लिए पर्याप्त होगा। यदि आपका डिवाइस 15mA पर चलता है (यह एक रूढ़िवादी अनुमान है) तो संख्या इस तरह दिखाई देगी:

  • 80% दक्षता के बाद क्षमता = 3400 * 0.8 = 2720mAh
  • समय = 2720/15 = 181 घंटे = 7.54 दिन

तो आपको एक वर्ष के लिए इसे चलाने के लिए लगभग 144 लिथियम बैटरी (3 के 48 सेट) की आवश्यकता होगी। इतना अच्छा नहीं!

मैं इसके बजाय मुख्य से एक विनियमित डीसी आपूर्ति का उपयोग करने का सुझाव देता हूं। एक बैटरी बैकअप शामिल किया जा सकता है, जो एसपीडीटी रिले के साथ स्थापित करना आसान है - बस कॉइल को मुख्य डीसी तक हुक करें और बैटरी से जुड़ा "बंद" संपर्क करें। जब डीसी विफल हो जाता है, तो संपर्क ड्रॉप हो जाता है और इसके बजाय बैटरी का उपयोग किया जाता है।


मेरे ताररहित सपनों को कुचल दिया जाता है;) विस्तृत उत्तर के लिए धन्यवाद। यह मुझे सबसे अच्छा विकल्प लगता था।
लौवहोपले

संयोगवश, यह वही प्रश्न था जो मैंने इलेक्ट्रॉनिक दरवाज़ा बंद करते समय स्वयं से किया था। यहां तक ​​कि एक चंकी 10,000mAh की रिचार्जेबल बैटरी के साथ यह इसके लायक नहीं था। एक बैकअप के रूप में एक 250mA DC एडॉप्टर और एक पुराने मोबाइल फोन की बैटरी का उपयोग करके समाप्त हुआ।
बहुराष्ट्रीय

4
15 एमए औसत मेरे लिए बहुत रूढ़िवादी नहीं है! 328 स्लीप मोड में सिंगल-डिजिट माइक्रोएम्प्स पर चल सकता है, और निश्चित रूप से आप कम से कम अर्ध-गहरी नींद में बहुत समय तक इसे दूर रख सकते हैं। इसके अलावा, कम आवृत्तियों (जैसे 0.5 मेगाहर्ट्ज) पर आप सक्रिय मोड में <1 एमए के साथ प्राप्त कर सकते हैं। बेशक, अन्य घटकों (वोल्टेज नियामकों आदि) को कम-शक्ति की प्रकृति के अनुकूल होने के लिए चुना जाना चाहिए।
एक्सक्यूस्केप

4
@ पॉलिनोमियल मैंने योजनाबद्ध रूप से बारीकी से नहीं देखा, लेकिन निश्चित रूप से परियोजना को "पावर एलईडी" के बिना बनाया जा सकता है। या आप इसे ब्लिंक कर सकते हैं, ताकि यह आधे ब्राइटनेस (पीडब्लूएम के माध्यम से) पर हो, केवल २५ एमएस हर २ सेकंड के लिए कहने के लिए, जैसे कि वर्तमान उपयोग १५ की बजाय
०.०

1
Arduino बिजली की भूख है। अपने बोर्ड का निर्माण यह हल करेगा। 32kH और 0.75 यूए पर पावर सेविंग मोड में Atmega328 ड्रॉ होता है।
वोरैक

4

किसी ने अभी तक किसी का उल्लेख नहीं किया है: आपको इमदादी को पॉवर देने के लिए 5 वी की आपूर्ति को बंद करने के लिए कुछ तरीके की आवश्यकता है, जब आप इसका उपयोग नहीं कर रहे हों। यहां तक ​​कि जब यह आगे नहीं बढ़ रहा है, तब भी एक सर्वो शक्ति को आकर्षित करेगा।

द्वार के साथ एक FET जिसे Arduino से I / O पिन द्वारा नियंत्रित किया जाता है, ऐसा करने का एक अच्छा तरीका है।


मैं आमतौर पर प्रत्येक सेंसर या इसे चालू / बंद करने के लिए 2N3904 का उपयोग करता हूं। या, यदि सेंसर कम-शक्ति वाला है और वही वोल्टेज जो मैं एटमेगा चला रहा हूं, तो मैं बिजली की स्थिति को नियंत्रित करने के लिए सीधे पिन का उपयोग करता हूं।
टिम एकेल

1
2n3904 की तुलना में काफी कम बिजली का उपयोग करने के लिए 2n7000 का उपयोग करें और आपको एक आधार अवरोधक की आवश्यकता नहीं है।
जॉन मेकाहम

3

आप अपने अगले डिज़ाइन के लिए कम बिजली की खपत के लिए विशेष रूप से अनुकूलित एक माइक्रो-कंट्रोलर thats का उपयोग करने पर विचार कर सकते हैं। कम बिजली की खपत के लिए सोते समय बहुत कम बिजली लेना आवश्यक है। अक्सर जो अनदेखा किया जाता है वह यह है कि यह भी महत्वपूर्ण है कि यह नींद से कितनी जल्दी जाग सकता है।

क्या मायने रखता है कि सबसे गहरी नींद से एक बाधा को सबसे तेजी से संभालने में कितना शुल्क लगता है (क्योंकि तब बिजली का विस्फोट बहुत कम होगा) और फिर से सोने के लिए वापस जाएं।

ऐसे माइक्रो-कंट्रोलर का एक उदाहरण टेक्सास इंस्ट्रूमेंट्स से MSP430 है। उनकी वेबसाइट पर आपको एप्लिकेशन नोट्स मिलेंगे कि ऊर्जा और ऊर्जा संचयन अनुप्रयोगों को कैसे विकसित किया जाए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.