Forum: Mikrocontroller und Digitale Elektronik Diskussion zum Artikel "Single Chip Frequenzumrichter" für den 2. MC Wettbewerb


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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 :-)

von Gregor B. (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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 :-)

von Anja M. (an_ja)


Lesenswert?

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

von Gregor B. (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von GVS (Gast)


Lesenswert?

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)?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Tibor Stolz (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Juergen G. (jup)


Lesenswert?

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?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von kabelbieger (Gast)


Lesenswert?

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))'

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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?

von kabelbieger (Gast)


Lesenswert?

Betriebsystem ist xp und winavr ist auch drauf....ich werde morgen 
erstmal neu installieren das ganze

von kabelbieger (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von kabelbieger (Gast)


Lesenswert?

Also die letzte funktionierende toolchain in kombination mit 4.19 ist 
folgende:  AVR Toolchain 3.3.1-1020

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sehr nett - vielen Dank!
Artikel aufgefrischt.

von skorpionx (Gast)


Lesenswert?

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?

von skorpionx (Gast)


Lesenswert?

Einfach statt "PROGMEM" habe ich "const PROGMEM" geschrieben und
alles läuft...-

von skorpionx (Gast)


Lesenswert?

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.

von Ezis B. (ezis_b)


Lesenswert?

Der Motor ist Einphasig..

von leser (Gast)


Lesenswert?

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?

von skorpionx (Gast)


Lesenswert?

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...?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Arne Pfäffle (Gast)


Lesenswert?

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"

von Arne P. (ob3lix)


Lesenswert?

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.

: Bearbeitet durch User
von skorpionx (Gast)


Lesenswert?

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.

von skorpionx (Gast)


Lesenswert?


von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

skorpionx schrieb:
> 
http://www.google.de/imgres?imgurl=http://www.elektro-kahlhorn.de/media/content/images/mbk_1ph.gif&imgrefurl=http://www.elektro-kahlhorn.de/Kondensator:_:410.html&h=152&w=198&sz=1&tbnid=SXxVykIDwCifnM:&tbnh=91&tbnw=118&zoom=1&usg=__4UYkw_J2bEtGlhLRbq8zyxAAVtA=&docid=sSLtiAKEmgrFJM&sa=X&ei=5I9KUpO1NqSN4ATH_4CIBQ&ved=0CDMQ9QEwAA&dur=4024

Genau. Du siehst, es ist relativ einfach, eine Steinmetzschaltung vom 
Kondensatormotor zu unterscheiden, der Steinmetz hat 3 Wicklungen, der 
Kondensatormotor nur 2. Wenn du also wirklich einen Steinmetz mit 3 
gleichen Wicklungen hast, entfernst du den Kondensator und schliesst die 
3 Phasen nun alle an den Umrichter an. Solltest du aber einen 
Kondensatormotor besitzen, bleibt dir entweder Phasenanschnitt (mit 
Brummen, wie im o.a. Thread) oder eine Wellenpaketsteuerung. Ich hab mit 
Wellenpaket mal rumexperimentiert, bin aber bezüglich Laufruhe und der 
heftigen geschalteten Leistung (Pumpe mit 1200 Watt) auf keinen grünen 
Zweig gekommen.

Übrigens gibt die Grösse des Kondensators schon einen Hinweis. Man 
rechnet bei Steinmetz mit ca. 60µF/kW, der Kondensatormotor besitzt 
wesentlich kleinere Werte.

: Bearbeitet durch User
von skorpionx (Gast)


Lesenswert?

Ich werde versuchen den Motor mit zwei Phasen zu versorgen.
Der Kondensator wird selbstverständlich entfernt. Ich werde
dann auch mit der Phasenverschiebung experimentiert.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Arne P. (ob3lix)


Lesenswert?

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 ;-)

von skorpionx (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Philipp (Gast)


Lesenswert?

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

von Juergen G. (jup)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Philipp (Gast)


Lesenswert?

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?

von Jörg B. (joerg-sh)


Lesenswert?

Phillip, du solltest dir mal den Artikel genau durchlesen. Da ist alles 
genau beschrieben!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Juergen G. (jup)


Lesenswert?

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.

von Interessierter (Gast)


Lesenswert?

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..

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von skorpionx (Gast)


Lesenswert?

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?

von Jörg B. (joerg-sh)


Lesenswert?

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.

von skorpionx (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Jörg B. (joerg-sh)


Lesenswert?

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.

von Jörg B. (joerg-sh)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von skorpionx (Gast)


Lesenswert?

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...“

von skorpionx (Gast)


Lesenswert?

Die Lösung ist nah... Mein Blaues Display arbeitet nur mit Hintergrund 
Beleuchtung gut. Sonst ist die Helligkeit nicht ausreichend...

von skorpionx (Gast)


Angehängte Dateien:

Lesenswert?

CPU-Teil schon getestet. Noch Netzteil mit Filter und Endstufen. 
Dazwischen aber Ostern...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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!

: Bearbeitet durch User
von skorpionx (Gast)


Angehängte Dateien:

Lesenswert?

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 ?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Kaj (Gast)


Lesenswert?

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!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von skorpionx (Gast)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

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

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

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ß

von Detlef K. (deka65)


Lesenswert?

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

von Michael (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Michael (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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!

von skorpionx (Gast)


Angehängte Dateien:

Lesenswert?

Ü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?..

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von skorpionx (Gast)


Lesenswert?

Matthias Sch. schrieb:
> die Totzeit hoch

Ja alles O.K.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ü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.

von skorpionx (Gast)


Angehängte Dateien:

Lesenswert?

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...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Miss mal bitte die Signale am Ausgang des MC. Die entsprechende Routine 
ist das hier:
1
/*! \brief Returns the high and low values with deadband for a given compare value.
2
 *
3
 * This function takes as argument a desired compare value and inserts a symmetric
4
 * deadband. The compare values for high and low side with deadband are returned
5
 * through the two supplied pointers.
6
 * The variable \ref DEAD_TIME_HALF is used as deadband, and the resulting deadtime
7
 * will be DEAD_TIME_HALF clock cycles times 2.
8
 *
9
 * \param compareValue desired compare value
10
 * \param compareHighPtr Pointer used to return high side compare value with dead band.
11
 * \param compareLowPtr  Pointer used to return low side compare value with dead band.
12
 */
13
static void InsertDeadband(const uint8_t compareValue, uint8_t * compareHighPtr, uint8_t * compareLowPtr)
14
{
15
  if (compareValue <= DEAD_TIME_HALF)
16
  {
17
    *compareHighPtr = 0x00;
18
    *compareLowPtr = compareValue;
19
  }
20
  else if (compareValue >= (0xff - DEAD_TIME_HALF))
21
  {
22
    *compareHighPtr = 0xff - (2 * DEAD_TIME_HALF);
23
    *compareLowPtr = 0xff;
24
  }
25
  else
26
  {
27
    *compareHighPtr = compareValue - DEAD_TIME_HALF;
28
    *compareLowPtr = compareValue + DEAD_TIME_HALF;
29
  }
30
}
31
ISR(TIMER1_CAPT_vect)
32
{
33
 /// intro and other stuff omitted
34
35
// load registers
36
    {
37
      uint8_t compareHigh, compareLow;
38
39
      InsertDeadband(tempU, &compareHigh, &compareLow);
40
  OCR0A = compareHigh;
41
  OCR0B = compareLow;
42
43
      InsertDeadband(tempV, &compareHigh, &compareLow);
44
  OCR1AL = compareHigh;
45
  OCR1BL = compareLow;
46
47
      InsertDeadband(tempW, &compareHigh, &compareLow);
48
  OCR2A = compareHigh;
49
  OCR2B = compareLow;
50
    }
51
}
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.

: Bearbeitet durch User
von skorpionx (Gast)


Angehängte Dateien:

Lesenswert?

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...)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von skorpionx (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

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.

von Günter (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Günter (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Günter (Gast)


Lesenswert?

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

von Hans L. (holzwurm56)


Lesenswert?

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

von Hans L. (holzwurm56)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Hans L. (holzwurm56)


Lesenswert?

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

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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

von Hans L. (holzwurm56)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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

von Hans L. (holzwurm56)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

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.

von Hans L. (holzwurm56)


Angehängte Dateien:

Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Hans L. (holzwurm56)


Angehängte Dateien:

Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Hans L. (holzwurm56)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Hans L. (holzwurm56)


Angehängte Dateien:

Lesenswert?

Hallo Matthias,
kann das einschalten von den Treibern so funktionieren?

Vielen Dank für deine Antwort

Hans

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Stefan (Gast)


Lesenswert?

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?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Stefan (Gast)


Lesenswert?

Nein, ich verwende den ATMEGA168 und habe das kompilierte HEX-File incl. 
EEPROM-Daten aufgespielt.
Also die Daten die im ZIP-Ordner hinterlegt sind.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

Dann nimm mal das angehängte HEX File. Das ist explizit für einen 
Mega168 (ohne P und ohne A) kompiliert.

von Stefan (Gast)


Lesenswert?

Ich glaube da muß ich mir erst einen besorgen.
Habe nur ein paar von den ATMEGA168A-PU vorrätig.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch User
von Stefan (Gast)


Lesenswert?

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..

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Stefan (Gast)


Lesenswert?

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.

von Carl D. (jcw2)


Lesenswert?

@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.

von grundschüler (Gast)


Lesenswert?

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?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von grundschüler (Gast)


Lesenswert?

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.

von grundschüler (Gast)


Lesenswert?

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?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von grundschüler (Gast)


Lesenswert?

super Programm. Ganz kleiner Ergänzungsvorschlag für die menues:
1
// black button - cycle through parameters
2
    case 1 : parameter++; if (parameter > NUMPARAMS) parameter = 0;
3
  
4
if(parameter){  
5
    lcd_goto(1,11);
6
    lcd_putc('#');
7
    lcd_goto(1,5);
8
    lcd_putc(' ');
9
  }else{
10
    lcd_goto(1,11);
11
    lcd_putc(' ');
12
    lcd_goto(1,5);
13
    lcd_putc('#');
14
  }
15
    _delay_ms(200);  
16
      break;

Ich habe in der Hauptschleife noch einen Sekundentimer integriert, der 
die tatsächliche Frequenz misst:
1
  for(;;)
2
  {//+++++++++++++  while  +++++++++++++++
3
4
  if(t1>14000){
5
  //  led1_tog;
6
  lcd_goto(4,10);
7
  lcd_int4(sec,0);
8
  sec++;
9
  t1=0;
10
//++++++ sec ++++++
11
12
  lcd_goto(4,16);
13
  lcd_int4((zlx),0);
14
  zlx=0;
15
16
}//---------- sec  -----------
17
18
 execCommand();
19
}//+++++++++++++  while  +++++++++++++++
20
}

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von grundschüler (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

grundschüler schrieb:
> Das war das Problem. Cursor wird nicht angezeigt.

Du scheinst ein Display zu haben, bei dem der Unterstrich fehlt.

von grundschüler (Gast)


Lesenswert?

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?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von grundschüler (Gast)


Lesenswert?

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?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von grundschüler (Gast)


Lesenswert?

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???

von grundschüler (Gast)


Lesenswert?

grundschüler schrieb:
> 6,20Hz
muss heißen 60,2Hz

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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)

: Bearbeitet durch User
von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von grundschüler (Gast)


Lesenswert?

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

von grundschüler (Gast)


Lesenswert?

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.

von grundschüler (Gast)


Lesenswert?

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?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von lota (Gast)


Angehängte Dateien:

Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von lota (Gast)


Lesenswert?

Hallo Mathias,
das kann ich einstellen. Geht bis 250Mhz. das solte reichen. Teste ich.
Danke

Gruß
Lota

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Hanspeter S. (kendo1)


Lesenswert?

Hallo Mathias,

Danke füe diesen Top Beitrag!
gibt es eine Stückliste?

Gruss HP

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von PA A. (arpeng)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von PA A. (arpeng)


Lesenswert?

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

von Eric (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Eric (Gast)


Lesenswert?

Ah, Danke!
Jetzt habe ich es verstanden. Zumindest mal den Grundlegenden Teil

Gruß Eric

von CNCler (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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 :-)

: Bearbeitet durch User
von CNCler (Gast)


Lesenswert?

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

von DL5OP (Gast)


Lesenswert?

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

von Gerhard M. (ggcode)


Lesenswert?

Hallo,
hat hier jemand ein schönes Layout zu diesem Projekt das man nachbauen 
kann?
Wäre schön.

Gruß Gerhard

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von grundschüler (Gast)


Lesenswert?

Matthias S. schrieb:
> Danke für die Erklärung.

Das war vermutlich genau das Problem, weswegen ich mit dem Verständnis 
deines Codes gescheitert bin:
Beitrag "Re: Diskussion zum Artikel "Single Chip Frequenzumrichter" für den 2. MC Wettbewerb"

von Eric (Gast)


Angehängte Dateien:

Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Eric (Gast)


Lesenswert?

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

von Peter (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von aSma>> (Gast)


Lesenswert?

Man kann die Drehzahl der Spindel mittels Spannung ansteuern. Am 
einfachsten  wäre ein Tiefpasses:
https://www.mikrocontroller.net/articles/Pulsweitenmodulation#DA-Wandlung_mit_PWM

von Peter (Gast)


Lesenswert?

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

von Günter P (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Günter P (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Günter P (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Günter P (Gast)


Lesenswert?

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

von Tom (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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

von Franz Geier (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Franz Geier (Gast)


Lesenswert?

Vielen Dank für die schnelle Antwort.
Ich glaub ich hab dann ein neues Projekt für meine Liste :)

Besten Dank
Gruß
Franz

von Max Maier (Gast)



Lesenswert?

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.

von oldeurope O. (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von oldeurope O. (Gast)


Lesenswert?

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.

von hinz (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von oldeurope O. (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von hinz (Gast)


Lesenswert?

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.

von oldeurope O. (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von oldeurope O. (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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 :-)

: Bearbeitet durch User
von oldeurope O. (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von hinz (Gast)


Lesenswert?

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.

von oldeurope O. (Gast)


Lesenswert?

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.

von Motorendreher-c (Gast)


Lesenswert?

> 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.

von oldeurope O. (Gast)


Lesenswert?

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.

von Carl D. (jcw2)


Lesenswert?

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, ...

von oldeurope O. (Gast)


Lesenswert?

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.

von hinz (Gast)


Lesenswert?

Aus der W. schrieb:
> Wozu die Blumigen Umschreibungen?

Die sind nur für mathematische Analphabeten blumig.

von oldeurope O. (Gast)


Lesenswert?

Verzerrte Strangspannung passt nicht ins Pure Sinus Marketing.
Das ist alles.

von Carl D. (jcw2)


Lesenswert?

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.

: Bearbeitet durch User
von Carl D. (jcw2)


Lesenswert?

Hab ich gerade im Netz entdeckt:

https://www.guetzold.com/wp-content/uploads/Wissenswertes_ueber_Frequenzumrichter.pdf

Sehr gute Zusammenstellung rund um das Thema.

von hinz (Gast)


Lesenswert?

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.

von oldeurope O. (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.