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







Zitieren
Lesezeichen