Hallo Leute, Ich beschäftige mich momentan mit einer LiPo-Akkuüberwachung - den Schaltplan könnt ihr im Anhang finden. Wenn die Spannung einer Zelle unter 3,6V fällt und über 3,4V ist, soll eine LED aufleuchten (PB0 und PB1), ist die Spannung unterhalb von 3,4V und über 3,2V, dann soll der Summer (PB2) piepsen. Wenn die Spannung unterhalb von 3,2V ist, soll ein Signal weitergeleitet werden. Ich habe das Programm bisher auf einem ATMega16 programmiert (dort hatte ich ein Testboard mit LED's um die Funktion zu programmieren) - dort klappt auch alles super. Jetzt habe ich das Programm für den ATTiny43U umgeschrieben, aber es klappt nicht wie erhofft. Seit ein paar Tagen bin ich am herumschreiben und ausprobieren, aber es will einfach nicht klappen. Die einzelnen ADC's funktionieren alleine (Programm nur mit ADC3 oder ADC2 oder ADC1). Gemeinsam klappt es allerdings nicht [kann der ATTiny das nicht? - beim ATMega hatte ich keine Probleme. Hab auch nur die Register umgeschrieben, an der Struktur hab ich eig nichts geändert] Funktionserläuterung beim .c File: ADC3 liest die Spannung zwischen GND und Zelle1 [0 -max 4,2V] ADC2 liest die Spannung zwischen GND und Zelle2 [0 - max 8,4V] ADC1 liest die Spannung zwischen GND und Zelle3 [0 - max 12,6V] Der ADC-Wert von Zelle1 (z.B.) wird so multipliziert [mit dem 10 bit ADU + evtl. Spannungsteiler bei Zelle2 und Zelle3)], dass sich eine Spannung in mV ergibt. Bei Zelle 2 und Zelle3 werden noch die anderen Zellspannungen subtrahiert, sodas wirklich nur die Zellenspannung übrig bleibt! Diese Spannung durchläuft dann verschiedene IF-Bedingungen, wodurch ich dann feststellen kann, in welchem Bereich die Spanung liegt. Dies geschieht mit allen 3 Spannungen. Die kleinste Spannung wird dann an das CASE weitergegeben, wo dann die Aktionen (LED, Summer, Signal) ausgeführt werden - in Abhängigkeit von der kleinsten Zellspannung. Momentan summt der Summer wenn die Spannung EINER Zelle unterhalb von 3,2V ist [dies hab ich aus Testgründen so gemacht]. Die restlichen Funktionen sind erstmal nicht so wichtig, da erstmal das Grundgerüst stehen soll, der Rest ist ja quasi analog dazu. Es würde mich freuen, wenn sich jemand das Programm anschaun könnte. Ich zerbrech mir grade den Kopf und komm einfach nicht weiter :( Liebe Grüße, Domi
Was mir beim Überfliegen auffällt: Die Zeile
1 | ADC3_voltage = (((ADC_measu... |
ist zweimal vorhanden. Das untere soll bestimmt ADC1 heißen. Kommt bestimmt davon, daß in den Überschriften erst 1, dann 2 dann 3 steht. Und im Programm hast du erst 3, dann 2 und unten 1 stehen. Da ist ein Flüchtigkeitsfehler vorprogrammiert, wenn man sich nach den (falschen) Kommentaren richtet... Ich weiß nicht, ob das alles ist, habs nur mal schnell überflogen.
Hallo BerndS1, danke, dass du dir Zeit genommen hast, um dir das Programm anzusehen! :D Mit ADC1 hast du natürlich recht. Die ADC's sind von der Nummerierung her wirklich schlecht gewählt - auf sowas sollte ich beim nächsten Projekt achten. Gestern ist die Platine leidern den Bach runtergegagenen, so kann ich momentan das Programm nicht testen - erst wieder am FR. Was mir aber aufgefallen ist, wenn mehrere ADC's gleichzeitig laufen, dann verschieben sich die Bereiche. So kann es sein, dass Zelle1 (Zellenspannung) bei 3,4V auslöst (sollte aber bei 3,2) und die andren 2 Zelle weit über 4V (ebenfalls Zellenspannung) liegen - simuliert mit meheren Netzgeräten. Mein Verdacht, dass es am subtrahieren mit den Werten ADC2_voltage bzw ADC3_voltage liegt, hat sich nicht bestätigt, da es mit fixen Werten auch nicht funktioniert hat. LG Domi
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.