ich programmiere grad auf dem dsPIC33CK256MP508 eine Software die am Ende einen Konverter ansteuert. Dabei geht es bei meiner Frage um die Ansteuerung der 50 Hz Brücken.
Ich benutze den ADC um die Netzspannung (skaliert) einzulesen. Anschließend speichere ich die Messwerte in einem Ringbuffer. Im Interrupt bestimme ich steigende und fallende Flanke, was bisher sehr gut funktioniert. Auch bestimme ich anhand Schwellwerte welcher Transistor wann eingeschaltet wird. Dies allerdings funktioniert nicht so gut. Der uC läuft mit 100 Mhz dabei habe ich folgende ADC Einstellungen:
Time: FOSC
CLKDIV: 7
Samplingrate: 50 us
Conversation Time: 1.02 us
Der Fehler ist, dass er manchmal den Einschaltpunkt der Transistoren verpasst.
Aktuell habe ich am ADC Eingang ein Funktionsgenerator mit 50 Hz angeschlossen der ein OFFSET von 1.65 V hat und 50 mV *sin(); erzeugt. Umgerechnet ergibt dies an der Hardware eine Spannung von 28V später am Eingang der Hardware. Ich verstehe nicht wo der Fehler liegt und hoffe jemand hat Tipps
Vielleicht zeigst du einmal ein Zeitdiagramm, wie deine Magic-Numbers dem Signal zugeordnet sind.
Ein Schaltplan mit deinen Brückentransistoren und der Zuordnung zu dener Steuerfunktionssammlung wäre auch nicht verkehrt.
Wie sieht es mit erforderlichen Totzeiten aus?
Vielleicht zeigst du einmal ein Zeitdiagramm, wie deine
Magic-Numbers
dem Signal zugeordnet sind.
Ein Schaltplan mit deinen Brückentransistoren und der Zuordnung zu dener
Steuerfunktionssammlung wäre auch nicht verkehrt.
Wie sieht es mit erforderlichen Totzeiten aus?
Hardware steht noch nicht. Ich programmiere am uC mit einem Mikrocontroller und einem Oszi.
Die 50 Hz Brücken haben Totzeiten zwischen den Schwellwertbedingungen.
Zwischen 0 - 5 V soll in einer H-Brücke die Transistoren Q1 und Q4 schalten.
Wenn wieder 5V - 0 V erreicht wurde die Transistoren Q1 und Q4 aus.
Dann bei - 1 V bis - 5 V Q2 und Q3 und -5 V bis -1 V wieder aus. (Beigefüge Zeichnung).
QX sind die Bezeichnungen der Transistoren im Schaltplan im uC stellen sie jeweils ein GPIO Pin als Output da, denn ich high oder low setze
ADC Wert 2054 stellt 1,2 V da
ADC Wert 2077 stellt 9.7 V da
ADC Wert 2042 stellt - 1.8 V und 2047 0V
ADC Wert 2030 stellt -5.76 V da
Mein Fehler ist, dass er manchmal IF Abfragen verpasst oder direkt rein und raus geht. Ich vermute es liegt an falschen ADC Einstellungen. Hatte den Alogrihtmus bei PLECS simuliert und dort funktioniert er
Ich befürchte, das dein Konzept nur mit einem sauberen Sinus
funktioniert. Also nur im Labor, nicht in der Praxis.
Ich glaube, du brauchst einen Oszillator mi PLL. Erst nach erfolgreichem
Einrasten der PLL wird die Ausgangsstufe angetrieben.
Also das Konzept funktioniert auch mit Netzrauschen, da bei unserem Konverter es keine Rolle spielt ob die 50 HZ Brücken immer exakt gleich starten. Das Konzept kommt von meinem Prof und wurde in Simulationen validiert . In der Simulation hatte die Eingangsspannung rauschen bis +-3 V.... Der Konverter besteht aus mehren Stufen . Die beiden Stufen die so angesteuert werden haben nur die Aufgabe den Sinus umzuklappen... und werden dementsprechend nur alle 8 ms angesteuert. Hier spielt es keine Rolle ob sie bei 1 V 2 V oder 5 V starten und ausgeschaltet werden. Im Raum steht noch ein Tiefpassfilter, der die eingelesene Spannung filtert, aber aktuell noch nicht.
Die Peak-Bestimmung funktioniert ohne PLL bisher und filtert rauschen. Auch hier habe ich das Problem, dass nach 20 Perioden ein Wert springt. Beide Probleme zusammen vermute ich, dass der ADC Falsch konfiguriert ist, ich komme aber nicht darauf, was genau falsch konfiguriert ist
Meine Frage ging um den Punkt, wieso er in einige IF Bedingungen nach 5 Perioden einmal nicht reingeht und sonst rein geht. Mehr nicht
Meine Bachelorarbeit untersucht genau das ob es funktioniert oder nicht. Dafür muss die Software aber erstmal stehen......
ADC Wert 2054 stellt 1,2 V da
ADC Wert 2077 stellt 9.7 V da
ADC Wert 2042 stellt - 1.8 V und 2047 0V
ADC Wert 2030 stellt -5.76 V da
Muss man nicht verstehen, oder?
was gibt es da nicht zu verstehen. Ich habe einen 50 Hz Sinus Spannung den ich entsprechend hardwareseitig skaliere, damit er im Messbereich 0V bis 3.3 V des uC ist. Dann lese ich dies ein und prüfe ob ADC Werten die Schwellwertbedingungen erfüllen........
ADC Wert 2054 stellt 1,2 V da
ADC Wert 2077 stellt 9.7 V da
ADC Wert 2042 stellt - 1.8 V und 2047 0V
ADC Wert 2030 stellt -5.76 V da
Nur um sicherzustellen, dass ich dich nicht falsch verstanden habe: Der Spannungshub von -5.76V bis 9.7V (delta = 15.46V) verteilt sich also auf 47 Counts, ergo 329mV/Count?
Ganz davon abgesehen, hab ich aber überhaupt keine Lust auf eine Bätscheler-Arbeit ...
ADC Wert 2054 stellt 1,2 V da
ADC Wert 2077 stellt 9.7 V da
ADC Wert 2042 stellt - 1.8 V und 2047 0V
ADC Wert 2030 stellt -5.76 V da
Nur um sicherzustellen, dass ich dich nicht falsch verstanden habe: Der
Spannungshub von -5.76V bis 9.7V (delta = 15.46V) verteilt sich also auf
47 Counts, ergo 329mV/Count?
Ganz davon abgesehen, hab ich aber überhaupt keine Lust auf eine
Bätscheler-Arbeit ...
genau
Der Spannungsteiler besteht aus einem 4.1 MOhm wiederstand und einem 1.8K Wiederstand. Dann kommt TI Schaltung die hat erstmal ein Gain von 8.2 und anschließend skaliert er es mit 0.68 wieder runter. Zum Schluss kommt noch ein OFFSET von 1.65 V
Da wir erstmal mit kleinen Spannungen testen ist die Eingangsspannung die anliegen kann 0V - 48 V .
Die Transistoren der beiden 50 HZ Brücken sollen zwischen 0- 5 V oder 10 V starten, steht noch nicht fest und bei -5V oder - 10V bis - 1 V
Synchronisieren tut man zweckmaessigerweise auf die Nulldurchgaenge
oder die 1. Ableitung der Maxima mit einer Phasenregelschleife.
Die "Totzeiten" zur Ansteuerung erzeugt man mit einem oder
mehreren Timern und leitet sie nicht aus der Eingangsspannung
durch AD-Wandlung ab.
Synchronisieren tut man zweckmaessigerweise auf die Nulldurchgaenge
oder die 1. Ableitung der Maxima mit einer Phasenregelschleife.
Die "Totzeiten" zur Ansteuerung erzeugt man mit einem oder
mehreren Timern und leitet sie nicht aus der Eingangsspannung
durch AD-Wandlung ab.
das ist schön aber am Thema vorbei egal ich merke hier kommt nichts bei rum außer sachen die ich überhaupt nicht gefragt habe....
der Grund wieso wir das haben, ist weil wir keine Zeit haben PLL umzusetzen in 6 Wochen. Die Hardware muss nur 1 Tag funktionieren ...
Es wäre nett von Dir wenn wir wüßten was die Lösung ist. Vielleicht verstehen wir dann Dein ursächliches Problem. Würde mich interessieren.
Du kannst davon ausgehen das hier einige eine Ausbildung als Dipolm Ingenieur oder ähnliches haben. Demnächst mußt Du mit Deinen zukünftigen Kollegen im Team arbeiten können. Siehe dies mal als eine Übung für später an.
mfg Klaus
Es wäre nett von Dir wenn wir wüßten was die Lösung ist. Vielleicht
verstehen wir dann Dein ursächliches Problem. Würde mich interessieren.
Du kannst davon ausgehen das hier einige eine Ausbildung als Dipolm
Ingenieur oder ähnliches haben. Demnächst mußt Du mit Deinen zukünftigen
Kollegen im Team arbeiten können. Siehe dies mal als eine Übung für
später an.
mfg Klaus
Ich habe den ADC so eingestellt das er alle 50 us abtastet. Das führt dazu, dass zwischen einem ADC Wert und dem nächsten ein Abstand von 20-25 ist als Beispiel:
Der ADC Hat den Wert 2000 Eingelesen, und der nächste Wert wäre dann 2020 oder 2025.
Meine Bedingung war so, dass dann eine Periode kam, wo kein ADC Wert die Bedingung erfüllte, weil die Grenzen zu eng bei einander waren.
Die Lösung war einfach:
Ich habe Das Fenster vergrößert, sodass er keine Bedingung mehr verpassen kann.
Ich weiß das PLL die bessere Lösung ist und dieser Ansatz sehr EMV anfällig ist. Wir haben leider keine Wahl, da das Finale des IFEC kommt und wir als einziges Team zu zweit sind statt wie die anderen 10+ von den Uni aus aller Welt und somit unter Zeitdruck stehen. Wir bauen ein Solid State Transformator mit einem DCX-Konverter, dass an Netz angeschlossen werden soll.
Die Steuerung die ich grad implementierte sind die Folding und Unfolding Bridge. Die haben die Aufgabe den Sinus einmal in ein pulsierenden DC umzuklappen und am Ende zurück zuklappen.
Der DCX Konverter wird mit dem PWM Generatoren des dsPIC33 gesteuert.
und die Transistoren die eh kaum geschaltet werden im Vergleich, dann anhand der Eingangsspannung. Laut Plecs klappt das, mal sehen wie die Realität wird. Wir wären überhaupt froh wenn es läuft dann für den 1 Tag wo getestet wird. Dann haben wir das zu zweit geschafft was andere Uni bis zu 25 Leute schaffen. Haben uns gewundert, das wir Halbfinale überhaupt weitergekommen sind und mehr hatten als die anderen Teams
Gibt es so einige Tipps wie man den ADC für ein 50 HZ Signal idealer
weiße einstellt?
Dir ist wohl nicht klar, wie ein ADC funktioniert. Er tastet dein Signal in regelmäßigen Abständen ab, aber nicht synchron zur Netzfrequenz. Außerdem rauscht jeder ADC ein bisschen. Je nach Aufbau sogar viel.
Deine Annahme, dass er bei jeder Periode einen so eng begrenzte Wert liefert, ist der eigentliche Fehler.
Es gibt keine optimale Einstellung. Je höher die Abtastrate, um so wahrscheinlicher wird er im gewünschten Moment abtasten. Aber zusammen mit der Abtastrate steigen auch die Messfehler an.
Gibt es so einige Tipps wie man den ADC für ein 50 HZ Signal idealer
weiße einstellt?
Dir ist wohl nicht klar, wie ein ADC funktioniert. Er tastet dein Signal in regelmäßigen Abständen ab, aber nicht synchron zur Netzfrequenz. Außerdem rauscht jeder ADC ein bisschen. Je nach Aufbau sogar viel.
Deine Annahme, dass er bei jeder Periode einen so eng begrenzte Wert liefert, ist der eigentliche Fehler.
Es gibt keine optimale Einstellung. Je höher die Abtastrate, um so wahrscheinlicher wird er im gewünschten Moment abtasten. Aber zusammen mit der Abtastrate steigen auch die Messfehler an.
Nur um sicherzustellen, dass ich dich nicht falsch verstanden habe: Der
Spannungshub von -5.76V bis 9.7V (delta = 15.46V) verteilt sich also auf
47 Counts, ergo 329mV/Count?
Offenbar ja. Und der ADC hat offenbar 12 Bits. Da kann man von mindestens +/- 4 Countd Rauschen ausgehen.
Dann kommt TI Schaltung die hat erstmal ein Gain von 8.2 und
anschließend skaliert er es mit 0.68 wieder runter. Zum Schluss kommt
noch ein OFFSET von 1.65 V
Also noch mehr Rauschen.
Protokolliere die Messwerte und stelle sie z.B. mit Excel grafisch dar. Dann wirst du sehen, wie wenig mit dem Schätzeisen anzufangen ist.
das ist schön aber am Thema vorbei egal ich merke hier kommt nichts bei
rum außer sachen die ich überhaupt nicht gefragt habe....
Sorry, aber wenn dir schon zwei Leute sagen, dass das Konzept mangelhaft ist und beide im Grunde den gleichen Verbesserungsvorschlag machen, dann könnte da was dran sein, meinst du nicht?
das ist schön aber am Thema vorbei egal ich merke hier kommt nichts bei
rum außer sachen die ich überhaupt nicht gefragt habe....
Wie sollen hier passende Antworten kommen, wenn du nicht verrätst, dass du dein Signal zu selten abtastest, d.h. das ursächliche Problem gar nicht in deiner Beschreibung enthalten ist. Deshalb hatte ich nach dem Zeitdiagramm gefragt - kam aber nichts. Und nach dem hingerotzten Schaltplan der Brücke hatte ich dann auch keine Lust, weiter nachzubohren - sorry.
Ich habe den ADC so eingestellt das er alle 50 us abtastet. Das führt
dazu, dass zwischen einem ADC Wert und dem nächsten ein Abstand von
20-25 ist als Beispiel:
Der ADC Hat den Wert 2000 Eingelesen, und der nächste Wert wäre dann
2020 oder 2025.
Meine Bedingung war so, dass dann eine Periode kam, wo kein ADC Wert die
Bedingung erfüllte, weil die Grenzen zu eng bei einander waren.
Die Lösung war einfach:
Ich habe Das Fenster vergrößert, sodass er keine Bedingung mehr
verpassen kann.
Ja, ist doch gut gelaufen. Bei dieser Art von Problemen verrennt man sich schon mal gelegentlich im Detail und verliert dadurch leicht den Überblick.
Erwas ähnliches ist mir vor Wochen passiert. Eine I2C Schaltung, die auf dem Steckbrett funktionierte, lief auf der Platine nicht. Das konnte doch nicht sein! Nach zwei Tagen Suchen und Testen habe ich dann das Problem hier ins Forum eingestellt. Nach gut einer Stunde, war klar ein Chip hatte keine Verbindung zu +UB. Manchmal sieht man vor lauter Bäumen den Wald nicht.😉
mfg Klaus
Ich habe den ADC so eingestellt das er alle 50 us abtastet. Das führt
dazu, dass zwischen einem ADC Wert und dem nächsten ein Abstand von
20-25 ist als Beispiel:
Der ADC Hat den Wert 2000 Eingelesen, und der nächste Wert wäre dann
2020 oder 2025.
Meine Bedingung war so, dass dann eine Periode kam, wo kein ADC Wert die
Bedingung erfüllte, weil die Grenzen zu eng bei einander waren.
Die Lösung war einfach:
Ich habe Das Fenster vergrößert, sodass er keine Bedingung mehr
verpassen kann.
Ja, ist doch gut gelaufen. Bei dieser Art von Problemen verrennt man
sich schon mal gelegentlich im Detail und verliert dadurch leicht den
Überblick.
Erwas ähnliches ist mir vor Wochen passiert. Eine I2C Schaltung, die auf
dem Steckbrett funktionierte, lief auf der Platine nicht. Das konnte
doch nicht sein! Nach zwei Tagen Suchen und Testen habe ich dann das
Problem hier ins Forum eingestellt. Nach gut einer Stunde, war klar ein
Chip hatte keine Verbindung zu +UB. Manchmal sieht man vor lauter Bäumen
den Wald nicht.😉
mfg Klaus
kenne ich, passiert mir oft, insbesondere weil das das erste Mal ist, dass man an so einem Projekt arbeitet nach Theorie im Studium und mein erstes mal ist ein uC zu programmieren. Ich hätte auf den Fehler kommen können, wenn ich bei PLECS eine Verzögerung eingebaut hätte beim Umwandeln der Eingangsspannung in ADC Werte. Das kann man bei PLECS sehr gut umsetzen.
Das Konzept ist sicher keine gängige Methode, dass kam vom Advatisor und Prof auch so zu hören. Also PLL wäre definiv der bessere Ansatz, aber für das Finale im Juli ist das nicht drin. Die finale Hardwareversion ist noch nicht mal da und soll Ende Juni kommen. Dann hat man glatte zwei Wochen Zeit zu testen, wovon ich nur 1 mal die Woche ins Labor kann. Das wird Lustig :D
Wir haben bis April gebraucht, überhaupt ein Prototyp zu entwickeln samt Transformator und den zum laufen zu bringen. Ein dritter im Bunde wäre echt toll gewesen, dann hätte man von Beginn an mit Software beschäftigen können.
So muss alles innerhalb zwei Wochen implementiert werden, daher dieses rüpelhafte Konzept.
ich füge mal Topologie der Schaltung hinzu und wie das vorgestellt wurde und die einschaltbedingungen
Wir haben bis April gebraucht, überhaupt ein Prototyp zu entwickeln samt
Transformator und den zum laufen zu bringen. Ein dritter im Bunde wäre
echt toll gewesen, dann hätte man von Beginn an mit Software
beschäftigen können.
So muss alles innerhalb zwei Wochen implementiert werden, daher dieses
rüpelhafte Konzept.
ich füge mal Topologie der Schaltung hinzu und wie das vorgestellt wurde
und die einschaltbedingungen
Junge, Junge. Da hast Du Dir aber etwas vorgenommen. Ein LLC Resonanzwandler ist schon für sich eine Wissenschaft. Dazu noch die Steuerung der Brücken.
Bei mit war es vor über 40 Jahren ein Sperrwandler für ein Mini-Fernseher, natürlich mit Kathodenstrahlröhre. Es mußten 300 V und 2000 V aus 12 V bereitgestellt werden. Ich hatte mir damals einen Schalttransistor von RCA ausgesucht. Es gab kein Internet, nur eine Bibliothek. Den Trafo mußte man natürlich selber planen und wickeln. Das waren noch Zeiten.
Ich wünsche Dir viel Glück für Dein Projekt.
mfg Klaus
Wir haben bis April gebraucht, überhaupt ein Prototyp zu entwickeln samt
Transformator und den zum laufen zu bringen. Ein dritter im Bunde wäre
echt toll gewesen, dann hätte man von Beginn an mit Software
beschäftigen können.
So muss alles innerhalb zwei Wochen implementiert werden, daher dieses
rüpelhafte Konzept.
ich füge mal Topologie der Schaltung hinzu und wie das vorgestellt wurde
und die einschaltbedingungen
Junge, Junge. Da hast Du Dir aber etwas vorgenommen. Ein LLC
Resonanzwandler ist schon für sich eine Wissenschaft. Dazu noch die
Steuerung der Brücken.
Bei mit war es vor über 40 Jahren ein Sperrwandler für ein
Mini-Fernseher, natürlich mit Kathodenstrahlröhre. Es mußten 300 V und
2000 V aus 12 V bereitgestellt werden. Ich hatte mir damals einen
Schalttransistor von RCA ausgesucht. Es gab kein Internet, nur eine
Bibliothek. Den Trafo mußte man natürlich selber planen und wickeln. Das
waren noch Zeiten.
Ich wünsche Dir viel Glück für Dein Projekt.
mfg Klaus
Hey vielen Dank. Wir benutzen den LLC aber als LC. Haben noch eine Regelung die nur auf Software beruht und überhaupt keine zusätzliche Hardware benötigt und nicht auf PI Regler etc basiert. Wir benutzten GAN-Transistoren von Texas Instruments
Trafo mussten wir auch selber planen und wickeln. Darüber habe ich mein Praxisprojekt geschrieben.
Flyback haben wir auch umgesetzt, aufgrund Zeitmangel für Fehlersuche wieder sein lassen, da die Zeit leider rennt. Hier wurde ein Controller von TI verwendet, der hochintelligent war, aber dadurch die Fehlersuche massiv erschwert hat.
Naja jetzt habe ich endlich die beiden Fehler ausgebügelt. Es lag nicht am ADC also schon. Die maximale Eingangsspannung kann ich mit 1.7% Genauigkeit bestimmen, dass reicht vollkommen für unsere Anwendung.