2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Arduino və bir rezistor, 5v -ə qədər gərginlik batareyaları üçün tutum sayğacı yaradan bu dizaynı qurmaq üçün bizə lazım olan tək şeydir. Asit, qələvi, NiCd, Li-ionlar və Lipo batareyaları istifadə edilə bilər. Bazar, böyük bir tutuma sahib olan saxta batareyalarla doludur, lakin vəd edilənlərin bir hissəsini çatdıraraq, bu layihə, bəzi Çin 8800 Li-ionlarının hətta 650mAh olmadığı zaman mövcud batareyaların həqiqi tutumunu aşkar etməyə kömək edir.
Diqqətli olmaq və boşalmanın qarşısını almaq lazımdır, təkrar doldurulan batareyalar nominal gərginliyin 20% -dən çox boşaldılmamalıdır, bu cihazınıza geri dönməz zərər verə bilər.
Addım 1: Hamısını bir araya gətirmək yalnız bir asan addımdır
Göstərilən rezistorlar 22R / 10W və ya 10R / 10W -dir, daha az analiz müddəti təqdim etdiyi üçün sonuncudan istifadə edirik. CR2032 kimi daha kiçik batareyaları sınamaq üçün batareyanı qızdırmaqdan çəkinməklə, yavaş boşalma ilə 47R / 2W rezistoru istifadə etmək olar.
Dəqiqlik üçün kodda yalnız iki düzəliş edilməlidir. "Vcc" dəyişən Arduino lövhəsində ölçülmüş birbaşa gərginlik dəyərini almalıdır. "Rezistor" dəyişəni Ohmda rezistorun dəqiq dəyərini almalıdır və ondalık ədədlərdən istifadə edilə bilər.
Arduino IDE -dən Serial Monitor, hər 1.8 saniyədə bir oxunan bir interfeys olaraq istifadə edildi, buna görə də test zamanı PC arduino -ya bağlı qalmalı, kompüterin başqa bir yerdə istifadəsinə imkan verən pəncərə minimuma endirilə bilər. məqsəd, hətta Buna görə də dizayn asanlıqla 16x2 LCD və ya 4 rəqəmli 7 seqmentli ekranı qəbul etmək üçün dəyişdirilə bilər.
1.8s vaxtı, sürətli bir yeniləməyə imkan verdiyi üçün və hesablamaları asanlaşdıran saatın 0.0005 -ni təmsil edən 60 -dan çox olması səbəbindən seçildi.
Ən sadə olmağına əlavə olaraq, bu həll araşdırılan digərləri arasında ən ucuzu idi.
Addım 2: Kod
float vcc = 5.0; // Arduino lövhəsində real gərginlik dəyəri - multimeterfloat soma ilə ölçmə = 0.0;
int analogInput = 0;
float vout = 0.0;
int dəyəri = 0;
üzmə müqaviməti = 10; // Rezistorun ohmdakı əsl dəyəri, multimetrlə ölçün -
// dizaynda istifadə olunur: 10 Ohm / 10 Vat
boş quraşdırma () {
Serial.begin (9600);
pinMode (analogInput, INPUT);
Serial.println ("Hər 1.8 saniyədə bir oxunur");
gecikmə (1800);
}
boşluq döngəsi () {
dəyər = analogRead (analogInput);
vout = (dəyər * vcc) / 1024.0;
float cout = vout / müqavimət;
float parcial = cout * 0.0005;
soma = soma + parcial;
Serial.print ("Cari oxumaq:");
Serial. çap (cout);
Serial.print ("Amp.");
Serial.print ("İndiyə qədər ölçülüb:");
float msoma = soma * 1000;
Serial. çap (msoma);
Serial.println ("mAh");
// 1.8 seg daha gözləyin
gecikmə (1800);
}