ATxmega & BLDC

Gast #2879507
Lesenswert?

Hallöle!

Ich hätte da mal ne frage an die Xmega-Profis ;)
Wieviele BLDC kann man mit einem Xmega (eurer Wahl) sensorlos steuern?
Ist das überhaupt möglich (Interrupttechnisch/Auslastungstechnisch) mehr 
als einen zu steuern?

Wäre über eine nette und aussagekräftige Antwort erfreut! ;)

Grüße,
Erny
#2880018
Lesenswert?

Tach erny,

wie kommst du auf 4 PWM Kanäle? Meinst du wirklich BLDCs? Die sind 
normalerweise 3 Phasig.

Die minimal Lösung ist dann ein PWM Kanal(zur Stromreglung), drei 
interrupts, 6 IO pins und ein Haufen externe Logik.

Vollständig brauchst du 6 PWM Kanäle(drei Halbbrücken) und 4 ADC 
Kanäle(BEMF sensing und Stromreglung). Bei den xmegas scheiterts da an 
den PWM Kanälen. Mehr als einer ist nicht drin.

Wenn man ein paar Abstriche macht kann man mit den meisten xmegas 2 3 
Phasige BLDCs betreiben.

Thor
Gast #2880650
Lesenswert?

Wenn Du die Software dazu hinbekommst könnte das klappen ;-)

Könnte mir aber vorstellen, dass es zu Problemen kommt wenn man bei 
mehreren Motoren "gleichzeitig" kommutieren muss.
Dann treten mehrere Interrupts gleichzeitig auf und verzögern sich 
entsprechend.
Kenn mich aber mit dem XMEGA zuwenig aus um da was konkretes zu sagen zu 
können.

Ich würde da einfach vier kleine Controller nehmen das ist deutlich 
einfacher zu implementieren...
Persönliche Seite #2880698
Lesenswert?

Jo so Denk ich mir das auch aber bei mit geht's eher um den Platzbedarf 
von 4 kleineren atmegas ;) Ich kann es ja auch einfach mal probieren und 
dann mal posten ob und wie :)

Joa und was ich noch mal gelesen habe ist das es sowas wie ne 
sinusansteuerung
( was die xmegas dank 12bit DAC können) von BLDCs gibt, weiß einer was 
es damit aufsich hat ?

Grüße,
Erny
Gast #2880711
Lesenswert?

Ern Bern schrieb:
> Joa und was ich noch mal gelesen habe ist das es sowas wie ne
> sinusansteuerung
> ( was die xmegas dank 12bit DAC können) von BLDCs gibt, weiß einer was
> es damit aufsich hat ?


Das wirst Du mit EINEM xmega für 4 Motoren ziemlich sicher nicht 
hinbekommen (jedenfalls nicht wenn Du schon fragen musst was das ist ;-) 
).
Je nach Anwendung lohnt sich der Aufwand auch gar nicht.
(Hier vermutlich Quadrocopter: Lohnt nicht!)
#2880774
Lesenswert?

Sinuskommutierung hat nichts mit den DACs zu tun. Eher mit der BEMF 
Auswertung per ADCs.

Das Problem sind wie schon gesagt die PWM Kanäle. Du musst 24 PWM 
Signale GLEICHZEITIG erzeugen. Das du ohne Probleme 24 io pins als PWM 
Ausgänge umkonfigurieren kannst ist möglich. Du hasst aber maximal nur 6 
compare Einheiten (4 von T0 und 2 von T1), die auch nur 6 verschiedene 
PWM Signale erzeugen können. Das reicht nicht.

Thor
Gast #3068203
Lesenswert?

hallo,

im board hat Simon schon einmal einen bldc mit dem atxmega128a1 gemacht 
der 4 Motoren gesteuert hat.
Da er es für seinen Quadcopter verwendet hat und der Code noch nicht 
sauber ist (laut seiner Webseite), möchte er den Code noch nicht 
veröffentlichen. Davon abgesehen ist schon alleine die Platine recht 
beeindruckend.

bye woodym
Gast #3068417
Lesenswert?

Also wenn ich das Datenblatt richtig verstanden habe, haben die 0-Timer 
4 CC-Kanäle und die 1-Timer 2 CC-Kanäle - zusammen also 6 PWMs pro Port.
Müsste also locker für 4 x 3 Phasen reichen.
Die Frage ist aber, ob man die Phasenweiterschaltung und die Regelung 
schnell genug hinbekommt. Da die Dutycycle-Register der Timer nicht 
hintereinander liegen, kann man mit einer DMA nicht mal die 3 Kanäle 
eines BLDCs ansteuern.
Persönliche Seite #3068481
Lesenswert?

Alex S. schrieb:
> OK, die INs der IR2104 kriegen ihr PWM. Aber auf Px0,1,2,3 liegen nur
> OC0A,B,C,D. Das bedeutet auf jedem 0. bit bzw. 1. bzw. 2. bzw. 3. kommt
> das selbe raus. Wie regelst du da die Motoren einzeln?

Das habe ich jetzt nicht ganz parsen können.

An jedem Port hängen 2 Timer, mit je 4 oder 2 Output-Compare Outputs. 
Der Timer, der an Px0...Px3 liegt hat 4 OCs und auch 4 Compare Register 
um 4 unabhängige PWM einstellen zu können.
Davon brauche ich 3 um die PWM für einen BLDC Motor einstellen zu 
können. Der IR2104 erzeugt dann die Deadtime und steuert die MOSFETs an.

Und die Timer der einzelnen Ports sind natürlich unabhängig.

EDIT: Es ist aber auch schon ein paar Jahre her, als ich das Dingen 
gebaut habe. Ich kann mich also auch nicht mehr an ALLES erinnern ;-)
#3068503
Lesenswert?

Mhh, dann sind die Datenblätter von Atmel sehr missverständlich. Wenn 
man sich die "Pinout and Pinfunctions" im Datenblatt ansieht taucht da 
auf den Ports immer nur

Px0 = OCR0A
Px1 = OCR0B
Px2 = OCR0C
Px3 = OCR0D

auf. Nach bisheriger Namenskonvention bedeutete das, dass sich die 
Compare Einheiten von Timer 0 auf jeden beliebeigen Port multiplexen 
lassen. Aber auch nicht mehr.

Was du sagst ergibt Sinn aber ich suche immer noch vergeblich im 
Datenblatt nach einem konkreten Hinweis. Wo zum Teufel steht das?

Thor

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren