การวัดแรงดันไฟฟ้าของแหล่งจ่ายไฟของ Arduino โดยใช้ Analog In


9

ฉันเปิดเครื่อง Arduino โดยใช้แบตเตอรี่ขนาด 5 โวลต์ (3.7v ไปยังโมดูลแบบเลื่อนขึ้น) และฉันจำเป็นต้องวัดแรงดันไฟฟ้า สมมติว่าแบตเตอรี่จ่ายกระแสสูงจะปลอดภัยที่จะวัดแรงดันไฟฟ้าด้วย Analog In หรือไม่? ในขณะนี้:

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

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

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

การเชื่อมต่อในแผนภาพแรกปลอดภัยสำหรับ ADC หรือไม่ ขอบคุณล่วงหน้า!

หมายเหตุ:คำถามที่คล้ายกันถูกถามที่นี่: ( ตรวจสอบการใช้พลังงาน DC ), แต่มันไม่ตอบคำถามเกี่ยวกับกระแสไฟฟ้าสูงในแบตเตอรี่


1
คุณได้รับแบตเตอรี่ 5V อยู่ที่ไหน

จริงๆแล้วมันเป็นแบตเตอรี่ 3.7v ที่เข้าสู่วงจรควบคุมแรงดันไฟฟ้าแบบเป็นขั้นเป็นตอน ฉันสนใจที่จะวัดแบตเตอรี่ 3.7v เอง แต่เพื่อเป็นตัวอย่างเพียงแค่สมมติว่า 5v เพื่อแสดงว่า Arduino ทำงาน
Ahmed Farid

อ่า แต่มันอาจเปลี่ยนแปลงสิ่งต่าง ๆ อาจเป็นไปได้ว่า: อาร์ดิโนจะไม่สนใจว่าแบตเตอรี่จะถูกดึงออกมาเป็นจำนวนเท่าใดตราบใดที่กระแสไฟฟ้าทั้งหมดไม่ผ่าน IO ขา แต่ฉันไม่แน่ใจฉันไม่รู้จักอาร์ดิโน

นั่นเป็นเรื่องจริง ฉันกังวลเกี่ยวกับอินพุตปัจจุบันไปยังขาเข้าแบบอะนาล็อกหากฉันเชื่อมต่อโดยตรงกับแบตเตอรี่
Ahmed Farid

คำตอบ:


6

ตรวจสอบแผ่นข้อมูลสำหรับกระแสอินพุทบนพิน I / O มันขึ้นอยู่กับชนิดของคอนโทรลเลอร์ที่แน่นอนบน Arduino ของคุณ มันอาจจะเรียกว่าการป้อนข้อมูลการรั่วไหลของฉันปัจจุบัน / O ขาและจะอยู่ใกล้1μA

นี่คือแผ่นข้อมูล ATmega ทั่วไปที่ใช้กับ Uno / Duemilanove / ...คุณสามารถค้นหาพารามิเตอร์ในหน้า 304 ตรวจสอบแผ่นข้อมูลสำหรับตัวควบคุมเฉพาะของคุณสำหรับรายละเอียดที่ถูกต้อง

หากคุณใช้แบตเตอรี่ 3.7V และตัวแปลงสเต็ปอัพเพื่อจ่ายไฟ 5V ให้กับคอนโทรลเลอร์คุณสามารถเชื่อมต่อแบตเตอรี่เข้ากับอินพุตอะนาล็อกของคอนโทรลเลอร์โดยตรง อย่างไรก็ตามเมื่อแรงดันเอาท์พุทของตัวแปลงสเต็ปอัพลดลงต่ำกว่าแรงดันไฟฟ้าของแบตเตอรี่ (ไม่ว่าจะด้วยเหตุผลใดก็ตาม) Arduino ทั้งหมดของคุณจะถูกป้อนผ่านขาอินพุตแบบอะนาล็อกและนั่นคือสิ่งที่คุณไม่ต้องการ พินอินพุตทั้งหมดมีการป้องกันแรงดันไฟฟ้าเกินซึ่งทำให้สามารถทำงานลักษณะนี้ได้ แต่ไดโอดไม่ได้รับการจัดอันดับสำหรับกระแสต่อเนื่อง โดยสรุป: เป็นการดีที่สุดที่จะรวมตัวต้านทานแบบอนุกรมระหว่างแบตเตอรี่และพินอินพุต

แต่ตอนนี้การวัดของคุณขึ้นอยู่กับความถูกต้องของแหล่งจ่ายไฟ 5V ขึ้นอยู่กับตัวควบคุมที่แน่นอนที่คุณมีมีแรงดันอ้างอิงภายในที่หลากหลายซึ่งมีความแม่นยำมากกว่าแรงดันไฟฟ้า หากคุณเพิ่มตัวต้านทานพิเศษลงในกราวด์ (R2) คุณสามารถใช้การอ้างอิงดังกล่าวเพื่อวัดแรงดันไฟฟ้าขาเข้าได้อย่างแม่นยำ สิ่งนี้เรียกว่าตัวแบ่งแรงดัน (ตัวต้านทาน) ด้วยอัตราส่วนที่กำหนด voltaga บนขาอินพุตจะเป็น 1V เมื่อแรงดันไฟฟ้าของแบตเตอรี่คือ 3.7V:

Vม.อีasยูRอีม.อีnเสื้อ=R2×VBATTR1+R2

แผนผัง

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


1
ดังนั้นในสาระสำคัญมันเป็นไปได้ที่จะเชื่อมต่อโดยตรงกับแบตเตอรี่ แต่ไม่แนะนำถ้า 5v แตกต่างกันไป แม้ว่า 5v จะถูกควบคุมและคงที่หรือไม่
Ahmed Farid

2
ควรปลอดภัยหาก 5V เป็นค่าคงที่ แต่สิ่งต่าง ๆ ผิดพลาดตลอดเวลาดังนั้น: ปลอดภัยกว่าขออภัย ตัวต้านทานหนึ่งหรือสองตัวนั้นราคาถูกกว่าไมโครคอนโทรลเลอร์ตัวใหม่ วิศวกรรมไม่เพียง แต่เกี่ยวกับการทำให้สิ่งต่าง ๆ ทำงาน แต่ยังเกี่ยวกับการทำสิ่งต่าง ๆ ที่ทำงานต่อไปตามที่ต้องการ
jippie

คำถามอื่นถ้าฉันอาจ: ความต้านทานเดียว (1K) ไม่ขนานกับแบตเตอรี่ดีพอที่จะป้องกันกระแสไฟฟ้าเข้าสูงหรือไม่? (ดูรูปที่สองของฉัน)
Ahmed Farid

ไม่มันไม่ทำอะไรนอกจากดึงแบตเตอรี่
jippie

4

อีกทางเลือกหนึ่งคือการใช้แรงดันอ้างอิง bandgap 1.1V ภายในของ Arduino เพื่อกำหนดค่าของ VCC โดยไม่ต้องใช้ชิ้นส่วนภายนอกเพิ่มเติมใด ๆ ตามรายละเอียดที่ลิงก์ทั้งสองนี้:

http://jeelabs.org/2012/05/04/measuring-vcc-via-the-bandgap/

และ

http://arduino.cc/forum/index.php?topic=88935.0

gotcha เพียงอย่างเดียวคือคุณต้องกำหนดค่าการสอบเทียบเทียบกับ bandgap 1.1V ภายในเนื่องจากสามารถปิดได้มากถึง 10%

แต่นั่นไม่จำเป็นต้องมีชิ้นส่วนเพิ่มเติมและจะอนุญาตให้ atmega ของคุณเพื่อตรวจสอบแรงดันไฟฟ้าของแหล่งพลังงาน


3
นี่คือบทความอื่นที่กล่าวถึงวิธีการทำเช่นนี้ รหัสที่ใช้แตกต่างกันเล็กน้อย: giveyourown.com/2012/…
ThomasW

@ThomasW ดี! อีกบทความที่ยอดเยี่ยมเกี่ยวกับการใช้ bandgap 1.1v
Wing Tang Wong
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.