Chcę stworzyć wskaźnik żywotności baterii, którego będę mógł używać w połączeniu z mikrokontrolerem. Mam nadzieję, że będę w stanie odczytać aktualny pozostały czas pracy baterii i coraz częściej uśpię mikrokontroler, aby wydłużyć żywotność baterii.
Chcę stworzyć wskaźnik żywotności baterii, którego będę mógł używać w połączeniu z mikrokontrolerem. Mam nadzieję, że będę w stanie odczytać aktualny pozostały czas pracy baterii i coraz częściej uśpię mikrokontroler, aby wydłużyć żywotność baterii.
Odpowiedzi:
Na podstawowe pytanie, jak zmierzyć napięcie akumulatora, najprostszą metodą jest użycie jednego ze styków ADC na arduino.
Jeśli dostarczasz 5 V z akumulatora (mało prawdopodobne), możesz poprowadzić + bezpośrednio do jednego z analogowych pinów i użyć analogRead () - każdy przyrost wartości (od 0-1023) będzie reprezentował 4,9 mV. Pomnóż wartość odczytu przez 0,0049, aby odczytać wolty.
Jeśli pracujesz powyżej 5 V (bardziej prawdopodobne), możesz użyć obwodu dzielnika napięcia (patrz: http://en.wikipedia.org/wiki/Voltage_divider ), aby doprowadzić napięcie, które wysyłasz na wejście analogowe do <= 5v. Jeśli używasz 12 V, zechcesz podzielić napięcie na mniej więcej 1/3. Następnie, po pomnożeniu wartości ADC, należy pomnożyć przez 3, aby uzyskać rzeczywiste napięcie.
Tak więc, jeśli używasz 12 V i dzielnika napięcia 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)
}
!do
tinker.it opublikował „tajny” miernik poziomu napięcia w Atmega168 / atmega328. Z małą sztuczką Arduino jest w stanie porównać VCC z wewnętrzną dokładnością odniesienia 1.1v. Wyjaśnienie i kod znajdują się tutaj: https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/
Sugestia Shutterdrone jest bardzo dobra, ale brakuje w niej szczegółów, ponieważ sugeruje, że analogowe napięcie odniesienia jest takie samo jak mierzone napięcie (poza założeniem, że używane jest Arduino, co nie jest wyraźnie określone).
Będziesz potrzebował ADC, niezależnie od tego, czy jest on zintegrowany z twoim komputerem, czy też z komponentem zewnętrznym. ADC potrzebuje analogowego napięcia odniesienia (ARef) do porównania wejścia. Nie chcesz, aby ARef był taki sam jak napięcie, które wykrywasz, ponieważ wtedy ADC zawsze zobaczy napięcie wejściowe i odniesienia jako równe, więc wartość analogowa dla wykrywanego napięcia będzie zawsze maksymalna. Potrzebujesz bardzo dokładnego analogowego napięcia odniesienia, które nie zmieni się wraz ze zmianą napięcia zasilania. ADC porówna to napięcie odniesienia z napięciem akumulatora; możesz użyć dzielnika napięcia, aby zmniejszyć wykrywane napięcie akumulatora do zakresu ARef.
Arduino (Atmega8 / 168/328 / etc.) Ma wbudowany ADC i wbudowane analogowe napięcie odniesienia 1.1V, więc jedynymi potrzebnymi komponentami zewnętrznymi są rezystory do dzielnika napięcia. Myślę, że chciałbyś również zastosować bardzo wysokie wartości rezystorów, aby zmniejszyć prąd rozładowania akumulatora.