Forum: Mikrocontroller und Digitale Elektronik 3 x PWM ATmega8


von Matthias (Gast)


Lesenswert?

Hallo, bin grad am verzweifeln...

ist es möglich mit einem ATmega8 per Hard-PWM 3 um 120° versetzte Phasen 
mit einer PWM Frequenz über 22kHz zu generieren??

Danke für jede Hilfe

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Hm... ich wuerd sagen fuer HW-PWM brauchste nen 16-Bit-Timer wovon der 
Mega8 nur einen hat, d.h. also nein.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

ATtinyX4 oder ATtinyX61 können das, vermutlich (habe aber die
Frequenz jetzt nicht nachgeguckt) auch alle AT90PWM*.

von wurpfel (Gast)


Lesenswert?

Ja, du benötigst ja nur EINEN timer..
der vorgang der phasen-schalterei bezüglich der rotorposition ist fix.
auch für 12345 phasen ;)



3ph-motoren wurden früher mit logik-gatter (diodennetzwerk) 
kommutiert/betrieben.




schaue dir die ATMEL APNotes 441 und folgende an.

von wurpfel (Gast)


Lesenswert?

sorry, noch ein nachtrag:
ohne deine zieldrehzahl zu kennen ist eine aussage nicht möglich.

der ATm sollte bei 50Hz (3k umin) zieldrehzahl mindestens mit
50*22*3 (kHz) oder 3,3MHz getaktet sein. mehr als ein vorteiler von 4 
liegt also nicht drin!

dein code sollte schon recht kompakt sein...

von Matthias (Gast)


Lesenswert?

Die AppNotes hab ich mir schon angeschaut. Da is aber nich das richtige 
dabei, in den Appnotes sind immer Regelungen mit integriert bei den 
Motorsteuerung...

ich hingegen will nur 3x Sinus erzeugen...

von Matthias (Gast)


Lesenswert?

Zieldrehzahl liegt bei ca 5-10 Hz

von Matthias (Gast)


Lesenswert?

Sorry... Zielfrequenz ;)

von Jörg X. (Gast)


Lesenswert?

Aber die Atmega48/88/168 können das vielleicht -- sind auch 
pinkompatibel.
Du willst ja wohl sowas machen, wie Atmel in der Appnote AVR447 
"Sinusoidal driving of three-phase permanent magnet motor using 
ATmega48/88/168".

hth. Jörg

von Matthias (Gast)


Lesenswert?

Die Appnotes sind immer zu genau auf BLDC-Motoren zugeschneidert, ich 
will jedoch einen Linearmotor nach Langstator-Prinzip ansteuern, was ja 
im Prinzip nichts anderes ist als ein "aufgerollter" Synchronmotor. Die 
Treiberstufe ist schon fertig aufgebaut, benötige also nur an 3 PINS am 
Ausgang ein PWM Signal mit min. 22kHz also nicht im hörbaren Bereich, 
das mir ein Sinussignal erzeugt.

von Jörg X. (Gast)


Lesenswert?

... und ein BLDC-Motor ist ein (vermarketing'ter) Synchronmotor 
(üblicherweise inkl. Ansteuerung), oder?

und die 22kHz sind zumindest als 8-Bit PWM machbar:
- 22000Hz * 256 ~ 5,6 MHz (8bit-Fastpwm)
- 22000Hz * 512 ~ 12MHz (8Bit Phase/Frequency correct)
(31.2KHz, bei 16MHz AVR-Takt)

Jetzt musst du weitermachen, ich glaube die Linearmotoren sind nicht soo 
weit verbreitet (Außerdem darfst du auch eigenen Code benutzen, du 
musst ja nicht nur den aus der Appnote verwenden ;) )
hth. Jörg

ps.: Optimal für den Job wäre ja wohl ein at90PWM
pps.: bei atmel http://www.atmel.com/products/AVR/mc/?family_id=607 
gibts noch mehr inspirationen (die beste Quelle wäre der 
Motorhersteller)

von wurpfel (Gast)


Lesenswert?

hi leutz


auch bei einem linearmotor ist die abfolge der kommutierung FIX:
zuerst A+B, dann -A+C usw.
sonst bewegt sich der etwas ruckartig bzw unsynchron ;)


es ist nicht notwendig/sinnvoll jede phase individiuell anzusteuern.


wie löst du das problem der positionserkennung?
ohne regelstrecke kummulieren sich fehler und der läufer bleibt (mit 
lautem quieken) stehen..






wenn du nur drei pins beschaltest wirst du keine vollwelle schalten 
können, der motor ist dann eher ein stepper.. das ist von der 
lageerkennung einfacher aber wozu dann der aufwand mit 22kHz PWM ;)

von Axel D. (axel_jeromin) Benutzerseite


Angehängte Dateien:

Lesenswert?

22Khz Pulsfrequenz für 5-10 Hz Ausgangsfrequrnz halte ich für 
übertrieben.

Habe was für eien Mega88 und Raumzeigermodulation in Einsatz.

Schau mal rein.

Axel

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.