Hallo Leute,

hab mal wieder ein BASCOM-Problem. Und zwar geht es um eine Temperaturregelung mit einem Attiny85. Geregelt werden soll eine Heizfolie, welche über einen MOSFET an OCR0 hängt. Die Ist-Temperatur der Folie wird durch einen LM35 erfasst, welcher 10 mV/°C ausgibt. Die Solltemperatur habe ich in meinem Programm mal mit 35 °C angegeben, davon soll die Isttemperatur abgezogen werden und daraus der Wert für die PWM berechnet werden. Der PWM-Wert soll 255 betragen, also voll heizen, bis die Temperaturdifferenz kleiner als 5 °C wird. Dann woll der PWM-Wert reduziert werden (deshalb auch das Ausgang = Tempdiff * 51). Außerdem habe ich noch einen Unterspannungsalarm mit einer LED eingebaut, welcher beim unterschreiten einer bestimmten Spannung zu leuchten beginnt.
Nun zu meinem Problem: Der Unterspannungsalarm funktioniert, aber bei der Temperaturregelung funktionier irgendetwas nicht. Am PWM-Pin kommt irgendwie nix an. Bin nicht so der BASCOM-Experte, aber vielleicht kann mir ja von euch jemand weiterhelfen.

Hab mal mein Programm für euch angehängt


Code:
'Heizfolien-Temperaturregler
'Heizfolie mit FET an OCR1 (PB1)
'Temperatursensor LM35 an ADC2 (PB4)
'Spannungsmessung an ADC3 (PB3)
'Spannungsanzeige LED an PB2



$regfile = "attiny85.dat"
$crystal = 8000000



Dim U As Word                                           'Spannungsteiler Vcc--> 4,7 k --> ADC3 --> 2,2 k --> Gnd'
Dim Temp As Word                                            'LM35 an ADC2, gibt 10 mV/°C aus
Dim Tempdiff As Single
Dim Ausgang As Word
Dim Channel As Byte
Channel = 0
Config Portb.2 = Output                                     'Spannungsanzeige LED
Config Portb.1 = Output                                     'Ausgang für Heizfolie
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down
Const Faktor = 5 / 1023
Do

Start Adc
U = Getadc(3)
Temp = Getadc(2)

Stop Adc

If U < 705 Then                                             'LED an, wenn Spannung unter 10,8 V
Portb.2 = 1
Else
Portb.2 = 0
End If

Temp = Temp * Faktor                                        'Umrechnung ADC-wert Temp in °C
Temp = Temp / 0.01

Tempdiff = 35 - Temp                                        'Berechnung Temperaturdifferenz  (Solltemperatur 35 °C)

Ausgang = Tempdiff * 51                                     'Berechnung des PWM-Ausgangs für die Heizfolie

If Ausgang > 255 Then
Ausgang = 255
End If
If Ausgang < 0 Then
Ausgang = 0
End If
Compare0a = Ausgang


Loop

End