Hallo erst einmal!
Grundlagen:
also ich baue zur Zeit ein Drehstrom-Frequenzumrichter. Ich realisiere
das, in dem ich 3 H-Brücken gebaut habe wobei die eingesetzten Mosfets
mit ICs angesteuert werden. Die ICs steuer ich mit dem Atmega8 an und
dazwischen hängt eine Logik die verhindert das beide ICs angesteuert
werden und es somit einen kurzschlussgeben würde. Desweiteren sorgt die
Logik für die positive oder negative Halbwelle der später entstandenen
SInuskurve somit wäre IC1 zb. für die positive Halbwelle und IC2 in der
H-Brücke wäre wür die negative Halbwelle.
Das Programm:
Das Programm erzeugt über PWM 3 verschiedene SInussignale. Die initpwm
Phase dient praktisch nur als Verzögerung und comp dient dazu die
Halbwellenumkehr zu realisieren. Hoffe die Kommentare an dem Programm
helfen euch es zu verstehen.
Das Problem:
Mein Problem ist jetzt, dass es theoretisch ganz gut aussieht das
Programm und auch die PWM soweit ganz gute Signale liefert. Einzige
Problem ist die Halbwellenumkehr scheint nicht richtig zu funktionieren!
Sie sollte eigentlich im Nullpunkt der Sinuswelle immer von negativer
zur positiven Halbwelle umschalten und umgedreht! Allerdings wenn ich
das Programm an meine H-Brücken anschließe dann realisiert sich die
Halbwellenumkehrung im falschen Augenblick. D.h. wenn die Amplitude z.b.
24V ist dann springt die SInuskurve einfach mittendrin z.B. bei 14V
schon zu der negativen Halbwelle (oder umgekehrt) allerdings weiß ich
nicht wieso das so ist? VIelleicht kann sich ein begahbter Programmierer
das ma angucken da ich selbst Assembler mir erst vor 6 Wochen selber
beigebracht habe und somit nicht so erfahren bin und vielleicht einen
Fehler übersehen habe!!!
Freue mich auf zahlreiche Antworten!!! :):)
mfg.
Stefan
Dein Programm habe ich noch nicht ganz verstanden. Aufgefallen sind mir
diei unsymmetrische Entscheidungsschwellen in der Funktion "pwm". Warum
machst du das am Ende der zweiten Halbwelle um einen Zählerstand
verschoben?
cpi t3, 127 => b0111 1111
cp1 t3, 254 => b1111 1110
Nach Möglichkeit gib auch einen Schaltplan und ein Oszillogramm an. Vor
allem die Richtungsbits versteh ich nicht ganz.
Weiß nicht ob du das meinst, aber die 3 unterschiedlichen t's sind 3
Zeiger die anhand des Prinzips des Phasenakkumulators funktionieren und
diese Zeiger werden immer am Ende um einen Wert erhöhrt um den nächsten
Wert der Sinustabelle einzulesen (es sind deshalb 3 Zeiger, weil ja 3
Sinuskurven entstehen sollen, sie haben deshalb unterschiedliche Werte,
weil sie ja 120° Phasenverschoben sein sollen. Und nur wenn die Zeiger
den Wert 127 oder 254 erreichen (Nulldurchlauf) soll eine
Halbwellenumkehr vonstatten gehen, ansonsten soll das Programm nur den
Zeiger erhöhen und den PWM Wert ausgeben und weiter machen.
Die Richtungsbits sind (wenn ichs richtig versteh welche du meinst) die
Bits die den Startwert der Halbwellen angeben (ob nun am Anfang eine
positive oder negative Halbwelle der jeweiligen Sinuskurve sein soll),
die ersten beiden Sinuskurven beginnen bei einer positiven Halbwelle und
die 3. Sinuskurve beginnt bei einer negativen Halbwelle (siehe
Dreiphasen-Wechselstrom).
Hoffe damit konnte ich dir weiterhelfen!
Schaltplan meiner H-Brücke füge ich hinzu!
Ernestus Pastell schrieb:> Dein Programm habe ich noch nicht ganz verstanden.
Das ist auch sehr unübersichtlich. So über zig Bilder verteilt...
Poste die Software doch nochmal als Dateianhang mit Endung .asm, dann
hat die Foren-SW die Möglichkeit zum Syntax-Higligthen...
So jetzt hab ich glaub ich verstanden. Dann sollte folgendes dein
Problem lösen
Deine Sinustabelle müsste mit 0x00 [beginnen] eine positive Halbwelle
(Amplitude 0xff) bis zum Element 127 durchführen. Ab Elemente 128 kommt
wieder eine positive Halbwelle, da deine "Richtung1/2/3"-Bits ja das
Vorzeichen machen. Die Sinustabelle enthält quasi den Betrag vom Sinus
und das Vorzeichen machst du aus per Assembler und gibst es mit den
Richtungs-Bits aus.
EDIT: Ein Wort versemmelt
und wo wäre da der Fehler in meinem Programm ??
ja die Richtungsbits für die aktuelle Richtung wird an drei
unterschiedliche Pins ausgegeben und jeder Pin ist für jeweils eine
H-Brücke zuständig. Die Pins gehen über eine Logik direkt an die ICs und
steuern diese somit (siehe Schaltplan dort ist die Logik mit zuständiger
H-Brücke drauf und dies kann man mal 3 nehmen da es 3 H-Brücken sind).
Heißt wenn der 1. IC angesteuert wird, dann ist das die positive
Halbwelle der Sinuskurve und wenn der 2. IC angesteuert wird dann ist
das die negative Halbwelle der Sinuskurve.
Füge euch die .asm datei hinzu!!
ähm hatte das schon ma in eine Hausarbeit von mir eingefügt und wusste
nicht wie ich das als komplettes einfügen kann und somit habe ich
screenshots gemacht :P xD
und dachte halt kann ich so ganz gut euch zeigen wie mein Programm
aussieht^^
Wäre gut wenn ihr mir alles gut und genau erklären könnt falls ihr
meinen Fehler findet, da ich wie gesagt mir das Programmieren selber bei
grebracht habe und das vor 6 wochen und habe vorher auch noch nie
irgendeine andere Programmiersprache gekonnt also bin relativ unerfahren
:(
Hallo Stefan!
Soweit ich weiss braucht man für einen 3-Phasenumrichter eine B6-Brücke
bzw. in deinem Fall 1,5 H-Brücken. Jede Phase wird dann zwischen zwei
Schaltern abgegriffen. Die Mosfets brauchen dann noch jeweils eine
Freilaufdiode.
Wäre es nicht besser komplette Sinustabelle abzulegen. Dann muss du dich
nicht mit der Bestimmung der positiven bzw. negativen Halbwelle
beschäftigen.
ja also ich habe auch schon H-Brücken gesehen mit 6 Mosfets! Allerdings
habe ich das so realisiert, dass ich 3 H-Brücken à 4 Mosfets habe und
somit je eine H-Brücke für eine Sinuskurve. Das Prinzip beruht auf einer
Gleichstrommotoransteuerung mittels H-Brücke die ich im Internet fand
und ich habe dies jetzt abgewandelt und mit einem Programm usw.
versehen.
Wenn ich eine komplette Sinuskurve so wie du das meinst ablegen würde,
dann würde das in dem Fall nix bringen, da ich ja mit den Sinuswerten
nur beeinflusse wie lange der Mosfet öffnet bzw. schließt und die
Spannung für den Motor kommt ja von einer anderen Spannungsversorgung,
also könnte ich nicht einfach negative Werte in die Sinustabelle
einfügen (weiß auch gar nicht ob der µc negative Werte überhaupt kann (
ich denke nämlich nicht)). Die negative/positive Halbwelle kommt durch
die Umpolung des Motors (bzw. seiner Spule an der H-Brücke) zustande,
d.h. wenn ich z.b. die negative Halbwelle haben will, dann steuer ich
den 2. IC an, so dass dieser den Mosfet am HO Ausgang öffnen während der
1. IC den MOsfet am LO Ausgang öffnet (siehe Schaltplan (H-Brücke1)und
somit nun ein umgekehrter Stromfluss über den Motor zustande kommt und
somit sich die Spannung am Motor genauso umpolt und eine negative
Halbwelle zur Folge hat.
Für Drehstrom brauchst Du 3 Stück Halb-Brücken!
Nich zu verwechseln mit H-Brücken. Die heißen so, weil sie die Form
eines H wie Heinrich haben (Wie die H-Schaltung in Deinem Auto). Die
drei Spulen dann jeweils an den Mittelabgriff der halbbrücken.
guude
ts
Stefan Wenning schrieb:> ja also ich habe auch schon H-Brücken gesehen mit 6 Mosfets! Allerdings> habe ich das so realisiert, dass ich 3 H-Brücken à 4 Mosfets habe und> somit je eine H-Brücke für eine Sinuskurve. Das Prinzip beruht auf einer> Gleichstrommotoransteuerung mittels H-Brücke die ich im Internet fand> und ich habe dies jetzt abgewandelt und mit einem Programm usw.> versehen.
Die Sache mit den 6 Mosfets heißt Raumzeigermodulation und bräuchte
einen deutlich aufwändigeren Algorithmus. Wenn es nur um eine schnelle
Bastlerei geht, dann sind drei H-Brücken erstmal der einfachere
Einstieg.
Hast du meinen Beitrag mit den zwei positiven Halbwellen überlesen. Dazu
bist du jetzt nicht eingegangen.
@ Ernestus Pastell (malzeit) Benutzerseite
>Die Sache mit den 6 Mosfets heißt Raumzeigermodulation und bräuchte>einen deutlich aufwändigeren Algorithmus.
Diese Sache heißt nicht Raumzeigermodulation. Das könnte nur der von
Dir erwähnte, deutlich aufwändigere Algorithmus daraus machen.
Mit Glück sind alle sechs Spulenanschlüsse separat herausgeführt, erst
dann kann er sie einzeln in die H-Brücken einbringen. Der Normalfall ist
aber, dass entweder Stern- oder Dreieckschaltung vorliegt (evtl. bei
Stern mit Mittelpunkt herausgeführt), und damit nur drei Anschlüsse nach
außen gehen.
Deshalb sind 3 Halbbrücken, also die Sache mit den 6 Stück
Mosfet/Bipolar
das Mittel der Wahl.
guude
ts
@ Ernestus Pastell (malzeit)
In wie fern 2 positive Halbwellen? Ohne meine Halbwellenumkehr würden 2
positive Halbwellen entstehen und es würde wie eine "gepulste"
Gleichspannung aussehen. Da ich allerdings eine Halbwellenumkehrung
realisiert habe die im Nulldurchlauf (bei 127 und bei 254) umschalten
sollte, d.h. das dann die ICs der H-Brücke so angesteuert werden, dass
der Stromfluss über den Motor nun anders herum läuft und somit dadurch
eine negative Halbwelle entstehen sollte ?! ALlerdings ist ja das
Problem, dass die Halbwellenumkehr im meiner Meinung nach falschen
Moment vonstatten geht, d.h. wenn ich ein Multimeter an die
Spulenklemmen meiner Schaltung schließe dann kann ich die Spannung
messen, aber mein Problem ist das die Spannung stetig steigt dann im
Hochpunkt wieder abfällt und dann mittendrin schaltet es um und es ist
eine Minus Spannung zu messen. Das wäre richtig wenn es nach dem
Nulldurchlauf geschehen würde, allerdings geschieht es mitten in der
Kurve.Und ich habe keine Ahnung wieso das so ist? da ich meiner Meinung
nach den Nulldurchlauf richtig programmiert habe und dieser an den
Werten 127 und 254 geschehen soll!!
@ Thomas S. (tsalzer)
Es sind alle 6 Anschlüsse vorhanden und somit kann ich je ein Spule an
meine Spulenklemmen der H-Brücke anschließen!!
mfg.
Stefan
Stefan Wenning schrieb:> Es sind alle 6 Anschlüsse vorhanden und somit kann ich je ein Spule an> meine Spulenklemmen der H-Brücke anschließen!!
3 komplette H-Brücken (=Vollbrücken) und alle Anschlüsse des Motors da
angeschlossen? Das ist eine sehr kreative, aufwendige und überaus
unübliche Anschlussart eines Wechselstrommotors...
Was soll das bringen?