Hier bitte ich Euch um Anregungen, Kritik und Verbesserungsvorschläge zu
dem Beitrag:
http://www.mikrocontroller.net/articles/Frequenzumrichter_Wettbewerb
zum 2. Mikrocontroller Wettbewerb.
Der etwas ungeschickte Titel lässt sich leider nicht mehr editieren -
alles andere aber schon.
Freue mich auf Eure Postings, wenn sie zur Sache beitragen :-)
Mir ist eins aufgefallen:
Die IR2110/2113 kannst Du schlicht weglassen.
Der HCPL-3120 ist ein IGBT-Treiber mit 2,5A Ausgangsstrom.
Also IR auslöten, Drähte vom HCPL-3120 zu den Gate und
Source-Anschlüssen.
Gregor B. schrieb:> Mir ist eins aufgefallen:>> Die IR2110/2113 kannst Du schlicht weglassen.> Der HCPL-3120 ist ein IGBT-Treiber mit 2,5A Ausgangsstrom.> Also IR auslöten, Drähte vom HCPL-3120 zu den Gate und> Source-Anschlüssen.
Theoretisch hast du natürlich recht, die IR Treiber haben allerdings
eine interne 'Verriegelung' gegen gleichzeitiges Durchsteuern der Low
und Highside und sie bieten den Shutdown Eingang. Man könnte den
Shutdown mit den Optokopplern so realisieren, das ihnen im Fehlerfall
die Vcc abgeschaltet wird, wäre also eine Möglichkeit zum
Experimentieren.
Wenn man übrigens einen Moment drüber nachdenkt, wird die Versorgung der
Highside Optokoppler ohne Ladungspumpe zu einem richtigen Abenteuer.
Insgesamt sind das dann nämlich 3 DC/DC Wandler, von denen jeder einen
Highside Koppler antreibt.
Gregor B. schrieb:> Also IR auslöten
Hehehe, die IRs sind bei mir nach den Erfahrungen mit Halbbrücken immer
gesockelt :-)
Hallo,
habe die Diskussionsseite leider erst jetzt entdeckt:
Beim ersten überfliegen des Artikels hatte mich gewundert daß im Foto
insgesamt 6 Optokoppler verbaut sind aber im Schaltplan nur 2 gezeichnet
sind.
Bis mir dann auf den zweiten Blick klar wurde: Ja klar, ist ja Drehstrom
und nur eine Phase der Endstufe gezeichnet.
Ist aber für jemanden der in Leistungselektronik bewandert ist sicher
selbstverständlich. Für mich wäre es einfacher lesbar gewesen wenn da
noch ein Hinweis im Schaltplan wäre. (Block V,W wie Block U)
Ansonsten würde ich bei Bedarf die Schaltung sofort nachbauen.
Gruß Anja
Matthias Sch. schrieb:> die IR Treiber haben allerdings>> eine interne 'Verriegelung' gegen gleichzeitiges Durchsteuern der Low>> und Highside
Nein, haben sie nicht, sieh' Dir mal das Schaltbild an, die einzigen
Verbindungen zwischen den beiden ist UV-Detect und Shutdown.
Wir benutzen den IR2112S, IR2113S und IR2213S und da kannst Du alle
IGBTs gleichzeitig einschalten.
Das sind nämlich unabhängige High- und Low-Side-Treiber und keine
Halbbrückentreiber, die die Verriegelung haben.
Gregor B. schrieb:> Nein, haben sie nicht, sieh' Dir mal das Schaltbild an, die einzigen> Verbindungen zwischen den beiden ist UV-Detect und Shutdown.
Probiers mal aus. Ich habe hier Testschaltungen mit 3 simplen Tastern
und auch mit MCs, die HS,LS und SD ansteuern. Wenn du gleichzeitig HS
und LS einschaltest, passiert da kein Shoot-Through. Das Datenblatt
erwähnt auch nicht, das nach einem Shutdown erstmal LS aktiviert werden
muss, bevor die HS wieder aktiviert werden kann. Ausprobiert mit IR2110
und 2113.
Hi
der HCPL-3120 sollte nach Applikation (Avago Datenblatt S.18, Bild 25)
mit Open-Kollektor angesteuert werden. Das verbessert das
Schaltverhalten.
Da wir die Steuerung mit diskreter Logik (74HC) machen habe ich einen
BC548C dafür verwendet. Der benötigt dann eine RC-Parallelschaltung auf
seine Basis (10kOhm || 100pF) damit der richtig zackig geht (
http://www.mikrocontroller.net/articles/Pegelwandler -> Pegelwandler mit
Transistor, invertierend).
Zum Versogen der Halbbrücken verwenden wir Recom DCDC-Wandler (5->15V)
Typ RxxP2, jeweis 2 Stück.
Als eigentlichen Treiber verwenden wir einen TI ucc37322. Damit kommt
man locker im Leerlauf auf Schaltfrequenzen im mittleren kHz-Bereich
(mit reiner Zeitverriegelung).
Frage zur Schaltung:
Warum so viel L (L3) und so wenig C (Snubber über IGBT)?
GVS schrieb:> mit Open-Kollektor angesteuert werden. Das verbessert das> Schaltverhalten.
Kan man machen, ist aber in dieser Applikation nicht unbedingt nötig
oder von Vorteil. Wichtig ist hier ja, das alle 6 OKs die gleiche
Verzögerung liefern, der benötigte Vorwärtsstrom von 10mA ist jedenfalls
kein Problem für den direkten Anschluss an den MC. Die eigentliche
Schaltflanke wird in meiner Schaltung ja von den IR2110/13 geliefert,
die auch noch mal interne Schmitt-Trigger am Eingang haben.
Man kann aber natürlich zwischen MC und OK noch einen Opencollector
Buffer setzen.
Wer sich die Mühe machen will, mit den HCPL direkt die IGBTs/MOSFets
anzusteuern und DC/DC Wandler zu nehmen, sollte das dann auf jeden Fall
tun.
Die IR mit der Ladungspumpe vermeiden halt die recht aufwendigen DC/DC
Wandler, die dann ja zumindest für jede Highside notwendig wären.
GVS schrieb:> Warum so viel L (L3) und so wenig C (Snubber über IGBT)?
Das ist sehr abhängig von der benutzten Last. L3 flacht die
Schaltflanken nur ein wenig ab, ohne sie komplett zu verrunden, Sinn ist
hier lediglich, Störungen im KW Bereich zu verkleinern. Cs am Ausgang
wirken sich sehr negativ auf die Verlustleistung aus und müssten recht
schaltfest sein. Der FU ist auch nicht dafür gedacht, geglättete
Sinusausgänge zu liefern, sondern durchaus die PWM zum Motor
'durchzureichen'. Die Motorinduktivität sorgt für den Rest. Das wird
übrigens in nahezu allen kommerziellen FUs auch so gemacht und erklärt
auch, warum alle Hersteller empfehlen, isolationsfeste Motore zu
benutzen.
GVS schrieb:> Damit kommt> man locker im Leerlauf auf Schaltfrequenzen im mittleren kHz-Bereich> (mit reiner Zeitverriegelung).
Die derzeitig benutzte Schaltfrequenz im Artikel ist 31 kHz. Benutzt man
den internen RC Oszillator des AVR, sind max. 15 kHz drin.
Der Wert des Zwischenkreis-Kondensators C14 (220 μF) scheint mir zu
klein. C14 wird ja mit jeder Netz-Halbwelle (100 Hz) aufgeladen und muss
dann die gesamte Energie an den Motor liefern, da der Strom aus dem Netz
nur kurzzeitig fließt.
Die pro Halbwelle benötigte Energie berechnet sich für den
550-Watt-Motor des Autors zu:
550 W / 100 Hz = 550 W * 0.01 s = 5.5 Ws
Diese Energie kommt aus dem Energieinhalt (1/2 C U²) des Kondensators,
und dadurch senkt sich die Spannung:
5.5 Ws = 1/2 C (Uc_max² - Uc_min²) auflösen nach Uc_min:
2 * 5.5 Ws / C = Uc_max² - Uc_min²
Uc_min = √( Uc_max² - 2 * 5.5 Ws / C )
Uc_max ist 315 V (Scheitelwert der Netzspannung), somit gilt für C =
220e-6 F:
Uc_min = 221.87 V
Dies bedeutet, dass der Zwischenkreis eine netzfrequente
Spannungsschwankung von 93.13 Volt (ca. 30%) aufweist. Ist das für die
Funktion des Umrichters noch vertretbar?
Es ist ja nicht so, dass die Spannung des Zwischenkreises konstant
gehalten werden muss, koste es was es wolle. Große Kondensatoren
verursachen Probleme beim Aufladen, wenn man das Gerät ans Netz
anschließt, und abgesehen davon sind sie teurer...
Insgesamt bin ich sehr froh über diesen Artikel, denn er wird mir
helfen, einen eigenen Umrichter mit tieferer Pulsfrequenz (<1500 Hz, wie
bei gewissen Schienenfahrzeugen) zu bauen, um Phänomene der
Geräuschentwicklung an Drehstrommotoren (Stichwort: Seitenbänder der
Pulsfrequenz; Töne, die mit zunehmender Drehzahl tiefer werden) zu
untersuchen.
Tibor Stolz schrieb:> Dies bedeutet, dass der Zwischenkreis eine netzfrequente> Spannungsschwankung von 93.13 Volt (ca. 30%) aufweist.
Hmm, tut er aber nicht. Ich habe als C14 das genommen, was ich gerade da
hatte, aber kann solche Spannungseinbrüche im Betrieb bei Vollast nicht
bestätigen, ich messe max, ca. 15-20 Volt.
Übrigens hat mein kommerzieller Mitsubishi 750 W FU einen
Zwischenkreiskondensator von gerade mal 100µF/450V.
Hallo an alle,
und vielen Dank und Gratulation an Matthias.
Das hat mich ermuntert auch mal einen FU zu bauen den ich dann evtl.
nach meinen Wuenschen ansteuern kann und mich nicht immer mit den
Herstellerspezifischen Protokollen bei den gekauften FU's verrenken
muss.
Ich habe auf der Lastseite einen IR2130 und 6 IRF840 verwendet.
Zur Probe habe ich 3 R's in Stern Schaltung mit C's nach "Last-GND" an
die Ausgaenge gehaengt und die Schaltung lastseitig mit 12V betrieben.
Resultat, es kamen wunderschoene Kurven auf dem Oszi an.
Dann hab ich mich mutig an die 220V getraut, und siehe da der Motor fing
auch an zu drehen.
Nur werden die MOSFET's sehr heiss.
Ich habe einen 0.15Ohm Shunt in der Schaltung, der mir gesagt hat, das
der Motor ca. 1A gezogen hat.
Da sollte doch nichts warm werden oder?
Mit 3Phasen und Leistungselektronik bin ich noch ziehmlich am Anfang.
Also nicht lachen wenn da irgendwas toerichtes von meiner Seite kommt.
Der Motor hat 40 Ohm an den Wicklungen und 270mH.
Der Atmega88 ist mit 20MHz getaktet.
Ausser der Anpassung der F_CPU an der Software keine Aenderung.
Kann mir da jemand einen Tipp geben?
Juergen G. schrieb:> Ich habe auf der Lastseite einen IR2130 und 6 IRF840 verwendet.
Den IRF2130 habe ich noch nie verwendet, lt. Datenblatt scheint er aber
eine fest eingestellte Totzeit zu haben. Wenn du die geeigneten
Messmittel hast, oszillografiere doch mal die Spannungsverläufe am Shunt
und sieh, ob da evtl. Shoot-Throughs passieren, also starke
Spannungsspitzen am Shunt. In diesem Fall (wenn du meine Schaltung
verwendest) würde am Shutdown Ausgang der Schutzschaltung immer wieder
durchgeschaltet. Eine LED an diesem Ausgang zeigt dir evtl. auch an,
wenn da Überstrom fliesst.
Zum Experimentieren kannst du auch mal die Totzeit höher drehen, ich bin
mir allerdings nicht sicher, was der IR2130 da macht.
Der IRF840 ist ein relativ altes 'Schlachtschiff' und hat voll
durchgesteuert immerhin noch 0,85 Ohm, wird also schon warm. Du musst
unbedingt darauf achten, das er satt durchgesteuert wird, Vcc am IR2130
sollte also gut bei 12 Volt oder mehr liegen. Im Zweifelsfall poste doch
mal ein Schaltbild deiner Endstufe.
Juergen G. schrieb:> Ausser der Anpassung der F_CPU an der Software keine Aenderung.
Es betrifft nur die Anzeige der Frequenz im Display, aber bei
Gelegenheit kannst du auch mal 'DIVISIONEER' in vfd.h anpassen.
HAllo bei dem übersetzten im avr studio 4.19 kommen lauter fehler
kann mir jemand helfen
reicht es konstanten daraus zu machen?
kleiner aussschnitt
In file included from ../main.c:92:0:
../vfdtables.h:35:17: error: variable 'sineTable' must be const in order
to be put into read-only section by means of '__attribute__((progmem))'
kabelbieger schrieb:> HAllo bei dem übersetzten im avr studio 4.19 kommen lauter fehler> kann mir jemand helfen
Da scheint was nicht zu stimmen, denn PROGMEM ist automatisch konstant.
Da ich das Programm auch mit AVR Studio 4.19 kompiliere, vermute ich,
das etwas an deiner Installation nicht stimmt. Kannst du denn
irgendwelche anderen C Programme kompilieren?
Hast du WinAVR installiert? Was für ein Betriebssystem benutzt du?
So des rätsels lösung liegt darin nicht die aktuelle toolchain zu
verwenden sondern eine ältere...klappt dann wunderbar alles...läuft
super der umrichter
Ahh, cool, vielen Dank für die Mühe. Das die Jungs auch immer am Rädchen
drehen müssen...
Wenn du da nochmal die Versionsnummern raussuchen könntest, würde ich
den Artikel entsprechend aktualisieren.
kabelbieger schrieb:> ../vfdtables.h:35:17: error: variable 'sineTable' must be const in order> to be put into read-only section by means of '__attribute__((progmem))'
Ich bin neue bei AVR und heute habe ich Atmel Studio 6.1 installiert.
Bei Compilieren bekam ich die gleichen Fehler. Was soll ich machen?
Ich möchte diesen Frequenzumrichter für den Motor von meiner Drehbank
verwenden. Der Motor ist Zweiphasig. Eine Phase wird durch einen
Kondensator versorgt. Ich werde nur zwei Phasen vom Frequenzumrichter
verwenden und den Kondensator eliminieren. Ich habe nur Gedanken wie es
mit nur einer Phase und dem Kondensator wäre... Vielleicht kann jemand
die Antwort...
Außerdem ist mir rätselhaft (sehe das Schaltbild) wie wurden die zwei
DC/DC
CONVERTER von 300 Volt auf 5 Volt und 18 Volt realisiert.
skorpionx schrieb:> Außerdem ist mir rätselhaft (sehe das Schaltbild) wie wurden die zwei> DC/DC> CONVERTER von 300 Volt auf 5 Volt und 18 Volt realisiert.
Dann lese doch erst mal den ganzen Artikel. Oder meinst du das macht
hier jemand für dich?
Ezis B. schrieb:> Der Motor ist Einphasig..
Der Motor hat zwei gleichen Wicklungen. Eine Wicklung wird über
Kondensator versorgt. Der Motor wie in Steinmetzschaltung:
http://de.wikipedia.org/wiki/Steinmetzschaltung
Kann man so einen Motor nicht als zweiphasig bezeichnen...?
skorpionx schrieb:> Der Motor hat zwei gleichen Wicklungen. Eine Wicklung wird über> Kondensator versorgt. Der Motor wie in Steinmetzschaltung:> http://de.wikipedia.org/wiki/Steinmetzschaltung> Kann man so einen Motor nicht als zweiphasig bezeichnen...?
Das ist entweder eine Steinmetzschaltung oder ein (wahrscheinlicher)
Kondensatormotor. Diese Motore lassen sich nur sehr widerwillig und in
einem engen Drehzahlbereich regeln, denn der Kondensator ist für die
normale Arbeitsdrehzahl/Frequenz optimiert. Kurz: Nicht geeignet zum
Betrieb am Frequenzumrichter.
skorpionx schrieb:
>> Außerdem ist mir rätselhaft (sehe das Schaltbild) wie wurden die zwei>> DC/DC>> CONVERTER von 300 Volt auf 5 Volt und 18 Volt realisiert.
Steht doch alles da: 5 Volt aus einem normalen Handynetzteil und die 18
Volt aus einem leicht modifizierten Lichterketten-Schaltnetzteil. Wenn
du die galvanische Trennung beachtest, geht da auch ein Trafonetzteil
oder ein Notebook Adapter - oder was sonst gerade rumliegt.
nein...
Die steinmetzschaltung wird an 3-phasigen Motoren eingesetzt, um diese
an Wechselstrom zu betreiben...
Du hast einen Kondensatormotor, der hat eine Haupt und eine
Hilfswicklung... ich denke nicht dass das an einem FU funktioniert...
Beitrag "Drehzahlregelung Kondensatormotor"
Arne Pfäffle schrieb:> nein...> Die steinmetzschaltung wird an 3-phasigen Motoren eingesetzt, um diese> an Wechselstrom zu betreiben...>> Du hast einen Kondensatormotor, der hat eine Haupt und eine> Hilfswicklung... ich denke nicht dass das an einem FU funktioniert...> Beitrag "Drehzahlregelung Kondensatormotor"
Ergänzung:
>Ezis B. schrieb:>> Der Motor ist Einphasig..>Der Motor hat zwei gleichen Wicklungen. Eine Wicklung wird über>Kondensator versorgt. Der Motor wie in Steinmetzschaltung:>http://de.wikipedia.org/wiki/Steinmetzschaltung>Kann man so einen Motor nicht als zweiphasig bezeichnen...?
in meinen Augen nicht wirklich... es ist wie gesagt eine Hauptwicklung
und eine Hilfswicklung, die für den Start zuständig ist, sonst müsstet
du deinen Motor von Hand starten...
Mehr für deinen Motor lieber eine Phasenanschnittsteuerung...
1
2
L1 L2 L3
3
| | |
4
| | |
5
| | |
6
- - -
7
| | | | | |
8
| | | | | |
9
| | | | | |
10
- - -
11
| | |
12
------------
Normaler Drehtstrommotor in Sternschaltung
1
2
L1 N
3
| | C |
4
| |-||- |
5
| | |
6
- - -
7
| | | | | |
8
| | | | | |
9
| | | | | |
10
- - -
11
| | |
12
------------
Drehstrommotor in Steinmetzschaltung
Der Kondensator wird zur Phasenverschiebung eingesetzt.
Arne Pfäffle schrieb:> in meinen Augen nicht wirklich... es ist wie gesagt eine Hauptwicklung> und eine Hilfswicklung, die für den Start zuständig ist, sonst müsstet> du deinen Motor von Hand starten...
Es gibt solche Motoren mit Startwicklung (und die wird nach
dem Start abgeschaltet)und welche mit zwei gleichen Wicklungen wo eine
Wicklung wird permanent über Kondensator versorgt.
Ich werde versuchen den Motor mit zwei Phasen zu versorgen.
Der Kondensator wird selbstverständlich entfernt. Ich werde
dann auch mit der Phasenverschiebung experimentiert.
skorpionx schrieb:> Ich werde versuchen den Motor mit zwei Phasen zu versorgen.skorpionx schrieb:> Ich werde versuchen den Motor mit zwei Phasen zu versorgen.> Der Kondensator wird selbstverständlich entfernt.
Bevor du das tust, mach doch mal bitte ein Foto vom Motoranschlussfeld
und sag uns, wie gross der Kondensator ist.
skorpionx schrieb:> Ich werde versuchen den Motor mit zwei Phasen zu versorgen.> Der Kondensator wird selbstverständlich entfernt. Ich werde> dann auch mit der Phasenverschiebung experimentiert.
aber dann den FU nur mit 230V versorgen! Sonst werden deine Wicklungen
zu kurzlebigen Heizungen ;-)
Matthias Sch. schrieb:> Bevor du das tust, mach doch mal bitte ein Foto vom Motoranschlussfeld> und sag uns, wie gross der Kondensator ist.
Der Kondensator hat 50 µF Kapazität.
skorpionx schrieb:> Der Kondensator hat 50 µF Kapazität.
Das klingt doch gut. Wenn du den Kondensator entfernt hast, miss bitte
mal zumindest ohmsch den Widerstand der drei Wicklungen. Wenn die alle
gleich sind, spricht nicht viel dagegen, den FU anzuschliessen,
allerdings natürlich mit allen 3 Phasen(!). Mit nur 2 Phasen wird da
nicht viel passieren ausser einem brummenden Motor und seiner
Unwilligkeit, sich zu drehen.
Arne Pfäffle schrieb:> aber dann den FU nur mit 230V versorgen!
Das ist bei der Schaltung sowieso gegeben.
Philipp schrieb:> Hi, kann ich die IR2110 Treiber auch ohne Optokoppler direkt an den MC> anschließen? Wenn ich VDD und VSS mit +5V und GND versorge?>> MfG Philipp
Koennen schon, aber ratsam ist das nicht.
Bedenke das an den IR's eine ziehmlich hohe Spannung anliegt. Wenn Dir
da ein IR abraucht kann es ohne Optos auch Deine ganze 5V Schaltung
mitnehmen.
Es ist billiger ein Optokoppler zu tauschen als alles was an den 5V
haengt.
Philipp schrieb:> Hi, kann ich die IR2110 Treiber auch ohne Optokoppler direkt an den MC> anschließen? Wenn ich VDD und VSS mit +5V und GND versorge?
VORSICHT!
In diesem Fall ist die gesamte Schaltung mit dem Lichtnetz verbunden, es
gibt keine galvanische Trennung mehr. D.h. am LCD, am
Programmieranschluss und an den Buttons liegt dann Netzspannung!
Für Niedervoltanwendungen hingegen ist das eine brauchbare Option. Wenn
du am MC einen freien Pin findest, kannst du sogar das ShutDown Signal
aus der Endstufe auswerten. Auch eine Strommessung wäre am Shunt
denkbar.
Ok danke für die Antworten. Kenn mich noch nichts so gut aus. Ich werde
die Optokoppler 6N137 benutzen. Ich baue mir eine Spannungsversorgung
mit +5V für den IR2110 Eingangsseite und +12V für die Ausgangsseite.
So bräuchte ich 2 Schaltungen mit einem Trafo mit Festspannungsreglern?
Einer für die Steuerseite +5V und einer für den Leistungsteil mit +12
und +5V, die beide mit am GNDI hängen?
Philipp schrieb:> So bräuchte ich 2 Schaltungen mit einem Trafo mit Festspannungsreglern?> Einer für die Steuerseite +5V und einer für den Leistungsteil mit +12> und +5V, die beide mit am GNDI hängen?
Da mir immer noch nicht klar ist, was du eigentlich vorhast, wäre ich
für Aufklärung dankbar. Willst du einen Niedervoltmotor betreiben? Da
die 6N137 normale Optokoppler sind, musst du für die auch keine extra 5
Volt erzeugen, sondern kannst sie mit den nicht netzgetrennten 12V
betreiben, geeignete Arbeitswiderstände für die Phototransistoren
vorausgesetzt.
Matthias Sch. schrieb:> Da> die 6N137 normale Optokoppler sind
Nicht ganz, die haben eine Treiberstufe drin die 5V Versorgung braucht.
Ich hab auch die 6N137 in meiner Schaltung.
Bei mir ist der Trafo auf der HV Seite, also
Trafo - Gleichrichter dann mit einem Simpleswitcher auf 15V und mit
einem Linearregler auf 5V fuer die Optos.
Der Atmega wird dann von den 15V ueber einen Isolierten Brick DC-DC
Wandler versorgt.
Gehe ich richtig von der Annahme aus, dass die High-Side-PWM für
Sinuserzeugung und die LOW-Side-PWM für die V/f-Regelung zuständig ist??
Ich versuche das Prinzip der Ansteuerung der FETs nachzuvollziehen, für
jede Verbesserung oder eigene Erklärungsversuche wäre ich sehr dankbar.
Schönen Abend noch..
Nein. High-Side und Low-Side werden komplementär angesteuert mit einem
PWM-Signal, das aus der Sinus Tabelle gewonnen wird und skaliert
(mulitpliziert wird) mit der Amplitude. Es wird dann eine Totzeit
eingefügt und dann die OC Register der Timer geladen.
Steht im Quelltext auch nochmal recht ausführlich drin. Das
Sinusmodulierte PWM Signal findet sich also in der Ansteuerung beider
Teile der Halbbrücke.
Ich habe schon CPU-Teil mit ATmega328 mit 16Mhz Quarz. Man sieht
auf dem Display Zahlen und man kann sie editieren mit Tasten. Nur die
Anzeige ist dunkel und lässt sich nicht mit dem Kontrast Poti heller
machen. Wahrscheinlich sind fuses nicht richtig eingestellt.
Low Fuses habe ich mit 0xF7 eingestellt. Ich bin beim Atmel neue und
bitte um Hilfe. Wie soll ich fuses einstellen?
Jörg B. schrieb:> Der Kontrast vom LCD wird mit dem Poti eingestellt und hat nichts mit> dem Atmega zu tun. Ist doch auch gar nicht mit dem Atmega verbunden.
Das weiß ich. Bitte schreibt nur das was zur die Lösung etwas bringt.
Ich vermute, dass etwas mit Frequenzteilung nicht stimmt.
Dafür gibt es prima Fuse Rechner im Internet, z.B. der hier:
http://www.engbedded.com/fusecalc
Dein Mega328 sollte auf Full Swing Crystal, lange Reset Zeit (ist
eigentlich egal, aber langer Reset schadet nichts), kein CLKDIV8, und
praktischerweise auf gesetzte EESAVE Fuse gefused werden, damit du nicht
immer wieder den EEPROM beschreiben musst, wenn du eine andere Software
Version reinspielst.
Der o.a. Fuse Calculator sagt:
Low: 0xD6 , High: 0xD1, Extended: 0xFC
Denke dran, das du mindestens einmal auch den EEPROM programmierst, also
das *.eep File in den EEPROM (nicht den Flash!) schreibst.
Wenn du den AVR mit 3,3V betreibst und dein LCD das auch verträgt (siehe
Datenblatt), kann es nötig sein, eine negative Hilfsspannung für den
Kontrast zu erzeugen. Mit 5V liegt die beste Kontrastspannung für
normale HD44780 Displays recht nahe an 0V.
skorpionx schrieb:> Das weiß ich. Bitte schreibt nur das was zur die Lösung etwas bringt.> Ich vermute, dass etwas mit Frequenzteilung nicht stimmt.
Ich finde das hat schon ne Menge mit deiner Frage zu tun.
Der Kontrast des LCD hat nun mal nichts mit dem Atmega zu tun.
Da kannst du so viel an deinen Fuses herum probieren wie du willst.
und was deine Frequenz Einstellung angeht.
Am einfachsten ist es immer mit den Atmel Studio. Da kann man die Fuses
sehen was Sie machen und ist nicht von irgendwelchen Tools abhängig.
Jörg B. schrieb:> Am einfachsten ist es immer mit den Atmel Studio
Es gibt aber viele Leute, die nun mal nicht mit AVR/Atmel Studio
arbeiten, sondern eine andere Toolchain benutzen. Die Welt besteht nicht
nur aus Windows. Sei so nett und spam den Thread nicht zu.
Die Änderung des fuses hat nichts gebracht. Mein BLAUES Display ist
weiter ziemlich dunkel. Probeweise habe ich ein grünes Display vom
meinem Transistortester gesteckt.Mit dem ist die Helligkeit ausreichend
aber Kontrast-Poti steht auf 0 Volt. Wenn ich mein
blaues Display in Transistortester stecke dann ist Kontrast und
Helligkeit wunderbar (sogar besser als beim grünem Display). Ich vermute
dass das Problem in der Timing von Ansteuerung vom Display liegt. Beim
Compilieren habe ist schon eine Warnung gesehen so ung.:
„F_CPU not defined for delay.h...“
skorpionx schrieb:> Beim> Compilieren habe ist schon eine Warnung gesehen so ung.:> „F_CPU not defined for delay.h...“
Ja, das liegt daran, das man im AVR Studio die CPU Frequenz nicht per
#define festlegt, sondern in den Projekteinstellungen. Du kannst das
leicht hinzufügen, indem du per
1
#define F_CPU 16000000UL
vor dem
1
#include util/delay.h
die Frequenz mitteilst oder im Makefile ein '-DF_CPU 16000000' addierst.
Die Fuses werden davon nicht beeinflusst, du musst also trotzdem den AVR
korrekt fusen, wie oben angegeben.
Auch Peter Fleurys LCD Bibliothek braucht die korrekte Angabe im lcd.h:
1
#define XTAL 16000000
das sollte aber schon alles korrekt eingetragen sein.
skorpionx schrieb:> Mein Blaues Display arbeitet nur mit Hintergrund> Beleuchtung gut.
Deswegen finde ich die blauen LCD nicht besonders. Das Foto meines
Kontrollerteils ist ohne Hintergrund Beleuchtung gemacht und trotzdem
gut lesbar.
skorpionx schrieb:> CPU-Teil schon getestet.
Das sieht doch gut aus. Du hast zwar im Moment ein enormes V/Hz
Verhältnis eingestellt, aber das kommt dann mit dem Motor...
Frohe Ostern!
Ich bin nicht sicher wie ich den Motor (U,V,W...) einschließen sollte.
Rätselhaft ist für mich Z.B. die Verbindung U1 zu U2 auf dem Schaltbild
(sehe oben...). Jede Endstufe wird versorgt über eigenen L4 oder alle
Endstufen werden durch einen gemeinsamen L4 ?
skorpionx schrieb:> Ich bin nicht sicher wie ich den Motor (U,V,W...) einschließen sollte.> Rätselhaft ist für mich Z.B. die Verbindung U1 zu U2 auf dem Schaltbild> (sehe oben...).
Auf meinem Board sind doppelte Klemmen (siehe das Foto vom
Endstufenteil) für die Phasenausgänge und die zweite Klemme ist ein
reiner Messpunkt(und macht die Klemme stabiler).
Du schliesst den Motor also zwischen U,V, und W an, wie bei jedem FU,
die V und W Endstufen sind im Schaltplan ja weggelassen. Im Foto ist das
weisse Kabel der Ausgang zum Motor.
skorpionx schrieb:> Jede Endstufe wird versorgt über eigenen L4 oder alle> Endstufen werden durch einen gemeinsamen L4 ?
Ich speise (und so stehts ja im Schaltplan) die Endstufen mit VCCIO, und
das kommt erst hinter der gemeinsamen L4. Du kannst aber gerne auch für
jede Endstufe eine extra L4 einbauen, Vorteile gibts aber nicht viele,
ausser das pro L weniger Strom fliesst und du etwas kleinere
Drahtstärken wählen kannst.
Matthias Sch. schrieb:> Ja, das liegt daran, das man im AVR Studio die CPU Frequenz nicht per> #define festlegt, sondern in den Projekteinstellungen.
Was ist denn das für ein Blödsinn?
Atmel Studio stört sich nicht im geringsten daran, wenn ein F_CPU per
#define gesetzt wird. Das #define im Code ist nicht die Ursache der
Fehlermeldung, so wie du es propagierst!
Kaj schrieb:>> Ja, das liegt daran, das man im AVR Studio die CPU Frequenz nicht per>> #define festlegt, sondern in den Projekteinstellungen.> Was ist denn das für ein Blödsinn?
Das ist überhaupt kein Blödsinn. Und wie kommst du schon nach einem
Monat darauf?
Im AVR Studio 4 wird nun mal F_CPU in den Projekteinstellungen definiert
und muss im Code nicht nochmal vorkommen. So ist das in meinem Quellcode
gemacht. Wenn man also unter einen anderen Compiler baut (und genau das
machte der Fragende), muss F_CPU im Code oder im Makefile definiert
werden.
Matthias Sch. schrieb:> Auf meinem Board sind doppelte Klemmen
Man findet auch Bezeichnung für einzelne Stränge vom Motor wie Z.B.:
http://de.wikipedia.org/wiki/Sternschaltung
Hier werden die Enden der drei Phasenstränge dann wie folgt bezeichnet:
u1 - u2
v1 - v2
w1 - w2
Und das war die Quelle meiner Unsicherheit.
Hallo,
dein Thread ist zwar schon etwas älter, aber ich versuche es trotzdem
mal.
Ich würde gern meine I2C Displays zur Anzeige verwenden. Dann könnte man
die frei werdenden Ports vielleicht auch für Erweiterungen benutzen.
Allerdings sind die entsprechenden Ports PC4/5 schon mit dem
Feature-Port verbunden um analoge Werte zu lesen. Könnte man diese Ports
anderswo hin verlegen, so dass PC4 und 5 für den I2C freiwerden? Ich
benutze einen ATMega328P, bekomme ich Probleme mit dem verfügbaren
Speicher wenn noch die I2C-Bibliothek hinzukommt?
Gruß und Glückwunsch nachträglich.
Michael
Ach ja, habe noch was!
Schau dir mal bitte den Dateianhang an. Da sind im Dach so komische
Zacken drin, die ich mir nicht erklären kann. Rot ist direkt am MCU-Port
aufgenommen und grün hinter einem invertierenden NPN-Transistor.
Offensichtlich kommt das "Signal" schon so aus der MCU. Ich hätte jetzt
auf die Sinustabelle getippt, aber das wäre wohl schon jemanden
aufgefallen. Hast du eine Erklärung dafür?
Michael
Michael schrieb:> Allerdings sind die entsprechenden Ports PC4/5 schon mit dem> Feature-Port verbunden um analoge Werte zu lesen. Könnte man diese Ports> anderswo hin verlegen, so dass PC4 und 5 für den I2C freiwerden?
Ja, das geht natürlich. In demm Moment, wo du ein I²C Display benutzt,
werden ja auch ADC0 bis ADC3 frei, die bisher die Datenleitungen zum
HD44780 LCD waren. Auf diese Kanäle kannst du dann die ADC ISR umbauen.
Wenn du dir die Deklarationen in vfd.h anschaust, siehst du, das das
recht einfach geht:
1
//! The ADC channel where the analog frequency control is connected.
2
#define ADC_CHANNEL_FREQUENCY 4
3
4
//! The ADC channel where the analog V/Hz input is connected.
5
#define ADC_CHANNEL_AMPLITUDE 5
Das musst du nur auf die gewünschten ADC Kanäle ändern.
Michael schrieb:> Da sind im Dach so komische> Zacken drin, die ich mir nicht erklären kann.
Die 'Zacken' sind normal, das sind die Dächer der 'Popo' Kurven, die zur
Ansteuerung von Motoren etwas besser geeignet sind als reine
Sinuskurven.
Allerdings stimmt da was mit der Abtastrate des Oszis nicht, denn ich
kann die eigentliche PWM nicht sehen, sondern nur was gemitteltes. Die
Güte des Oszibildes ist also nicht optimal.
Zu den 'Popokurven' findest du im Netz einige Erklärungen, und auch in
der Application Note Atmel AVR447.
Ja super!
ich habe nämlich nur noch die seriellen Displays. Das, was ich gerade
benutze ist ziemlich zerkratzt (stammt aus dem Recycling).
Das Problem mit der Kurvenform habe ich inzwischen auch erkannt. Habe
mir in Excel aus der Tabelle ein Diagramm gemacht. Und dann dachte ich
mir schon, dass das wohl so stimmen muss.
Wenn es dir nichts ausmacht, hätte ich da noch ein paar Fragen.
Da ich, bis auf den MC, noch keine Hardwarekomponenten habe, habe ich
auf einem Steckbrett inkl. MC (328P, 16MHz) sechs npn-Transistoren
(SF126D) jeweils paarweise E-C zusammengesteckt und die drei
Motorwindungen eines Festplattenmotors daran angeschlossen. Der vierte
Draht (niedriegster Widerstand) bleibt offen. Die sechs Basiswiderstände
haben jeweils 220 Ohm. Ich weiß natürlich, dass das nicht so toll ist,
aber die Transistoren werden einigermaßen durchgesteuert. Nur läuft der
Motor nicht von selbst an. Und bei der geringsten Belastung oder wenn
ich die Frequenz bis etwa 150 Hz hochfahre gibts einen Ruck und er
steht. Ist das ein prinzipelles Problem mit dieser Art Motor? Bei einem
normalen 3-Phasen-Motor, beispielsweise einer Werkzeugmaschienen, wurde
doch früher auch nur in Dreieck-Schaltung gestartet und dann optional
nach dem Anlauf auf Stern umgeschaltet.
Das mit meinem Oszillogramm hast du richtig erkannt. Mein richtiger Oszi
steht im Keller. Mir ist es aber derzeit zu kalt dort und habe
kurzerhand die Soundkarte meines PC missbraucht (Spannungsteiler etwa 50
zu 1 und Software "Scope" von Christian Zeitnitz).
Gruß
Hallo,
@ Michael
Michael schrieb:> doch früher auch nur in Dreieck-Schaltung gestartet und dann optional> nach dem Anlauf auf Stern umgeschaltet.
Genau umgekehrt. Die Art des Motoranlaufs nennt sich
Stern - Dreieck - Schaltung.
Der Motor wird in Sternschaltung angefahren und danach in
Dreieckschaltung umgeschaltet.
gehört zwar nicht direkt zum Thema, ist aber so.
Gruß
deka65
Hallo Detlef,
Detlef Kahrmann schrieb:> Genau umgekehrt. Die Art des Motoranlaufs nennt sich> Stern - Dreieck - Schaltung.
natürlich hast du Recht, Sorry. Ich vermute, dass die Sternschaltung
beim Anlaufen den Motor schützte, weil durch die Serienschaltung der
Wicklungen weniger Strom gezogen wird. Bei Nenndrehzahl wurde dann nach
Dreieck umgeschaltet um das Drehmoment zu erhöhen. Bei Contoller
gesteuerten Motoren spielt dies keine Rolle, wie du schon bemerktest.
Ich frag mich aber immer noch, warum mein HD-Motor nicht anläuft. Mir
ist klar, das im Einschaltmoment 100% Schlupf da sind und damit das
Drehmoment sehr niedrig sein muss. Aber dass er ohne Starthilfe garnicht
dreht?
Gruß
Michael
Wenn der Motor 4 Anschlüsse hat, wird er vermutlich immer im Stern
gefahren, wobei am Mittelpunkt +Motor liegt und die drei Wicklungen über
kräftige Endstufen rundherum auf Masse gezogen werden. Diese Motoren
arbeiten meistens mit 'sensorless' BLDC Algorithmen und sind für echten
Drehstrom schlecht geeignet.
Application Note AVR 444 gibt Hinweise, wie ein solcher Motor
anzusteuern ist.
http://www.atmel.com/dyn/products/app_notes.asp?family_id=607
Gut geeignet sind z.B. die Motoren aus DirectDrive Plattenspielern (ich
habe hier einen wunderbaren 'Pioneer Precision Mechanics', den ich mit
dem FU auf unter 10U/min bekomme) und natürlich 230/400V Drehstrommotore
wie der ihm Beitrag erwähnte.
Hab das Problem gefunden. Es saß zwischen Rückenlehne und Lötkolben.
Entgegen dem Schaltbild sind die Port-Pins H und L der Phasen in der
vfdtables.h anders herum. Nun läuft der 3,5´´ HD-Motor (, zwar nicht von
selbst an,) aber wenigstens hat er nach einem Anstupser ein spürbares
Drehmoment. Nach unten bleibt er dann bei ~8Hz (120 U/min) stehen. Statt
gleich in die Datei zu schauen, hatte ich mich an den Schaltplan
gehalten :-(
Ich werde versuchen deine Schaltung nachzubauen. Das I²C-Display bekomme
ich hoffentlich "reingestrickt". Ich habe vor, damit einen Fräsmotor
anzutreiben. Wünschenswert wäre vielleicht noch die Steuerung über ein
entsprechendes Programm vom PC aus.
So, dann werde ich jetzt mal ein paar Teile bestellen...
Danke auch noch einmal für deine nette Unterstützung.
Gruß
Michael
Michael schrieb:> Wünschenswert wäre vielleicht noch die Steuerung über ein> entsprechendes Programm vom PC aus.
Das sollte klappen, wenn du die serielle Schnittstelle des Mega von den
Buttons freiräumst. Da du jede Menge Pins mit dem I²C Display einsparst,
sollte sich da eine alternative Belegung finden lassen.
Die Erzeugung der 3 Phasen findet ja komplett in Interrupts statt, das
Hauptprogramm kannst du dir also so hinstricken, wie du es brauchst.
Lediglich die PWM Pins sind fest vorgegeben und nicht veränderbar, das
liegt in der Natur des Mega.
Allerdings rate ich dir, Schritt für Schritt vorzugehen. Also erstmal
das Display zum laufen bringen, dann den Kommandointerpreter auf seriell
umzubauen usw.
Viel Erfolg!
Überstromschutz funktioniert falsch? Ich zeige zwei Oszi-Bilder. Kanal 2
Spannung auf dem R7 und Kanal 1 auf dem SD-Pin. Das alles ohne Belastung
(kein Motor)! Für bessere Übersichtlichkeit habe ich das nur für eine
Phase aufgenommen. Als IGBT habe ich FGH40N6S2D verwendet. Was für eine
Ursache kann das sein?..
skorpionx schrieb:> Was für eine> Ursache kann das sein?..
Sieht nach Shoot-Through aus. Wenn ich das richtig interpretiere, sind
auf dem Shunt Spitzen von über 20V, das riecht also nach Überstrom. Dreh
die Totzeit hoch, wie im Artikel beschrieben.
Übrigens danke für die Oszillogramme, die sollten einem anderen
Nachbauer dabei helfen, solche Probleme einzugrenzen, ist ja im Artikel
nur als Prosa beschrieben. Man kann entweder am SD Pin diese Rampe
abfragen oder direkt am Shunt die Spitzen. Die Rampe entsteht durch den
Elko am Eingang der Überstromerkennung.
Unter Beobachtung der Spitzen am Shunt (ohne Last) kann man nun die
Totzeit justieren, so das die Spitzen gerade verschwinden. Ich habe noch
eine LED am SD Eingang, die bei Überlast anfängt, zu leuchten.
Es scheint dass etwas mit der Wirkung von der Totzeit nicht stimmt. Oben
habe ich zwei Oszi Bilder vom der Spannungen auf Gates vom High Kanal
(CH1) und Low Kanal (CH2).Eine Zeit 0x08 (das ist Minimum...) und das
zweite Bild mit Totzeit 0x60. Totzeit wird nur eingeführt zwischen der
fallende Flanke vom Low Kanal und steigende Flanke vom High Kanal. Und
das ist gefährlich...
Diese Routine ist biser unauffällig gewesen und wird von Atmel auch so
verwendet (AVR447). Interessant ist also, was du für Treiber verwendest
und wie deine Endstufe aussieht. Da die Highside bei dir überhaupt nicht
auf die Einstellung der Totzeit reagiert, vermute ich da einen Fehler in
der Hardware.
Totzeit funktioniert. Im Anhang zwei Oszibilder. TotZeit_0x08 ist mit
Totzeit 0x08 und TotZeit_0x30 mit Totzeit 0x30 . Masse vom Oszi hängt am
Verbindung zwischen Q2 und Q3 (VS vom IR2110), Kanal 1 (blau) am Gate
vom Q2 und Kanal 2 (gelb) am Gate vom Q3. (Leider beide Kanäle haben
gemeinsame Masse...)
Vielen Dank für die Ozillogramme!
Man sieht jetzt auch gut, warum eine kleine Totzeit den Einstellbereich
maximiert und umgekehrt eine sehr hohe Totzeit den Bereich unnötig
einschränkt.
Wer möchte, kann MIN_DEADTIME verkleinern und mit Totzeiten nahe der
null experimentieren, aber das ist natürlich gefährlich und erfordert
sehr schnelle Endstufen.
Ich habe Zweifeln ob Überstromsicherung richtig arbeitet. Im Zustand
ohne Überstrom liegen SD-Pins von IR2110 „in der Luft“. Das Bild1 zeigt
das Ergebnis. Kanal1 ist die Spannung auf SD und Kanal2 ist die Spannung
auf Pin 10. Es scheint als ob die interne Kapazität von SD-Pins beim
Einschalten vom High Transistor Q2 geladen wurde. Nach dem ich SD-Pins
über einen Resistor 1.6 K auf Masse eingeschlossen habe,hat sich das
Oszibild etwas geändert. Das Ergebnis zeigt Bild2. Trotzdem sieht man
weiter diese Picks. Das alles habe ich aufgenommen ohne Spannung auf dem
Shuntresistor (R8 auf Masse...). Man könnte auch weiter nach unten mit
dem Resistor 1.6 K gehen aber die Leistungsverluste auf dem Resistor
und auf dem Transistor T2 müssen berücksichtigen werden.
Eine Alternative wäre eine Schmitt-Trigger Schaltung. Transistor T2
(n-p-n)wäre dann im Unterstrom immer in der Sättigung.
skorpionx schrieb:> Im Zustand> ohne Überstrom liegen SD-Pins von IR2110 „in der Luft“.
Nein. Die SD Pins (und auch HIN und LIN) verfügen über interne
Pulldowns, wie man dem 'Functional Block Diagram' im Datenblatt
entnehmen kann.
Im Schaltbild wird ein ATmega88 verwendet
im Projekt steht aber nur eine HEX Datei 14Kb für den ATmega168 zur
verfügung
gibt es auch noch eine 8Kb Version für den ATmega88
da die 14Kb Datei nicht in den ATmega88 past.
Günter schrieb:> da die 14Kb Datei nicht in den ATmega88 past.
Eine HEX Datei ist kein binäres File, sondern eine Dateikonvention, mit
der die meisten Programmer zurechtkommen.
Es wird also nicht direkt die HEX Datei, sondern das daraus
resultierende BIN in den MC geladen. Es gibt auch Tools, die HEX in BIN
umwandeln.
Hab gerade nochmal nachgeschaut, die höchste im HEX File verwendete
Adresse für den Mega liegt bei 0x139c und passt damit locker in den
Mega88.
recht vielen Dank für den Hinweis zu der HEX Datei.
Ich bin es immer gewohnt die von ATMEL Studio erzeugte HEX in den
Prozessor zu laden.
Ich benutze dazu das Programm AvrOspII und den Programmer AVR 910.
Hat bisher immer gut fungtioniert.
Beim einladen des oben genannten Programmes wurde jedoch nach Reset
nur das Displey initialisiert und der Cursor blinkt auf der ersten
Stelle ,weiter passiert nichts mehr.
Günter schrieb:> wurde jedoch nach Reset> nur das Displey initialisiert und der Cursor blinkt auf der ersten> Stelle
Da muss was schief gelaufen sein (vermutlich ein LCD Pin), denn der
Cursor wird normalerweise gar nicht aktiviert beim Initialisieren und
direkt danach soll ein Text und die Diagnosezahlen auf dem Display
erscheinen. Überprüfe nochmal die Anschlüsse des LCD Pin für Pin.
Die Software läuft bei den anderen Nachbauern und es gibt auch keine
Updates oder so.
Es kann noch sein, das eine Taste dauernd gedrückt ist, das mag der VFD
nicht beim Starten - dann sollte aber 'Reading EEPROM' auf dem Display
einfrieren.
Ich habe mir die Schaltung noch einmal genau angesehen.
Bei der Verdrahtung ist mir dann aufgefallen das ich das Display
wie gewohnt am Anschluss RW auf Masse gelegt habe ,hier aber
Softwarseitig angesteuert wird.
Nach der Verbindung zu PIN 19 funktionierte die Schaltung auf
Anhieb.
Muss jetzt noch eine Leistungsendstufe bauen und hoffe das dann
alles funktioniert.
Ich bedanke mich für die schnellen Antworten.
Gruß Günter
Hallo,
ich habe eine integrierte Drehstrombrücke "IRAMX16UP60B" entdeckt.
Könnte man die für das Leistungsteil nehmen und die Eingänge mit den
ATMega Ausgängen über Optokoppler zur galv. Trennung direkt ansteuern?
Die Bausteine haben einen Shunt und eine Temperaturüberwachung
eingebaut.
MfG
Hans
Hallo,
noch eine Frage. Wenn man die Ausgabe für die Parameter über I2C
übertragen würde, wären doch noch ein paar Pins frei. Könnte man da noch
die Temperatur und den Strom überwachen und auf dem Display ausgeben?
Hätte der MC genug Rechenleistung?
Die Frage soll nicht heißen das ich auch nur eine Programmzeile
schreiben könnte, es ich nur eine Frage nach den Möglichkeiten.
MfG
Hans
Hans L. schrieb:> Könnte man da noch> die Temperatur und den Strom überwachen und auf dem Display ausgeben?
Das wird doch im Artikel erwähnt. Wenn du einen Mega im QFP Gehäuse
wählen würdest, hattest du noch ADC Kanal 6 und 7, die du mit sowas
belegen könntest, ohne irgendwas am LCD rumzufummeln. Wer sich die Mühe
macht, und eine andere Displayschnittstelle wählt, muss sich aber über
das vom VFD geforderte Timing im Klaren sein.
Hans L. schrieb:> Hätte der MC genug Rechenleistung?
Mit Sicherheit. Das ADC Messkonstrukt erlaubt auch eine simple
Erweiterung um mehr Messkanäle.
Hans L. schrieb:> ich habe eine integrierte Drehstrombrücke "IRAMX16UP60B" entdeckt.> Könnte man die für das Leistungsteil nehmen und die Eingänge mit den> ATMega Ausgängen über Optokoppler zur galv. Trennung direkt ansteuern?
Guckst du Datenblatt. Der MC selber liefert 0-5V Pegel, und die
Optokoppler am Ausgang nach Wunsch. Wenn dein Baustein das schluckt und
auch positive Logik versteht, kann das schon klappen. Wenn du da mit
Netzstrom hantierst, setzt du dich allerlei Gefahren aus, frag jemanden,
der sich auskennt.
Hallo,
ich bin leider im SMD-Löten nicht so bewandert. Könnte man als Basis
einen Arduino Nano nehmen und als eine Art DIL-40 auf die Platine
stecken?
Welche Möglichkeit gibt es ein Analogsignal isoliert zu übertragen?
MfG
Hans
Hans L. schrieb:> Könnte man als Basis> einen Arduino Nano nehmen und als eine Art DIL-40 auf die Platine> stecken?
Scheint so. Den musst du aber über ISP programmieren, denn der Arduino
Bootloader ist hier im Weg. Ist übrigens nur 'DIL-30'.
Hans L. schrieb:> Welche Möglichkeit gibt es ein Analogsignal isoliert zu übertragen?
Jede Menge, es ist aber entscheidend, was du da messen willst. Zur
Strommessung gibt es bereits isolierte Sensoren, wie z.B. die ACS Serie
von Allegro.
http://www.allegromicro.com/en/Products/Current-Sensor-ICs.aspx
Hallo Matthias,
danke für deine geduldigen Antworten. Ich habe einen ISP-Programmer das
wäre kein Problem, aber warum ist der Bootloader im Weg. Es gibt einen
X-Loader mit dem könnte man über den Bootloader Hexfiles laden.
MfG
Hans
Hans L. schrieb:> aber warum ist der Bootloader im Weg
Genau weiss ich das auch nicht, die VFD Firmware geht aber davon aus,
das sie den gesamten MC für sich hat. Ich arbeite nie mit Arduino (bis
auf die Hardware) und kann deshalb nur sagen, das der BL auf jeden Fall
Speicher benötigt. Wenn er konfliktfrei mit der VFD Firmware läuft, umso
besser.
Beachte aber auch, das TXD und RXD im Projekt rücksichtslos anders
belegt sind. Glücklicherweise (nicht ganz ohne Absicht) sind da
allerdings nur Taster dran.
Spass mit der seriellen Schnittstelle ist aber dann garantiert, wenn die
VFD Firmware die seriellen Sächelchen als Tastendruck interpretiert :-P
Hallo ,
ich habe gesehen das alle meine Arduinonanos mit ATMega 328 bestückt
sind.
Lt. Datenblatt sind die pinkompatibel mit den 168ern. Sind die auch
softwarekompatibel? Ohne Änderung der Software zu betreiben?
MfG
Hans
Hans L. schrieb:> Ohne Änderung der Software zu betreiben?
Manchmal gehts, manchmal nicht. Eigentlich sollte zwischen 88 und 328
nicht allzuviel anders sein - aber der Teufel steckt im Detail.
Ich hänge dir mal ein HEX an, das ich gerade für den 328 kompiliert
habe.
Hallo Matthias,
danke für die Hex-Datei, aber ich werde noch etwas Zeit brauchen um die
Platine zu fräsen. Wenn die Platine funktioniert werde ich mal das
fliegend mit dem IRAMX16 verdrahten und sehen ob bzw. wie das
funktioniert.
Zur Info mal das Layout der des Controlteils.
MfG
Hans
Hans L. schrieb:> Zur Info mal das Layout
Ich hoffe aber, das du nicht wirklich die langsamen 4N33 zu benutzen.
Denke daran, das die PWM Frequenz etwa bei 15kHz liegt, da kommst du mit
den Darlington-OK (was sie nochmal langsamer macht) nicht weit.
6N137, HPCL2630 sind z.B. geeignete Typen.
Hallo Matthias,
ich habe das jetzt geändert und benutze die HCPL3180 als galvanische
Trennung. Ich würde gerne als Leistungsteil die integrierte Brücke
IRAMX20up60a nehmen.
http://www.irf.com/product-info/datasheets/data/iramx20up60a.pdf
Die hat aber wohl eine negative Logic ( open Emmitter pins ).
Könnte ich die trotzdem nehmen? Kann ich die Ansteuerung von den
HCPL3180 invertieren? Würde das funktionieren?
MfG
Hans
Hans L. schrieb:> Kann ich die Ansteuerung von den> HCPL3180 invertieren? Würde das funktionieren?
Das sollte funktionieren, wenn du die Polarität der OC Ausgänge im
Programm umdrehst. Allerdings musst du peinlich darauf achten, das
während der Initialisierungsphase niemals die falsche Polarität an der
Brücke ankommt, denn dann machts Bumm.
Du musst also mit Pullups dafür sorgen, das die Ausgänge inaktiv sind,
während der MC startet.
Ich halte von diesen All-In-One Brückentreibern nicht so viel, weil der
Schaden bei einer Fehlfunktion gleich den kompletten Chip zerstört.
Hallo Matthias,
ich versuche jetzt das Leistungsteil diskret aufzubauen. Nur zur
Sicherheit, wenn der Shutdownanschluß auf Spannung liegt ist der IR2110
abgeschaltet, auf Ground ist er aktiv? In ähnlichen Schaltungen mit dem
IRFP260N sind danach noch 6 Dioden MURS360, brauchst Du die nicht?
MfG
Hans
Hans L. schrieb:> Nur zur> Sicherheit, wenn der Shutdownanschluß auf Spannung liegt ist der IR2110> abgeschaltet, auf Ground ist er aktiv?
So isses.
Hans L. schrieb:> In ähnlichen Schaltungen mit dem> IRFP260N sind danach noch 6 Dioden MURS360, brauchst Du die nicht?
Wenn du damit antiparallel zu den MOSFets geschaltete Dioden meinst -
nö, brauche ich hier nicht, denn die von mir verwendeten IGBT vom Typ
HGTG20N60B3D haben eine (Zitat aus dem Datenblatt) ' Anti-Parallel
Hyperfast Diode', die extra dafür ist.
Gekauft habe ich die Dinger hier:
http://www.pollin.de/shop/dt/MzkwOTY4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Transistoren/HGTG20N60B3D_30_Stueck.html
40A und 600V genügen auch verwöhnten Ansprüchen :-)
Auch der im Schaltplan erwähnte G20N60 ist ein sehr robuster Typ für
Motoransteuerung und brauchte mit meinen Motoren keine extra Diode.
Je nach Geschwindigkeit und Stromtragefähigkeit der internen Bodydioden
des MOSFet musst du externe Dioden hinzufügen - oder eben nicht.
Hans L. schrieb:> kann das einschalten von den Treibern so funktionieren?
Wenn du dem Transistor noch einen Basisvorwiderstand spendierst, sollte
das klappen. Ein leuchtender HCPL schaltet dann die Treiber ein. Die
Überstromsicherung hast du damit allerdings erstmal lahmgelegt.
Per Software ist das einfacher. Wenn du die Routine
'DisablePWMOutputs()' für deine Zwecke benutzt, ist das praktisch das
gleiche und spart Hardware.
Hallo liebe fU-Gemeinde,
ich habe mir mal die Mühe gemacht und ebenfalls das Steuerteil des fU
aufgebaut.
Bei mir tritt aber ein fehler im Programm auf.
Der Prozessor arbeitet wie beschrieben, zuerst mit der einschaltmeldung,
dann die eeprom-Abfrage usw.
Leider fängt das immer wieder von vorn an, das ist eine Schleife.
Hat von euch auch schon mal jemand so einen fehler gehabt?
Stefan schrieb:> Der Prozessor arbeitet wie beschrieben
Welcher Prozessor? Die Schaltung arbeitet mit Mega88, 168 und 328, aber
sollte jeweils für den passenden Ziel-MC kompiliert werden.
Für mich klingt das so, als würdest du z.B. ein Mega88 Kompilat auf dem
Mega328 ausprobieren.
Stefan schrieb:> Habe nur ein paar von den ATMEGA168A-PU vorrätig.
Muss du nur sagen. Anbei ein Kompilat für den Mega168A. Sollte sich aber
vom Mega168 nicht unterscheiden.
Du solltest auch unbedingt mal die Fuses des MC überprüfen. Ein
aktivierter Watchdog kann auch zu solchen Resultaten führen.
Ja, das mit den Fuses muß ich noch einmal überprüfen. Ich habe mich da
an die Werte gehalten die hier schon im Forum angegeben wurden.
Zitat:
Der o.a. Fuse Calculator sagt:
Low: 0xD6 , High: 0xD1, Extended: 0xFC
Habe leider mit den ATMEGA Typen wenig Erfahrung. Hatte bisher alles mit
8051-Derivaten gemacht.
Naja, mal sehen...
Werde auf jeden Fall heute Abend mal die neue HEX-Datei aufspielen und
vieeeeleicht habe ich ja Glück...
Würde das Ding gern etwas weiterentwickeln, wenn ich Zeit habe immer
Stück für Stück..
Stefan schrieb:> Würde das Ding gern etwas weiterentwickeln, wenn ich Zeit habe immer> Stück für Stück
Nur zu. Am besten bekommst du aber erstmal die jetzige Version zum
Laufen, das wäre hilfreich.
Die richtige Einstellung ist
Ext. FullSwing Crystal, langes Startup, CKDIV disabled, EESAVE enabled,
SPIEN enabled, BootResetVektor disabled
Und am besten programmiert man auch einmal das *.eep file, damit der
EEPROM vorbesetzt ist.
So, den ersten Erfolg hatte ich nun.
Diese "Schleifenprozedur" sind weg. Habe nur Deine Datei aufgepielt und
es funktionierte. Es scheint doch kleine Unterschiede zu geben bei den
Atmegas.
Danke für die Hilfe. Ich werde dran bleiben.
@Hans Lang:
Dein Layout solltest du noch mal etwas überarbeiten. Der Platz zwischen
den OK-Beinchen reicht knapp als Luftstrecke zwischen 230VAC<->Bediener.
Aber nur wenn er auch frei bleibt. Kupfer hat dort nichts zu suchen. Und
an anderen Stellen besteht zwischen den netzführenden Leiterbahnen und
denen aus dem Niderspannungsteil ein Abstand von nur ca 1mm. Das kann
mehr als weh tun!
Mit dem Leistungsvermögen des Stromnetzes ist nicht zu spaßen.
Ich bräuchte eine Empfehlung zum Optokoppler. Ich wollte den eigentlich
weglassen, der Gleichspannungsteil im Zwischenkreis hat aber Potential
zum AC-Netz, der Phasenprüfer leuchtet im Betrieb bei + und -. Also doch
besser trennen. Ich möchte das Ganze mit 12V statt 18V aufbauen. Als
Mosfet habe ich irf840 bestellt. Geht z.B. PC817, 4n35?
grundschüler schrieb:> Ich wollte den eigentlich> weglassen, der Gleichspannungsteil im Zwischenkreis hat aber Potential> zum AC-Netz, der Phasenprüfer leuchtet im Betrieb bei + und -.
Niemals(!) darfst du die Trennung zwischen GND und GNDI aufheben, das
steht aber auch fett gedruckt im Artikel, den du dir durchlesen
solltest. Es besteht dann Gefahr für Leib und Leben, denn selbst der
Metallrahmen des LCD führt dann Netzspannung!
grundschüler schrieb:> Geht z.B. PC817, 4n35?
Notfalls kannst du den 4N35 nehmen, der PC817 ist zu langsam. Die PWM
Frequenz liegt bei etwa 31kHz und der 4N35 mit seinen 100kHz (10µs) ist
mit Ach und Krach ausreichend, man muss aber auf weiterhin positive
Logik achten (siehe unten). Nachteile sind die grosse Verzögerung und
das vermutlich notwendige Hochdrehen der Totzeit, die den nutzbaren
Bereich der Spannungsregelung einschränkt.
Der HCPL3180 ist ideal für 12V Betrieb und könnte die Lowside sogar
direkt antreiben, da er 2A Ausgangsstrom liefern kann und mit 0,2µs
Delay auch richtig schnell ist. Ausserdem besitzt er positive Logik (LED
an -> Ausgang high), was nicht zu verachten ist.
Andere Empfehlungen stehen im Artikel, der HCPL2630 und der 6N137 sind
ausreichend schnell.
Matthias S. schrieb:> Es besteht dann Gefahr für Leib und Leben, denn selbst der> Metallrahmen des LCD führt dann Netzspannung!
Das ist schon klar. Man sollte die Finger davon lassen, wenn man sich
mit den Gefahren von Strom nicht auskennt.
Bestellt habe ich jetzt 6N136, die sind schnell und müssten 12V
abkönnen.
Die Bauteile sind jetzt angekommen. Es geht also weiter. Bei den Mosfets
habe ich mich für irf840 entschieden. Ich möchte den Aufbau leicht
abwandeln und orientiere mich dabei an
http://www.ebay.com/itm/EGS031-threephase-pure-sine-wave-inverter-driver-board-EG8030-UPS-EPS-test-board-/130894916453
Leider gibt es das EG8030-datasheet nur in chinesisch. Ohne datasheet
nützt das Teil wohl nicht allzuviel.
Da es mir mehr um das Verständnis als um einen fertigen FU geht, möchte
ich das PWM-Signal ohnehin selbst generieren.
Frage zum shunt: Meine ir2110-Versorgungsspannung wird 12V. Ich möchte
den shutdown einstellbar machen. R9/R8 durch Potis ersetzen?
grundschüler schrieb:> R9/R8 durch Potis ersetzen?
Du könntest über den Shunt ein Poti legen und am Schleifer die Basis von
T1 anschliessen. Der Shunt sollte dann so bemessen sein, das in der
empfindlichsten Einstellung etwa 0,7V an ihm abfallen. Mit dem Poti kann
man dann die Einstellung unempfindlicher machen. Das Ändern von R8 oder
R9 bringt nichts.
grundschüler schrieb:> super Programm. Ganz kleiner Ergänzungsvorschlag für die menues:
Wäre schon, wenn du schreibst, wofür das sein soll. Falls du wissen
willst, welches der aktive Parameter ist, musst du dir nur den Cursor
anschauen, der steht schon richtig.
grundschüler schrieb:> der> die tatsächliche Frequenz misst
Die tatsächliche Frequenz könntest du aber nur mit einer externen
Referenz messen. So zählst du lediglich mit dem internen Takt.
Matthias S. schrieb:> nur den Cursor
Das war das Problem. Cursor wird nicht angezeigt.
Externe Referenz ist die Küchenuhr, mit der der Sekundentakt abgeglichen
ist.
ich benutze i2c-lcds ohne Cursor. Nach der Umstellung fehlte dann
zwangsläufig der Cursor. Dadurch das Problem mit der Anzeige.
Beim Zeittakt fällt auf, dass sich Taktfrequenz nach Reduzierung der
Amplitude unter 100% um ca. 5% verlangsamt. Wie kann das sein? Setzt der
Takt bei Berechnung der Amplitude aus?
grundschüler schrieb:> Wie kann das sein?
Nicht hier. Da du aber eine umgebaute Version benutzt (ich habe da was
von I2C gelesen), ist es möglich das deine modifizierte Version Probleme
hat, den Timer1_IRQ ohne Verzögerung zu bedienen. Alle anderen
Interruptroutinen müssen sich dieser unterordnen und sich von dieser
unterbrechen lassen.
Matthias S. schrieb:> Timer1_IRQ Verzögerung
Eigentlich nicht. lcd läuft nur in der Hauptschleife ohne interrupt.
Ich versuche den Programmaufbau zu verstehen. Die Sinustabelle hat 192
Wertepaare. Das muss bei hohen Frequenzen wegen des mcu-Taktes reduziert
werden. Dies geschieht über
sineTableIncrement = Inco;
AdjustSineTableIndex(sineTableIncrement);
...
static void AdjustSineTableIndex(const uint16_t increment)
{
sineTableIndex += increment ;
...
Inco wird über die Taster vorgegeben und hat einen Wert zwischen 0/0Hz
und 255/max Hz. Ich hätte erwartet, dass die Tabelle Wert für Wert
ausgelesen wird bzw dass die Schrittweite irgendwo zwischen 1 und 4
liegt.
Wieso Inco zwischen 0 und 255? Welche Werte der Tabelle werden gelesen
bzw. ausgelassen?
grundschüler schrieb:> Wieso Inco zwischen 0 und 255? Welche Werte der Tabelle werden gelesen> bzw. ausgelassen?
Es wird immer inco auf den Zeiger in die Tabelle addiert, der Zeiger
aber auch immer wieder auf die Länge der Sinustabelle justiert. Wenn
also der Zeiger erst auf 0 stand und 255 dazu addiert wird, zeigt er
nach AdjustSineTableIndex() auf 255-192 = 63.
grundschüler schrieb:> lcd läuft nur in der Hauptschleife ohne interrupt.
Dann schau dir deine I2C Library nochmal an. Wenn die die I2C Hardware
des Mega benutzt, dann kann es durchaus sein, das da der TWI Interrupt
benutzt wird.
ich verstehe
Inco=193 - bei mir ca. 59,5Hz. - gibt Schrittweite 1, d.h. alle
Tabellenwerte werden in einem Frequenzcyclus abgelaufen?
Inco=194 - bei mir ca. 6,20Hz. - ergibt Schrittweite 2 nur noch jeder
2. Tabellenwert wird abgelaufen?
Das kann irgendwie nicht sein, also verstehe ich es falsch, denn dein
Programm funktioniert ja.
Ich habe natürlich versucht, einen Sinusgenerator selbst zu
programmieren. Mit einer 48-Werte Tabelle komm ich bis ca.70Hz bei
Schrittweite 1/8Mhz. Taktfrequenz. Darüber reicht die Zeit während eines
Frequenzcyclus nicht, um alle Tabellenwerte abzulaufen. Dabei habe ich
wesentlich weniger Rechenaufwand in der ISR wie du. Kannst du mir
erklären, wie bei deinem Code mehr als 48Werte bei 70Hz abgearbeitet
werden können???
grundschüler schrieb:> Ich habe natürlich versucht, einen Sinusgenerator selbst zu> programmieren.
Schau dir dafür mal bitte die AVR314 Application Note an, wo das gleiche
Prinzip benutzt wird, um aus einer Sinustabelle verschiedene Tonhöhen
(DTMF Töne) durch unterschiedliche Schrittweiten zu erzeugen. Als
Besonderheit werden da auch gleich zwei Frequenzen gleichzeitig erzeugt
und dann addiert.
Das PDF beschreibt detailliert, wie das berechnet wird.
http://www.atmel.com/images/doc1982.pdf
Ergänzend und als Basis für das FU Projekt ist AVR447 empfehlenswert,
wie auch im Projektartikel erwähnt.
http://www.atmel.com/Images/doc8010.pdf
Auch ist der Code des FU ja nicht sonderlich kompliziert. Wenn du dir
die Timer1 ISR Schritt für Schritt anschaust, siehst du ja auch, wie es
läuft. Setze ein paar Beispiele für Inco ein und plotte dir die
resultierenden PWM Werte auf einen Zettel.
Da die Timer übrigens im 'Phase Correct Mode' betrieben werden, liegt
die Refreshrate bei 31,25kHz. (16Mhz/512)
Matthias S. schrieb:> Setze ein paar Beispiele für Inco ein und plotte dir die> resultierenden PWM Werte auf einen Zettel.
ok, habe ich mittels vb-programm probiert:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
Dim i, step_width, zg, st_length As Integer
step_width = TextBox2.Text
st_length = TextBox1.Text
ListBox2.Items.Clear()
For i = 0 To st_length - 1
zg = zg + step_width
If zg > st_length Then zg = zg - st_length
If zg > st_length Then zg = zg - st_length
ListBox2.Items.Add(ListBox1.Items.Item(zg))
Next
'freq = DIVISIONEER/(SINE_TABLE_LENGTH*100/Inco);
Label3.Text = 59000 / (st_length * 100 / step_width) / 10
Bei Stepwidth 170=>52,2Hz ergibt sich bei mir folgende Reihe:
"0","0","0","0",113,236,241,127,"0","0","0","0","0",155,250,221,82,"0","
0","0","0",33,192,255,192,33,"0","0","0","0",82,221,250,155,"0","0","0",
"0","0",128,241,236,113,"0","0","0","0","0",168,253,212,66,"0","0","0","
0",50,202,254,180,17,"0","0","0","0",98,229,246,142,"0","0",
Das wäre dann eine Sinustabelle mit gerademal acht Werten? Habe ich da
irgendwo einen Denkfehler?
grundschüler schrieb:> Habe ich da> irgendwo einen Denkfehler?
Zumindest ist unklar, was du dir da für Werte ausplottest. Sollen das
nun 3 Phasen sein? Kann ja eigentlich nicht sein, da es nie vorkommt,
das alle 3 Phasen 0 sind. Soll es nur eine Phase sein? Kann auch nicht
sein, da eine Phase nicht 5 mal hintereinander null ist. Welche F_CPU
setzt du voraus und warum teiltst du freq nochmal durch 10?
Wie o.a. wird der Algorithmus in AVR314 ab Seite 3 erklärt. Würde man
inco auf 1 setzen, wird die Sinustabelle mit der langsamsten
Geschwindigkeit durchgeklappert, bei inco = 2 wird jeder 2. Wert benutzt
und die Ausgangsfrequenz verdoppelt usw.
Danke für die schnelle Antwort.
Meine Sinustable ist praktisch identisch mit deiner. Die Werte für eine
halbe (positive) Sinusphase, dann Nullen für die negative Phase. Das
ganze 2x hintereinander, damit alle 6 Halbphasen mittels Offset Werte
abgreifen können. Statt Offset sind bei dir jeweis drei einzelne
Phasenwerte angegeben. Macht wohl keinen Unterschied.
Errechnet wird bei mir jeweil eine halbe positive Phase.
Matthias S. schrieb:> durchgeklappert
Das habe ich durchgelesen und - denke ich - verstanden. Das ist ja
soweit auch einfach, wenn die Schrittweite relativ klein ist. Sieht man
in meinem vb-programm auch ganz gut, weswegen ich glaube, dass es
richtig rechnet. Mein Problem sind die Schrittweiten zwischen ca.70 und
ca.130. Da kommt dann nichts sinusartiges mehr raus.
für Schrittweite 100/30Hz:
0,66,0,127,0,180,0,221,0,246,0,255,0,246,0,221,0,180,0,128,0,66,0,0,33
Matthias S. schrieb:> Welche F_CPU> setzt du voraus und warum teiltst du freq nochmal durch 10?
bei mir 8MHz deswegen Divisioneer bei mir 59000 (praktisch dein Wert/2).
Wenn ich es richtig verstanden habe wird bei dir - printdec(freq) - die
Frequenz als *10-Wert angegeben. Deswegen im vb-Programm /10.
Ich muss noch mal nachfragen. Deine Tabelle hat 192 (*3) Werte. Davon 96
positive Sinus-Werte, dann 96 0-Werte für die negative Phase.
Inco/Schrittweite von 0 bis 255. Wenn die Schrittweite bei 192/2=96 ist,
werden zwangsläufig abwechselnd Werte und Nullen gegriffen. Die
Schrittweite 1 entspricht 192+1=197, da die Tabelle praktisch wieder von
vorne anfängt.
Danach hätte man einen (linearen?) Anstieg der Frequenz nur zwischen 1
und 96, wobei ab 70 keine brauchbaren Werte mehr entstehen.
Dein FU funktioniert, also ist irgendwas an meiner Theorie falsch.
Was???
> Da die Timer übrigens im 'Phase Correct Mode' betrieben werden, liegt> die Refreshrate bei 31,25kHz. (16Mhz/512)
Alternativer Ansatz wäre gewesen die Timer im Sägezahnmodus mit
doppelter Frequenz zu betreiben (/256). Man hätte die Frequenz durch
Verkleinerung der Auflösung vergrößern können, indem man beim Überlauf
die Zähler TCNTx z.B. auf 128 setzt, wodurch sich die Frequenz
verdoppelt aber immer noch alle Tabellenwerte abgegriffen werden. ???
Hast du mal versucht, deinen Code auf einen ARM umzusetzen?
grundschüler schrieb:> Hast du mal versucht, deinen Code auf einen ARM umzusetzen?
Nicht den VFD, aber AVR447 (Brushless Motor with Sinus Modulation).
Allerdings benutze ich sowohl auf dem XMega als auch auf dem STM32F100
(VL Discovery) andere Hardware, also auf dem XMega (192A3/A1) die AWEX
Peripherie und auf dem STM32F100 einen Advanced Timer mit 3 PWM
Registern in einem Timer.
Das Prinzip bleibt aber genau das gleiche. Lies dir doch einfach mal
AVR314 durch, wie jetzt schon öfter vorgeschlagen. Da steht das Prinzip
mit Formeln drin.
Hallo,
ich weiß nicht ob hier noch jemand rein sieht, aber ich stell da mal ne
Frage. Hat mal jemand das Signal am Atmega aufgezeichnet? Bei mir kommt
kein Sinus. Oder hab ich einen Denkfehler. Versetzte Phasen sind da. Die
Fet´s werden auch angesteuert. Aber wenn es Sinus sein soll, passt bei
mir was nicht.
Gruß
Lota
lota schrieb:> Aber wenn es Sinus sein soll, passt bei> mir was nicht.
Dein Oszi scheint eine viel zu geringe Abtastrate zu haben. Es wird eine
PWM erzeugt, die in ihrer Breite sinusmoduliert ist. Dein Oszi sieht
zwar die PWM, kann aber ihre Pulsbreite nicht darstellen.
Wenn du das Signal durch einen Tiefpass schickst, der die 31 kHz der PWM
rausfiltert, wird auch dein Oszi die 'Popokurven' sehen.
Es gibt ein kleines Update, mit dem man jetzt beim Kompilieren auch 3
echte Sinuskurven (jeweils um 120° versetzt) erzeugen kann, statt wie
bisher nur die typischen 'Popokurven' für Motoren.
Wenn 'PURE_SINE_DRIVE' definiert ist (im Quellcode in main.c), wird eine
andere Tabelle aktiv, mit der das erreicht wird - ausserdem wird in der
Amplitudenberechnung anders gerechnet. Zur Unterscheidung meldet das
Display beim Starten nun 'VFD Motor Drive' bei Benutzung der alten
Tabelle und 'VFD Sine Drive' bei der neuen. Solange ich die Datei nicht
in den Artikel hochladen kann (geht irgendwie nicht), hänge ich den
neuen Projektordner mal hier an.
So, hat sich geklärt, die aktuelle Version ist nun auch beim Artikel zu
finden. Nebenbei habe ich euch auch gleich mal 6 HEX files mit ins
Archiv gepackt, jeweils für Mega88, 168 und 328 kompiliert und eben
Sinus- oder Motorkurven.
Hanspeter S. schrieb:> gibt es eine Stückliste?
Nö, sollte aber mit Eagle zu machen sein. Soweit ich weiss, hat bisher
niemand genau diese Schaltung nachgebaut, sondern immer irgendwas
modifiziert oder umgebaut.
Hallo Matthias,
Dein Frequenzumrichterprojekt scheint wirklich sehr gelungen - sofern
ich das beurteilen kann. Allerdings brauche ich ein wenig Nachhilfe
(elektrische Maschinen war nie mein Lieblingsthema). Hoffentlich fällt
jetzt die „Meute“ nicht über mich her, wenn ich doch noch einmal die
Frage stelle, warum ein Kondensatormotor nicht über einen FU geregelt
werden kann.
Prinzipiell ist doch so ein Motor auch eine Asynchronmaschine und der
Kondensator dient doch nur zur Phasenverschiebung für die Hilfswicklung
– oder?
Wenn ich nun die Phasenverschiebung der Hilfswicklung mit einer um 90°
verschobenen Tabelle realisieren könnte (natürlich mit der dafür
notwendigen Hardware), müsste der Motor doch laufen können und zwar ohne
den Original-Kondensator, der natürlich nur für eine Frequenz ausgelegt
werden kann. Eine solche Lösung könnte dann evtl. für den gesamten
Regel-Frequenzbereich funktionieren.
Wo liegt mein Denkfehler?
Gruß
Peter
PA A. schrieb:> Eine solche Lösung könnte dann evtl. für den gesamten> Regel-Frequenzbereich funktionieren.> Wo liegt mein Denkfehler?
Kein Denkfehler, alles soweit richtig. Allerdings gibt es Pferdefüsse,
denn die Hilfwicklung ist meistens schwächer dimensioniert, verträgt
also nicht die volle Leistung der Hauptwicklung. Da das auch von Motor
zu Motor verschieden ist, wäre das ein Parameter für die Skalierung, der
eingestellt werden sollte, das Menü müsste also erweitert werden.
Wünschenswert wäre auch eine einstellbare Phasenverschiebung von z.B.
80°-100°, um Geräuschentwicklung zu minimieren.
Ferner sind die drei Phasen dann auch nicht mehr beliebig austauschbar,
man muss also wissen, das es zwei Hauptphasen gibt (z.B. U1 und U2) und
eine Nebenphase (Z1).
Das Prinzip des Kondensatormotors wird übrigens recht gut bei z.B.
Youtube erklärt. Suche nach 'Single Phase Induction Motor' und du stösst
auf einige recht gute Videos.
Hallo Matthias,
danke für die Hinweise. Dann werde ich das Projekt wohl doch 'mal
angehen - vielleicht werde ich ja doch noch zum Motor-Profi :-)
Gruß
Peter
Hallo Zusammen,
ich bin gerade dabei mich mit diesem Projekt zu beschäftigen und habe
ein Grundlegendes Verständnisproblem. Ich verstehe nicht wie hier die
Drehzahl vergrößert oder verkleinert wird auf der Timerebene.
Im Detail ist ja so dass die Time im Phase Correct Mode arbeiten.
D.h. jeder Timer zählt von unten (0) nach oben (bis 255) und dann wieder
nach unten (0) usw.
Die Pulsbreiten werden durch die Compare Werte aus der Sinustabelle
verändert. Aber wie wird die Periodenzeit auf der Timerebene, also die
Drehzahl verändert? Bin leider auch nicht aus der AVR447 Appnote
schlauer geworden.
Wäre jemand bereit das kurz zu erklären oder kann jemand mir einen
Hinsweis geben wo ich dafür eine Erklärung finden kann?
Grüße, Eric
Eric schrieb:> Wäre jemand bereit das kurz zu erklären
Entscheidend für die Ausgangsfrequenz ist die Schrittweite zwischen zwei
Tabellenzugriffen - im Progrsmm die Variable Inco. (IncrementOffset)
Wenn bei zwei aufeinanderfolgenden Zugriffen auf die Tabelle nur um 1
inkrementiert wird, ergibt das die niedrigste Ausgangsfrequenz. Wird die
Schrittweite erhöht, erhöht sich die Ausgangsfrequenz.
Benutzt wird das u.a. auch in der AVR314 Application Note, wo nach
diesem Prinzip DTMF Töne erzeugt werden.
Guten Morgen,
zunächst einmal möchte ich Matthias für sein sehr sinnvolles und sehr
gelungenes Projekt danken. Ich bereite gerade alle Zutaten vor, um
seinen Umrichter für meine kleine Drehbank nachzubauen. Das Ganze wird
anschließend auf eine komplette CNC-Drehbank hinauslaufen.
Ich habe mich etwas intensiver mit dem Sourcecode beschäftigt und möchte
hiermit eine konstruktive Kritik bzw. eine Verbesserung einbringen, vor
allem im Zusammenhang mit dem Verständnis der Frequenzerzeugung. Diese
wird nicht wie schon oben oft erwähnt mit der Schrittweite der
Sinustabellenaufrufe bewerkstelligt sondern genauer gesagt mit der
Zeitspanne zwischen den einzelnen Sinustabellenaufrufen. Die gesamte
Sinuskurve aus der Tabelle wird durchfahren im gesamten
Sinusfrequenzbereich von 0,6 Hz bis 162 Hz, es werden keine Werte
ausgelassen wie dies bei der DTMF-Geschichte in AVR314 der Fall ist.
Wie kommt diese variable Zeitspanne zustande?? Nun die Antwort liegt im
Code:
Die wichtigste Variable für die Frequenzerzeugung sind:
1. inco (8bit)
2. sineTableIndex (16bit)
ANNAHME: inco = 1;
Bei jedem TIMER1_CAPT_vect-Aufruf wird "sineTableIndex" in der Funktion
"AdjustSineTableIndex" um den Wert in der Variablen "inco"
inkrementiert. Danach wird "sineTableIndex" durch 256 dividiert
(rechtsshift um 8 Stellen) und auf die Sinustabellenlänge von 192
angepasst. Die Division durch 256 bewirkt, dass "sineTableIndex" bei
einem "inco = 1" erst nach jedem 256stem TIMER1_CAPT_vect-Aufruf um
einen einzigen Zähler erhöht wird. Bei der Aufruffrequenz des
TIMER1_CAPT_vect von 31,25 kHz wird somit alle 8,2 ms der nächste Wert
aus der Sinustabelle in die PWM-Register geladen. Nach allen 192
Sinustabellenzugriffen vergehen 1,57 sek, das sind unsere 0,63 Hz
Sinusfrequenz als Mindestfrequenz des Umrichters.
ANNAHME: inco = 255
Nach wie vor wird "sineTableIndex" bei jedem TIMER1_CAPT_vect-Aufruf um
"inco" inkrementiert, durch 256 dividiert und an 192 angepasst. Nur
dieses Mal ist der Wert in "inco" mit 255 maximal, wodurch der
"sineTableIndex" letztendlich bei jedem ISR-Aufruf um einen einzigen
Zähler inkrementiert wird. Zwischen den einzelnen Sinustabellenaufrufen
aller 192 Werte vergeht nun eine Zeit von 32 Mikrosek. Nach Abruf aller
192 Sinuswerte vergehen somit genau 6,1 ms, die unserer maximalen
Sinusfrequenz des Umrichters von 162,8 Hz entsprechen.
Man sieht hier also deutlich: In jedem Drehfrequenzbereich von 0,6 Hz
bis 162 Hz werden ALLE Werte in der Sinustabelle durchlaufen. Es wird
nichts übersprungen, obwohl dies sicherlich noch möglich wäre, um die
Sinusfrequenz weiter zu erhöhen.
Beste Grüße
CNCler
CNCler schrieb:> Man sieht hier also deutlich: In jedem Drehfrequenzbereich von 0,6 Hz> bis 162 Hz werden ALLE Werte in der Sinustabelle durchlaufen.
Danke für die Erklärung. Ich werde den Artikeltext mal entsprechend
anpassen und wundere mich, das ich so vernagelt war, den Code zwar
anzupassen und funktionsfähig zu gestalten, ihn aber anscheinend doch
nicht kapiert habe, hehehe. +1 von mir.
Edit: Wenn du die Zeit hast, schau doch mal unter dem Abschnitt
'Sinuserzeugung' ob ich deine Gedankengänge so richtig niedergeschrieben
habe.
https://www.mikrocontroller.net/articles/3-Phasen_Frequenzumrichter_mit_AVR#Sinuserzeugung
Und nun ergibt das ganze endlich Sinn :-)
Hallo Matthias,
du hast es richtig beschrieben und sogar mit den entsprechenden Formeln
prägnant untermauert, sehr gut. Ich freue mich schon auf den Nachbau des
Umrichters.
Beste Grüße
CNCler
Moin moin,
habe mir das ganze mal nachgebaut und festgestellt das drei Ausgänge
invertiert sind. Glaube die Low Side. Betreibe das im Sine Modus mit
15khz. Mehr macht die angeschlossene Brücke nicht. mit LC Glied sehe ich
brauchbare kurven am Ossi. Kann mir jemand etwas Schützenhilfe geben?
Klar, könnte das ganze am Optokoppler wieder invertieren. Aber denke
besser im Code.
grüße und 73 DL5OP Kevin
DL5OP schrieb:> Klar, könnte das ganze am Optokoppler wieder invertieren.
Die OC Ausgänge liefern an jede Phase zwei nicht überlappende
komplementäre Signale, die bei flüchtiger Betrachtung invertiert
gegenüber dem anderen Signal aussehen.
In Wahrheit sind sie auch noch durch die Totzeit verschieden, so das
ihre Flanken nicht übereinander liegen.
Eine externe Invertierung ist normalerweise unnötig, denn wenn man sie
bräuchte, kann man sie per Software bei der Timer Initialisierung
machen.
Ich habe das Projekt nachgebaut und habe da mal eine Frage zu der
Software.
Und zwar würde ich gerne die Emitterströme der jeweiligen Low-Side IGBT
messen.
Dazu will ich eine zweite MCU verwenden.
Die Idee ist, dass die erste MCU ein Signal an die zweite MCU ausgibt
und damit die ADC Wandlung gestartet wird.
Und zwar habe ich mir das so vorgestellt, dass das Signal in den
jeweiligen Compare B Match Interrupts erzeugt wird.
Also hier z.B. für den OC2A Ausgang.
PC4 soll dann der Ausgang sein um die ADC Messung in der zweiten MCU zu
starten.
ISR(TIMER2_COMPA_vect)
{
PORTC |= (1 << PC4); //PB1 High
PORTC &= ~(1 << PC4); //PB1 Low
}
Wenn ich das jetzt mit einem Logic Analyzer messe, dann sehe ich eine
Verzögerung zwischen dem OC2A PIN und dem PC4 PIN eine Verzögerung von
17us. (Siehe Bild)
CH4 --> OC2A entspricht WL
CH5 --> OC2B entspricht WH
CH6 --> PC4
Die MCU wird mit 16 MHz getaktet.
Hat jemand eine Idee wie die relativ große Verzögerung zustande kommt
und wie ich die reduzieren kann?
Was noch komisch ist, dass der PC 4 zwei Signale direkt nacheinander
liefert..
Grüße
Eric schrieb:> Und zwar habe ich mir das so vorgestellt, dass das Signal in den> jeweiligen Compare B Match Interrupts erzeugt wird.
Was für ein Timing möchtest du denn? Die nützlichsten Signale werden
vermutlich die Gatesignale sein, die der MC sowieso schon liefert. Eine
zusätzliche ISR ist kritisch, weil die 3 Timer synchron laufen und alle
OC Register bereits benutzt werden.
Ja, die Gate Signale für die Low-Side IGBTs wären richtig.
Hatte mir am Anfang nur gedacht dass ich die über extra Pins ausgebe
(Über die OC Interrups).
Leider falsch gedacht.
Am Mittwoch hänge ich mal nen Motor ran und teste ob der Motor sich
überhaupt dreht oder ob sich noch andere Fehler eingeschlichen haben.
Je nach dem werde ich dann das ein wenig umbauen und die Gate Signale
verwenden, was ein wenig unschön ist, weil ich mir dafür Platinen
anfertigen ließ.
Trotzdem Danke und trotzdem ein tolles Projekt
Hallo,
ein sehr schönes Projekt.
Laut seiner Beschreibung könnte ich auch eine China Spindel betreiben
und würde es auch gerne machen. Aber die Steuerung hat einen DA Wandler
drin, so das ich ihn übern Rechner Steuern könnte. 0 - 5 Volt und einmal
0 - 10 Volt.
Gibt es da Nicht eine Möglichkeit das zu Realisieren?
Gruß
Peter
Dunkel ist der Sinn deines Beitrages. Lt. wessen Beschreibung kann wer
eine China Spindel (wasn das?) steuern?
Welche Steuerung hat einen DA Wandler drin (der Frequenzumrichter hat
sowas nämlich nicht)?
Ob es eine Möglichkeit gibt, das zu realisieren, muss deswegen erstmal
dahingestellt bleiben.
Hallo,
Danke für die schnelle Antwort.
Eine China Spindel ist ein Fräsmotor für eine CNC. Das Teil kommt aus
China und wird daher so genand.
Der Wandler ist in der Schnittstellenkarte gleich mit drauf.
Tiefpass? Ja Aber bei diesen Frequenzumrichter
Sind 2 Pins. Mmmmmhhhhh
Gruß
Peter
nach den Versuchsaufbau mit einen ATmega88PA habe ich die dazugehörige
hex_File eingespielt.
Die MCU wird mit 16Mhz getaktet.
Das Programm arbeitet richtig aber die ausgegebene Frequenz entspricht
nicht den auf den Display angezeigten Wert
bei 50 Hz Anzeige wird 6 Hz ausgegeben
bei100 Hz 12Hz
bei150 Hz 18Hz
die ausgegebene Frequenz ist demzufolge viel zu niedrig
Ich habe Software dann nochmals im AVR Studio 7 compiliert
das Ergebnis war dasselbe
Woher kann das rühren
hat da jemand eine Idee.
Gruß Günter
Du solltest mal die Fuses deines MC überprüfen. Anscheinend läuft er
noch im Auslieferzustand mit etwa 1 MHz. Du jedoch solltest die CLKDIV8
Fuse löschen und den 'Ext. High Frequency Crystal' Modus wählen.
Wenn das bereits geschehen ist, schwingt dein Quarz nicht richtig, bzw.
hat die falsche Frequenz.
Ich habe die Einstellungen der Fuse nochmals Überprüft
den CLKDIV8 Fuse habe ich beim einstellen übersehen
nach den löschen wurde dann die richtige Frequenz ausgegeben
Für mein Vorhaben benötige ich eine Frequenz von 750Hz zum
ansteuern einer Turbovakuumpumpe
Da die MCU jetzt richtig läuft versuche ich jetzt die Software
auf die höhere Frequenz anzupassen
vielen Dank für die schnelle Hilfe
ich hätte den Fehler nicht so schnell gefunden
Gruß Günter
Günter P schrieb:> Für mein Vorhaben benötige ich eine Frequenz von 750Hz zum> ansteuern einer Turbovakuumpumpe
Oha. Das erfordert recht weitreichende Modifikationen - die Sinustabelle
muss deutlich kürzer werden. Da im derzeitigen Zustand die maximale
Frequenz etwa bei 162 Hz liegt, muss die Tabelle also mindestens um den
Faktor 5 gekürzt werden bzw. du legst 5 komplette Phasendurchläufe in
der Tabelle ab.
Darunter leidet die Genauigkeit erheblich. Es wäre zu überlegen, ob du
nicht lieber Blockkommutierung für die Pumpe benutzen solltest oder
einen MC benutzt, der deutlich mehr Rechenleistung hat.
ich habe mir die Software genau angeschaut und festgestellt
das auf diese weise keine sinnvolle Frequenzerhöhung möglich ist.
Um auf die notwendigen 750Hz zu kommen habe ich mich entschlossen
ein von mir abgeschlossenes Projekt einer CNC Spindel mit
einer maximalen Drehzahl von 20000 U/min (400HZ) zu erweitern.
Die Frequenzerzeugung basiert auf einen AT90PWM3B mit einer
reinen Sinustabelle von 2040 Inkrementen.
In einen Versuch konnten die 750Hz schon recht gut erreicht
werden.
Der Nachteil besteht nur das an den AT90PWM3B keine LCD Anzeige
anzuschließen geht und jede LCD Ausgabe die erreichbare Frequnz
verringern würde.
Da muß mir noch was einfallen.
Gruß Günter
Günter P schrieb:> ich habe mir die Software genau angeschaut und festgestellt> das auf diese weise keine sinnvolle Frequenzerhöhung möglich ist.
Habe ich mir auch schon gedacht. Wenn du da schon was mit dem 90PWM
rumliegen hast, ist eine Weiterentwicklung dessen sicher sinnvoller.
Günter P schrieb:> jede LCD Ausgabe die erreichbare Frequnz> verringern würde.> Da muß mir noch was einfallen.
Das hingegen deutet auf ein falsches Konzept hin. Die LCD Ausgabe in
meiner Software behindert die PWM überhaupt nicht, weil ich die
Prioritäten anders setze. Erst kommt die Verarbeitung der Interrupts
(PWM, ADC) und wenn wirklich nichts anderes zu tun ist, der
Kommandointerpreter und das LCD.
Ich habe das mit der LCD Anzeige nun auch hinbekommen.
Dazu habe ich jetzt die Frequenzerzeugung in die Timer0
Interruptschleife gelegt. Nur der Frequenzabgleich mit
Timer0 machte etwas Schwierigkeiten.
Für die LCD Anzeige habe ich die Software aus den Projekt
verwendet da sie sich sehr gut anpassen läßt.
Der AT90PWM3B ist eigentlich nicht für LCD Anschluß vorgesehen
und man muss sich die Pins verteilt aussuchen.
Hat aber geklappt.
nochmals vielen Dank für helfenden Hinweise
und die Unterstützung.
Gruß Günter
Günter P schrieb:> Der AT90PWM3B ist eigentlich nicht für LCD Anschluß vorgesehen> und man muss sich die Pins verteilt aussuchen.
Mal 'ne blöde Frage: Welche AVR sind denn für LCD Anschluß vorgesehen?
Ich kenne einige mit einem integrierten LCD-Controller (z.B.:
ATmega169).
Das war es dann aber auch schon. Die HD44780 basierten Displays haben
ein 8080-Interface, das habe ich noch an keinem AVR gesehen. Das läßt
sich aber super mit ein paar GPIOs nachbilden. Dann fallen mir noch ein
paar Displays mit SPI-Schnittstelle ein. Die läßt sich zur Not auch per
Software auf beliebigen Pins abbilden.
Günter P schrieb:> man muss sich die Pins verteilt aussuchen
Das ist immer so, wenn man keine Ausgangsmatrix für die PWM Signale hat
und man auf die Pins festgenagelt ist, die der MC vorgibt. Aber
> Hat aber geklappt.
Im schlimmsten Fall nimmt man eines der modernen SPI Displays, bei denen
nur 3 oder 4 Pins benötigt werden. Mit so einem Display sollte der FU
dann auch auf einem der modernen kleineren Tiny laufen, bei denen es ja
welche gibt, die auf BLDC Ansteuerung geradezu spezialisiert sind.
Da kann es höchstens mit Flash ein wenig knapp werden - das sei aber als
Übungsaufgabe dem geneigten Interessenten überlassen :-P
Zufällig bin ich über das Projekt gestolpert und da ist mir in den
Zusammenhang ein Problem eingefallen was ich einmal hatte. Es ging um
eine Heizungspumpe Grundfos Alpha 2 bei der war der Leistungstreiber
FSB50450S defekt. Nach dem Tausch ging sie wieder.
Jetzt stellt sich mir die Frage: Würde das hier gezeigt Projekt auch mit
diesen Chip funktionieren?
Gruß Franz
Franz Geier schrieb:> Würde das hier gezeigt Projekt auch mit> diesen Chip funktionieren?
Nach dem Studium des FSB Datenblattes scheint nicht viel dagegen zu
sprechen. Der FSB Chip integriert lediglich alle 3 Treiber und H-Brücken
in einem Chip.
Hinter den Optokopplern meines Projektes sollte man den FSB Chip direkt
anschliessen können.
Lieber Herr Schöldgen,
an dieser Stelle möchte ich Ihnen meinen ganz außerordentlichen Dank
aussprechen. Nicht nur für das Projekt "3-Phasen Frequenzumrichter mit
AVR" von 2013 sondern auch für Ihr Engagement und die laufenden
Antworten zu den diversen Fragen. Wie man lesen kann, hat das nicht nur
vielen anderen geholfen sondern jetzt ganz explizit auch mir.
Dieses ist auch der Grund warum ich diesen kleine Beitrag schreibe, denn
ich möchte Teil der Hilfe, die ich hier erfahren habe gerne an die
"Community" zurückgeben, vielleicht hilft es jemanden Anderen. Mein
Problem war eine alte Whirlpool Wanne Hoesch Samoa von 1989. Nicht nur
dass die mal sehr teuer war, viel entscheidender ist, dass sie (weil
viel zu groß) früher von außen durch ein großes Loch in der Kellerwand
in den Keller gekommen ist was jetzt nicht mehr gehen würde. Auch
Ersatzteile natürlich Fehlanzeige. Die Steuerung (Bild5+6) ist von
Siemens aus dem gleichen Jahr. Sie basiert auf einem SAB80C537-N und ist
in die Jahre gekommen. Ich hatte wegen diverser Defekte mittlerweile
alle Kondensatoren und Elkos getauscht. Aber dann ging die Steuerung des
Pumpenmotors (3~ 0,8kW 103Hz 293o/min) nicht mehr, die ist Teil der
Gesamtsteuerung. Auch hier ist es letztendlich ein 3-Phasen
Frequenzumrichter, wobei der Mikro nur 3 PWM Signale liefert. Die
Invertierung machen die Gatetreiber selber. In diesem Fall ein
Hybridmodul, welches vergossen ist und natürlich auch nicht mehr als
Ersatzteil erhältlich ist. Ich vermute auch hier sind die Kondensatoren
ausgetrocknet siehe (Bild 1)
Es ging nun darum diese "Hybridmodul/Gatetreiber" zu erstzen. Es ist
eine Schaltung basierend auf dem HCPL3020 als schneller Optokoppler und
dem IR2184 als eigentlicher Gatetreiber. Die Platine hat die gleichen
Abmessungen und das Pinning wie der Ursprüngliche Hybrid. siehe (Bild 2)
und (Bild 3). Für das "Shut Down" des IR2184 wird der Integrator mit dem
220nF Kondensator benutzt. Die Diode an Pin 2 verhindert eine
Rückwirkung auf das PWM Signal. Als Gimmick ist die Grüne LED zu sehen,
die anzeigt wenn das PWM Signal anliegt und die Schaltung arbeitet. Die
Ausgänge gehen direkt an die MOSFETs IRFP450. Selbstredend, die
Spannungen (5V und 12v) sind jeweils galvanisch vom Netz und
untereinander entkoppelt. Die Schaltung (Bild3+4) hat noch deutlich
optimierungspotential, aber sie funktioniert mittlerweile ohne Probleme.
Auch das Layout kann noch verbessert werden. Die Widerstände R5+R6 mit
18 Ohm sind nur nachgefrickelt.
Herr Schöldgen nach dem ich damals Ihre Schaltung sah, habe ich mich an
dieses Projekt gewagt. Denn dadurch wurde mir klar dass dieses
"Hexenwerk" um Frequenzumrichter, völlig überzogen ist. Wie man auch
hier wieder sieht, man braucht nicht viel: Einen Mikro der die 3 PWM
Signale für die 3 Phasen erzeugt 3 mal so ein Modul wie dieses hier und
die Power MOSFETs.
Herr Schöldgen, Ihnen vielen Dank.
Matthias S. schrieb im Beitrag #6175000:
> Aber jetzt mal Tacheles - was hast du denn an der Schaltung meines FU> auszusetzen?
Danke der Nachfrage.
Matthias S. schrieb:> Der FU ist auch nicht dafür gedacht, geglättete> Sinusausgänge zu liefern, sondern durchaus die PWM zum Motor> 'durchzureichen'. Die Motorinduktivität sorgt für den Rest.> ...> Die derzeitig benutzte Schaltfrequenz im Artikel ist 31 kHz.
Dieses 'durchzureichen' verursacht Wirbelstromverluste die
speziell beim Langsam Lauf des Motors besonders hoch werden.
Auch die Schaltverluste in den drei Brückenzweigen werden
so unnötig hoch was einen schlechten Wirkungsgrad ergibt.
Ohne 'durchreichen' sieht das übrigens so aus:
https://www.sciencedirect.com/topics/engineering/pulse-width-modulation
Wie in Figure 41.21. dargestellt.
Das ist gang und gäbe, nur bei Deinem FU leider nicht.
Wie man das Problem ganz leicht löst, habe ich da gezeigt:
Beitrag "Arduino Kondensatormotor Drehzahlsteuerung"Beitrag "Re: Arduino Kondensatormotor Drehzahlsteuerung"
LG
old.
Wie du im Schaltplan sehen kannst, kann man durchaus Drosseln in den
Ausgang hängen, was aber auch bei kommerziellen FU nur im Ausnahmefall
gemacht wird.
Mein Mitsubishi z.B. hat so etwas gar nicht, man kann hier lediglich
zwischen verschiedenen PWM Wiederholfrequenzen auswählen.
Matthias S. schrieb:> kann man durchaus Drosseln in den> Ausgang hängen
wenn "man" es nicht schafft highside und lowside separat
mit PWM anzusteuern musst Du das wohl. :(
LG
old.
Aus der W. schrieb:> Matthias S. schrieb:>> kann man durchaus Drosseln in den>> Ausgang hängen>> wenn "man" es nicht schafft highside und lowside separat> mit PWM anzusteuern musst Du das wohl. :(
Du hast immer noch nicht kapiert wie deine Endstufe kommutiert. Wird
wohl auch für ewig so bleiben.
Aus der W. schrieb:> wenn "man" es nicht schafft highside und lowside separat> mit PWM anzusteuern musst Du das wohl. :(
Sag mal, du hast immer noch nicht kapiert, wie der FU funktioniert?
Soll ich dir jetzt nochmal erklären, das der MC sechs separate PWM
Signale zur Verfügung stellt, die highside und lowside dreier Phasen
separat ansteuern?
Jede highside und jede lowside wird also mit einem eigenen PWM Signal
versorgt.
Matthias S. schrieb:> Sag mal, du hast immer noch nicht kapiert, ...> Soll ich dir jetzt nochmal erklären, das der MC sechs separate PWM> Signale zur Verfügung stellt, die highside und lowside dreier Phasen> separat ansteuern?
Ja bitte. Und zwar wie du, mit Deinem Treiber, High Side PWM
schalten kannst während Low Side sperrt.
Das ist nämlich Grundvoraussetzung für die für motorschonende
Ansteuerung ohne sog. 'durchreichen' von PWM.
LG
old.
Aus der W. schrieb:> Und zwar wie du, mit Deinem Treiber, High Side PWM> schalten kannst während Low Side sperrt.
Genauso wie das alle machen. Ich setze HIN auf logisch 1 und LIN auf
logisch 0.
Du scheint aber mit dem grundlegenden Prinzip Probleme zu haben. Die
ganze PWM läuft mit hoher Wiederholfrequenz. Es handelst sich um 3 8-Bit
Timer, die mit Werten zwischen 255 und 0 geladen werden. Wir lassen die
Totzeit im Moment mal weg - fürs Prinzip. Für +325V am Ausgang lade ich
in die 'Highside PWM' (vereinfacht, es ist eigentlich eines von 2 PWM
Registern des Timers) den Wert 255, gleichzeitig wird in die Lowside
PWM der Wert 0 geladen.
Vereinfacht, wohl gemerkt. Bevor die Register geladen werden, wird eine
Totzeit eingefügt und eine Skalierung für die Ausgangsamplitude gemacht.
Das steht aber alles im Sourcecode und im ausführlichen Artikel.
Aus der W. schrieb:> Das ist nämlich Grundvoraussetzung für die für motorschonende> Ansteuerung ohne sog. 'durchreichen' von PWM.
Unsinn. Du redest dir da was ein, was es real nicht gibt. Die
Motorinduktivität speichert und glättet so die PWM.
Wie gesagt, das ist bei allen kommerziellen FU genauso. Du findest
Ausgangsfilter in Sinuswechselrichtern, aber nicht in FU.
Matthias S. schrieb:> Aus der W. schrieb:>> Das ist nämlich Grundvoraussetzung für die für motorschonende>> Ansteuerung ohne sog. 'durchreichen' von PWM.>> Unsinn. Du redest dir da was ein, was es real nicht gibt. Die> Motorinduktivität speichert und glättet die PWM.
Er kapiert vor allem nicht, dass die Dioden auch ohne Ansteuerung
kommutieren können.
Matthias S. schrieb:> Genauso wie das alle machen. Ich setze HIN auf logisch 1 und LIN auf> logisch 0.> Du scheint aber mit dem grundlegenden Prinzip Probleme zu haben.
Das kann deine Hardware:
highside: 1010101010101
lowside: 0101010101010
Das kann deine Hardware leider nicht:
highside: 1010101010101
lowside: 0000000000000
ist aber Voraussetzung für motorschonende Kurven.
Aus der W. schrieb:> Ohne 'durchreichen' sieht das übrigens so aus:> https://www.sciencedirect.com/topics/engineering/pulse-width-modulation> Wie in Figure 41.21. dargestellt.> Das ist gang und gäbe, nur bei Deinem FU leider nicht.
LG
old.
Aus der W. schrieb:> Das kann deine Hardware leider nicht:> highside: 1010101010101> lowside: 0000000000000
Ich sach' ja, das du es nicht kapiert hast. Das muss kein FU können,
weil es Unsinn ist. Es hat keinen Sinn, die Lowside offen zu lassen,
weil dieser Betrieb sinnlos ist und die Wicklungen des Motor in der Luft
lässt. Das wäre für den runden Lauf eines Motor Unsinn. Schau dir einen
Motor in Stern- oder Dreieckschaltung an.
Ich weiss schon, das du darauf hinauf möchtest, das die obere
Ladungspumpe irgendwann alle ist, aber deswegen gibt es eine
Wiederholfrequenz. Ausserdem kann so ein Elko für viele Millisekunden
die Highside versorgen, aha sie wieder aufgeladen wird, wenn ich das für
nötig befunden hätte.
Aber das ist alles nicht nötig, weil die PWM Modulation ja weiterhin da
ist.
Ich will ja kein Rechtecksignal am Motor, was du offensichtilich
vorhast, sondern eben Sinus oder die 'Popo' Motorkurven. Das ist hier
kein billiger Mod. Sinus Generator mit Treppen, sondern ein echter
Drehstromlieferant mit 3 Phasen. Da kommt kein Verharren auf +325V vor
und auch nicht auf 0V.
Sowas übrigens könnte meine Hardware, wenn ichs nur wollen würde:
> highside: 1010101010101> lowside: 0000000000010
Aber, wie o.a., ist es sinnlos.
Wie wir übrigens hier schon lange festgestellt haben, sind diese
Endstufen nur ein Bauvorschlag. Es sind dutzende von Modifikationen
möglich und viele Erbauer haben da völlig andere Konstruktionen
erschaffen.
Aus der W. schrieb:> LG> old.
Die Werbung kannst du dir sparen. Ich habe ein Telefon von LG und bin
ganz zufrieden. Der Rest ist nur Gesabbel und nicht ehrlich.
Matthias S. schrieb:> Ich weiss schon, das du darauf hinauf möchtest, das die obere> Ladungspumpe irgendwann alle ist, aber deswegen gibt es eine> Wiederholfrequenz. Ausserdem kann so ein Elko für viele Millisekunden> die Highside versorgen, aha sie wieder aufgeladen wird, wenn ich das für> nötig befunden hätte.
"Daten:
Frequenzbereich: regelbar von ca. 0,6 Hz - 162 Hz"
Halbe Periodendauer durch 0,6Hz
0.5/0,6Hz = 0,84sek
Also fast eine Sekunde!
Du hast dir mit diesem kardinalen Fehler viele Optionen genommen!
Matthias S. schrieb:> Ich will ja kein Rechtecksignal am Motor, was du offensichtilich> vorhast, sondern eben Sinus oder die 'Popo' Motorkurven.
Kannst Du haben, scorpionx hat euch die integrierte
PWM gezeigt und leider vergeblich erklärt:
Beitrag "Frequenzumrichter für Wechselstrommotor."
Und folgende Beiträge.
LG
old.
Aus der W. schrieb:> Also fast eine Sekunde!>> Du hast dir mit diesem kardinalen Fehler viele Optionen genommen.
Es ist einfach nicht zu glauben :-( Du hast nicht mal ansatzweise
kapiert, das die Ausgabefrequenz des FU nichts, aber auch gar nichts mit
der PWM Wiederholfrequenz zu tun hat.
Ich kann die Ausgangsfrequenz des FU im genannten Bereich steuern, aber
die PWM bleibt doch weiterhin bei 31kHz.
Ich habe dir jetzt mehrfach vorgeschlagen, dein Arduino Dings mal mit
der Firmware des FU zu flashen und dir einfach mal die Ausgangssignale
anzusehen. Wenn du das nicht kannst, aber auch nicht verstehen willst,
wie mein FU funktioniert, dann ist dir nicht zu helfen. Ich würde dich
auch bitten, wenn dir das grundlegende Verständnis fehlt, dir mal die
entsprechende Application Note bei Microchip durchzulesen, bevor du dich
hier völlig outest:
http://ww1.microchip.com/downloads/en/AppNotes/doc8010.pdf
Früher AVR447, jetzt AN8010.
Ach, noch was. Der Typ (oldeurope) ist den ganzen Thread hier
durchgegangen und hat alle meine Beiträge runtergewertet. Lsst euch
davon nicht stören, sie haben dadurch nicht an Gültigkeit verloren :-)
Matthias S. schrieb:> Es ist einfach nicht zu glauben :-( Du hast nicht mal ansatzweise> kapiert, das die Ausgabefrequenz des FU nichts, aber auch gar nichts mit> der PWM Wiederholfrequenz zu tun hat.> Ich kann die Ausgangsfrequenz des FU im genannten Bereich steuern, aber> die PWM bleibt doch weiterhin bei 31kHz.
Das unterstellst du mir. Bei dir sind die 31KHz fix, bei mir
die 1KHz PWM. Ich belaste meinem Motor nicht mit der PWM
rail to rail Amplitude.
Matthias S. schrieb:> Ach, noch was. Der Typ (oldeurope) ist den ganzen Thread hier> durchgenengen
Das sollte man vor dem Einstieg in einen Thread immer tun.
> und hat alle meine Beiträge runtergewertet. Lsst euch> davon nicht stören, sie haben dadurch nicht an Gültigkeit verloren :-)
Warum sagst du sowas? Ich habe sowohl positive als auch negative
Bewertungen abgegeben. Das wird dir ein Mod. hier sicher
bestätigen. Also komm mal wieder runter.
LG
old.
Aus der W. schrieb:> Das unterstellst du mir.
Ich unterstelle gar nichts. Ich lese einfach nur deinen Unsinn:
Aus der W. schrieb:> Ausserdem kann so ein Elko für viele Millisekunden>> die Highside versorgen, aha sie wieder aufgeladen wird, wenn ich das für>> nötig befunden hätte.>> "Daten:> Frequenzbereich: regelbar von ca. 0,6 Hz - 162 Hz"> Halbe Periodendauer durch 0,6Hz> 0.5/0,6Hz = 0,84sek>> Also fast eine Sekunde!>> Du hast dir mit diesem kardinalen Fehler viele Optionen genommen!
Das zeigt eindeutig, das du es eben nicht kapiert hast.
Die 0,6Hz haben nichts mit der PWM Frequenz zu tun - nochmal
ausdrücklich!
Aus der W. schrieb:> Ich belaste meinem Motor nicht mit der PWM> rail to rail Amplitude.
Für den Betrieb an Nennspannung sind Motoren aber nun mal gedacht und es
macht ihnen rein gar nichts aus. Selbst mein alter Motor aus Hameln
läuft wunderbar und weich, obwohl er aus einer Zeit stammt, in der von
FU noch nicht die Rede war.
So, und nun würde ich dich bitten, den Thread hier in Ruhe zu lassen.
Ich antworte nur noch auf konkrete Fragen zu diesem Projekt.
Für dein Dings hast du deinen Thread.
Aus der W. schrieb:> Ich belaste meinem Motor nicht mit der PWM> rail to rail Amplitude.
Doch, das passiert bei deinem Murks ebenso, du kapierst es nur nicht.
Matthias S. schrieb:> natürlich 230/400V Drehstrommotore
'PURE_SINE_DRIVE'
Da habe ich doch noch eine Frage:
Mit 325V Zwischenkreisspannung bekommst du doch nur
200V Verkettet und nicht 230V (oder gar 400V).
Matthias S. schrieb:> Die 'Zacken' sind normal, das sind die Dächer der 'Popo' Kurven, die zur> Ansteuerung von Motoren etwas besser geeignet sind als reine> Sinuskurven.
Mit etwas besser ist gemeint, dass der Motor dann seine 230V
statt nur 200V bekommt, weil du den Sinus auf einen höheren
Effektivwert verzerrst?
LG
old.
> Mit etwas besser ist gemeint, dass der Motor dann seine 230V
statt nur 200V bekommt, weil du den Sinus auf einen höheren
Effektivwert verzerrst?
Nein.
Er addiert eine Gleichtaktspannung zu allen drei Phasen damit nicht
momentan eine Endstufe in die Begrenzung geht wo die anderen jeweils
noch Reserven haben. Die Differenzspannung im Dreieck die an den
Motorspulen wirkt bleibt immer noch ein Sinus.
Was mich aber wirklich wunderd: Warum setzt niemand vor so einen FU eine
PFC? Dann haben wir Eingangsseitig sinusförmigen strom der viel weniger
das Netz belastet und im Zwischenkreis mehr Spannung um Motoren höher
auszusteuern.
Motorendreher-c schrieb:> Die Differenzspannung im Dreieck die an den> Motorspulen wirkt bleibt immer noch ein Sinus.
Du beschreibst mit anderen Worten den Trick mit dem K3,
die Popo-Kurven. Oder primitiver, den Sinus am Scheitel
platt drücken. Dass sich der K3 in einem 3P-System
hebt, ist klar.
Ich habe den Eindruck, Ihr sucht blumige Umschreibungen
für den verzerrten Sinus.
Motorendreher-c schrieb:> Was mich aber wirklich wunderd: Warum setzt niemand vor so einen FU eine> PFC?
Ich habe den nicht benutzt, weil mir das zu Aufwändig erscheint.
Erst wenn die Verlustleistung im Gleichrichter-Vorwiderstand
in die Größenordnung eines PFC kommt, würde ich mir das überlegen.
Motorendreher-c schrieb:> im Zwischenkreis mehr Spannung um Motoren höher> auszusteuern.
Mit Delon-Brücke passt die Zwischenkreisspannung zu
einer verketten Spannung von 400V ohne Tricks.
LG
old.
Da wenn eine Phase bei ihren Maximun angelangt ist, die anderen beide
Phasen nicht ihren Minimalwerte erreicht haben, läßt man einfach den
Sternpunkt etwas um den gedachten Nullpunkt "kreisen". Mit der richtigen
Kurve bekommt man dann klirrfreie Sinuskurven. Daß der Sternpunkt
"eiert", merkt der Motor nur indirekt (an der höheren Amplitude).
Notfalls einfach mal aufzeichnen, Tabellen erstellen und Differenzen
ausrechen lassen, ...
Carl D. schrieb:> Notfalls einfach mal aufzeichnen, Tabellen erstellen und Differenzen> ausrechen lassen, ...
Ergibt die "Popo"-Kurven-Verzerrung des Sinus der
Strang-Spannung.
Wozu die blumigen Umschreibungen?
LG
old.
Der Ahnungslose aus der W. schrieb:> Verzerrte Strangspannung passt nicht ins Pure Sinus Marketing.> Das ist alles.
Es wird nur von ungefähr einem nicht verstanden.
https://de.m.wikipedia.org/wiki/Frequenzumrichter
blättere bis "Optimierung durch Überlagerung von Oberschwingungen"
Es geht um die Ströme durch die Motorwicklungen und nicht um die
Spannung an den Anschlußklemmen gegen Netz-N gemessen.
Aus der W. schrieb:> Verzerrte Strangspannung passt nicht ins Pure Sinus Marketing.
Die ist nicht verzerrt, sondern sinusförmig. Das passt bloß in dein
wirres Hirn nicht rein.
> Das ist alles.
Das ist alles.
Carl D. schrieb:> Der Ahnungslose aus der W. schrieb:>> Verzerrte Strangspannung passt nicht ins Pure Sinus Marketing.>> Das ist alles.>> Es wird nur von ungefähr einem nicht verstanden.
Schauen wir mal nach:
> https://de.m.wikipedia.org/wiki/Frequenzumrichter> blättere bis "Optimierung durch Überlagerung von Oberschwingungen">> Es geht um die Ströme durch die Motorwicklungen und nicht um die> Spannung an den Anschlußklemmen gegen Netz-N gemessen.
Hopa, da steht ja genau das was ich erklärt habe:
"Die dadurch erreichte Leistungssteigerung des Frequenzumrichters sowie
eines daran angeschlossenen Antriebs liegt in der Regel bei etwa 15 %.
Das entspricht etwa dem Amplitudenverlust einer
6-Puls-Drehstrom-Gleichrichterschaltung, welcher im Zwischenkreis etwa
86 % der Spitzenspannung liefert."
Pass mal auf:
325V*1,15=374V Das ist die Zwischenkreisspannung die ihr haben
solltet.
Und die Überlagerung mit Harmonischen nennt man nun mal Verzerrung.
LG
old.