Forum: Analoge Elektronik und Schaltungstechnik Wie Drain durchkontaktieren für MOSFET Halbbrücke


von Sheldon C. (sheldon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo

ich bin gerade dabei einen BL-Motor-Regler zu planen. (ja, noch einer 
:-)
Dazu verwende ich 3 Halbbrücken aus jeweils einem N- und P-Kanal-MOSFET 
(wie wohl auf den meisten Schaltungen).

Die eigentliche Frage ist jetzt die Anordnung und das Routing auf der 
Platine. Ich würde gerne diese zusammengehörigen MOSFET-Pärchen auf 
Unter- und Oberseite verteilen (siehe Screenshot).
Die Drains gehören dazu verbunden.
Da ich MOSFETs im D2PACK Gehäuse verwenden möchte die großflächig mit 
Drain auf die Platine gelötet werden (zwecks bessere Wärmeabgabe und 
natürlich mit kleinen Widerstand) frage ich mich wie und wo ich diese am 
besten durchkontaktiere.
Setzte ich nur ein Via? (das wäre ein bißchen wenig für hohe Ströme bis 
9A denk ich).
Soll ich einfach mehrere Vias in dem Drain Bereich setzen?
Oder doch besser dort wo die Anschluss-Pads für die Motorphasen sind?

Was gibt es da für Pro/Contras eurer Meinung nach?

: Verschoben durch Admin
von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Direkt alles mit Vias durchlöchern, und die Kupferflächen so groß wie 
möglich (Wärmeabgabe). Ich denke ja eh nicht, dass du das im Lötofen 
löten wirst (vor allem wegen beidseitiger Bestückung). Wenn doch mehr 
Lötpaste vorsehen da die Vias die ganz gerne fressen ;)

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Hauke Radtki schrieb:
> Direkt alles mit Vias durchlöchern, und die Kupferflächen so groß wie
> möglich (Wärmeabgabe). Ich denke ja eh nicht, dass du das im Lötofen
> löten wirst (vor allem wegen beidseitiger Bestückung). Wenn doch mehr
> Lötpaste vorsehen da die Vias die ganz gerne fressen ;)

Also am besten viele kleine Vias, oder? Dann verschwendet man nicht so 
viel Fläche und hat viele Kontakte.
Vias unterhalb der MOSFET sind also kein Problem bei der Hestellung höre 
ich da raus. Ich war mir da nicht so sicher, ob das irgenwelche neg. 
Konsequenzen hat.

Das mit dem Lötofen hab ich mir auch schon überlegt (Beta Reflowkit). 
Habe aber keinen und scheue die Investition, da ich das zu selten 
brauche. Ich denke ich versuchs erst mal mit dem Lötkolben und notfalls 
lasse ich das bestücken. Mal schauen was das kostet...

von Joe (Gast)


Lesenswert?

Vias mit z.B 1,3mm Innendurchmesser einbauen und anschließend ein Stück 
Cu-Draht einlöten.

Joe

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Joe schrieb:
> Vias mit z.B 1,3mm Innendurchmesser einbauen und anschließend ein Stück
> Cu-Draht einlöten.
>
> Joe
Super Idee, danke.

von Gelöscht (kami89)


Lesenswert?

Hallo,

Ich hatte auch schon mal das genau gleiche "Problem" (auch bei einem 
BL-Regler). Nach 10 verworfenen Layouten hatte ich endlich ein Ergebnis, 
das mir gefiel. Da habe ich aber alle Mosfets auf der Unterseite der 
Platine platziert, damit es keine Durchkontaktierungen gab, die hohe 
Ströme aushalten müssen.

So hab ich quasi "Starkstrom" (FETs und Shunt) auf der Unterseite, und 
der ganze Rest (uC, FET-Treiber usw.) auf der Oberseite.

Natürlich ist es auch mit Durchkontaktierungen möglich (sieht man auch 
bei gekauften Reglern), Da ich aber Angst hatte die DuKos abzufackeln, 
hab ich sie einfach vermieden ;-)

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Urban B. schrieb:
> Hallo,
>
> Ich hatte auch schon mal das genau gleiche "Problem" (auch bei einem
> BL-Regler). Nach 10 verworfenen Layouten hatte ich endlich ein Ergebnis,
> das mir gefiel. Da habe ich aber alle Mosfets auf der Unterseite der
> Platine platziert, damit es keine Durchkontaktierungen gab, die hohe
> Ströme aushalten müssen.
>
> So hab ich quasi "Starkstrom" (FETs und Shunt) auf der Unterseite, und
> der ganze Rest (uC, FET-Treiber usw.) auf der Oberseite.
>
> Natürlich ist es auch mit Durchkontaktierungen möglich (sieht man auch
> bei gekauften Reglern), Da ich aber Angst hatte die DuKos abzufackeln,
> hab ich sie einfach vermieden ;-)

Danke für den Beitrag. Das macht Sinn. Für wieviel Ampere hast du den 
Regler ausgelegt?

Ich werde dennoch erstmal versuchen die FETs auf beide Seiten zu 
verteilenn wie bei den gekauften, weils einfach kompakter wird. Wenn's 
nicht klappt bleibt wohl nur deine Strategie.

Mich würde auch mal interessieren wir man die Stromfestigkeit berechnen 
kann. Ich habe bisher keine Tabellen oder so gefunden. Nur Hinweise das 
auf Grund von Fertigkeitstoleranzen das sehr unterschiedlich sein kann. 
Das Material wird ja galvanisch aufgebracht.

Übrigens würde ich mich gerne mal mit dir bezüglich BEMF austauschen, 
wenn du da schon Erfahrung hast. Bei meiner ersten Test-Platine (auf 
Streifenraster) sieht das Signal nicht wirklich so aus wie erwartet.
Meine Phasen-Spg sieht zwar ohne Last gut aus, aber mit Motor wird die 
Phase nicht mehr sauber zwischen GND und VCC hin und her gezogen, 
sondern tümpelt minimal irgendwo in der Mitte rum.
Dass ich nicht auf VCC komme ok, liegt vermutlich an der 
Strom-begrenzung von meinem Labornetzteil. Ich limitiere das momentan 
auf 1A.
Aber dass der Lowside-FET die Phase nicht auf GND zieht irritiert mich 
doch.
Das kann ja eigentlich nur bedeuten dass der RDSon viel zu hoch ist, 
also nicht richtig durchschaltet. Deswegen überlege ich gerade ob ich 
dafür einen Gate-Treiber brauche und das nicht direkt an den µC hänge.
Die Aussagen zu der Notwendigkeit eines Gate-Treibers im Forum variieren 
sehr stark. Die einen sagen, brauchst du nicht, die anderen schon...
(Bei dem BLCTRL von Mikrocopter war in V1.0 auch kein Gate-Treiber 
vorhanden, in folgenden Versionen dann schon. Also ganz sinnlos wird's 
wohl nicht sein).
Was meinst du?

Auf jeden Fall kann ich das Drehfeld deswegen momentan nur hart 
vorgeben,
aber der Motor dreht sich (juhu, erstes Erfolgserlebnis).
Wäre spitze wenn du mal Oszi-Bilder von den Phasenspannungen und/oder 
BEMF zum virtuellen Nullpunkt posten könntest, falls du sowas hast.
Im Netz findet man leider hauptsächlich idealisierte Verläufe aber keine 
echten Messungen.

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Sheldon Cooper schrieb:
> Für wieviel Ampere hast du den Regler ausgelegt?

Ich habe nicht direkt den Regler für einen bestimmten Strom ausgelegt, 
ich habe einfach mal geschaut welche Leiterbahnbreite ich noch ganz gut 
hinkriege beim Layouten. Bin dann auf 2.54mm gekommen, was laut 
Leiterbahnbreite etwa 7A aushalten dürfte (bei 35um). Das genügt mir 
erstmal, später kann man ja auch noch auf 70um wechsln.

> Mich würde auch mal interessieren wir man die Stromfestigkeit berechnen
> kann.
Siehe z.B. Leiterbahnbreite

> Übrigens würde ich mich gerne mal mit dir bezüglich BEMF austauschen,
Also ich nehme mal an, du hast auch die Schaltung vom Mikrokopter 
übernommen, mit den 4,7k Widerständen und 100nF Kondis? So hab ichs 
zumindest gemacht, um schonmal von Anfang an brauchbare Ergebnisse zu 
bekommen. Um selber daran noch rumzuhantieren, hatte ich bis jetzt keine 
Zeit und Lust...

> Deswegen überlege ich gerade ob ich dafür einen Gate-Treiber brauche und
> das nicht direkt an den µC hänge.
Habe ich mir auch überlegt. Die Gate-Treiber haben aber 3 grosse 
Vorteile:
1. die Ausgänge vom uC werden entlastet, bzw. nicht mehr ÜBERlastet :-)
2. "Einfachere" Mosfet-Wahl (kein Logic Level, nur N-Kanal, 
niederohmiger)
3. Bei geeigneten Treiber wird die Software einfacher, sicherer

Ich habe die IR2104S genommen, der hat eine integrierte deadtime --> 
Egal was für Müll die Software im uC produziert, einen Kurzschluss 
kriegst du damit nicht hin. Ausserdem kriegt man ohne Software-Aufwand 
einen aktiven Leerlauf hin, was die Verlustleistung minimiert.

Meine Empfehlung: Nimm FET-Treiber!

> Wäre spitze wenn du mal Oszi-Bilder von den Phasenspannungen und/oder
> BEMF zum virtuellen Nullpunkt posten könntest, falls du sowas hast.
Siehe Anhang.
Gelb: Eine Phase
Blau: Sternpunkt
Rot: BEMF, sollte glaube ich von der gleichen Phase wie oben sein
Grün: nur zum schauen, wann der Komparator triggert (immer die steigende 
Flanke)

Aber Achtung, solange du noch im starren Drehfeld bist, sieht die BEMF 
scheusslich aus! Du musst es zuerst irgendwie hinkriegen, dass die 
Umschaltung auf die elektronische Kommutierung funktioniert. Dazu habe 
ich auch eine Weile gebraucht, ist nicht ganz einfach... :-)

NACHTRAG:
fast vergessen: Die FET-Treiber haben aber auch einen Nachteil: Sie 
benötigen eine Mindestspannung. Beim IR2104 muss man schon mit 4S Lipo 
einspeisen, sonst wird das nichts. Bei einem gekauften Regler habe ich 
sogar gesehen, dass der einen Step-Up Wandler drauf hat, nur damit die 
Treiber auch bei weniger als 4S laufen. Ich wollte aber eh 4S nehmen, 
also ist mir das mit der Eingangsspannung egal...

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Urban B. schrieb:
> Sheldon Cooper schrieb:
>
> Ich habe nicht direkt den Regler für einen bestimmten Strom ausgelegt,
> ich habe einfach mal geschaut welche Leiterbahnbreite ich noch ganz gut
> hinkriege beim Layouten. Bin dann auf 2.54mm gekommen, was laut
> Leiterbahnbreite etwa 7A aushalten dürfte (bei 35um). Das genügt mir
> erstmal, später kann man ja auch noch auf 70um wechsln.
>
> Siehe z.B. Leiterbahnbreite
Bei der Leiterbahn ist mir das klar. Dafür gibts Tabellen.
Nur bei Durchkontaktierungen habe ich dafür noch nix gefunden.

>
> Also ich nehme mal an, du hast auch die Schaltung vom Mikrokopter
> übernommen, mit den 4,7k Widerständen und 100nF Kondis? So hab ichs
> zumindest gemacht, um schonmal von Anfang an brauchbare Ergebnisse zu
> bekommen. Um selber daran noch rumzuhantieren, hatte ich bis jetzt keine
> Zeit und Lust...
Ich habe mir die Schaltung genau angeschaut, aber nicht komplett 
übernommen. Ich orientiere mich stark an AVR Appnote 444, den Infos von 
http://rmmx.gmxhome.de/bldchv und auch an Mikrocopter.
Ich will schon mein eigenes Ding machen, wobei vieles zwangsläufig 
ähnlich ausschauen wird, also zumindest die Endstufe und der virtuelle 
Sternpunkt für die BEMF.
>
> Habe ich mir auch überlegt. Die Gate-Treiber haben aber 3 grosse
> Vorteile:
> 1. die Ausgänge vom uC werden entlastet, bzw. nicht mehr ÜBERlastet :-)
> 2. "Einfachere" Mosfet-Wahl (kein Logic Level, nur N-Kanal,
> niederohmiger)
> 3. Bei geeigneten Treiber wird die Software einfacher, sicherer
>
> Ich habe die IR2104S genommen, der hat eine integrierte deadtime -->
> Egal was für Müll die Software im uC produziert, einen Kurzschluss
> kriegst du damit nicht hin. Ausserdem kriegt man ohne Software-Aufwand
> einen aktiven Leerlauf hin, was die Verlustleistung minimiert.
>
> Meine Empfehlung: Nimm FET-Treiber!
Die kommerziellen Produkte machen das wohl so. Alles N-Kanal FETs mit so 
einem Treiber-Baustein.
Ich will meinen Treiber aber lieber diskret aufbauen. Mir gehts ja vor 
allem um den Lerneffekt und nicht nur darum schnell was ans Laufen zu 
bekommen.
Ich werde da mal ein paar Sachen ausprobieren. Gegentakt-Treiber und die 
Variante von Mikrocopter V2.0. Sieht auf den ersten Blick wie ein 
Darlington-Schaltung aus, ist es aber nicht. K.A. was das genau ist, 
habe ich noch nicht ganz verstanden.
>
>> Wäre spitze wenn du mal Oszi-Bilder von den Phasenspannungen und/oder
>> BEMF zum virtuellen Nullpunkt posten könntest, falls du sowas hast.
> Siehe Anhang.
> Gelb: Eine Phase
> Blau: Sternpunkt
> Rot: BEMF, sollte glaube ich von der gleichen Phase wie oben sein
> Grün: nur zum schauen, wann der Komparator triggert (immer die steigende
> Flanke)
>
> Aber Achtung, solange du noch im starren Drehfeld bist, sieht die BEMF
> scheusslich aus! Du musst es zuerst irgendwie hinkriegen, dass die
> Umschaltung auf die elektronische Kommutierung funktioniert. Dazu habe
> ich auch eine Weile gebraucht, ist nicht ganz einfach... :-)
Interessant. Dein Oszi Bild schaut auf jeden Fall super aus. Genauso wie 
es die Theorie lehrt. Ich hoffe das bekomme ich auch noch so hin.
>
> NACHTRAG:
> fast vergessen: Die FET-Treiber haben aber auch einen Nachteil: Sie
> benötigen eine Mindestspannung. Beim IR2104 muss man schon mit 4S Lipo
> einspeisen, sonst wird das nichts. Bei einem gekauften Regler habe ich
> sogar gesehen, dass der einen Step-Up Wandler drauf hat, nur damit die
> Treiber auch bei weniger als 4S laufen. Ich wollte aber eh 4S nehmen,
> also ist mir das mit der Eingangsspannung egal...
Ich habe einen Motor mit 6-12V/9A, deswegen arbeite ich mit 
3-Zellen-Lipo.
Naja, momentan noch mit Labor-Netzteil ;-) Lipo muss ich mir noch 
besorgen.

von Zorg (Gast)


Lesenswert?

> Nur bei Durchkontaktierungen habe ich dafür noch nix gefunden.

Die sind je nach Herstellungsprozess auch immer etwas anders - die 
Kupferdicke variiert da je nachdem wieviel da eben in der Galvanik 
draufkommt.

Ansonsten isses einfach eine "aufgerollte" Leiterbahn - also Kreisumfang 
berechnen dann haste die Breite.
Cu Dicke - da musste den Hersteller fragen.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

http://www.fs-leiterplatten.de/technik/layout-tipps/elektrische-bemessungsrichtlinien/

Da gibts ne Tabelle, die muss natürlich jetzt nicht für jeden fertiger 
gelten, aber als Richtlinie ist sie denk ich nicht schlecht ;) Da sieht 
man auch: Vias halten mehr aus als man denkt!!!

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Sheldon Cooper schrieb:
> Ich habe mir die Schaltung genau angeschaut, aber nicht komplett
> übernommen. Ich orientiere mich stark an AVR Appnote 444, den Infos von
> http://rmmx.gmxhome.de/bldchv und auch an Mikrocopter.

Ja genau diese Sachen habe ich mir auch schon angeschaut. Die 
BEMF-Schaltung von http://rmmx.gmxhome.de/bldc ist aber irgendwie 
ziemlich kompliziert ;-)

Aber was mich verwundert, in der Appnote 444 scheint die 
Nulldurchgangserkennung per ADC gemacht worden zu sein? Machst du das 
auch so? Dafür ist doch der Komparator besser geeignet...


So ganz 100% verstehe ich das Prinzip aber immernoch nicht... Bei den 
käuflichen Reglern kann man doch einige Parameter auf den verwendeten 
Motor anpassen. Der wichtigste Parameter ist da glaube ich irgend ein 
Winkel, der den Kommutierungszeitpunkt vorgeben soll?!
Nun, meine Software läuft so, dass wenn der Komparator den Interrupt vom 
Nulldurchgang auslöst, die Kommutierung SOFORT ausgelöst wird. Wenn ich 
dazwischen noch ein Delay einbaue, beginnt der Motor eher unruhiger zu 
laufen.
Oder müsste ich vielleicht schon kommutieren BEVOR der Interrupt kommt? 
Also quasi vom letzten Interrupt eine bestimmte Zeit warten?

Jedenfalls ist die Maximale Drehzahl vom Motor genau gleich hoch, wie 
beim gekauften Regler, so schlecht kanns also nicht sein :-D

Im Anhang noch ein Bild der drei Phasen bei Vollgas. Beim Gekauften 
Regler sieht es genau gleich aus, nur die Spitzen beim Ausschalten der 
FETs treten weniger auf...

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Urban B. schrieb:
> Sheldon Cooper schrieb:
>> Ich habe mir die Schaltung genau angeschaut, aber nicht komplett
>> übernommen. Ich orientiere mich stark an AVR Appnote 444, den Infos von
>> http://rmmx.gmxhome.de/bldchv und auch an Mikrocopter.
>
> Ja genau diese Sachen habe ich mir auch schon angeschaut. Die
> BEMF-Schaltung von http://rmmx.gmxhome.de/bldc ist aber irgendwie
> ziemlich kompliziert ;-)
>
> Aber was mich verwundert, in der Appnote 444 scheint die
> Nulldurchgangserkennung per ADC gemacht worden zu sein? Machst du das
> auch so? Dafür ist doch der Komparator besser geeignet...
Das wird per ADC gemacht, weil der von der PWM Steuerung getriggert 
wird.
Dadurch kann man genau in der Mitte des hohen Pegels messen und man hat 
weniger Störung durch die PWM Modulation.
Mit dem Comparator sollte das aber auch gut machbar sein.
Ich werde da wohl auch mal experimentieren.
>
>
> So ganz 100% verstehe ich das Prinzip aber immernoch nicht... Bei den
> käuflichen Reglern kann man doch einige Parameter auf den verwendeten
> Motor anpassen. Der wichtigste Parameter ist da glaube ich irgend ein
> Winkel, der den Kommutierungszeitpunkt vorgeben soll?!
> Nun, meine Software läuft so, dass wenn der Komparator den Interrupt vom
> Nulldurchgang auslöst, die Kommutierung SOFORT ausgelöst wird. Wenn ich
> dazwischen noch ein Delay einbaue, beginnt der Motor eher unruhiger zu
> laufen.
> Oder müsste ich vielleicht schon kommutieren BEVOR der Interrupt kommt?
> Also quasi vom letzten Interrupt eine bestimmte Zeit warten?
Das max. Drehmoment gibt es bei einer Phasendifferenz von 90° zwischen 
dem Statorfeld und dem Rotorfeld. Da wir bei drei Phasen in Sprüngen von 
60° kommutieren, liegt der optimale Startpunkt 30° vor diesen 90°.
Durch Filter wie dem Tiefpass in der Appnote444 ergibt sich aber eine 
leichte Phasenverschiebung, weswegen das nochmals angepasst werden 
sollte.
Ein Konfigurationsparameter schadet also nicht.

>
> Jedenfalls ist die Maximale Drehzahl vom Motor genau gleich hoch, wie
> beim gekauften Regler, so schlecht kanns also nicht sein :-D
>
> Im Anhang noch ein Bild der drei Phasen bei Vollgas. Beim Gekauften
> Regler sieht es genau gleich aus, nur die Spitzen beim Ausschalten der
> FETs treten weniger auf...
Sieht gut aus. Hohe Spitzen können auftreten wenn der FET zu schnell 
abgeschaltet wird. Man wills zwar schnell haben, aber de hohen 
Frequenzen sind eben der Nachteil. Mit einem kleinen Widerstand am Gate 
lässt sich das regeln.
Siehe 
http://de.wikipedia.org/wiki/Gate-Treiber#Gegentakt-Treiberschaltung

So viel zur Theorie. Ich hoffe das hilft dir weiter.
Ich muss mich jetzt mal an die Praxis machen ;-)

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Hauke Radtki schrieb:
> 
http://www.fs-leiterplatten.de/technik/layout-tipps/elektrische-bemessungsrichtlinien/
>
> Da gibts ne Tabelle, die muss natürlich jetzt nicht für jeden fertiger
> gelten, aber als Richtlinie ist sie denk ich nicht schlecht ;) Da sieht
> man auch: Vias halten mehr aus als man denkt!!!

danke für den Link.

von Gelöscht (kami89)


Lesenswert?

Sheldon Cooper schrieb:
> Das wird per ADC gemacht, weil der von der PWM Steuerung getriggert
> wird.
> Dadurch kann man genau in der Mitte des hohen Pegels messen und man hat
> weniger Störung durch die PWM Modulation.
> Mit dem Comparator sollte das aber auch gut machbar sein.
> Ich werde da wohl auch mal experimentieren.
Ah okay, wäre vielleicht auch mal einen Versuch wert.
Andererseits könnte man mit einem auf die PWM-Frequenz angepassten 
Filter in der BEMF-Schaltung die BEMF-Spannungen vermutlich schön 
glätten, dass auch der Komparator nicht mehr durch die PWM beeinflusst 
wird.

> Das max. Drehmoment gibt es bei einer Phasendifferenz von 90° zwischen
> dem Statorfeld und dem Rotorfeld. Da wir bei drei Phasen in Sprüngen von
> 60° kommutieren, liegt der optimale Startpunkt 30° vor diesen 90°.
> Durch Filter wie dem Tiefpass in der Appnote444 ergibt sich aber eine
> leichte Phasenverschiebung, weswegen das nochmals angepasst werden
> sollte.
> Ein Konfigurationsparameter schadet also nicht.
OK dann ist das also wirklich um den Kommutierungszeitpunkt noch etwas 
anzupassen. Muss ich auch noch anschauen wie ich das am besten mache.

> Sieht gut aus. Hohe Spitzen können auftreten wenn der FET zu schnell
> abgeschaltet wird. Man wills zwar schnell haben, aber de hohen
> Frequenzen sind eben der Nachteil. Mit einem kleinen Widerstand am Gate
> lässt sich das regeln.
Der Gate-Widerstand ist jetzt schon sehr klein, ich glaube ich habe da 
15R drin. Aber solange die Spitzen nicht über die Versorgungsspannung 
hinausgehen sehe ich das nicht so als Problem...

Das grössere Problem, das ich im Moment noch habe, ist die rückwirkende 
Spannung beim sehr schnellen Abbremsen. Ich konnte sogar in der 
5V-Versorgung Spitzen bis zu 7V messen während dem extrem schnellen 
Abbremsen (von 100% auf "Standgas" in vielleich 0,1s oder so). Nach ein 
paar Messungen hat sich dann auch das erste Bauteil mit Rauch 
verabschiedet ;-(

Ich sehe aber gerade in der BEMF-Schaltung auch ein Problem. Momentan 
habe ich Spannungsteiler von 1:1 drin, was bei 15V Speisung ganze 7.5V 
auf den AVR geben dürfte. Die armen Clamping Dioden xD

Naja, langweilig wirds bei der Entwicklung eines solchen Reglers 
bestimmt nicht... :-D
Leider habe ich aber momentan nicht so die Zeit dafür (Studium)...

von Gelöscht (kami89)


Lesenswert?

Ich nochmal...

Hab grad den gekauften Regler mal etwas genauer angeschaut. Dabei ist 
mir aufgefallen, dass der vermeindliche Step-Up-Wandler in Wirklichkeit 
als Step-Down betrieben wird, um die 5V für den Empfänger zu liefern, 
der ja vom BL-Regler gespiesen wird. Find ich krass dass die dafür extre 
einen Step-Down-Wandler einbauen, obwohl es den gar nicht bräuchte für 
den Regler selber...

Die BEMF-Schaltung hingegen sieht stinkeinfach aus. Von den drei Phasen 
jeweils ein Spannungsteiler 47k / 9,1k nach GND. Die Mitte abgegriffen 
und direkt auf die uC Eingänge gelegt. Kein Kondensator, keine Z-Diode, 
nichts.

Für den Sternpunkt dann noch von diesen drei Mittenanzapfungen jeweils 
einen 47k Widerstand, zusammengehängt und auf den Komparator gelegt. 
Fertig.

Man findet allgemein keine Z-Dioden, sonstiger Überspannungsschutz oder 
sowas. Auch der Strom wird nicht gemessen, deshalb wohl eher auch keine 
Überstromabschaltung.

Würde mich mal interessieren ob es da keine Überspannungen bei 
ruckartigem Abbremsen gibt, aber der Regler ist kaputt, da gibts nicht 
mehr viel zu messen :-) OK im richtigen Betrieb kann man auch gar nicht 
so ruckartige Drehzahländerungen machen wenn da ein Propeller dran 
hängt, aber ohne Propeller sollte er ja auch überleben.

Keine Garantie auf Fehlerlosigkeit, es war nicht ganz einfach eine 
(vermutlich) 4-Lagige Platine zu analysieren... ;-)

EDIT: Und der Eingang, da wo das Signal vom Empfänger kommt, wird auf 3 
Widerstände gelegt, welche wiederum alle an einem separaten uC-Eingang 
hängen...Ich versteh die blöde Schaltung nicht :-|

von Simon K. (simon) Benutzerseite


Lesenswert?

Sheldon Cooper schrieb:
> Urban B. schrieb:
>> Sheldon Cooper schrieb:
>>> Wäre spitze wenn du mal Oszi-Bilder von den Phasenspannungen und/oder
>>> BEMF zum virtuellen Nullpunkt posten könntest, falls du sowas hast.
>> Siehe Anhang.
>> Gelb: Eine Phase
>> Blau: Sternpunkt
>> Rot: BEMF, sollte glaube ich von der gleichen Phase wie oben sein
>> Grün: nur zum schauen, wann der Komparator triggert (immer die steigende
>> Flanke)
>>
>> Aber Achtung, solange du noch im starren Drehfeld bist, sieht die BEMF
>> scheusslich aus! Du musst es zuerst irgendwie hinkriegen, dass die
>> Umschaltung auf die elektronische Kommutierung funktioniert. Dazu habe
>> ich auch eine Weile gebraucht, ist nicht ganz einfach... :-)
> Interessant. Dein Oszi Bild schaut auf jeden Fall super aus. Genauso wie
> es die Theorie lehrt. Ich hoffe das bekomme ich auch noch so hin.

Auch von mir noch mal: Achtung. Wenn du den Motor im starren Drehfeld 
betreibst, kann es sein, dass du keine gescheiten Oszillogramme 
bekommst. Das liegt ganz einfach daran, dass der BLDC Motor im "Stepper" 
Betrieb arbeitet. Das heißt, es kann passieren (es ist sehr 
wahrscheinlich), dass der Rotor nach der harten Kommutierung 
beschleunigt wird und am nächsten Pol wieder abgebremst wird, dann 
ausschwingt und nach einer Weile erst die nächste (harte) Kommutierung 
erfolgt. Das sieht wirklich ekelhaft aus und hat mich vor einiger Zeit 
auch viele graue Haare gekostet.
Siehe hier:
Beitrag "Frage zu Brushless Motor Ansteuerung"

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Urban B. schrieb:
> Ich nochmal...
>
> Die BEMF-Schaltung hingegen sieht stinkeinfach aus. Von den drei Phasen
> jeweils ein Spannungsteiler 47k / 9,1k nach GND. Die Mitte abgegriffen
> und direkt auf die uC Eingänge gelegt. Kein Kondensator, keine Z-Diode,
> nichts.
Komischer Wert. 9.1k Widerstand hab ich noch nie gesehen.
>
> Für den Sternpunkt dann noch von diesen drei Mittenanzapfungen jeweils
> einen 47k Widerstand, zusammengehängt und auf den Komparator gelegt.
> Fertig.
>
> Man findet allgemein keine Z-Dioden, sonstiger Überspannungsschutz oder
> sowas. Auch der Strom wird nicht gemessen, deshalb wohl eher auch keine
> Überstromabschaltung.
>
> Würde mich mal interessieren ob es da keine Überspannungen bei
> ruckartigem Abbremsen gibt, aber der Regler ist kaputt, da gibts nicht
> mehr viel zu messen :-) OK im richtigen Betrieb kann man auch gar nicht
> so ruckartige Drehzahländerungen machen wenn da ein Propeller dran
> hängt, aber ohne Propeller sollte er ja auch überleben.
Ein FET hat ja eine eingebaute "Freilaufdioden-Funktionalität", nur 
werden die dann halt ein "bißchen" warm ;-)
Deswegen finde ich die Strategie von http://rmmx.gmxhome.de/bldchv sehr 
gut, immer nur abwechselnd die obere oder untere Seite bei der PWM 
Modulation zu deaktivieren. So kann der Strom noch ungehindert über die 
zweiten Transistor laufen und man halbiert quasi die Freilaufverluste.
>
> Keine Garantie auf Fehlerlosigkeit, es war nicht ganz einfach eine
> (vermutlich) 4-Lagige Platine zu analysieren... ;-)
Oja, das kann ich mir vorstellen.
>
> EDIT: Und der Eingang, da wo das Signal vom Empfänger kommt, wird auf 3
> Widerstände gelegt, welche wiederum alle an einem separaten uC-Eingang
> hängen...Ich versteh die blöde Schaltung nicht :-|
Da meinst das PWM Signal von Empfänger?

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Simon K. schrieb:

> Auch von mir noch mal: Achtung. Wenn du den Motor im starren Drehfeld
> betreibst, kann es sein, dass du keine gescheiten Oszillogramme
> bekommst. Das liegt ganz einfach daran, dass der BLDC Motor im "Stepper"
> Betrieb arbeitet. Das heißt, es kann passieren (es ist sehr
> wahrscheinlich), dass der Rotor nach der harten Kommutierung
> beschleunigt wird und am nächsten Pol wieder abgebremst wird, dann
> ausschwingt und nach einer Weile erst die nächste (harte) Kommutierung
> erfolgt. Das sieht wirklich ekelhaft aus und hat mich vor einiger Zeit
> auch viele graue Haare gekostet.
> Siehe hier:
> Beitrag "Frage zu Brushless Motor Ansteuerung"

Danke für die Erklärung. Das dürfte aber nicht mein Problem sein. Mit 
dem starren Drehfeld komme ich immerhin schon über 1000rpm ohne Last.

Bei mir haperts noch an der Endstufe. Ich habe aber gestern angefangen 
eine neue zu bauen.
Diesmal nur die FETs auf Streifenraster, den Rest noch auf Steckbrett. 
Das macht die Sache einfacher zum Spielen. Hät ich auch gleich so machen 
können, anstatt alles auf ein Streifenraster zu quetschen...

von Gelöscht (kami89)


Lesenswert?

Sheldon Cooper schrieb:
> Komischer Wert. 9.1k Widerstand hab ich noch nie gesehen.
Ja ich weiss, aber auf dem SMD-Widerstand steht "912", das müsste ja 91 
+ 2 Nullen sein, also 9100 Ohm. Schaut man es verkehrt herum an, sind es 
"216", also 21MOhm was noch unwahrscheinlicher ist ;-)

> Ein FET hat ja eine eingebaute "Freilaufdioden-Funktionalität", nur
> werden die dann halt ein "bißchen" warm ;-)
Ja schon, aber so kann die induzierte Spannung ja die Betriebsspannung 
anheben (und quasi kurzzeitig den LiPo laden). Naja aber wie gesagt, mit 
Propeller kann das eh nicht wirklich vorkommen weil man keine so 
ruckartige Drehzahländerungen hinkriegt.

> Deswegen finde ich die Strategie von http://rmmx.gmxhome.de/bldchv sehr
> gut, immer nur abwechselnd die obere oder untere Seite bei der PWM
> Modulation zu deaktivieren. So kann der Strom noch ungehindert über die
> zweiten Transistor laufen und man halbiert quasi die Freilaufverluste.
Genau das habe ich dir ja bereits geschrieben, dass diese Funktion 
"automatisch" aktiviert ist, wenn man einen FET-Treiber mit nur einem 
Signaleingang nimmt. Low am Eingang -> unterer Mosfet schaltet durch, 
High am Eingang -> oberer Mosfet schaltet durch. Ganz deaktivieren kann 
man die FETs mit dem Enable-Eingang des Teribers.

So kriegt man diesen sogenannten aktiven Freilauf ganz einfach hin. Ohne 
komplizierte Software (man bräuchte 6 PWM-Ausgänge).

> Da meinst das PWM Signal von Empfänger?
Genau den meine ich. Habs mit dem Durchgangsprüfer durchgepiepst, der 
PWM Eingang geht auf 3 Widerstände (je 1k) und dann getrennt auf 3 
Eingänge vom uC. Ausserdem hängt direkt am PWM Signal noch ein 47k 
Pulldown wie ich gerade sehe.

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Urban B. schrieb:
>
>> Deswegen finde ich die Strategie von http://rmmx.gmxhome.de/bldchv sehr
>> gut, immer nur abwechselnd die obere oder untere Seite bei der PWM
>> Modulation zu deaktivieren. So kann der Strom noch ungehindert über die
>> zweiten Transistor laufen und man halbiert quasi die Freilaufverluste.
> Genau das habe ich dir ja bereits geschrieben, dass diese Funktion
> "automatisch" aktiviert ist, wenn man einen FET-Treiber mit nur einem
> Signaleingang nimmt. Low am Eingang -> unterer Mosfet schaltet durch,
> High am Eingang -> oberer Mosfet schaltet durch. Ganz deaktivieren kann
> man die FETs mit dem Enable-Eingang des Teribers.
>
> So kriegt man diesen sogenannten aktiven Freilauf ganz einfach hin. Ohne
> komplizierte Software (man bräuchte 6 PWM-Ausgänge).
Ich habe mir zwei Dinge dazu überlegt.
1.) 6 PWM nutzen, die der Atmega auch hat. Ich glaube aber, dafür 
braucht man beide Timer. Muss dazu nochmal das Datenblatt bemühen...
2.) Nur 2 PWM nutzen, die man getrennt aktiviert/deaktiviert und die per 
Wired-AND mit den Transistor-Steuersignalen verbinden. (Und-Gatter wären 
natürlich auch möglich).
>
>> Da meinst das PWM Signal von Empfänger?
> Genau den meine ich. Habs mit dem Durchgangsprüfer durchgepiepst, der
> PWM Eingang geht auf 3 Widerstände (je 1k) und dann getrennt auf 3
> Eingänge vom uC. Ausserdem hängt direkt am PWM Signal noch ein 47k
> Pulldown wie ich gerade sehe.
Kann ich mir auch keinen Reim drauf machen.
Ich kenne zwei Varianten: Entweder digital samplen und die Zeiten 
zwischen den Flanken messen was naheliegend ist.
Oder das Signal über ein RC-Glied integrieren und über AD-Wandler 
einlesen. Irgendwie beknackt ein digitales Signal zuerst nach analog zu 
wandeln um es gleich wieder zu digitalisieren, aber ich hab so 
Schaltungen schon gesehen :-)

von Gelöscht (kami89)


Lesenswert?

Sheldon Cooper schrieb:
> Ich habe mir zwei Dinge dazu überlegt.
> 1.) 6 PWM nutzen, die der Atmega auch hat. Ich glaube aber, dafür
> braucht man beide Timer. Muss dazu nochmal das Datenblatt bemühen...
> 2.) Nur 2 PWM nutzen, die man getrennt aktiviert/deaktiviert und die per
> Wired-AND mit den Transistor-Steuersignalen verbinden. (Und-Gatter wären
> natürlich auch möglich).
Jo, geht alles. Aber hast du schonmal diesbezüglich den Schaltplan der 
BL-Ctrl_2.0 angeschaut? Meiner Meinung nach eine völlig geniale Lösung, 
total einfach (Hard- und Software) aber trotzdem funktioniert es 
einwandfrei.
Schaltplan: http://mikrocontroller.com/files/BL_Ctrl_V2_0_Doku.pdf

Man aktiviert einfach ein Hardware-PWM und lässt es die ganze Zeit 
laufen (auch wenn der Motor nicht läuft, das PWM kann einfach 
weiterrattern).

Das Prinzip bei dem von mir genannten Treiber IR2104 o.ä.:
(uC Ausgang 1 geht auf Treiber Eingang, uC Ausgang 2 geht auf Treiber 
Enable)
Phase auf GND legen --> uC Ausgang 1 auf low schalten
Phase "in die Luft hängen" --> uC Ausgang 2 auf low schalten
Phase auf PWM legen --> uC Ausgang 1 auf Eingang umschalten (DDR)

Man braucht zwar immernoch 2 uC Ausgänge pro Phase, allerdings kann die 
Ansteuerlogik nicht einfacher sein :-)

> Kann ich mir auch keinen Reim drauf machen.
> Ich kenne zwei Varianten: Entweder digital samplen und die Zeiten
> zwischen den Flanken messen was naheliegend ist.
> Oder das Signal über ein RC-Glied integrieren und über AD-Wandler
> einlesen. Irgendwie beknackt ein digitales Signal zuerst nach analog zu
> wandeln um es gleich wieder zu digitalisieren, aber ich hab so
> Schaltungen schon gesehen :-)
Ja, ich verstehe es auch nicht. Es handelt sich um die Eingänge PD0, PD1 
und PD2 beim Mega88, also RXD, TXD und INT0, nix analog ;-)

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Urban B. schrieb:
> Sheldon Cooper schrieb:

> Jo, geht alles. Aber hast du schonmal diesbezüglich den Schaltplan der
> BL-Ctrl_2.0 angeschaut? Meiner Meinung nach eine völlig geniale Lösung,
> total einfach (Hard- und Software) aber trotzdem funktioniert es
> einwandfrei.
> Schaltplan: http://mikrocontroller.com/files/BL_Ctrl_V2_0_Doku.pdf
>
natürlich, daher auch die Idee mit der Wired-AND Schaltung.
> Man aktiviert einfach ein Hardware-PWM und lässt es die ganze Zeit
> laufen (auch wenn der Motor nicht läuft, das PWM kann einfach
> weiterrattern).
Ich möchte das nur modifiziern mit zwei PWMs, damit ich einmal die 
untere und einmal die obere Häfte mit dem PWM Signal verknüpfen kann.
Bei dem BL-Ctrl_2.0 wird nur die High-Side mit dem Signal verknödelt.

Die Ansteuerung der High-Side FETs ist mir übrigenes noch nicht ganz 
klar bei dieser V2.0. Bei älteren Versionen war das nur ein Tranistor 
und mir ist nicht klar warum das jetzt zwei sind.

von Gelöscht (kami89)


Lesenswert?

Sheldon Cooper schrieb:
> Ich möchte das nur modifiziern mit zwei PWMs, damit ich einmal die
> untere und einmal die obere Häfte mit dem PWM Signal verknüpfen kann.
> Bei dem BL-Ctrl_2.0 wird nur die High-Side mit dem Signal verknödelt.
Ach soo, ok dann ist alles klar. Da gibt es ja viele Theorien dass die 
Motoren besser / schlechter laufen sollen wenn das PWM die 
unteren/oberen FETS ansteuert oder so :-) Ich habe keine Ahnung was es 
damit auf sich hat. Find ich vorerst auch nicht so wichtig, hauptsache 
die Motoren laufen richtig :D Ausserdem will ich mich eben auch an 
gekauften Reglern orientieren, wenn ich die selbe Leistung erziele bin 
ich zufrieden.

> Die Ansteuerung der High-Side FETs ist mir übrigenes noch nicht ganz
> klar bei dieser V2.0. Bei älteren Versionen war das nur ein Tranistor
> und mir ist nicht klar warum das jetzt zwei sind.
Ich meine mal gelesen zu haben, dass es bei älteren Versionen Probleme 
mit diesem Transistor in Verbindung mit Feuchtigkeit gab. Aber was jetzt 
genau der Sinn an ZWEI Transistoren ist, das weiss ich auch nicht.

Habe gerade gesehen dass es einen Artikel zu diesem Thema gibt: 
BLDC Demo Board
Allerdings ist da noch nicht viel drin. Wäre vielleicht gut wenn man 
auch mal das genaue Prinzip eines BLDC und verschiedene Hardware-Ansätze 
noch erwähnen sollte. Mal schauen, vielleicht kann ich das nach den 
Semesterprüfungen mal in Angriff nehmen. Wie du ja auch schon 
festgestellt hast, findet man im Internet viele Seiten, die das Prinzip 
total vereinfacht beschreiben aber zu wenig ins Detail gehen...

von Simon K. (simon) Benutzerseite


Lesenswert?

Wenn du noch eine Meinung hören willst: Ich habe damals einen 4 Fach 
Brushless Controller mit dem dicken ATxmega (hat genug Timer und 4 
Komparatoren) realisiert. Die Ansteuerung der MOSFETs habe ich über 
IR2104 gemacht.
Tu dir einen gefallen: Benutze aktiven Freilauf, nicht so wie der BL 
Ctrl. Ich habe kleine SO8 MOSFETs benutzt und 4 Stück 100W Motoren damit 
angetrieben, die wurden vielleicht mal handwarm. Wenn du dich beim 
BL-Ctrl umschaust, siehst du, dass die wesentlich wärmer werden.

von Sheldon C. (sheldon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo Urban,

ich habe gestern einen Test mit der neuen Schaltung gemacht. Der Motor 
dreht sich zwar aber die Messung verstehe ich nicht.
Gemessen habe ich an dem Spannungsteiler für den virtuellen Sternpunkt 
wie in BL-Ctrl_2.0 (von MITTEL nach NULL_A und NULL_B).
In MAP002.PNG sieht man die Messung ohne Motor, was mehr oder weniger 
der Phasenspannung runter geteilt entspricht. Hier seht man schön, dass 
die zwei Phasen schön zeitversetzt kommen. (In der Lücke wäre die dritte 
Phase, habe aber nur zwei Kanäle)
In BEMF.PNG sieht man nun die Messung mit Motor. Hier sieht man nun die 
zwei Phasen synchron laufen, was ich nicht verstehe. Da muss ich doch 
noch einen Fehler in der Schaltung haben. Eine Idee?
Und ich glaube trotzdem einen Sinus-verlauf in dem Floating-Phase zu 
erkennen.
Was meinst du?

von Gelöscht (kami89)


Lesenswert?

Sheldon Cooper schrieb:
> Der Motor dreht sich zwar aber die Messung verstehe ich nicht.
Ich auch nicht :-)
> Gemessen habe ich an dem Spannungsteiler für den virtuellen Sternpunkt
> wie in BL-Ctrl_2.0 (von MITTEL nach NULL_A und NULL_B).
Ich würde nicht gegen den Sternpunkt messen, sondern gegen GND. So wie 
bei meinem Oszibild. Dann muss man nicht viel überlegen beim Anschauen 
des Bildes.

Und miss auch mal die Phasen direkt, um zu schauen ob diese so aussehen 
wie sie müssen (alle 3, halt nacheinander). Stimmt da was nicht, stimmt 
auch die BEMF nicht.

Hatte auch schon mal das Problem dass die BEMF nicht stimmte, da war es 
ein Kurzschluss in der BEMF-Schaltung.

Und pass auf dass dir der Motor nicht abfackelt wenn du ihn mit 100% PWM 
betreibst im Stepperbetrieb (das tust du doch jetzt?)... Schalte lieber 
PWM auf ca. 20% Duty Cycle, damit konnte ich immer gut arbeiten.

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Urban B. schrieb:
> Und miss auch mal die Phasen direkt, um zu schauen ob diese so aussehen
> wie sie müssen (alle 3, halt nacheinander). Stimmt da was nicht, stimmt
> auch die BEMF nicht.
ok, das werde ich heute abend nochmal machen.
>
>
> Und pass auf dass dir der Motor nicht abfackelt wenn du ihn mit 100% PWM
> betreibst im Stepperbetrieb (das tust du doch jetzt?)... Schalte lieber
> PWM auf ca. 20% Duty Cycle, damit konnte ich immer gut arbeiten.
Ja, da hast du recht. Da ich ohne LiPo teste habe ich bisher einfach den 
Strom auf 1A limitiert im Labornetzteil.

von Gelöscht (kami89)


Lesenswert?

Und, gibts schon Neuigkeiten? :-)

Ich habe nun angefangen die nächste Version von meinem Regler zu 
Layouten. Jetzt überlege ich mir ob ich überhaupt noch eine Strommessung 
reinbauen soll. Ein Leistungswiderstand ist teuer, ein Leiterbahn-Shunt 
mühsam zum Layouten.
Beim Mikrokopter scheinen sie ja jedesmal einen Shunt drinzuhaben. Aber 
ich kann mir nicht so richtig vorstellen, dass die Überstromabschaltung 
wirklich mal zum Zuge kommt. Der Regler soll schlussendlich ja z.B. ein 
Quadrokopter in die Luft befördern. Solange er noch ab Boden ist, kann 
ich die Motoren auch von Hand ausschalten wenn was blockiert oder so. 
Und in der Luft führt ein Motorenproblem sowieso zum Absturz, ob der 
Fehler detektiert wird oder nicht :D

Ganz grobe Kurzschlüsse beseitigt der LiPo von alleine, da muss man sich 
wohl kaum drum kümmern :-D

Ausserdem messe ich per Software immer die Drehzahl. Liegt die plötzlich 
ausserhalb eines bestimmten Bereiches, schaltet er ab. Das erkennt ein 
Blockieren zwar nicht soooo zuverlässig (er zittert vor sich hin und 
registriert das als Umdrehungen) aber meistens merkt er es innerhalb von 
ca. 6 Sekunden.

Würde mich mal interessieren, wie du das siehst? Baust du eine 
Strommessung ein?

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Urban B. schrieb:
> Und, gibts schon Neuigkeiten? :-)
>
Noch nicht viel. Hatte gestern keine Zeit, da ich beim Sport war. Muss 
ja auch mal sein :-)

> Ich habe nun angefangen die nächste Version von meinem Regler zu
> Layouten. Jetzt überlege ich mir ob ich überhaupt noch eine Strommessung
> reinbauen soll. Ein Leistungswiderstand ist teuer, ein Leiterbahn-Shunt
> mühsam zum Layouten.
Einen Leiterbahnshunt habe ich auch noch nicht gemacht, aber schwierig 
kann das ja nicht sein, oder? Sofern man weiß wie lang und breit,
kann man das in Eagle doch einfach manuell zeichnen. Oder siehst du da 
ein Problem?
> Beim Mikrokopter scheinen sie ja jedesmal einen Shunt drinzuhaben. Aber
> ich kann mir nicht so richtig vorstellen, dass die Überstromabschaltung
> wirklich mal zum Zuge kommt.
Doch, das geht ganz gut bei Mikrocopter, nachdem was ich so gelesen 
habe.
(http://www.fc00.de/quadrokopter_6_kw.htm suche "Begrenzungen")

Leiterbahn-Shunts werden hier zwar oft kritisiert, weil Kupfer ungenau 
ist durch den Temp-Koeff. Aber wir wollen ja kein Ampermeter bauen, 
sondern nur einen max. Strom verhindern. Ein kleine Toleranz kann man da 
schon verkraften.
> Der Regler soll schlussendlich ja z.B. ein
> Quadrokopter in die Luft befördern. Solange er noch ab Boden ist, kann
> ich die Motoren auch von Hand ausschalten wenn was blockiert oder so.
> Und in der Luft führt ein Motorenproblem sowieso zum Absturz, ob der
> Fehler detektiert wird oder nicht :D
>
Soweit ich weiß schaltet der Mikrocopter auch nicht gleich aus, sonst 
fällt das Ding ja wie ein Stein vom Himmel.
Aber man kann die max. Leistung dann begrenzen, sodass noch ein halbwegs 
kontrollierter Sinkflug möglich ist.

> Ganz grobe Kurzschlüsse beseitigt der LiPo von alleine, da muss man sich
> wohl kaum drum kümmern :-D
>
> Ausserdem messe ich per Software immer die Drehzahl. Liegt die plötzlich
> ausserhalb eines bestimmten Bereiches, schaltet er ab. Das erkennt ein
> Blockieren zwar nicht soooo zuverlässig (er zittert vor sich hin und
> registriert das als Umdrehungen) aber meistens merkt er es innerhalb von
> ca. 6 Sekunden.
Ein Stall-Detection wie sie auch in AVR444 beschrieben ist, sollte auf 
jeden Fall auch drin sein, ja.
Ein Stall wird erkannt wenn es für eine gewisse konfigurierbare Zeit 
keine Zero-Cross detection mehr gibt. Ein leichtes Zittern sollte keine 
Null-Durchgänge erzeugen, oder?
Aber hier ist eher das Problem wann wird vom starren Drehfeld in 
geregelten Betrieb geschaltet und wann wieder zurück. Hier hätte man mit 
dem ADC auf jeden Fall Vorteile gegebenüber dem Komperator, weil man die 
Amplitude der Schwingungen messen könnte. So kann man erst ab einer 
gewissen Amplitude sinnvoll Null-Durchgänge erkennen.
>
> Würde mich mal interessieren, wie du das siehst? Baust du eine
> Strommessung ein?
Habe ich vor.

von Gelöscht (kami89)


Lesenswert?

Sheldon Cooper schrieb:
> Einen Leiterbahnshunt habe ich auch noch nicht gemacht, aber schwierig
> kann das ja nicht sein, oder? Sofern man weiß wie lang und breit,
> kann man das in Eagle doch einfach manuell zeichnen. Oder siehst du da
> ein Problem?
Klar geht es. Aber erstens braucht es wieder unnötig Platz, und zweitens 
ist es bestimmt nicht einfach, diese Leiterbahn so auszulegen, dass Sie 
nicht zu früh abfackelt, aber trotzdem einen möglichst grossen 
Widerstand hat. Beim Mikrokopter liest man ja auch immer wieder von 
verbrannten Shunts, aber ob das jedesmal wirklich eine Fehlfunktion des 
Motores war? Oder doch ein zu sensibler Shunt, der sich zu früh 
verabschiedet hat? Ich weiss es nicht...

>> Beim Mikrokopter scheinen sie ja jedesmal einen Shunt drinzuhaben. Aber
>> ich kann mir nicht so richtig vorstellen, dass die Überstromabschaltung
>> wirklich mal zum Zuge kommt.
> Doch, das geht ganz gut bei Mikrocopter, nachdem was ich so gelesen
> habe.
> (http://www.fc00.de/quadrokopter_6_kw.htm suche "Begrenzungen")
Diese Seite kannte ich noch gar nicht, aber hübsche Regler bauen die da 
:-D Aber was ich meine: Ein Motor kann ja eigentlich nur durch Überlast 
zerstört werden, wenn da viiiiel zu viel Last dran hängt. Aber wie soll 
das bei einem richtig dimensionierten Probeller vorkommen? Und vorallem, 
wie soll sowas bei einem richtig dimensionierten Propeller in der Luft 
vorkommen? Kann ich mir irgendwie nicht vorstellen.

> Leiterbahn-Shunts werden hier zwar oft kritisiert, weil Kupfer ungenau
> ist durch den Temp-Koeff. Aber wir wollen ja kein Ampermeter bauen,
> sondern nur einen max. Strom verhindern. Ein kleine Toleranz kann man da
> schon verkraften.
Ja das sehe ich natürlich auch so.

> Soweit ich weiß schaltet der Mikrocopter auch nicht gleich aus, sonst
> fällt das Ding ja wie ein Stein vom Himmel.
> Aber man kann die max. Leistung dann begrenzen, sodass noch ein halbwegs
> kontrollierter Sinkflug möglich ist.
Ok stimmt, das macht Sinn. Aber wie oben schon erwähnt, sehe ich nicht 
wie so ein Überstrom während dem Flug zustande kommen soll.

> Ein Stall-Detection wie sie auch in AVR444 beschrieben ist, sollte auf
> jeden Fall auch drin sein, ja.
> Ein Stall wird erkannt wenn es für eine gewisse konfigurierbare Zeit
> keine Zero-Cross detection mehr gibt. Ein leichtes Zittern sollte keine
> Null-Durchgänge erzeugen, oder?
Doch, genau das tut es bei mir.Der zittert ständig was hin und her und 
erzeugt Komparator-Interrupts. Aber die Drehzahlüberwachung könnte man 
natürlich noch perfektionieren. Und zwar könnte man sie abhänging 
machen, vom PWM Duty Cycle. Also man berechnet quasi immer eine 
Solldrehzahl. Weicht dann die Ist-Drehzahl zu stark vom Soll ab, muss 
der Motor ja überlastet sein. Das muss natürlich auf den Motor und den 
Propeller abgestimmt sein, aber einmal angepasst sollte das ziemlich gut 
funktionieren denke ich. Dann erkennt man eine Überlast ohne Probleme, 
auch ohne Strommessung.

> Aber hier ist eher das Problem wann wird vom starren Drehfeld in
> geregelten Betrieb geschaltet und wann wieder zurück. Hier hätte man mit
> dem ADC auf jeden Fall Vorteile gegebenüber dem Komperator, weil man die
> Amplitude der Schwingungen messen könnte. So kann man erst ab einer
> gewissen Amplitude sinnvoll Null-Durchgänge erkennen.
Wieder zurück? Zurück ins starre Drehfeld muss man ja gar nie, beim 
Ausschalten werden ja einfach die FETs deaktiviert. Und für die 
Umschaltung in den geregelten Betrieb geht man einfach bis zu einer fest 
definierten Drehzahl, bei der man weiss dass die BEMF stark genug ist.

>> Würde mich mal interessieren, wie du das siehst? Baust du eine
>> Strommessung ein?
> Habe ich vor.
OK. Aber wie schon erwähnt, mein gekaufter Regler hat auch kein Shunt, 
und ich vermute mal die haben sich schon was überlegt dabei :-D Ich 
glaube einfach, eine allfällige Fehlfunktion (falls die jemals eintritt) 
kann auch per Drehzahlüberwachung detektiert werden.

Vielleicht mach ichs weiterhin mit einem Leistungswiderstand, den ich 
aber auch einfach durch eine Drahtbrücke ersetzen kann...

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Hallo Urban,

BEMF geht zwar immer noch nicht brauchbar bei mir, aber ich habe neue 
Erkentnisse.

Das Signal ist so verrauscht mit Spannungs-Spitzen und -Einbrüchen, dass 
der Comparator zuschlägt wie ein Zufallsgenerator.
Ich dachte ursprünglich, dass liegt an der PWM, aber die bekomme ich 
ziemlich gut gefiltert mit meinem Spannungsteiler/Tiefpass (R-R-C).

Der eigentliche Grund ist aber
1.) Dass ich mit Netzteil arbeite und das ständig in die Strombegrenzung 
läuft, wobei dann die Spannung einbricht.
2.) Dass ich keine Elkos zum Stabilisieren verwendet habe, außer für die 
5V am µC.

Ich habe als erste Maßnahme mal die Motor-Spannung am Netzteil auf 5V 
reduziert um damit die notwendigen Ströme zu reduzieren. Dann habe ich 
noch einen 100µF Elko dazugesteckt (größer hab ich's momentan nicht.)
Damit schaut die Sache schon viel besser aus, aber nocht nicht gut 
genug.

Lange Rede kurzer Sinn. Ich habe mir jetzt einen 3-Zellen LiPo + 
Ladegerät bestellt und besorge mir noch ein paar größere Elkos. Dann bin 
ich guter Hoffnung, dass ich nächste Woche eine gscheite BEMF zustande 
bekomme.

Schönes WE,
Sheldon

von Gelöscht (kami89)


Lesenswert?

Okay, das erklärt einen Teil der Spannungsspitzen, aber nach diesen 
Änderungen wirst du sie immernoch nicht ganz los sein. Ich hatte das 
auch, dass der Komparator viiiiel zu häufig ausgelöst hätte, trotz 
Elkos, Kerkos und Lipo. Das liegt schlicht und einfach am starren 
Drehfehld. Das ist ganz normal, dass die BEMF ziemlich besch*** 
aussieht.

Aber trotz so schlechter BEMF schaltet der Motor problemlos in den 
geregelten Betrieb, sofern alle Parameter stimmen und die Software so 
funktioniert wie sie soll. Ich habe es am Anfang so gemacht, dass ich 
den Motor im starren Drehfeld auf eine möglichst hohe Drehzahl gebracht 
habe. Sobald die erreicht wurde, wurden alle 3 Phasen abgeschaltet, ein 
paar Millisekunden gewartet, und erst dann wurde der Komparator 
aktiviert. Während der Motor ohne Spannung noch am drehen ist entsteht 
nämlich eine ziemlich schöne BEMF. Mit dieser BEMF funktioniert dann 
auch der Komparator so wie er soll. Und im Komparator-Interrupt werden 
dann alle Phasen nacheinander wieder eingeschaltet, danach läuft der 
Motor vollständig im geregelten Betrieb.

Das Schwierige dabei ist, dass man fast nicht kontrollieren kann ob die 
Software richtig funktioniert (Timing). Man muss es halt beim Übergang 
vom Leerlauf in den geregelten Betrieb so gut es geht am Oszi beobachten 
und versuchen herauszufinden, was die Software falsch macht.

Der Anlauf selbst und der Übergang in den geregelten Betrieb hat es echt 
in sich. Ich musste ständig von Hand etwas nachhelfen oder den Motor 
etwas belasten.

Du kannst auch versuchen die Zwangskommutierung komplett wegzulassen und 
direkt aus dem Stillstand im geregelten Betrieb anfahren. Dann einfach 
von Hand einen starken Drall verpassen, und der Motor müsste laufen. 
Funktioniert bei mir ziemlich gut.

Ich wünsche dir viel Glück beim Probieren :-D

mfg

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

So, ich hab mal am neuen Layout gearbeitet. Ist glaub ich ganz gut 
geworden :-)

Die Platine ist 26x40mm klein. Du siehst also, auch inkl. Mosfet-Treiber 
und sogar mit Optokoppler fürs PPM bringt man den Regler ganz kompakt 
hin.

Die stromführenden Leiterbahnen habe ich noch etwas verbreitern können. 
Die schmalsten Stellen (unter den unteren Mosfets, weil das 
Gate-Beinchen im Weg ist) sind zwar immernoch nur ca. 2,6mm, ansonsten 
sind die Bahnen aber immer ca. 5mm breit. Mit 70um Kupfer dürfte schon 
ein etwas grösserer Motor damit betrieben werden denk ich mal. Ansonsten 
muss man halt mit Kupferschienen noch nachstärken...

Übrigens habe ich bei einem gekauften Regler noch gesehen, warum da ein 
ruckartiges Abbremsen nicht zu Überspannung führt: Der Regler scheint 
wohl eine Art Rampe einprogrammiert zu haben, so kann man gar nicht 
ruckartig die Drehzahl ändern... :-)

Den Shunt für die Strommessung hab ich wieder eingebaut, den kann man ja 
dann ganz einfach mit einem Stück Draht überbrücken wenn man den nicht 
braucht.

Wenn du noch Fehler entdeckst auf der Platine, bitte melden :-)

mfg

EDIT: Sorry für die doch noch relativ grossen Bilder. Ich hab sie auf 
unter 800x600 gestutzt, sind im PNG-Format und trotzdem noch so gross? 
ich versteh nicht was ich falsch mache...:-(

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Urban B. schrieb:
> So, ich hab mal am neuen Layout gearbeitet. Ist glaub ich ganz gut
> geworden :-)
>
sieht auf jeden Fall gut aus. Eagle3D und POVRay?
> Die Platine ist 26x40mm klein. Du siehst also, auch inkl. Mosfet-Treiber
> und sogar mit Optokoppler fürs PPM bringt man den Regler ganz kompakt
> hin.
habe ich nie bezweifelt. Wie gesagt zählt für mich mehr der Lerneffekt 
als das Ergebnis, weswegen ich lieber diskrete Treiber baue.
> Die stromführenden Leiterbahnen habe ich noch etwas verbreitern können.
> Die schmalsten Stellen (unter den unteren Mosfets, weil das
> Gate-Beinchen im Weg ist) sind zwar immernoch nur ca. 2,6mm, ansonsten
> sind die Bahnen aber immer ca. 5mm breit. Mit 70um Kupfer dürfte schon
> ein etwas grösserer Motor damit betrieben werden denk ich mal. Ansonsten
> muss man halt mit Kupferschienen noch nachstärken...
>
> Übrigens habe ich bei einem gekauften Regler noch gesehen, warum da ein
> ruckartiges Abbremsen nicht zu Überspannung führt: Der Regler scheint
> wohl eine Art Rampe einprogrammiert zu haben, so kann man gar nicht
> ruckartig die Drehzahl ändern... :-)
Interessant. Hast du die Rampe mit dem Oszi gesehen?
>
> Wenn du noch Fehler entdeckst auf der Platine, bitte melden :-)
>
Ne, das würde man wohl eher auf dem Schaltplan sehen, als in der 
3D-Grafik.

Ich warte immer noch auf meinen Akku.
Ich habe gestern nochmal einen kleinen Test mit größerem Elko gemacht, 
das bringt aber nix. Die Spannung knickt unter Last so ein, dass die 
Phasen-Spg. gar nicht über den Zero-Cross Schwellwert kommt, außer mit 
den Störungs-Peeks. So hat das momentan keinen Sinn.
Der LiPo kommt aber noch die Woche. Ich melde mich dann wieder.

> mfg
>
> EDIT: Sorry für die doch noch relativ grossen Bilder. Ich hab sie auf
> unter 800x600 gestutzt, sind im PNG-Format und trotzdem noch so gross?
> ich versteh nicht was ich falsch mache...:-(

Mit GIMP werden die Bilder bei mir auch nur 2K kleiner.
Das liegt an den vielen unterschiedlichen Farben und Farbverläufen im 
Rendering. So hat das Bild ähnliche Eigenschaften wie ein Foto. PNG 
komprimiert gut einfarbige Flächen. Bei dem Bild bist du mit JPG besser 
dran. Natürlich ist JPG verlustbehaftet im Gegensatz zu PNG.

von Gelöscht (kami89)


Lesenswert?

Sheldon Cooper schrieb:
> sieht auf jeden Fall gut aus. Eagle3D und POVRay?
Jup, Eagle3D und POVRay. Hat zwar viel Arbeit gegeben (bin noch nicht so 
vertraut mit dem Zeug), aber es hat sich gelohnt wie ich finde. Sieht 
einfach geil aus :-)

> habe ich nie bezweifelt. Wie gesagt zählt für mich mehr der Lerneffekt
> als das Ergebnis, weswegen ich lieber diskrete Treiber baue.
Ja das kann ich verstehen.

> Interessant. Hast du die Rampe mit dem Oszi gesehen?
Nein, ich habe ein Servotester an den Regler angeschlossen und das Poti 
so schnell es ging, gedreht. Dabei ist mir einfach aufgefallen, dass der 
Motor ein bisschen träge reagiert, aber dennoch sehr zügig die Drehzahl 
ändert. Wobei, da fällt mir ein: Theoretisch könnte die Verzögerung auch 
vom Servotester (Marke Eigenbau) stammen. Muss da mal nachschauen ob der 
ADC die Potistellung eventuell mit einer ziemlich niedrigen Frequenz 
abtastet. Kann ich mir aber irgendwie nicht vorstellen...

> Ich warte immer noch auf meinen Akku.
> Ich habe gestern nochmal einen kleinen Test mit größerem Elko gemacht,
> das bringt aber nix. Die Spannung knickt unter Last so ein, dass die
> Phasen-Spg. gar nicht über den Zero-Cross Schwellwert kommt, außer mit
> den Störungs-Peeks. So hat das momentan keinen Sinn.
> Der LiPo kommt aber noch die Woche. Ich melde mich dann wieder.
Okay, aber du hast meinen letzten Beitrag schon gesehen oder? Vorallem 
der Hinweis, nach der Zwangskommutierung die Phasen komplett 
auszuschalten. Du musst ja eh mit PWM arbeiten, dazu reichte mein 3A 
Netzgerät vollkommen aus (2A reichen auch). Spätestens wenn du den LiPo 
anschliesst, wirds ohne PWM ziemlich ungemütlich ;-)
Ich würd mich bei den ersten "Gehversuchen" gar nicht getrauen einen 
LiPo anzuschliessen, das könnte bei einem Softwarefehler böse enden 
(z.B. wenn mal die PWM ausschalt im High Zustand).

> Mit GIMP werden die Bilder bei mir auch nur 2K kleiner.
> Das liegt an den vielen unterschiedlichen Farben und Farbverläufen im
> Rendering. So hat das Bild ähnliche Eigenschaften wie ein Foto. PNG
> komprimiert gut einfarbige Flächen. Bei dem Bild bist du mit JPG besser
> dran. Natürlich ist JPG verlustbehaftet im Gegensatz zu PNG.
OK dann bin ich doch nicht so blöd, dass ich die PNGs nicht kleiner 
kriege. Hab jetzt mal JPG probiert, sind dann noch etwa halb so gross. 
Aber jetzt sind die Bilder schon hochgeladen... ;-)

von Sheldon C. (sheldon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Urban B. schrieb:

>> Ich warte immer noch auf meinen Akku.
>> Ich habe gestern nochmal einen kleinen Test mit größerem Elko gemacht,
>> das bringt aber nix. Die Spannung knickt unter Last so ein, dass die
>> Phasen-Spg. gar nicht über den Zero-Cross Schwellwert kommt, außer mit
>> den Störungs-Peeks. So hat das momentan keinen Sinn.
>> Der LiPo kommt aber noch die Woche. Ich melde mich dann wieder.
> Okay, aber du hast meinen letzten Beitrag schon gesehen oder? Vorallem
> der Hinweis, nach der Zwangskommutierung die Phasen komplett
> auszuschalten. Du musst ja eh mit PWM arbeiten, dazu reichte mein 3A
> Netzgerät vollkommen aus (2A reichen auch). Spätestens wenn du den LiPo
> anschliesst, wirds ohne PWM ziemlich ungemütlich ;-)
> Ich würd mich bei den ersten "Gehversuchen" gar nicht getrauen einen
> LiPo anzuschliessen, das könnte bei einem Softwarefehler böse enden
> (z.B. wenn mal die PWM ausschalt im High Zustand).
>
Ja, habe ich schon gesehen. Ich habe aber, wie du mal empfohlen hast, 
mittlerweile auf den Sternpunkt verzichtet und versuche das 
Zero-Crossing direkt an der Phase zu messen. D.h. mit einem 
Spannungsteiler natürlich. So ist das übrigens auch im AVR444 gelöst.
Da die Phase aber nicht mal über VCC/2 drüber kommt unter Last, geht das 
nicht.
Die reine BEMF wenn die Phasen aus sind, bewegt sich nur im mV Bereich, 
also weiß ich nicht wie ich das als Referenz nutzen soll.

Da ich gerade kein echte Messung da habe, habe ich das Problem mal mit 
GIMP skizziert.
Vielleicht habe ich ja noch einen Denkfehler, also bitte erleuchte mich.

von Sheldon C. (sheldon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier noch eine kleine Prinzip-Schaltung wie ich den Comparator 
beschalte.

von Gelöscht (kami89)


Lesenswert?

Sheldon Cooper schrieb:
> Ja, habe ich schon gesehen. Ich habe aber, wie du mal empfohlen hast,
> mittlerweile auf den Sternpunkt verzichtet und versuche das
> Zero-Crossing direkt an der Phase zu messen. D.h. mit einem
> Spannungsteiler natürlich. So ist das übrigens auch im AVR444 gelöst.
Uups, da haben wir aneinander vorbeigeredet. In diesem Beitrag 
Beitrag "Re: Wie Drain durchkontaktieren für MOSFET Halbbrücke" hast du ja 
geschrieben
> Gemessen habe ich an dem Spannungsteiler für den virtuellen Sternpunkt
Ich habe das wohl falsch verstanden. Ich dachte, die Messung mit dem 
Oszilloskop ist auf den Sternpunkt bezogen...jetzt im Nachhinein denke 
ich mal, ich habe das falsch verstanden?! ;-)

Die BEMF-Schaltung habe ich auch exakt so aufgebaut wie in der 
BLCtrl-2.0.

> Da die Phase aber nicht mal über VCC/2 drüber kommt unter Last, geht das
> nicht.
Die BEMF muss auch nicht über VCC/2 kommen, nicht mal annähernd. Auf 
meinem geposteten Oszi-Bild sieht man, dass sich die Sternpunktspannung 
immer im Bereich ca. 1,2V bis 2V befindet. Und die 3 BEMF-Signale liegen 
im Bereich 0,5V bis 3V. Die Speisespannung war ca. 15V!

Dein Prinzip-Schema macht irgendwie ja nicht viel Sinn, da wird ja die 
Sternpunktspannung gar nicht berücksichtigt.

Aber ist jetzt natürlich schade dass ich ich damals falsch verstanden 
habe, das hätte nicht sein müssen... Sorry :-)

Aber welche Variante der Nulldurchgangs-Detektion willst du nun zuerst 
ausprobieren? Analog Komparator + Multiplexer + Interrupt oder nur mit 
dem ADC?

Meine nächsten Schritte wären sicher mal diese:
- BEMF-Schaltung exakt gleich aufbauen, wie bei der BLCtrl-2.0
- PWM auf ca. 20 - 30% fest einstellen
- Mindestens 10V Versorgungsspannung (keine Strombegrenzung, so dass die 
Spannung zusammenbricht!)
- Mit Zwangskommutierung auf eine möglichst hohe Drehzahl beschleunigen
- Ev. PWM Duty Cycle noch leicht anpassen und ev. von Hand nachhelfen 
beim Startvorgang
- Alle Phasen auf einen Schlag abschalten, und gleichzeitig das Oszi 
triggern um den Übergang in den Leerlauf beobachten zu können.

Wie schon erwähnt: Ganz wichtig! Die BEMF lässt sich während der 
Zwangskommutierung nicht gescheit interpretieren! Dazu muss der Motor 
entweder im Leerlauf, oder im geregelten Betrieb drehen.

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Hallo,

guten Nachrichten: Der Motor läuft nun im geregelten Betrieb. Yipee!

Habe wie du gesagt hast nochmal den Sternpunkt wie bei BLCTRL2.0 
aufgebaut und meinen Comparator Code daran angepasst.
Einmal den Motor testweise mit der Hand angedreht,
und plötzlich lief das Ding. Voll der Hammer.
Es geht sogar sehr einfach anzuwerfen, muss man gar besonders schnell 
machen.
Und das obwohl die Spannung immer noch auf 6V einknickt.

Hätte nicht gedacht, dass der Code auf Anhieb funktioniert.

Also das ganze läuft noch nicht ganz rund, weil es noch Fehlkommutierung 
wegen Störungen gibt, aber jetzt bin ich auf dem richtigen Weg.

Danke nochmal für deine Tipps!

von Gelöscht (kami89)


Lesenswert?

> guten Nachrichten: Der Motor läuft nun im geregelten Betrieb. Yipee!
Aahh wunderbar, das ist doch mal eine gute Nachricht :-)
Als es bei mir so weit war, war ich auch ganz erstaunt dass die Software 
überhaupt funktioniert xD

> Also das ganze läuft noch nicht ganz rund, weil es noch Fehlkommutierung
> wegen Störungen gibt, aber jetzt bin ich auf dem richtigen Weg.
Das kann übrigens daran liegen, dass das Timing etwas falsch ist. Hatte 
ich anfangs auch, ein _delay_us(20) im Komparator-Interrupt (vor der 
Kommutierung) hat das Problem vorübergehend gelöst. Das ist aber nur 
vorübergehend drin, später soll der Kommutierungszeitpunkt ja berechnet 
werden und auch anpassbar sein.

> Danke nochmal für deine Tipps!
Kein Problem, macht man doch gerne :-)

mfg

P.S. Wenn du einen Anlaufalgorithmus findest, der so gut ist wie bei den 
gekauften Reglern wäre ich sehr interessiert daran =) Da muss ich auf 
jeden Fall noch viel Zeit investieren und die gekauften Regler 
untersuchen, wie die das genau machen...

von Gelöscht (kami89)


Lesenswert?

Urban B. schrieb:
> Mal schauen, vielleicht kann ich das nach den
> Semesterprüfungen mal in Angriff nehmen.

So, habe nun mal einen Artikel geschrieben:

Brushless-Controller für Modellbaumotoren

Ist noch ganz frisch, ist noch viel Verbesserungspotential da.

Vielleicht kannst du ja auch noch deine Erfahrung da mit einbringen :-)

mfg
Urban

von Sheldon C. (sheldon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hast du schön gemacht. Ich werde den Artikel bei Gelegenheit mal 
ergänzen um meine Erfahrungen.

Ich habe bei mir ein Problem mit den ADC Eingängen festgestellt, ging 
eigentlich nur noch einer richtig. Da habe ich wohl mal was zerstört. 
Der µC ist auch schon etwas älter und hat schon viele Experimente 
mitgemacht.
Ich habe jetzt neue bestellt.

In der Zwischenzeit habe ich aber ein anständiges und doch einfaches 
Binärprotokoll für die Kommunikation entwickelt. (Hatte das Ding voher 
mit ein paar Text Kommandos mittels minicom gesteuert)
Damit kann ich jetzt Parameter lesen/schreiben und Events aus dem Ctrl 
senden.
Mittels ADC bin so in der Lage, alle 3 Phasen wie mit einem DSO zu 
messsen und zu visualisieren. Hat den Vorteil, das ich wirklich das sehe 
was auch der µC sieht.

In dem Screenshot siehst du noch einen Prototyp mit Fake-Daten aber so 
ähnlich wird mal mein Config-Tool ausschauen.

von Gelöscht (kami89)


Lesenswert?

Wow, coole Idee wenn das funktioniert!

Kriegt ein AVR mit 16MHz das locker hin? Wie viele Samples erwartest du 
pro Zustand (1 Zustand = Zeitdauer, die eine Phase in der Luft hängt um 
die BEMF zu messen)?

Und die Mittelpunktspannung legst du nun auch auf einen ADC-Eingang, und 
nicht auf den Komparator oder?

Ich habe mittlerweile die Platinen für meine neuen Regler beim 
Platinensammler bestellt. Dauert halt noch ein Weilchen bis die kommen. 
Hmm aber da ist dann die Mittelpunktspannung nur auf den Komparator 
verdrahtet, schade, dann kann ich die ADC-Version nicht testen 
damit....Muss ich mal probieren ob ich bei den alten Reglerplatinen die 
Leiterbahnen "umverdrahten" kann :-)

Ach ja, mit was programmierst du deine Software vom Screenshot?

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Urban B. schrieb:
> Wow, coole Idee wenn das funktioniert!
>
> Kriegt ein AVR mit 16MHz das locker hin? Wie viele Samples erwartest du
> pro Zustand (1 Zustand = Zeitdauer, die eine Phase in der Luft hängt um
> die BEMF zu messen)?
Mit einem Kanal ging das sehr gut, und ich habe auch schon schön die 
Schwingung gesehen, wenn ich den Motor mit der Hand drehe. Hab den ADC 
im Free Running mode betrieben. Dann kam leider das Problem mit dem µC.
>
> Und die Mittelpunktspannung legst du nun auch auf einen ADC-Eingang, und
> nicht auf den Komparator oder?
Wenn ich die Phasen-Spg schnell genug messen kann, könnte ich das in 
Software berechnen und benötige gar keinen Mittelpunkt.
Ich bin mir aber noch nicht sicher ob das Multiplexen von drei Channels 
anständig funktioniert.

Ich teste gerade mit einem Atmega8 (vorher hatte ich Atmega168). Bei dem 
Atmega8 stimmt momentan aber der UART Takt nicht, ich weiß noch nicht 
warum. Eigentlich sollte der gleich funktionieren, nur die Register 
heißen ein bißchen anders. Ich habe ein UBRR von 51 eingestellt für 9600 
Baud bei 8MHz Takt. Beim 168er ging das.
Der UART Takt liegt aber nicht nur ein bißchen daneben, sondern ca. 
Faktor 30. Verstehe ich gerade nicht.

>
> Ich habe mittlerweile die Platinen für meine neuen Regler beim
> Platinensammler bestellt. Dauert halt noch ein Weilchen bis die kommen.
> Hmm aber da ist dann die Mittelpunktspannung nur auf den Komparator
> verdrahtet, schade, dann kann ich die ADC-Version nicht testen
> damit....Muss ich mal probieren ob ich bei den alten Reglerplatinen die
> Leiterbahnen "umverdrahten" kann :-)
>
> Ach ja, mit was programmierst du deine Software vom Screenshot?
Mit C++/Qt. Qt ist einfach nur genial. Da fange ich bistimmt nicht mit 
JAVA oder .Net an. Außerdem arbeite ich auf Linux, da fällt letzters 
sowieso weg.
Als IDE verwende ich KDevelop4, QtCreator und vim, je nach Lust und 
Laune.

Das schöne an dem Protokoll - ich nenne es SimpleProt - ist, dass der µC 
selber eine Liste seiner Parameter mit Namen und Datentyp liefert. Die 
GUI zeigt diese dann einfach im Parameter Window an und man kann diese 
lesen und schreiben. Fügt man neue Parameter im µC hinzu passt sich GUI 
also autom. an.

Das Protokoll bietet momentan folgende Services:
GetStatus: Liefert Device-Status und Protokoll Version
Browse: Parameter-Liste auslesen
ReadParamByte: selbsterklärend denke ich
WriteParamByte: dito
ReadParamWord: dito
WriteParamWrite: dito
BLDCStop: mein Not-Halt sozusagen, schaltet die Endstude und die Timer 
aus
BLDCStart: Startet den geregelten Betrieb
DSOStart: Startet die DSO Aufzeichnung
DSOStop: Stoppt die DSO Auzeichnung
ResetEvent: Sended die µC nach dem Reset
NewSamplesEvent: Sendet neue DSO Daten

Natürlich kann man weitere Services hinzufügen, aber für neue Parameter 
muss am Protokoll nix geändert werden. Es ändert sich nur der Adressraum 
der Parameter.
Zu Parameterierung braucht man als Client nur Browse, ReadParam* und 
WriteParam*.

Ich werde das mal auf Guthub pushen wenn's fertig ist.

von Gelöscht (kami89)


Lesenswert?

>> Und die Mittelpunktspannung legst du nun auch auf einen ADC-Eingang, und
>> nicht auf den Komparator oder?
> Wenn ich die Phasen-Spg schnell genug messen kann, könnte ich das in
> Software berechnen und benötige gar keinen Mittelpunkt.
> Ich bin mir aber noch nicht sicher ob das Multiplexen von drei Channels
> anständig funktioniert.
Ja OK macht Sinn. Allerdings hast du dann halt nur noch ein Drittel der 
Samplingrate (auf einen Kanal bezogen). Aber wenn das immernoch genügt 
ist das ja kein Problem. Der uC sollte aber halt schon nicht gerade voll 
ausgelastet sein weil es sonst ev. Engpässe geben könnte wenn plötzlich 
noch mit dem uC kommuniziert wird über eine Schnittstelle. Also dass die 
Abtastfrequenz plötzlich ins Stocken gerät, das wär nicht so schön.

Man müsste vielleicht mal schauen welche maximalen Drehzahlen diese 
Motoren so erreichen können, dann kann man ausrechnen wie hoch die 
Samplerate etwa sein sollte.

Weisst du wie das mit den Polpaarzahlen aussieht bei den BL-Motoren? Ich 
glaube die ist ja normalerweise nicht angegeben wenn man einen Motor 
kauft. Sind da vielleicht immer etwa gleichviele drin? Wenn ich 6 
Polpaare habe, entspricht dann eine mechanische Umdrehung ja 6 
elektrischen Umdrehungen, also 6*6=36 Kommutierungen wenn ich das 
richtig verstanden habe (?).

> Ich teste gerade mit einem Atmega8 (vorher hatte ich Atmega168). Bei dem
> Atmega8 stimmt momentan aber der UART Takt nicht, ich weiß noch nicht
> warum. Eigentlich sollte der gleich funktionieren, nur die Register
> heißen ein bißchen anders. Ich habe ein UBRR von 51 eingestellt für 9600
> Baud bei 8MHz Takt. Beim 168er ging das.
> Der UART Takt liegt aber nicht nur ein bißchen daneben, sondern ca.
> Faktor 30. Verstehe ich gerade nicht.

Hmm aber ansonsten läuft der uC mit der richtigen Geschwindigkeit? Also 
wenn du eine LED blinken lässt mit 500 ms Pause, blinkt die dann auch 
auch mit dieser Frequenz?

>> Ach ja, mit was programmierst du deine Software vom Screenshot?
> Mit C++/Qt. Qt ist einfach nur genial. Da fange ich bistimmt nicht mit
> JAVA oder .Net an. Außerdem arbeite ich auf Linux, da fällt letzters
> sowieso weg.
> Als IDE verwende ich KDevelop4, QtCreator und vim, je nach Lust und
> Laune.

Ich arbeite auch mit Linux, vielleicht werde ich mir diese IDE mal 
anschauen. Schade nur, dass sie wohl für KDE gedacht ist, ich arbeite 
mit Gnome. Aber mittlerweile ist das ja auch kein grosses Problem 
mehr...

> Das schöne an dem Protokoll - ich nenne es SimpleProt - ist, dass der µC
> selber eine Liste seiner Parameter mit Namen und Datentyp liefert. Die
> GUI zeigt diese dann einfach im Parameter Window an und man kann diese
> lesen und schreiben. Fügt man neue Parameter im µC hinzu passt sich GUI
> also autom. an.

Das ist eine gute Idee, darauf bin ich noch gar nicht gekommen :-) Finde 
es auch mühsam das Protokoll immer an zwei Stellen anzupassen.

von Sheldon C. (sheldon) Benutzerseite


Lesenswert?

Urban B. schrieb:

> Hmm aber ansonsten läuft der uC mit der richtigen Geschwindigkeit? Also
> wenn du eine LED blinken lässt mit 500 ms Pause, blinkt die dann auch
> auch mit dieser Frequenz?
Ich habe mal ein Pin getoggelt, das ging zwar nicht mit 8MHz aber das 
kann man auch nicht erwarten. Sind ja doch ein paar Instructions. Wir 
aber die richtige Größenordnung im µs Bereich.
Der 168er hatte ein CLKOUT Pin, wo man das bequem messen kann, der 8er 
leider nicht.
Das mit dem delay ist eine gute Idee. Werde ich heute abend mal testen.
>
>
> Ich arbeite auch mit Linux, vielleicht werde ich mir diese IDE mal
> anschauen. Schade nur, dass sie wohl für KDE gedacht ist, ich arbeite
> mit Gnome. Aber mittlerweile ist das ja auch kein grosses Problem
> mehr...
Ja, das sollte gehen. Für QtCreator brauchst du nur Qt. Für KDevelop 
ziehst du dir natürlich einige KDE-Libs rein die du vielleicht nicht 
haben willst.

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.