Hallo,
nach einem tieferen Blick in die Motorsteuerung vom RP6 komme ich ins stutzen...
Dort wird FastPWM mit Vorteiler 1 und einem ICR1 von 210 aufgesetzt, OCR1xL legt dann das Pulsverhältnis fest.
Das soll dann eine PWM Frequenz von 19KHz ergeben denn ICR1 legt zusammen mit dem Vorteiler 1 ja die komplette Impulslänge fest.
Für Dummies wie mich wird das hier: http://www.avrfreaks.net/index.php?n...=78780&start=0 auch noch mal genau beschrieben.
Code:
1. Look at table "Waveform Generation Mode Bit Description" in Timer1 section of the datasheet. Pwm mode is chosen with bits WGM13:10. Let us set mode 14, fast pwm.
Code:
TCCR1A.WGM10 = 1
TCCR1A.WGM11 = 1
TCCR1B.WGM12 = 1
TCCR1B.WGM13 = 0
In the same table you can see TOP=ICRn. We use timer1, so Top will be ICR1.
2. Set frequency.
Timer with no prescaler inrements in every period of the oscillator frequency (20 MHz here).
40 kHz is 500 times less than 20 MHz. So we need 500 steps of timer for 1 period of 40 kHz signal.
Code:
ICR1 = 500
.
3. Set duty cycle 25%.
See table "Compare Output Mode, Fast PWM".
Here we set levels of the output.
Use "Clear OCnA/OCnB on Compare Match, set OCnA/OCnB at BOTTOM".
Duty cycle is set with output compare register OCR1A.
Code:
TCCR1A.COM1A1 = 1
TCCR1A.COM1A0 = 0
OCR1A = 125 ( = 25% of ICR1)
The frequency output is on the pin OC1A.
4. Set OC1A as output and start timer1.
Code:
DDRD.5 = 1
TCCR1B.CS10 = 1
Function:
Timer1 starts counting from 0. OC1A is high.
After timer reaches value of OCR1A, OC1A goes low.
After timer reaches value of ICR1 (Top), timer resets and OC1A goes high.
Berechne ich aber die üblichen 8MHz und ICR1 = 210 mit diesem Beispiel, komme ich auf ca. 38 khz .. und nicht 19 Khz.
Für 19 KHz bzw. 19000 pwm Zyklen/sec müsste ICR1 = 421 haben denn 421x19KHz ergibt 7999000... nicht 210x19KHz
Meine Frage daher.. ist das Beispiel da falsch, hab ich mich wo verrechnet... oder läuft unsere MotorPWM tatsächlich mit 38KHz statt mit 19 KHz wie in der Docu beschrieben?
Irgendwie sieht mir das eher nach einer Steuerung zum dimmen von LEDs aus, muss die Frequenz tatsächlich so hoch sein?
Werden die Motoren dadurch nicht zu Ultraschallquellen? Reichen PWM Frequenzen von 50-400 Hz nicht auch aus? (selbst auf die Gefahr hin, das die Motoren dann "brummen" oder "singen" wie z.B. moderne Eloks es auch tuen)
Für Motoren mit kleinen Induktivitäten wie unsere braucht man grundsätzlich hohe Frequenzen? Das ist so die Schlußfolgerung, die ich aus diversen Beiträgen rauslese.. dort spricht man aber üblicherweise von 8-16 und max 32 khz.
Ich wüsste halt gerne, ob man die Motor PWM Taktung runter setzen und dann ggf. durch eine SoftwarePWM laufen lassen kann.
http://www.mikrocontroller.net/articles/Soft-PWM
Für so hohe Frequenzen ist das jedoch recht ineffizient.
LG Rolf
Lesezeichen