PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM Geschwindigkeit läßt sich nicht regeln



Frostie
19.04.2006, 00:55
Hallo,

ich habe folgendes Programm für meinen ATMEGA8:



void pwm2(void){
TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<COM1A0) | (1<<COM1B0) | (1<<WGM11)|(1<<WGM10); // 10 Bit Pwm, invertierend
TCCR1B = (1<<CS11); // Prescaler 8
// Ausgänge für PWM
PORTB &= ~(( 1 << PB0 )| ( 1 << PB1 )); // Motor an Port PB0 und PB1 aus
OCR1A=1; // Mindestzeit für PWM1
OCR1B=1; // Mindestzeit für PWM2
// und in Ausgangswerte setzen
}

void MotorSpeed(unsigned int left_speed, unsigned int right_speed)
{
PORTB &= ~(( 1 << PB0 )| ( 1 << PB1 )); // Motor an Port PB0 und PB1 aus
OCR1A = left_speed;
OCR1B = right_speed;
PORTB |= (( 1 << PB0 )| ( 1 << PB1 )); // Motor an Port PB0 und PB1 aus
}


Das main siht in etwa so aus:


int main(void)
{

pwm2();

// Endlosschleife
while (1)

{

MotorSpeed( 64, 128);

}

}

Jetzt zu meiner Frage, der Motor dreht sich , aber leider reagiert er auf keine Wertänderungen bei MotorSpeed! nur bei 1 und 1024 bleibt er stehen, aber bei allen werten dazwischen dreht er immer gleich.
Was mache ich falsch??
Danke

Gruß
Fostie

ogni42
19.04.2006, 09:27
Du schaltest in der Endlosschleife in Main() den Motor ständig an und aus, so bekommt der keinen Strom.

Lass mal in MotorSpeed das aus und anschalten des Motors weg, dann sollte es klappen. Ist ohnehin nicht nötig, da die neuen PWM Werte erst beim nächsten PWM Zyklus übernommen werden.

Frostie
19.04.2006, 12:22
Stimmt,

aber es geht auch dann nicht!

Aber ich glaub ich hab ein anderes Problem.

Wenn ich in meinem Program Speed ändere ändere ich ja die Spannung.

Ich habe aber am Ausgang eine Schrittmotorsteuerung hängen und will nicht die Spannung sondern die Abstände der Spannungen ändern.

Da muß ich wohl einen anderen Wert ändern, aber welchen?

Danke
Gruß
Frostie

ogni42
19.04.2006, 13:11
Was für eine Steuerung ist das denn L297 (s. wiki) funktioniert nicht mit PWM.

Frostie
20.04.2006, 08:51
Sollte zwar schon mit PWM gehen, habs jetzt aber über nen Timer gelöst.

Danke an alle!

Gruß
Frostie