ฉันกำลังมองหาตัวบ่งชี้อายุการใช้งานแบตเตอรี่ที่ฉันสามารถใช้ร่วมกับตัวควบคุมไมโคร ฉันหวังว่าฉันจะสามารถอ่านอายุการใช้งานแบตเตอรี่ที่เหลืออยู่ในปัจจุบันและเพิ่มตัวควบคุมไมโครให้เข้าสู่โหมดสลีปเพื่อรักษาอายุการใช้งานแบตเตอรี่
ฉันกำลังมองหาตัวบ่งชี้อายุการใช้งานแบตเตอรี่ที่ฉันสามารถใช้ร่วมกับตัวควบคุมไมโคร ฉันหวังว่าฉันจะสามารถอ่านอายุการใช้งานแบตเตอรี่ที่เหลืออยู่ในปัจจุบันและเพิ่มตัวควบคุมไมโครให้เข้าสู่โหมดสลีปเพื่อรักษาอายุการใช้งานแบตเตอรี่
คำตอบ:
สำหรับคำถามหลักเกี่ยวกับวิธีการวัดแรงดันไฟฟ้าของแบตเตอรี่วิธีที่ง่ายที่สุดคือการใช้พิน ADC ตัวใดตัวหนึ่งในอาร์ดิโน
หากคุณกำลังจัดหาแบตเตอรี่ 5 โวลต์ (ไม่น่าจะเป็นไปได้) คุณสามารถเรียกใช้ + ตรงไปที่หนึ่งในอะนาล็อกในพินและใช้ analogRead () - แต่ละค่าที่เพิ่มขึ้น (จาก 0-1023) จะแสดง 4.9mV ดังนั้นคูณค่าการอ่านด้วย. 0049 เพื่อให้อ่านโวลต์
หากคุณทำงานสูงกว่า 5v (มีโอกาสมากขึ้น) คุณสามารถใช้วงจรแบ่งแรงดันไฟฟ้า (ดู: http://en.wikipedia.org/wiki/Voltage_divider ) เพื่อนำแรงดันไฟฟ้าที่คุณส่งไปยังอินพุตอนาล็อกไปที่ <= 5v หากคุณใช้งาน 12V คุณจะต้องแบ่งแรงดันไฟฟ้าออกเป็น 1/3 จากนั้นหลังจากคูณค่า ADC ให้คูณด้วย 3 เพื่อให้ได้แรงดันไฟฟ้าที่แท้จริง
ดังนั้นหากใช้ 12V และตัวแบ่งแรงดัน 1 / 3rd:
#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/
ข้อเสนอแนะของ shutterdrone นั้นดีมาก แต่ขาดรายละเอียดเนื่องจากหมายความว่าการอ้างอิงแรงดันไฟฟ้าแบบอะนาล็อกนั้นเหมือนกับแรงดันไฟฟ้าที่วัดได้ (นอกเหนือจากสมมติว่ามีการใช้ Arduino ซึ่งไม่ได้ระบุไว้อย่างชัดเจน)
คุณจะต้องใช้ ADC ไม่ว่าจะเป็นส่วนประกอบของ uC หรือส่วนประกอบภายนอก ADC ต้องการการอ้างอิงแรงดันไฟฟ้าแบบอะนาล็อก (ARef) เพื่อเปรียบเทียบอินพุตด้วย คุณไม่ต้องการให้ ARef เหมือนกับแรงดันไฟฟ้าที่คุณสัมผัสเพราะ ADC จะมองเห็นแรงดันไฟฟ้าขาเข้าและการอ้างอิงเท่ากันเสมอดังนั้นค่าอนาล็อกสำหรับแรงดันไฟฟ้าที่ตรวจจับจะเป็นค่าสูงสุดเสมอ สิ่งที่คุณต้องการคือการอ้างอิงแรงดันไฟฟ้าอะนาล็อกที่แม่นยำมากซึ่งจะไม่เปลี่ยนแปลงเมื่อแรงดันไฟฟ้าของแหล่งจ่ายไฟเปลี่ยนแปลง ADC จะเปรียบเทียบแรงดันอ้างอิงนั้นกับแรงดันแบตเตอรี่ คุณสามารถใช้ตัวแบ่งแรงดันไฟฟ้าเพื่อลดแรงดันแบตเตอรี่ที่จะรับรู้ได้ในช่วงของ ARef
Arduino (Atmega8 / 168/328 / etc.) มี ADC ในตัวและการอ้างอิงแบบอะนาล็อกในตัว 1.1V ดังนั้นส่วนประกอบภายนอกที่คุณต้องการคือตัวต้านทานสำหรับตัวแบ่งแรงดันไฟฟ้า ฉันคิดว่าคุณต้องการใช้ค่าที่สูงมากสำหรับตัวต้านทานเพื่อลดการระบายออกของแบตเตอรี่ในปัจจุบัน