Hi,
ich habe mir eine kleine Lüftersteuerung mit einem Mega8 gebastelt. Der Lüfter wird über einen FET, dessen Gate an Pin 28 des Megas hängt. Ein - und Ausschalten ist überhaupt kein Problem. Der Lüfter soll aber auch in seiner Drehzahl geregelt werden können. Da dies an diesem Port nur per Software möglich ist, und die Hardware PWM - Pins bereits belegt sind, wollte ich das mit Basom so machen:
Code:'-------------------------------------------------------------------------------------' 'nessesary definitons: ' '-------------------------------------------------------------------------------------' $regfile = "m8def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 $baud = 9600 Config Portc.5 = Output Config Timer1 = Timer , Prescale = 1 On Timer1 Pwm Enable Timer1 Start Timer1 Enable Interrupts '-------------------------------------------------------------------------------------' 'dimensioned variables: ' '-------------------------------------------------------------------------------------' Dim Rate As Long Dim Ratemin As Integer Dim Ratemax As Integer 'Ratemin = 330 'minimum PWM - rate 'Ratemax = 1500 'maximum PWM - rate Do Rate = 0 Loop '-------------------------------------------------------------------------------------' 'sub routine for generating PWM signal ' '-------------------------------------------------------------------------------------' Pwm: Toggle Portc.5 Waitus 1 Timer0 = Rate Return
Die Idee dahinter ist folgende: wenn der Rate-Wert (also die gewünschte Drehzahl des Lüfters, die Länge des High-Impulses) kleiner ist, wird dem Timer ein kleiner Startwert mitgegeben, folglich braucht er länger, bis er überläuft und somit ist die Länge des Pulses eine größere.
Allerdings merke ich überhaupt keinen Unterschied in der Drehzahl meines Lüfters, bzw. in der Helligkeit einer LED, die ich zur Kontrolle ebenfalls am gleichen Port angeschlossen habe.
Wird der Prescaler auf 8 gesetzt, blinkt die LED merklich im Abstand von einigen ms, aber auch hier ist kein Unterschied in der Frequenz merkbar, wenn der Wert für Rate verändert wird.
Habt ihr eine Lösung für dieses Verhalten?
Viele Grüße
ikarus_177







Zitieren

Lesezeichen