'Mega8 intern 1Mhz
'KTY81-120 Temperaturfühler
$regfile = "m8def.dat"
$crystal = 8000000 'Externes Quarz Mhz
$framesize = 128
$hwstack = 128
$swstack = 30
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
Config Lcd = 16 * 2
Initlcd
Cursor Off
Cls
Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32 ' LCD-Sonderzeichen
Dim W0 As Word
Dim W1 As Word
Dim W2 As Word
Dim Volt As Single
Dim Licht As Single
Dim V As Single
Const Adc_multi = 0.004887585533
Const Refer = 1.9600 '1.1593 Fühler Konstante bei 0°C
Config Adc = Single , Prescaler = Auto , Reference = Avcc ' interen 5V
Config Portb = Output
Relais Alias Portd.5 'Ausgang für Untersp.
Ddrc.0 = 0 'AD Eingang für Mess
Ddrc.1 = 0 'AD Eingang für Temp
Ddrc.2 = 0 'AD Eingang für Licht
Ddrd.5 = 1
Do
Start Adc
W0 = Getadc(0) ' auslesen des Span ADC0
W1 = Getadc(1) ' auslesen des Temp ADC1
W2 = Getadc(2) ' auslesen des Licht ADC2
Stop Adc
Volt = W0 * Adc_multi '5/1023 = 0.0048 Volt 10 Bit AD converter
Volt = Volt * 2.73 '2,73 Faktor vom Spannungsteiler
Volt = W0 * 0.014298
Licht = W2
V = W1 * Adc_multi '5/1023 = 0.0048 Volt 10 Bit AD converter
V = V - Refer
V = V / 0.0077125 ' 0.0077125 fühler konstante pro grad °C
V = V + 2 '2te möglichkeit den fühler abzugleichen
If Volt > 12.8 And Licht > 900 And Relais = 0 Then Relais = 1
If Volt < 11.0 Then Relais = 0 'Relais schaltet ab
If Licht < 850 Then Relais = 0 '0-1023 bereich Relais schaltet ab
'------- LCD ANZEIGE-----------------------------------------------------------
Locate 1 , 1
Lcd "Volt " ; Fusing(volt , "##.#")
Waitms 100
If Volt < 11.0 Then ' ANZEIGE am LCD= voll oder leer
Locate 2 , 1
Lcd "Accu Leer"
Else
End If
If Volt > 13.5 Then
Locate 2 , 1
Lcd "Accu Voll"
Else
End If
Locate 1 , 11
Lcd Fusing(v , "#.#") ; Chr(0) ; "C" ' ANZEIGE am LCD= Temperatur
Wait 1
'anzeige nur bei W0-W2
'Locate 2 , 12
'Lcd W0
'Locate 2 , 16
'Lcd W2
Loop
End