- Registriert
- 08.08.2007
- Beiträge
- 1.949
Hallo,
ich programmiere gerade den Kettenregler für meinen Semovente.
Als Prozessor ist ein Arduino Nano vorgesehen (später vielleicht mal der Mini). Als Regler für die Gleichstrommotoren habe ich 2 Stück VNH2SP30 genommen. PWM signal nehme ich von PB1 (Pin 9) und PB2 (Pin 10).
Das läuft soweit, allerdings möchte ich die PWM Frequenz ändern. Geht mit dem TCCR1B Register
TCCR1B = B00000001; mit den 3 Bits kann ich den Teiler einstellen, hier ist der Teiler 1 = 31.372 Hz
kann man auch so programmieren:
TCCR1B = _BV(CS10);
Setz ich den Teiler auf 8
TCCR1B = B00000010; mit den 3 Bits kann ich den Teiler einstellen, hier ist der Teiler 1 = 3921 Hz
kann man auch so programmieren:
TCCR1B = _BV(CS11);
Wenn ich eine andere Frequenz haben möchte, dann muss ich auch das TCCR1A Register anfassen.
hier für 15623 Hz
TCCR1A = B01100011; non-inverted Mode, WGM11 & WGM10
TCCR1B = B00001001; WGM12 -> Fast PWM mit max 1023 Schritten
OCRA1A =512,
OCRA1B = 512;
Ich habe da noch diverse andere Einstellungen probiert, leider ohne Erfolg.
über die Einstellung WGM12=1 toogle OC1A on compare Match, sollte man eigentlich zusammen mit dem OCR1A Wert eine Einstellung hinbekommen die bei 10 kHz liegt, so hab ich das wenigsten verstanden. Irgendwie ist da noch der Wurm drin.
Ich habe mich schon mit diversen Einstellungen probiert und auch so manches Tutorial gelesen, also bitte keinen Link zu einer ganz tollen Seite, sondern nur einen kurzen Vorschalg wie man das lösen kann.
ich programmiere gerade den Kettenregler für meinen Semovente.
Als Prozessor ist ein Arduino Nano vorgesehen (später vielleicht mal der Mini). Als Regler für die Gleichstrommotoren habe ich 2 Stück VNH2SP30 genommen. PWM signal nehme ich von PB1 (Pin 9) und PB2 (Pin 10).
Das läuft soweit, allerdings möchte ich die PWM Frequenz ändern. Geht mit dem TCCR1B Register
TCCR1B = B00000001; mit den 3 Bits kann ich den Teiler einstellen, hier ist der Teiler 1 = 31.372 Hz
kann man auch so programmieren:
TCCR1B = _BV(CS10);
Setz ich den Teiler auf 8
TCCR1B = B00000010; mit den 3 Bits kann ich den Teiler einstellen, hier ist der Teiler 1 = 3921 Hz
kann man auch so programmieren:
TCCR1B = _BV(CS11);
Wenn ich eine andere Frequenz haben möchte, dann muss ich auch das TCCR1A Register anfassen.
hier für 15623 Hz
TCCR1A = B01100011; non-inverted Mode, WGM11 & WGM10
TCCR1B = B00001001; WGM12 -> Fast PWM mit max 1023 Schritten
OCRA1A =512,
OCRA1B = 512;
Ich habe da noch diverse andere Einstellungen probiert, leider ohne Erfolg.
über die Einstellung WGM12=1 toogle OC1A on compare Match, sollte man eigentlich zusammen mit dem OCR1A Wert eine Einstellung hinbekommen die bei 10 kHz liegt, so hab ich das wenigsten verstanden. Irgendwie ist da noch der Wurm drin.
Ich habe mich schon mit diversen Einstellungen probiert und auch so manches Tutorial gelesen, also bitte keinen Link zu einer ganz tollen Seite, sondern nur einen kurzen Vorschalg wie man das lösen kann.