für eine Motorkühlungssteuerung in meinem Auto mache ich gerade einen Wandler der das Temperatursignal eines DS18B20 in ein PWM-Signal am Ausgang 5 umwandelt. Soweit funktioniert das auch bis auf die Tatsache dass die Frequenz der PWM für die Steuerung der Autokühlung zu hoch ist.
Im Netz habe ich entdeckt dass sich diese Frequenz mit einem Prescaler senken lässt.
Leider steige ich nicht so ganz dahinter wie ich das bewerkstelligen kann. Kann mir da jemand dabei helfen.
Ach ja es handelt sich um ein Nanno und der Ausgang ist D5.
Vielen Dank
D5 ist ein ungünstiger Ausgang für diesen Zweck. Er nutzt den Timer 0, und Manipulationen an diesem Timer haben Auswirkungen auf millis() und micros(). Besser ist D9 oder D10. Die werden vom Timer 1 gesteuert, der normalerweise frei ist ( wenn keine Lib eingesetzt wird, die ihn verwendet ). Da dies ein 16-Bit Timer ist, lassen sich da auch 100Hz PWM-Signale per Timer-HW erzeugen.
100 Hz und eine PWM-Auflösung von 8 bit sollte auch mit SoftPWM zu machen sein. Dann brauchst du den Timer-Prescaler nicht zu modifizieren. Und könntest sogar einen sonst nicht PWM-fähigen Pin nehmen.
Hi
ich habe jetzt die Zeile: TCCR1B = TCCR1B & B11111000 | B00000100; in void setup(void) eingefügt und es funktioniert.
Die Frequenz ist 122Hz .
Gibt es die Möglichkeit diese näher an 100Hz zu bringen?
Hi comie
ich habs ja schon angewannt und es hat mit 122Hz funktioniert.
leider bin ich des englischem nicht so mächtig dass ich so ein Datenblatt nicht gut genug interpretieren kann also habe ich einen der Links , die mir Uwefed genannt hat , übersetzen lassen und darin die Lösung gefunden.
Irgend was hatte ich noch im Hinterkopf dass man irgendwie den Endwert des Zählers begrenzen kann. Da habe ich mich getäuscht wie ich jetzt festgestellt habe es ist der PWM Wert der damit eingegrenzt wird ( OCR2A = 180;
OCR2B = 50;)
Meinst Du mit Soft PWM damit den Aber jetzt scheint es zu funktionieren und genaueres kann ich erst nach längeren Fahrten sagen.
Würde mich wundern, wenn Dein Arduino während der Fahrt nicht am laufendem band abschmiert - im KFZ sind auf dem Bordnetz übelste Störungen zu erwarten, Die den Arduino aus der Bahn werfen werden.
Wenn Du (zur Not auch nur 'bis Jetzt') ohne Störungen hin gekommen bist - was hast Du gemacht?
Ist vll. für weitere Auto-Automatisierer ganz interessant
Rudi01:
Hi
ich habe jetzt die Zeile: TCCR1B = TCCR1B & B11111000 | B00000100; in void setup(void) eingefügt und es funktioniert.
Die Frequenz ist 122Hz .
Gibt es die Möglichkeit diese näher an 100Hz zu bringen?