Forum: Mikrocontroller und Digitale Elektronik Vier Ladeschächte mit Mega48 parallel überwachen, geht das?


von Franz W. (Gast)


Lesenswert?

Hallo,

ich wollte mir ein Ladegerät basteln.
Hab die Hardware soweit fertig, einen Mosfet zum Laden einen weiteren 
zum entladen des Akkus über Widerstände pro Ladeschacht. Eine Leitung 
zum messen der Spannung per interner Spannungsreferenz und 
Spannungsteiler.

Mein Problem ist das ich vier Ladeschächte prallel überwachen möchte.

Zum Laden wollte ich das Pulsladeverfahren anwenden.
https://de.wikipedia.org/wiki/Ladeverfahren#Pulsladeverfahren

Mir ist absolut unklar wie ich vier Vorgänge auf einmal realisieren 
soll.
Dabei kann sich ja jeder schacht in unterschiedlichen zuständen befinden 
z.B. Schacht1 entladen
Schacht2 laden
Schacht3 leer
Schacht4 entladen

Für nur einen Ladeschacht ließ sich das ganze einfach realisieren. Aber 
für vier parallel mit unterschiedlichen zuständen.
Ladeverfahren:
1: Entladen auf 0,9V
2: Laden bis -dU erreicht
3: Anzeigen das alles fertig ist

Wie soll ich das nur für nier schächte gleichzeitig realisiern?

Grüße
Franz

von Karl M. (Gast)


Lesenswert?

Hallo Franz,

Zum einen würde ich nicht die interne Referenz nehmen sie kann genau 
sein aber ihr wärt ist nicht genau definiert.

Darüber hinaus hast du ja ein Anfang gemacht für einen Schacht, also 
überlege weiter und schreibe den Vorgang 3 weiteres mal untereinander.

Zur hältst du dann eine Überwachung, Lade und Darstellung Version deines 
Programms für 4 Schächte.

So mal im Groben gesprochen. Das heißt man programmiert dies natürlich 
nur einmal und verwendet die prozentuale Programmierung beispielsweise.

von Christian S. (roehrenvorheizer)


Lesenswert?

Das wurde schon einmal realisiert mit AtMega16 und Mega8535, siehe 
erster Link:

Beitrag "Asssembleprogramm für Mega16 auf Mega8535 anpassen, Sprungweite "call" und "jmp""

MfG

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Karl M. schrieb:
> Darüber hinaus hast du ja ein Anfang gemacht für einen Schacht, also
> überlege weiter und schreibe den Vorgang 3 weiteres mal untereinander.

Warum meinst du, dass man das insgesamt vier mal hinschreiben muss. In 
vielen Programmiersprachen gibt es Schleifenstrukturen, die dann über 
die 4 parallel ablaufenden Steuerprozesse iterieren können.

Möglichkeit 1: Ein Array mit den Pin-Nummern der Steuerpins, ein Array 
mit den Nummern der ADC-Kanäle, ein Array mit den aktuellen Spannungen 
...

Möglichkeit 2: Oder man geht es objektorientiert an, so dass es vier 
Objekte "Ladekanal" gibt, von denen jedes seine relevanten Daten enthält 
und das Programm iteriert über die vier Ladekanalobjekte.

von Wolfgang (Gast)


Lesenswert?

Karl M. schrieb:
> ... die prozentuale Programmierung ...

Was ist das denn?

von Sascha W. (sascha-w)


Lesenswert?

@Franz,

du musst dich davon verabschieden, das während eines Vorgangs nichts 
anderes passieren kann.
Jeder Schacht erhält eine Statusvariable die den aktuellen Zustand 
abbildet. Dann schaust du dir alle 5s (ist ja nicht gerade Zeitkritisch 
- die Aufgabe) den Status jedes Kanals an.
Steht der auf:
ENTLADEN - Spannung messen und auf Grenzwert prüfen, wenn <0.9 ->Status 
= laden
LADEN - Spannung messen und mit dem Wert der letzten Messung 
vergleichen, wenn -dU -> Status = fertig
FERTIG - Spannung messen, wenn <0.2 ->Status = leer
LEER - Spannung messen, wenn >0.5 ->Status = Entladen



Sascha

von Stefan F. (Gast)


Lesenswert?

Da dieses Thema hier fast jede Woche hochkommt, habe ich mal einen 
Artikel über Zustandsautomaten geschrieben, auf den ich dann verweisen 
kann: http://stefanfrings.de/multitasking_arduino/index.html

Lies Dir das mal durch.

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
Noch kein Account? Hier anmelden.