Saya ingin membuat indikator usia baterai yang dapat saya gunakan bersama dengan micro-controller. Saya berharap bahwa saya dapat membaca sisa masa pakai baterai saat ini dan semakin mengaktifkan micro-controller untuk menjaga masa pakai baterai.
Saya ingin membuat indikator usia baterai yang dapat saya gunakan bersama dengan micro-controller. Saya berharap bahwa saya dapat membaca sisa masa pakai baterai saat ini dan semakin mengaktifkan micro-controller untuk menjaga masa pakai baterai.
Jawaban:
Untuk pertanyaan utama, seperti bagaimana mengukur tegangan baterai, metode paling sederhana adalah dengan menggunakan salah satu pin ADC pada arduino.
Jika Anda menyediakan 5v dari baterai (tidak mungkin), maka Anda dapat menjalankan + langsung ke salah satu analog dalam pin, dan menggunakan analogRead () - setiap kenaikan nilai (dari 0-1023) akan mewakili 4,9mV. Jadi gandakan nilai baca dengan 0,0049 untuk mendapatkan volt dibaca.
Jika Anda menjalankan lebih tinggi dari 5v (lebih mungkin), Anda dapat menggunakan sirkuit pembagi tegangan (lihat: http://en.wikipedia.org/wiki/Voltage_divider ) untuk membawa tegangan yang Anda kirim ke input analog ke <= 5v. Jika Anda menjalankan 12V, Anda ingin membagi tegangan menjadi sekitar 1/3. Kemudian, setelah mengalikan nilai ADC, kalikan dengan 3 untuk mendapatkan tegangan aktual.
Jadi, jika menggunakan 12V, dan pembagi tegangan 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)
}
! c
tinker.it menerbitkan pengukur level tegangan "rahasia" di Atmega168 / atmega328. Dengan sedikit trik, Arduino dapat membandingkan VCC dengan referensi presisi internal 1.1v. Penjelasan dan kode ada di sini: https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/
Saran shutterdrone sangat bagus, tetapi tidak memiliki detail, karena ini menyiratkan bahwa referensi tegangan analog sama dengan tegangan yang diukur (selain dari asumsi bahwa Arduino sedang digunakan, yang tidak secara eksplisit dinyatakan).
Anda akan memerlukan ADC, apakah itu integral dengan UC Anda atau komponen eksternal. ADC membutuhkan referensi tegangan analog (ARef) untuk membandingkan input. Anda tidak ingin ARef sama dengan tegangan yang Anda rasakan karena ADC akan selalu melihat tegangan input dan referensi sama, sehingga nilai analog untuk tegangan indra akan selalu menjadi maksimum. Yang Anda butuhkan adalah referensi tegangan analog yang sangat akurat yang tidak akan berubah seiring perubahan tegangan catu daya. ADC akan membandingkan tegangan referensi dengan tegangan baterai; Anda dapat menggunakan pembagi tegangan untuk mengurangi tegangan baterai yang dirasakan ke dalam kisaran ARef.
Arduino (Atmega8 / 168/328 / etc.) Memiliki ADC built-in dan referensi analog 1.1V built-in, jadi satu-satunya komponen eksternal yang Anda perlukan adalah resistor untuk pembagi tegangan. Saya pikir Anda juga ingin menggunakan nilai yang sangat tinggi untuk resistor untuk mengurangi daya baterai saat ini.