Gast
#4419965
Hallo Leute, ich habe ein Problem und würde mich sehr freuen, wenn ich hier eine Hilfestellung finden würde. Ich will eine Strom- und Spannungsregelung realisieren. Die Sensordaten kommen in einem Mikrocontroller (Aduc7026) zusammen. Am Ende müssen diese beiden Regler zusammenarbeiten. Beide verstellen dasselbe Stellglied, also die 4 Schalter einer Vollbrücke. Geregelt wird über die Totzeit des PWM Signals, der die Schalter steuert. Die Strommessung kommt über den ADC von einem LEM Wandler. Also über eine Funktion zum Einlesen des entsprechenden Eingangspins kann man an die Daten kommen. Diese Daten kann man entsprechend umrechnen und an den Stromwert kommen. Die Spannungmessung kommt über GPIO als pulsweitenmodulliertes Signal, dessen Tastgrad abgetastet werden muss, um die Spannung zu bestimmen. Die Abtastung wird in einem Timer Interrupt gemacht, der etwa 100 mal pro Periode abtastet. Jetzt komme ich eben nicht weiter. Mal abgesehen davon, dass ich nicht weiß, ob ich die Messungen an den richtigen Stellen mache bzw. ob das die feine Art ist. Ob ich die Variablendeklarationen usw. alles an der richtigen Stellen vornehme. Also ob formal alles richtig ist, ohne näher auf den Inhalt einzugehen. Die Aufgabe ist einfach erklärt, der Regler, der die größere Totzeit errechnet, darf am Ende die Regelung übernehmen und der andere Regler muss warten. ( Für die, die es interessiert: Soll eine Strom- und Spannungsregelung nach der IU-Ladekennlinie werden. http://www.itwissen.info/bilder/iu-ladeverfahren-cccv-mit-konstantstrom-und-spannung.png ) Im Grunde müsste ich beide Regler rechnen lassen und am Ende eine if-Abfrage starten, um zu sehen, wer von beiden durch darf. Und dies immer wiederholen. (falls ich damit richtig liege ;D) Am liebsten würde ich die Ergebnisse beider Regler im while() über eine Funktion aufrufen und diesen Vergleich dort vornehmen und im while über den entsprechenden Register das passende Ausangssignal schicken. Doch sobald ich dies versuche z.B. die Messdaten, die im von der Spannungsregelung im Interrupt errechnet wurde über Variablen im while aufzurufen, kommen die roten Kreuze. Ich würde mich sehr freuen, wenn man mir als Laien zeigt, wo ich die Fehler mache bzw. ob dieses Vorhaben gelingen kann und was man beachten muss. Die Software habe ich hochgeladen. Ich habe eine andere Software als Basis für meine Software genutzt.