Forum: Mikrocontroller und Digitale Elektronik BLDC Treiber MIT AVR


von Daniel H. (danyag)


Angehängte Dateien:

Lesenswert?

Hey,
ich erprobe gerade meinen BLDC Treiber "Prototyp". Ich nutze einen 
Attiny 861, Halbbrückentreiber vom Typ IR2104 und Mosfets vom Typ 
IRLU024.

Die "BEMF-Schaltung" besteht aus 10 kOhm (zu Phase und Sternpunkt) und 
7,5 kOhm (gegen Masse) Widerständen sowie 100 nF Kondensatoren gegen 
Masse.

Soweit läuft es schon ganz gut, aber hin und wieder scheint es 
Fehlkommutierungen zu geben. Ich bin unsicher ob es an der 
Programmierung oder Störungen auf den Komparator liegt.

Ich hänge 4 Oszillogramme an, die jeweils die Spannungsverläufe der 3 
Phasen und des Sternpunkts zeigen - bei 3 verschiedenen Drehzahlen.

Die PWM ist noch deutlich zu sehen, aber vor allem verwundert mich dass 
die Kanäle unterschiedlich stark "gestört" scheinen. Ich weiß, es folgt 
die Glaskugelfrage:
Sind die Störungen mehr auf Fehlkommutierungen, Fehlmessung oder 
Schaltungsfehler zurückzuführen.
Kann / sollte ich die Filterung elektronisch verbessern?

Ich freue mich über jeden Tipp, wie ich vorgehen könnte um Schritt für 
Schritt weiterzukommen.
Ich reiche natürlich auch gerne Infos nach!

Vielen Dank und beste Grüße
Daniel

von Stefan F. (Gast)


Lesenswert?

Daniel H. schrieb:
> Ich reiche natürlich auch gerne Infos nach!

Mach mal, zum Beispiel dem Schaltplan mit eingezeichnete Messpunkten und 
dem kompletten Quelltext.

Ich sehe nämlich wenig Sinn darin, über ein paar Oszilloskop-Bilder zu 
schwafeln. Du willst ja nicht dein Oszilloskop reparieren.

von Daniel H. (danyag)


Angehängte Dateien:

Lesenswert?

Guten Morgen,

anbei der Quelltext und der Schaltplan. Ein Teil des Codes stammt vom 
"Brushless Motor Controller" von Ulrich Radig.

Stefan ⛄ F. schrieb:
> Du willst ja nicht dein Oszilloskop reparieren.

Stimmt, das möchte ich natürlich nicht. Die erste Frage sollte eher eine 
Einschätzung erbitten, ob die Messergebnisse plausibel scheinen.

von Stefan F. (Gast)


Lesenswert?

Mit so simplen R/C Filtern bekommst du die PWM nie und nimmer in 
"saubere" Sinus Signale umgewandelt. Grössere Kondensatoren werden das 
Ergebnis natürlich mehr glätten, aber auch mehr zeitlich verschieben und 
die Amplitude reduzieren.

Insgesamt sehen die Bilder für mich plausibel aus.

von Daniel H. (danyag)


Angehängte Dateien:

Lesenswert?

Stefan ⛄ F. schrieb:
> Mit so simplen R/C Filtern bekommst du die PWM nie und nimmer in
> "saubere" Sinus Signale umgewandelt.

Wäre zwar schön, aber hatte ich auch nicht erwartet. Hauptsache es 
funktioniert hinreichend.

Bei weiteren Tests ist mir aber gerade aufgefallen, dass irgendwas nicht 
zu stimmen scheint. Anbei ein Bild bei voller Leistung/ Drehzahl/ PWM. 
Die Störungen der PWM sind logischerweise weg, aber ich hätte erwartet 
ähnliche Spannungsverläufe der 3 Phasen zu sehen - dem ist 
offensichtlich nicht so.

Zufällig eine Idee worauf das hindeuten könnte?
Ich stehe sprichwörtlich auf dem Schlauch!

von Carl D. (jcw2)


Lesenswert?

Die LED würde ich mir sparen. Die brennt eh nie.

von Daniel H. (danyag)


Lesenswert?

Carl D. schrieb:
> Die LED würde ich mir sparen. Die brennt eh nie.

Vielen Dank für den hilfreichen und konstruktiven Beitrag. Ich bin auch 
froh, dass die LED nicht brennt. Das Leuchten - zum gewünschten 
Zeitpunkt - gefällt mir besser.

von Carl D. (jcw2)


Lesenswert?

Daniel H. schrieb:
> Carl D. schrieb:
>> Die LED würde ich mir sparen. Die brennt eh nie.
>
> Vielen Dank für den hilfreichen und konstruktiven Beitrag. Ich bin auch
> froh, dass die LED nicht brennt. Das Leuchten - zum gewünschten
> Zeitpunkt - gefällt mir besser.

Das war ein dezenter Hinweis auf die gewählte Anschlußweise. So wie im 
Schaltplan angeschlossen, müßte der AVR eine negative Spannung liefern. 
Vielleicht kannst du mit der Information mehr anfangen.

von Stefan F. (Gast)


Lesenswert?

Vielleicht haben die drei Spulen des Motor nicht identische 
Eigenschaften. Wenn du die drei Anschlüsse vertauschst, sieht man das 
dann auch am Oszilloskp?

Du könntest zu Gegenprobe auch mal einfach Widerstände oder Glühlampen 
als Last benutzen.

von Daniel H. (danyag)


Lesenswert?

Carl D. schrieb:
> Das war ein dezenter Hinweis auf die gewählte Anschlußweise. So wie im
> Schaltplan angeschlossen, müßte der AVR eine negative Spannung liefern.
> Vielleicht kannst du mit der Information mehr anfangen.

Danke für den Hinweis. Jetzt weiß ich worum es geht. Den Schaltplan habe 
ich heute morgen etwas "aufgeräumt". Keine Ahnung ob der Fehler im 
Layout auch vorher bestand. Auf der Platine habe ich die LED natürlich 
korrekt eingelötet.
Ich korrigiere den Schaltplan entsprechend.

von Daniel H. (danyag)


Angehängte Dateien:

Lesenswert?

Stefan ⛄ F. schrieb:
> Vielleicht haben die drei Spulen des Motor nicht identische
> Eigenschaften. Wenn du die drei Anschlüsse vertauschst, sieht man das
> dann auch am Oszilloskp?

Das Ergebnis mit vertauschten Phasen ist identisch.

Stefan ⛄ F. schrieb:
> Du könntest zu Gegenprobe auch mal einfach Widerstände oder Glühlampen
> als Last benutzen.

Ich schaue mal ob ich was geeignetes finde und werde berichten.

Ich vermute Ursache meiner Probleme sind Fehler in der Programmierung.

Anbei auch der korrigierte Schaltplan.

von Stefan F. (Gast)


Lesenswert?

Daniel H. schrieb:
> Das Ergebnis mit vertauschten Phasen ist identisch.

Verstehe ich dich richt, dass du drei Phasen mit identischer Schaltung 
hast, aber unterschiedlichen Signal? Und es ist ganz sicher, dass die 
Last nicht daran Schuld ist?

Dann kann doch nur sein, dass

a) Der Mikrocontroller unterschiedliche PWM Signale erzeugt
b) Die Schaltung nicht dem Plan entspricht
c) Die Verteilung der Stromversorgung mangelhaft ist

Zumindest a und c kannst du leicht mit dem Oszilloskop überprüfen.

von Daniel H. (danyag)


Angehängte Dateien:

Lesenswert?

Stefan ⛄ F. schrieb:
> Verstehe ich dich richt, dass du drei Phasen mit identischer Schaltung
> hast, aber unterschiedlichen Signal? Und es ist ganz sicher, dass die
> Last nicht daran Schuld ist?

Danach schaut es aus. Zumindest ändert sich nichts an meiner Messung.

Ich habe jetzt drei 90 Ohm Widerstände zur Lastsimulation genutzt. Es 
erfolgt natürlich nur noch eine Zwangskommutierung mit etwa 200 Hz. Die 
Aufnahmen entsprechen PWM-Werten von 32, 128 und 255.
Bei PWM255, also "Dauer-Ein" schauen die 3 Phasen bis auf den gewollten 
Versatz ziemlich identisch aus.
Bei geringen Tastverhältnissen der PWM Signale zeigen sich Unterschiede.

Kanal 4 zeigt die Zeitpunkte der Zwangskommutierung.

Stefan ⛄ F. schrieb:
> a) Der Mikrocontroller unterschiedliche PWM Signale erzeugt

Die eigentlichen Signale schauen identisch aus. Liegt es vllt. an der 
Art wie ich die Register bzgl. des Compare Output Modes ändere?

Stefan ⛄ F. schrieb:
> b) Die Schaltung nicht dem Plan entspricht

Ist natürlich möglich, aber ich kann leider nichts finden.

Stefan ⛄ F. schrieb:
> c) Die Verteilung der Stromversorgung mangelhaft ist

Danach sieht es nicht aus.

von S. Landolt (Gast)


Lesenswert?

Ohne mir das Ganze näher angeschaut zu haben, nur eine Idee: es ist 
bekannt, dass "The OCR1x Registers are double buffered when using any of 
the Pulse Width Modulation (PWM) modes. ... The double buffering 
synchronizes the update of the OCR1x Compare Registers to either top or 
bottom of the counting sequence"?

von Stefan F. (Gast)


Lesenswert?

> Die Aufnahmen entsprechen PWM-Werten von 32, 128 und 255.

Gemessen an C9, C10 und C11, richtg?

Entferne mal R12, R13 und R14, damit sich die Tiefpässe der drei Phasen 
nicht gegenseitig beeinflussen.

Wie dem auch sei, bei deinen jüngsten Bildern sehen alle drei Kanäle 
gleich aus. Also kommt die ungleichmäßige Verzerrung also vom Motor. Da 
könnte man sich vielleicht noch fragen, warum der Motor das 
Ausgangssignal der Endstufen überhaupt signifikant beeinflussen kann. 
Wenn die beiden Transistoren sauber im Wechsel voll durchschalten, kann 
da gar keine Verzerrung auftreten, denn das Signal ist digital.

Aber wenn die Transistoren nicht sauber schalten, kann der Motor die 
Spannungspegel beinflussen. messe das nach, aber nicht an den Ausgängen 
deiner Tiefpässe, sondern an den Ausgängen deiner Endstufen. Ich will 
das digitale PWM Signal sehen.

Um die Sache besser analysieren zu können, solltest du

a) alle drei Timer einfach mal auf einen festen PWM Wert setzen, anstatt 
zeitlich versetzte Sinus Signale zu erzeugen. Sieht das Ergebnis mit 
KLastwiderständen dann wie erwartet aus? Kannst du PWM Signale dann 
sehen, sind sie gleichmäßig (ohne Aussetzer)?

b) drei Zeitlich versetzte Sinus Kurven erzeugen, ohne das Feedback 
Signal zu verwenden. Sieht das Ergebnis mit KLastwiderständen dann wie 
erwartet aus? Kannst du PWM Signale dann sehen, sind sie gleichmäßig 
(ohne Aussetzer)?

Wenn das beides nicht klappt, dann kann die Steuerung insgesamt mit 
Feedback Signalen auch nicht gehen.

von Stefan F. (Gast)


Lesenswert?

>> Die Verteilung der Stromversorgung mangelhaft ist
> Danach sieht es nicht aus.

Dazu würde ich gerne mal Oszilloskop-Bilder sehen. Schließe GND vom 
Oszilloskop an die GND Klemme des Boardes an, wo das netzteil 
angeschlossen ist. Dann interessiert mich das Bild von allen Source und 
Drain Anschlüssen aller 6 Transistoren. Also insgesamt 9 Messungen.

Und wie gesagt: Vergiss erst einmal die Sinus kurven. Ich will die PWM 
Signale sehen, insbesondere das Timing, die Flanken und die 
Spannungspegel von Low und High.

Saubere digitale Ausgangssignale sind Voraussetzung, dass der ganze 
Aufbau funktionieren kann.

von Stefan F. (Gast)


Lesenswert?

Noch eine Sache,

vielleicht bin ich blöd, aber ich sehe in deinem Programm gar keinen 
Sinus-Generator. Kann es sein, dass dieses Signal ausschließlich durch 
die analogen Teile der Schaltung (also dem Feedback) erzeugt werden?

Ich glaube nicht, dass das in der Praxis funktionieren kann. Eigentlich 
sollte das Programm drei zeitlich versetzte Wechselspannungen erzeugen, 
deren Phasenlage an das Feedback vom Motor angepasst wird und deren 
Frequenz vom Anwendungsfall vorgegeben wird.

Das Feedback Signal wird immer verzerrt sein, weil der Motor nicht 100% 
symmetrisch gebaut ist und auch nicht 100% gleichmäßig belastet wird. 
Denke da nur mal ein ein Modellauto, dass über ein Steinchen fährt. Da 
entsteht ein Ruckler, der das Signal verändern wird, dass der µC 
erzeugt. Da kann ja wohl nicht Sinn der Sache sein.

Mir scheint das Konzept dieses Programm fragwürdig. Aber vielleicht irre 
ich mich da. Lass uns erst einmal sicher stellen, dass die 
Ausgangs-Treiber funktionieren.

von Christian B. (Firma: privat) (cebra)


Lesenswert?

Schau mal auf die u.g. Seiten, da kannst Du Dir Anregungen für Dein 
Projekt holen, Hardware und Software.


http://wiki.mikrokopter.de/BL-Ctrl_V1.2

http://svn.mikrokopter.de/websvn/listing.php?repname=BL-Ctrl&path=%2Ftags%2FV0.42%2F&#a4bfcc0886576e3118d94460220fa558a

Christian

von Daniel H. (danyag)


Angehängte Dateien:

Lesenswert?

Vielen Dank für die ausführlichen Antworten und Tipps. Wie es aussieht 
war das größte Problem doch irgendwie die Spannungsversorgung - mehr die 
Masseführung. Irgendwie habe ich die etwas vernachlässigt und eine 
kleine Insel geschaffen.
Anbei Bilder des Layouts (nicht exakt wie im Schaltplan, aber die 
Platine in Nutzung schaut exakt so aus) und in "bot_Masseflaeche" habe 
ich markiert wo ich Brücken eingelötet habe. Nach dieser Veränderung ist 
die Stromaufnahme gesunken, die Drehzahl hat sich um 75 % erhöht und die 
Spannungsverläufe sehen deutlich besser - vor allem ähnlicher - aus.

Stefan ⛄ F. schrieb:
>> Die Aufnahmen entsprechen PWM-Werten von 32, 128 und 255.
>
> Gemessen an C9, C10 und C11, richtg?

Genau.

Stefan ⛄ F. schrieb:
> Aber wenn die Transistoren nicht sauber schalten, kann der Motor die
> Spannungspegel beinflussen. messe das nach, aber nicht an den Ausgängen
> deiner Tiefpässe, sondern an den Ausgängen deiner Endstufen. Ich will
> das digitale PWM Signal sehen.

Kann ich bei Interesse gerne noch machen.

Stefan ⛄ F. schrieb:
> Dazu würde ich gerne mal Oszilloskop-Bilder sehen. Schließe GND vom
> Oszilloskop an die GND Klemme des Boardes an, wo das netzteil
> angeschlossen ist. Dann interessiert mich das Bild von allen Source und
> Drain Anschlüssen aller 6 Transistoren. Also insgesamt 9 Messungen.

Die Aufnahmen mache ich gleich.

Stefan ⛄ F. schrieb:
> aber ich sehe in deinem Programm gar keinen
> Sinus-Generator. Kann es sein, dass dieses Signal ausschließlich durch
> die analogen Teile der Schaltung (also dem Feedback) erzeugt werden?

Ich bin nicht ganz sicher ob es das perfekt beschreibt, aber so 
funktioniert das wohl.

Christian B. schrieb:
> Schau mal auf die u.g. Seiten, da kannst Du Dir Anregungen für Dein
> Projekt holen, Hardware und Software.

Das schaue ich mir mal an. Danke. Vielleicht ist da ja etwas erheblich 
cleverer gelöst als bei mir - wahrscheinlich sogar ;).

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.