Arduino: วัดแรงดันไฟฟ้าภายนอก


10

ฉันมี "ปัญหา" ในขณะที่พยายามวัดแรงดันภายนอกจากเซลล์เหรียญ ฉันทำให้วงจรของฉันง่ายขึ้น แต่โดยทั่วไปฉันมี DS1307 นาฬิกาเรียลไทม์ซึ่งขับเคลื่อนโดยเอาท์พุท Arduino 5v และเซลล์เหรียญเชื่อมต่อกับ vBat เพื่อให้นาฬิกามีชีวิตอยู่ในขณะที่ Arduino ปิดทำงาน ความคิดของฉันคือการวัดระดับแบตเตอรี่ด้วย Arduino โดยเชื่อมต่อขั้วบวกกับอินพุตอะนาล็อกและอ่านระดับแรงดันไฟฟ้า ดังนั้นฉันคิดว่าเนื่องจากแรงดันไฟฟ้าสูงสุดคือ 3v ฉันสามารถใช้ 3v3 เป็น AREF และตั้งค่าการอ้างอิงแบบอะนาล็อกไปยังภายนอกแล้วอ่านผลลัพธ์ที่แม่นยำ ผลลัพธ์ที่ได้ค่อนข้างเจ๋งและการอ่านจาก Arduino เหมือนกับการอ่านแรงดันแบตเตอรี่จากมัลติมิเตอร์ของฉัน ปัญหาเกิดขึ้นเมื่อฉันตัดการเชื่อมต่อแหล่งพลังงานจาก Arduino (การเชื่อมต่อ USB) สำหรับความประหลาดใจของฉัน Arduino ไม่ปิด (ไฟ LED บางดวงเปิดอยู่)

ทำไมสิ่งนี้จึงเกิดขึ้น Arduino ใช้กระแสไฟฟ้าจาก Analog Pin เป็นอย่างไร? นี่เป็นวงจรเล็ก ๆ ที่เป็นความผิดปกติทางอิเล็กทรอนิกส์หรือไม่?

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


10

ส่วนใหญ่ถ้าไม่ใช่ทั้งหมดหมุดอินพุตของคอนโทรลเลอร์ AVR ได้รับการป้องกันจากภายในด้วยไดโอดหนีบ ไดโอดเหล่านี้ป้องกันไม่ให้แรงดันไฟฟ้าขาเข้าสูงกว่าแรงดันไฟฟ้า

เหตุใดจึงมีไดโอดภายในเหล่านี้:

มันเป็นสิ่งสำคัญที่ต้องตระหนักว่าเมื่อมีการป้อนข้อมูลขาไม่เพิ่มขึ้นดังกล่าวข้างต้นแรงดันและไดโอดเหล่านี้ไม่ได้มีชิปอาจทำหน้าที่เป็น SCR สลักสั้นแบตเตอรี่และชิปตัวเองอาจจะได้รับความเสียหายจากกระแสเกิน / ความร้อนสูงเกินไป .

เหตุใด Arduino ของคุณจึงทำงานจากแบตเตอรี่ ลองดูที่แผนภาพวงจรด้านล่าง เมื่อ Vcc ถูกถอดออกจากแหล่งพลังงานปกติจะมีเส้นทางจากแบตเตอรี่ผ่าน D1 ไปยัง Vcc แรงดันแบตเตอรี่สูงพอที่ผู้ควบคุมจะใช้งานได้

แผนผัง

จำลองวงจรนี้ - แผนผังที่สร้างโดยใช้CircuitLab

วิธีแก้ปัญหา

วิธีการแก้ปัญหานั้นง่ายเพิ่มตัวต้านทานที่มีมูลค่าสูงในอนุกรมระหว่างแบตเตอรี่และอินพุตของคอนโทรลเลอร์ AVR ส่วนใหญ่มีกระแสไฟรั่วสูงสุดที่ระบุ (I IL ) ที่1μAดังนั้นคุณต้องการให้แน่ใจว่าแรงดันไฟฟ้าตกนั้นเป็นที่ยอมรับในปัจจุบันนั้นกล่าวว่า100kΩ

แต่ระวัง!

คุณต้องตระหนักว่าอินพุตอาจดึงกระแสนี้จากเซลล์ปุ่มของคุณและทำให้อายุการใช้งานสั้นลง


ฉันลอง 10Mohm แล้วดูว่า ADC อ่านและใช้อะไรเป็นข้อมูลอ้างอิงสำหรับแบตเตอรี่ที่ชาร์จแล้ว เป็นการวัดที่ยุ่งยากหากคุณต้องการหลีกเลี่ยงการระบายน้ำที่ไม่พึงประสงค์
แอนดี้อาคา

มันสามารถใช้งานได้แม้ว่ามันจะเป็นสเป็คในปัจจุบันและไม่เป็นอิมพิแดนซ์อินพุต การตอบสนองอาจไม่ใช่เชิงเส้น แต่ไม่จำเป็นเลย อาจต้องมีการสอบเทียบบางประเภทและอาจใช้ช่องว่างอ้างอิง 1V1 แบนด์วิดท์ (แทนการอ้างอิงภายนอก 3V3) เมื่อแรงดันไฟฟ้าที่วัดได้ลดลงต่ำกว่า 1.1V
jippie

คำตอบที่ดี !! ฉันคิดว่าตัวต้านทานตัวต้านทานที่มี100kΩและ50kΩจะทำงานได้หรือไม่ ในกรณีนี้ฉันคาดว่าจะได้แรงดันแบตเตอรี่สูงสุด 3.2 โวลต์ สิ่งนี้ให้แรงดันไฟฟ้าตกที่ 1.067v ซึ่งสามารถเข้ากันได้กับการอ้างอิงแบบแอนะล็อกภายในของ 1v1 สิ่งนี้สามารถใช้งานได้? หรือแบตเตอรี่จะหมดเร็วเกินไป
alvarolb

2
ฉันไม่รู้ความจุของแบตเตอรี่ของคุณ ควรระบุเป็น mAh สิ่งที่บ่งบอกว่าอายุการใช้งานของ1000} เซลล์เหรียญอาจใช้เวลาไม่นาน แต่คุณควรตรวจสอบแผ่นข้อมูลเพื่อให้แน่ใจ T=mAh3V×1000100kΩ+50kΩ=mAh × (100kΩ+50kΩ)3V×1000
jippie

1
ไดโอดเหล่านี้มีอยู่ในไมโครคอนโทรลเลอร์ส่วนใหญ่โดยทั่วไปไม่ใช่แค่ AVR พวกเขาไม่เคยได้ยินจากไอซีประเภทอื่นเช่นกัน
Adam Lawrence
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.