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
Hm... ich wuerd sagen fuer HW-PWM brauchste nen 16-Bit-Timer wovon der Mega8 nur einen hat, d.h. also nein.
ATtinyX4 oder ATtinyX61 können das, vermutlich (habe aber die Frequenz jetzt nicht nachgeguckt) auch alle AT90PWM*.
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.
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...
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...
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
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.
... 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)
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 ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.