Hallo liebe Gemeinde,
ich bin leider noch nicht dazu gekommen, mich vorzustellen, werde ich aber demnächst nachholen.
Ich versuche gerade mein "Projekt" auf die Beine zu stellen.
Und zwar soll es eine Solar-Batterie-Laderegelung werden, die auch die Gartenbeleuchtung schaltet.
Die Grundfunktion für die Regelung habe ich von hier:
http://www.mikrocontroller.net/topic/46903
Über den ADC prüfe ich, wie hoch die Spannung ist. Je nachdem wie hoch, wird das Panel entweder kurzgeschlossen oder die Last "abgeworfen". Danach lasse ich den AVR schlafen. Der Watchdog lässt den AVR ca alle 8 Sekunden aufwachen.
Soweit funktioniert alles wunder bar. Jetzt wollte ich aber ein Display in die Schaltung integrieren. Nun habe ich das Problem, das wenn eiglentlich der Watchdog einspringen sollte, der AVR ich aufhängt. Das kann man sehr schön sehen, wenn man das Powerdown auskomentiert. Dann ist nämlich nach ca 8 Sekunden Feierabend.
Komentiere ich die LCD-Sachen aus, ist alles normal.
Woran kann das liegen? habe ich was vergessen?
ich bin leider noch nicht dazu gekommen, mich vorzustellen, werde ich aber demnächst nachholen.
Ich versuche gerade mein "Projekt" auf die Beine zu stellen.
Und zwar soll es eine Solar-Batterie-Laderegelung werden, die auch die Gartenbeleuchtung schaltet.
Die Grundfunktion für die Regelung habe ich von hier:
http://www.mikrocontroller.net/topic/46903
Über den ADC prüfe ich, wie hoch die Spannung ist. Je nachdem wie hoch, wird das Panel entweder kurzgeschlossen oder die Last "abgeworfen". Danach lasse ich den AVR schlafen. Der Watchdog lässt den AVR ca alle 8 Sekunden aufwachen.
Soweit funktioniert alles wunder bar. Jetzt wollte ich aber ein Display in die Schaltung integrieren. Nun habe ich das Problem, das wenn eiglentlich der Watchdog einspringen sollte, der AVR ich aufhängt. Das kann man sehr schön sehen, wenn man das Powerdown auskomentiert. Dann ist nämlich nach ca 8 Sekunden Feierabend.
Code:
$regfile = "m88pdef.dat"
$crystal = 3686400
$noramclear
Dim H As Word
Dim I As Integer
Dim Volt As Single
Dim Vernr As String * 4
Ddrc = &B00000000
Ddrd = &B00111100
Fetout Alias Portd.3
Fetin Alias Portd.2
Ledr Alias Portd.4
Ledg Alias Portd.5
Declare Sub Adc1
Declare Sub Schlafen
Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3
Config Adc = Single , Prescaler = 32 , Reference = Avcc
Config Watchdog = 8192
Enable Interrupts
Enable Adc
Start Adc
Start Watchdog
'----------------------------------------------------------
'--------------Initialisierung bereits erfolgt?------------
'----------------------------------------------------------
If Vernr = "V0.3" Then
Print
Else
Vernr = "V0.3"
Print
Print "solarladeregler V0.3 "
Config Lcd = 16 * 2
Initlcd
Cursor Off
Cls
Waitms 100
Lcd "SR v0.3"
Waitms 500
Cls
End If
Do
'Hauptschleife
Call Adc1
Call Schlafen
Loop
End
Sub Adc1:
H = Getadc(0)
For I = 1 To 8
H = H + Getadc(0) 'aktuellen Wert auslesen
H = H / 2
Waitms 50
Next
Print "Wert: " ; H ;
Volt = H * 0.0146484375
Print " Ergebnis: " ; Fusing(volt , "##.##")
'----------------------------------------------------------
'--------------Reglung
'----------------------------------------------------------
If H < 719 Then 'Prüfen ob Spannung unter 719 (10,64)
'Fet Out = AUS , Rot blinkt 1x
Fetout = 0
End If
If H > 812 Then ' Prüfen ob Spannung über 812
Fetout = 1 'FET Out = AN , Rot aus
'Fet IN = AUS , Grün blinkt 1x
End If ' Prüfen ob Ladeschlussspannung unterschritten
If H < 926 Then
Fetin = 0
End If
If H > 938 Then ' Prüfen ob Spannung über 938 (Ladeschlussspannung 13,8V)
Fetin = 1 'Fet IN = AN , Grün blinkt 2x
End If
'----------------------------------------------------------
'----------Ausgabe-----------------------------------------
'----------------------------------------------------------
If Fetout = 0 Then 'Low Battery
Ledr = 1
Waitms 200
Ledr = 0
Print "Low Battery"
End If
If Fetout = 1 And Fetin = 0 Then 'Alles OK
Ledg = 1
Waitms 200
Ledg = 0
Print "Alles OK"
End If
If Fetin = 1 Then 'Ladeschlussspammung ereicht
Ledg = 1
Waitms 200
Ledg = 0
Waitms 200
Ledg = 1
Waitms 200
Ledg = 0
Print "Ladeschlussspannung"
End If
End Sub
Sub Schlafen:
Powerdown
End Sub
Komentiere ich die LCD-Sachen aus, ist alles normal.
Woran kann das liegen? habe ich was vergessen?