Mengukur tegangan sumber daya Arduino menggunakan Analog In

9

Saya memberi daya pada Arduino menggunakan baterai 5V (3,7V ke modul step-up), dan saya perlu mengukur tegangan. Katakanlah baterai memberikan arus tinggi , apakah aman untuk mengukur tegangan melalui Analog In? Seperti dalam hal ini:

masukkan deskripsi gambar di sini

Alasan saya bertanya adalah karena saya tidak tahu banyak tentang arsitektur dan batasan ADC Arduino. Jadi biasanya, saya akan melakukannya untuk keamanan:

masukkan deskripsi gambar di sini

Apakah koneksi pada diagram pertama aman untuk ADC? Terima kasih sebelumnya!

Catatan: Pertanyaan serupa ditanyakan di sini: ( Pantau Penggunaan Daya DC ), tetapi tidak menjawab pertanyaan tentang arus beban tinggi pada baterai.

Ahmed Farid
sumber
1
Di mana Anda mendapatkan baterai 5V?
Sebenarnya ini adalah baterai 3.7v yang masuk ke rangkaian regulator tegangan step-up. Saya memang tertarik untuk mengukur baterai 3.7V itu sendiri, tetapi demi contoh, hanya mengasumsikan 5v untuk menunjukkan bahwa Arduino berfungsi.
Ahmed Farid
Ah, tapi itu mungkin mengubah banyak hal. Mungkin tidak: arduino tidak akan peduli berapa banyak arus yang ditarik oleh baterai, selama tidak semua arus melewati pin IO. Tapi saya tidak yakin, saya tidak tahu Arduino.
Itu benar. Saya khawatir tentang input saat ini ke pin Analog In jika saya langsung menghubungkannya ke baterai.
Ahmed Farid

Jawaban:

6

Periksa lembar data untuk input saat ini pada pin I / O Ini tergantung pada jenis pengontrol yang tepat pada Arduino Anda. Ini mungkin disebut input I / O pin Kebocoran Arus dan akan mendekati 1μA .

Berikut ini adalah lembar data ATmega tipikal yang digunakan pada Uno / Duemilanove / ... , Anda dapat menemukan parameter di halaman 304. Periksa lembar data untuk pengontrol spesifik Anda untuk detail yang akurat.

Jika Anda menggunakan baterai 3.7V dan konverter step up untuk memasok 5V ke controller, Anda dapat menghubungkan baterai secara langsung ke input analog controller Anda. Namun ketika tegangan output konverter step up turun di bawah tegangan baterai (untuk alasan apa pun) maka seluruh Arduino Anda akan diumpankan melalui pin input analog dan itulah yang tidak Anda inginkan. Semua pin input memiliki perlindungan terhadap tegangan lebih yang memungkinkan perilaku ini, tetapi dioda tidak diberi peringkat untuk arus kontinu. Kesimpulannya: yang terbaik adalah memasukkan resistor seri antara baterai dan pin input.

Tetapi sekarang pengukuran Anda bergantung pada keakuratan catu daya 5V. Tergantung pada pengontrol yang tepat yang Anda miliki, ada berbagai tegangan referensi internal yang tersedia yang jauh lebih akurat daripada tegangan catu daya. Jika Anda menambahkan resistor tambahan ke ground (R2), Anda dapat menggunakan referensi seperti itu untuk secara akurat mengukur tegangan input. Ini disebut pembagi tegangan (resistif). Dengan rasio yang diberikan, voltaga pada pin input akan menjadi 1V ketika tegangan baterai adalah 3.7V:

VmeSebuahskamurement=R2×VBSEBUAHTTR1+R2

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

jippie
sumber
1
Jadi pada dasarnya, adalah mungkin untuk menghubungkannya langsung ke baterai tetapi TIDAK dianjurkan jika 5v bervariasi. Bahkan jika 5v diatur dan konstan?
Ahmed Farid
2
Seharusnya aman jika 5V konstan, tetapi ada yang salah sepanjang waktu jadi: lebih aman daripada menyesal. Satu atau dua resistor jauh lebih murah daripada mikrokontroler baru. Rekayasa tidak hanya tentang membuat sesuatu berfungsi, tetapi juga membuat hal-hal yang tetap bekerja sesuai kebutuhan.
jippie
Pertanyaan lain jika saya boleh: Apakah tidak ada hambatan tunggal (1K) secara paralel dengan baterai yang cukup baik untuk mencegah input arus tinggi? (Lihat gambar saya yang kedua)
Ahmed Farid
Tidak, tidak melakukan apa pun selain menarik baterai.
jippie
4

Pilihan lain adalah dengan menggunakan referensi tegangan celah pita internal 1.1V Arduino untuk menentukan nilai VCC tanpa menggunakan bagian eksternal tambahan seperti yang dijelaskan pada dua tautan ini:

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

dan

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

Satu-satunya Gotcha adalah bahwa Anda perlu menentukan nilai kalibrasi terhadap celah celah internal 1.1V karena dapat dimatikan sebanyak 10%.

Tetapi itu tidak memerlukan bagian tambahan, dan akan memungkinkan atmega Anda untuk menentukan tegangan sumber dayanya.

Wing Tang Wong
sumber
3
Berikut ini adalah artikel lain yang membahas cara melakukan ini. Kode yang digunakan sedikit berbeda: provideyourown.com/2012/…
ThomasW
@ Thomas bagus! Artikel hebat lainnya tentang penggunaan celah pita 1.1v.
Wing Tang Wong