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
kleiner Nachtrag: die ATxmegaxxA1 besitzen ja 24 PWM und 78 ext. Interrupt-Pins. würde es nicht damit mögl. sein 4 zu steuern, da man ja für jeden BLDC 4PWM und 3 Int's braucht? Grüße, Erny
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
Hi Thor, Ich Meinte 4 Bldc's an einem ;) und 6PWM Kanäle. Da hab ich mich verschrieben ^^ Na nach meiner Rechnung sind das für 4BLDC 4x4 ADC =16 und 4x6 PWM = 24 und die paar io Pins sind danns sicher auch kein prob oder ? ( für den A1) http://www.atmel.com/Images/doc8067.pdf Oder übersehe ich da was ? Grüße Erny
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...
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
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!)
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
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
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.
Hier noch ein Schaltplanausschnitt dazu. Ich kann nur nicht mehr den geflickten Draht, der quer über den Prozessor geht zuordnen. Alles da, genug PWM und 4 Komparatoren. Achso, MOSFET Treiber waren IR2104 (IN/SD Eingänge) und MOSFETs IRLR7843. Die PWM liegt also an Px0...Px2
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? Thor
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 ;-)
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
Alex S. schrieb: > 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 Zeig mal ein solches Datenblatt her. Da hatte ich eigentlich noch nie Missverständnisse mit.
Seh da keine Probleme: Px0 = OCR Timer 0 Register A Es gibt auf -fast- jedem Port beim XMega (außer ADC und keine vollen 8 Bit Ports) einen Timer 0 und Timer 1... Man halt tatsächlich soviel PWM Pins wie auf der Hersteller-Seite angepriesen sind ;) Grüße Basti
Naja, bei den mega AVRs werden die timer halt mit timer 0, timer 1, timer 2, timer 3 bis timer x durchgezählt. Das es bei den xmega mehrere "timer 0" gibt wahr nicht so direkt ersichtlich. Aber dann ist das ja jetzt geklährt. Thor
Ah, und @Simon: Das "ATxmega64A1/128A1/192A1/256A1/384A1 Preliminary" (und alle andere für den Prozessor verfügbare Doku) (http://www.atmel.com/Images/doc8067.pdf). Kapitel 29.2 Tabellen 29-3 bis 29-6. Es immer nur die Rede von OCR0A,B,C,D. Das das verschiedene timer sind wird daraus nicht direkt ersichtlich. Thor
Alex S. schrieb: > Naja, bei den mega AVRs werden die timer halt mit timer 0, timer 1, > timer 2, timer 3 bis timer x durchgezählt. Das es bei den xmega mehrere > "timer 0" gibt wahr nicht so direkt ersichtlich. > > Aber dann ist das ja jetzt geklährt. > Thor Achso, ja das steht in der Spaltenüberschrift des Ports dran. TCC0, TCD0, usw.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.