Bist du mit WGM12 und WGM13 nicht wieder bei Fast-PWM. Du könntest auch von 10bit auf 9bit zurückgehen dann würde sich die PWM-Frequenz verdoppeln. Wie hoch soll deine PWM-Frequenz denn sein?
Wenn die Frequenz zu gering ist, liegt das entweder am Oszillator oder am Prescaler (vermutlich letzteres). Glaube den ändert man mit den CS1X Bits.
Bist du mit WGM12 und WGM13 nicht wieder bei Fast-PWM. Du könntest auch von 10bit auf 9bit zurückgehen dann würde sich die PWM-Frequenz verdoppeln. Wie hoch soll deine PWM-Frequenz denn sein?
So, bei mir ist der Durchbruch gelungen
Jetzt hab ich die ganze Registerfummelei endlich durchblickt. Habe jetzt beide PWM-Pins am Counter1 aktivieren und für meine Zwecke konfigurieren können. Letztendlich lag es daran, dass die Angaben für COM1Bx gefehlt haben.
Was untenstehender Code tut, ist dokumentiert. Mir reicht im Gegensatz zu Ozzy 8-bit PWM, daher ist die Konfig etwas anders. Die OCR1x Register geben an, ab wann der Pin auf Low gelegt wird (also je höher der Wert, desto länger liegt HIGH an). Was ganz praktisch ist beim Testen: Prescaler auf 1024 stellen, dann kann man die LED schon blinken sehen
Ich teste das jedoch mit einem Motor (mit nem L293d) und der macht komische Summgeräusche, wenn ich den Prescaler z.B. auf /8 setze. Bei /64 hört man jedoch kräftigere Vibrationen. Ist das normal oder gibts da nen Trick dagegen?
Code:DDRB |= (1<<PB1)|(1<<PB2); // Port B1/B2 als Ausgang TCCR1A = (1<<COM1A1)|(0<<COM1A0)| // PB1 auf low, wenn TOP1 (->OCR1A) erreicht (1<<COM1B1)|(0<<COM1B0)| // PB2 auf low, wenn TOP2 (->OCR1B) erreicht (0<<WGM11)|(1<<WGM10); // PWM, phase correct, 8 bit TCCR1B = (0<<CS12)|(1<<CS11)|(1<<CS10); // Prescaler auf /64 OCR1A=127; // On-Zeit für PB1 OCR1B=30; // On-Zeit für PB2
Mit der PWM schaltest du den Motor ja dauernd ein und aus, das sind die Geräusche. 3kHz PWM-Frequenz sind angeblich ideal, ich habe mich mal ein bisschen gespielt damit im Bereich von 500Hz bis 3kHz und konnte ausser den Geräuschen keine Änderung feststellen, man würde da wahrscheinlich einen Leistungsprüfstand benötigen um etwas konkret festestellen zu können. Ausserdem wird auch zwischen den Motoren ein Unterschied sein.
Danke für's Feedback. Wäre es nicht möglich, die Rechtecksignale etwas zu glätten? Wie macht man das Schaltungstechnisch am einfachsten? Elko gegen Masse, oder ist der nicht schnell genug? Kapazität?
*Edit: Habe gerade das hier gefunden:
http://www.mikrocontroller.net/artic...ndlung_mit_PWM
Scheint nicht ganz so einfach zu sein, wenn man das sauber machen will...
Ich würde versuchen die PWM-Frequenz in einen Bereich zu legen in dem sie nicht so stört. Alles andere bringt nur zusätzliche Verluste und keinen weiteren positiven Effekt.
Lesezeichen