कम बैटरी संकेतक


22

मैं एक बैटरी लाइफ इंडिकेटर बनाना चाहता हूं जिसे मैं माइक्रो-कंट्रोलर के साथ मिलकर उपयोग कर सकता हूं। मैं उम्मीद कर रहा हूं कि मैं वर्तमान बैटरी जीवन को शेष रह सकता हूं और तेजी से बैटरी जीवन को संरक्षित करने के लिए माइक्रो-कंट्रोलर को लगा सकता हूं।


1
कौन सा माइक्रोकंट्रोलर?
ब्रायन कार्लटन

जवाबों:


13

प्राथमिक प्रश्न के रूप में, बैटरी के वोल्टेज को कैसे मापना है, सबसे सरल तरीका है कि एडीसी पिन में से एक का उपयोग करना आर्डिनो पर।

यदि आप बैटरी से 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)
}

!सी


2
इससे जुड़ने के लिए मेरे पास दो प्रमुख बातें हैं। सबसे पहले, ज्यादातर 12 वी बैटरी 0 वी पर नहीं मरती हैं, लेकिन इसके बजाय कुछ बहुत करीब, कम से कम 5 वी के भीतर, आपके पूर्ण चार्ज वोल्टेज की। ऑपरेटिंग रेंज में उच्च रिज़ॉल्यूशन मापन प्राप्त करने के लिए एक आम तकनीक एक जेनर डायोड के साथ वोल्टेज को कम करना है। एक ज़ेनर के साथ श्रृंखला में एक रोकनेवाला और आप रोकनेवाला के पार मापते हैं। दूसरा, अधिकांश लोगों को एहसास नहीं होता है कि आपको बचे हुए पावर का अच्छा अंदाजा लगाने के लिए बैटरी से करंट खींचना होगा।
कोर्तुक

@ कोरटुक: क्या आप मेरे सीखने के लिए दो स्पष्टीकरण कर सकते हैं: (१) पिन-स्वीकृत वोल्टेज सीमा के भीतर पाने के लिए, क्या आप सुझाव दे रहे हैं कि जेनर-डायोड दृष्टिकोण वोल्टेज विभक्त विधि की तुलना में उच्च रिज़ॉल्यूशन देगा? (२) आपने यहाँ एक विशेष उल्लेख क्यों किया कि "आपको करंट खींचने की जरूरत है ...", आदि।
बोर्डबीट

22

tinker.it ने Atmega168 / atmega328 में "गुप्त" वोल्टेज स्तर मीटर प्रकाशित किया। एक छोटी सी चाल के साथ एक Arduino VCC की तुलना आंतरिक परिशुद्धता 1.1v संदर्भ के साथ करने में सक्षम है। स्पष्टीकरण और कोड यहाँ है: https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/


उत्कृष्ट, मैं बैटरी पर एक atmega चला रहा हूं, और एक विश्वसनीय vref मान नहीं पा रहा था। इसे पोस्ट करने के लिए धन्यवाद, इसने मेरी समस्या को जादू की तरह हल कर दिया!
राधौ

10

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

आपको ADC की आवश्यकता होगी, चाहे वह आपके UC या किसी बाहरी घटक से अभिन्न हो। इनपुट के साथ तुलना करने के लिए ADC को एक एनालॉग वोल्टेज संदर्भ (ARef) की आवश्यकता होती है। आप एआरईएफ को उसी वोल्टेज के रूप में नहीं चाहते हैं जो आप संवेदन कर रहे हैं क्योंकि तब एडीसी हमेशा इनपुट और संदर्भ वोल्टेज को समान होने के रूप में देखेगा, इसलिए संवेदी वोल्टेज के लिए एनालॉग मूल्य हमेशा अधिकतम होगा। आपको जो आवश्यकता है वह एक बहुत सटीक एनालॉग वोल्टेज संदर्भ है जो बिजली की आपूर्ति वोल्टेज में परिवर्तन के रूप में नहीं बदलेगा। एडीसी उस संदर्भ वोल्टेज की तुलना बैटरी वोल्टेज से करेगा; एआरएफ की सीमा में बैटरी वोल्टेज को कम करने के लिए आप एक वोल्टेज विभक्त का उपयोग कर सकते हैं।

Arduino (Atmega8 / 168/328 / etc।) में एक अंतर्निहित ADC और एक अंतर्निहित 1.1V अनुरूप संदर्भ है, इसलिए आपको केवल बाहरी घटकों की आवश्यकता होगी जो वोल्टेज विभक्त के लिए प्रतिरोधक हैं। मुझे लगता है कि आप बैटरी पर वर्तमान नाली को कम करने के लिए प्रतिरोधों के लिए बहुत उच्च मूल्यों का उपयोग करना चाहते हैं।


2
उत्कृष्ट अंक - और आप सही हैं कि मैंने (गलत तरीके से) मिश्रण में एक अरुडिनो को ग्रहण किया। =)! सी
शटरटरोन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.