Hallo Forum!
Da ich momentan irgendwie einen geistigen Hänger habe, benötige ich eure Hilfe.
Es geht wie oben benannt um das Thema PWM (mal wieder...). OK, ich habe einiges bereits dazu gelesen. Prinzipiell weiß ich auch was PWM bedeutet und wie es funktioniert. Habe auch schon eine kleine Elektronik entwickelt und angefertigt, wo ich eine PWM mit fpwm von ca. 250Hz über einen FET erzeuge.
Soweit so gut, aber jetzt müsste ich diese Box so modifizieren, dass ich mit Hilfer eines Drehschalters unterschiedliche PWM-Frequenzen erzeugen kann. Folgende Frequenzen [Hz] sollten möglich sein:
Schalterstellung: Ausgabefrequenz:
1 => f1: 50
2 => f2: 100
3 => f3: 140
4 => f4: 250 (und nicht 244,...)
5 => f5: 1k
Die gewählte Frequenz wollte ich über einen Drehschalter wählbar machen, also die gewählte Schalterposition durch den µC abfragen - das habe ich irgendwann so auch schon mal gemacht.
Aber wie kann ich jetzt die o.g. PWM-Frequenzen (möglichst genau) erzeugen. Ich weiß, dass man zwischen Software-PWM und einer Hardware-PWM unterscheidet. Die Vor- und Nachteile sind mir auch bekannt.
Bei meiner o.g. PWM-Elektronik hatte ich die Hardware-PWM genutzt. Hatte mit einem 4MHz-Quarz und der folgenden Timer-Einstellung gearbeitet:
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8
Ergebnis: fpwm = 244,... Hz -> Ziel war eigentlich exakt 250Hz !
Hatte mich damit zufrieden gegeben.
Wenn ich doch richtig liege, müsste ich den Quarz verändern - wenn ich den Prescaler verändere, bin ich zu weit von meiner Wunschfrequenz weg - oder?
Jetzt habe ich mir das mit der Software-PWM mal angesehen. Aber irgendwie verstehe ich da etwas nicht (mehr)...
Hatte gedacht, dass ich den Timer1 als Timer arbeiten lasse und mit dem Compare1 ihn so einstelle, dass die gewünschte Frequenz (z.B. 140Hz) erzeugt wird. Gesagt getan, ein kuzes Testprog erstellt und die Frequenz mit einem Oszi nachgemessen - Ergebnis: fout = 140, 03Hz.
Super dachte ich, jetzt muss ich doch nur noch das Tastverhältnis ändern, aber irgendwie klappt das nicht (mehr) - muss wohl doch mal eher in schlafen gehen
Könntet ihr mir einen Tipp geben?
DANKE !
MfG
FreeVee
Da ich momentan irgendwie einen geistigen Hänger habe, benötige ich eure Hilfe.
Es geht wie oben benannt um das Thema PWM (mal wieder...). OK, ich habe einiges bereits dazu gelesen. Prinzipiell weiß ich auch was PWM bedeutet und wie es funktioniert. Habe auch schon eine kleine Elektronik entwickelt und angefertigt, wo ich eine PWM mit fpwm von ca. 250Hz über einen FET erzeuge.
Soweit so gut, aber jetzt müsste ich diese Box so modifizieren, dass ich mit Hilfer eines Drehschalters unterschiedliche PWM-Frequenzen erzeugen kann. Folgende Frequenzen [Hz] sollten möglich sein:
Schalterstellung: Ausgabefrequenz:
1 => f1: 50
2 => f2: 100
3 => f3: 140
4 => f4: 250 (und nicht 244,...)
5 => f5: 1k
Die gewählte Frequenz wollte ich über einen Drehschalter wählbar machen, also die gewählte Schalterposition durch den µC abfragen - das habe ich irgendwann so auch schon mal gemacht.
Aber wie kann ich jetzt die o.g. PWM-Frequenzen (möglichst genau) erzeugen. Ich weiß, dass man zwischen Software-PWM und einer Hardware-PWM unterscheidet. Die Vor- und Nachteile sind mir auch bekannt.
Bei meiner o.g. PWM-Elektronik hatte ich die Hardware-PWM genutzt. Hatte mit einem 4MHz-Quarz und der folgenden Timer-Einstellung gearbeitet:
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8
Ergebnis: fpwm = 244,... Hz -> Ziel war eigentlich exakt 250Hz !
Hatte mich damit zufrieden gegeben.
Wenn ich doch richtig liege, müsste ich den Quarz verändern - wenn ich den Prescaler verändere, bin ich zu weit von meiner Wunschfrequenz weg - oder?
Jetzt habe ich mir das mit der Software-PWM mal angesehen. Aber irgendwie verstehe ich da etwas nicht (mehr)...
Hatte gedacht, dass ich den Timer1 als Timer arbeiten lasse und mit dem Compare1 ihn so einstelle, dass die gewünschte Frequenz (z.B. 140Hz) erzeugt wird. Gesagt getan, ein kuzes Testprog erstellt und die Frequenz mit einem Oszi nachgemessen - Ergebnis: fout = 140, 03Hz.
Super dachte ich, jetzt muss ich doch nur noch das Tastverhältnis ändern, aber irgendwie klappt das nicht (mehr) - muss wohl doch mal eher in schlafen gehen
Könntet ihr mir einen Tipp geben?
DANKE !
MfG
FreeVee