मैं एक बैटरी लाइफ इंडिकेटर बनाना चाहता हूं जिसे मैं माइक्रो-कंट्रोलर के साथ मिलकर उपयोग कर सकता हूं। मैं उम्मीद कर रहा हूं कि मैं वर्तमान बैटरी जीवन को शेष रह सकता हूं और तेजी से बैटरी जीवन को संरक्षित करने के लिए माइक्रो-कंट्रोलर को लगा सकता हूं।
मैं एक बैटरी लाइफ इंडिकेटर बनाना चाहता हूं जिसे मैं माइक्रो-कंट्रोलर के साथ मिलकर उपयोग कर सकता हूं। मैं उम्मीद कर रहा हूं कि मैं वर्तमान बैटरी जीवन को शेष रह सकता हूं और तेजी से बैटरी जीवन को संरक्षित करने के लिए माइक्रो-कंट्रोलर को लगा सकता हूं।
जवाबों:
प्राथमिक प्रश्न के रूप में, बैटरी के वोल्टेज को कैसे मापना है, सबसे सरल तरीका है कि एडीसी पिन में से एक का उपयोग करना आर्डिनो पर।
यदि आप बैटरी से 5v प्रदान कर रहे हैं (संभावना नहीं है), तो आप पिन में एनालॉग में से किसी एक पर सीधे + चला सकते हैं, और analogRead () का उपयोग कर सकते हैं - मूल्य में प्रत्येक वृद्धि (0-1023 से) 4.9mV का प्रतिनिधित्व करेगा। तो वोल्ट को पढ़ने के लिए .0049 से रीड वैल्यू को गुणा करें।
यदि आप 5v (अधिक संभावना) से अधिक चल रहे हैं, तो आप उस वोल्टेज को लाने के लिए एक वोल्टेज विभक्त सर्किट (देखें: http://en.wikipedia.org/wiki/Voltage_divider ) का उपयोग कर सकते हैं, जिसे आप एनालॉग इनपुट पर भेज रहे हैं <= 5 वी। यदि आप 12V चला रहे हैं, तो आप वोल्टेज को लगभग 1/3 में विभाजित करना चाहेंगे। फिर, एडीसी मान को गुणा करने के बाद, वास्तविक वोल्टेज प्राप्त करने के लिए 3 से गुणा करें।
इस प्रकार, यदि 12 वी और 1/3 वोल्टेज विभक्त का उपयोग किया जाता है:
#define BAT_PIN 14
float read_batt_volts(void) {
int val = analogRead(BAT_PIN);
float volts = (float) val * (float) 0.0049 * (float) 3;
return(volts)
}
!सी
tinker.it ने Atmega168 / atmega328 में "गुप्त" वोल्टेज स्तर मीटर प्रकाशित किया। एक छोटी सी चाल के साथ एक Arduino VCC की तुलना आंतरिक परिशुद्धता 1.1v संदर्भ के साथ करने में सक्षम है। स्पष्टीकरण और कोड यहाँ है: https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/
शटररोन का सुझाव बहुत अच्छा है, लेकिन एक विवरण याद आ रहा है, क्योंकि इसका मतलब है कि एनालॉग वोल्टेज संदर्भ उसी तरह मापा जा रहा है जैसे वोल्टेज मापा जा रहा है (एक अरुडिनो का उपयोग किया जा रहा है, जो स्पष्ट रूप से नहीं कहा गया है)।
आपको ADC की आवश्यकता होगी, चाहे वह आपके UC या किसी बाहरी घटक से अभिन्न हो। इनपुट के साथ तुलना करने के लिए ADC को एक एनालॉग वोल्टेज संदर्भ (ARef) की आवश्यकता होती है। आप एआरईएफ को उसी वोल्टेज के रूप में नहीं चाहते हैं जो आप संवेदन कर रहे हैं क्योंकि तब एडीसी हमेशा इनपुट और संदर्भ वोल्टेज को समान होने के रूप में देखेगा, इसलिए संवेदी वोल्टेज के लिए एनालॉग मूल्य हमेशा अधिकतम होगा। आपको जो आवश्यकता है वह एक बहुत सटीक एनालॉग वोल्टेज संदर्भ है जो बिजली की आपूर्ति वोल्टेज में परिवर्तन के रूप में नहीं बदलेगा। एडीसी उस संदर्भ वोल्टेज की तुलना बैटरी वोल्टेज से करेगा; एआरएफ की सीमा में बैटरी वोल्टेज को कम करने के लिए आप एक वोल्टेज विभक्त का उपयोग कर सकते हैं।
Arduino (Atmega8 / 168/328 / etc।) में एक अंतर्निहित ADC और एक अंतर्निहित 1.1V अनुरूप संदर्भ है, इसलिए आपको केवल बाहरी घटकों की आवश्यकता होगी जो वोल्टेज विभक्त के लिए प्रतिरोधक हैं। मुझे लगता है कि आप बैटरी पर वर्तमान नाली को कम करने के लिए प्रतिरोधों के लिए बहुत उच्च मूल्यों का उपयोग करना चाहते हैं।