Akku-Kapazitätmessgerät: Microcontroller Programm



Das Controller-Programm hat folgende Aufgaben: regelmäßige Abfrage des ADCs, Umwandeln des gelesenen Wertes in einen Spannungswert, Akkumulieren der Kapazität, Ausgabe auf dem LC-Display, Ausgabe über die RS232-Schnittstelle, Abbruch des Entladevorganges bei Unterschreiten einer bestimmten Spannung.

Die ist wie folgt realisiert: Über einen Timerinterrupt wird 4096 mal in der Stunde (das ist etwas schneller als einmal pro Sekunde) die ADC-Abfrage angestoßen. Die 4096 wurde gewählt um die nachfolgende Kapazitätsberechung zu vereinfachen. Hierdurch lassen sich Divisionen durch Shift-Operationen ersetzen.
Die Umwandlung des vom ADC gelesenen Wertes in einen Spannungswert erfolgt über eine Tabelle (voltage_table.a51). Diese kann mit Hilfe eines kleinen C-Programms (Spannungstabelle generieren) generiert werden.
Die Kapazität wird akkumuliert und auf dem LC-Display ausgegeben. Die Routinen zur Ansteuerungs des Displays befinden sich in lcd.a51. Die Belegung der Displayanschlüsse können in Grenzen über Pinzuweisungen im Hauptprogramm angepasst werden. Da die Akkukapazität 8 Bit natürlich überschreitet wird eine weitere Routine zur Umwandlung einer 16 Bit Hex in einen BCD-Zahl benötigt. Diese befindet sich in 16hex2bcd.a51. Die Routine stammt nicht von mir sondern wurde lediglich von mir für den MCS51 Assembler angepasst.


Hexfile: cap_mess.hex
Sourcecode Hauptprogramm: cap_meassure_tlc549.a51
Sourcecode LCD Routinen: lcd.a51
Sourcecode Hex2BCD: 16hex2bcd.a51
Sourcecode Spannungstabelle: voltage_table.a51




Akku-Kapazitätsmessgerät Index