Pb-Akku Solar-Laderegler mit ATTINY13

Bei diesem Projekt handelt es sich schon um ein älteres Projekt aus dem Jahr 2009. Ich nutze hier 2 N-Kanal MOSFETs und einen  ATTINY13 um einen 12V Pb-Akku mit Hilfe einer 12V Solarzelle zu laden. Die Schaltung und Software habe ich zur Veröffentlichung auf den aktuellen Stand gebracht.

Basieren tut dieses Projekt auf einer Idee von Dirk Wiebel aus dem mikrocontroller.net Forum, Link: http://www.mikrocontroller.net/topic/46903

Pb-AKKU-Lader-Schaltplan-300x205 Pb-Akku Solar-Laderegler mit ATTINY13

 

Zum PDF-Download bitte auf das Bild klicken!

 

 

 

Die Funktion ist recht einfach, die Spannung der Solarzelle wird über eine Diode an den Akku weiter geleitet, über einen Spannungsteiler gelangt diese Spannung an den ADC des  ATTINY der bei erreichen der Ladeschlussspannung am Akku die Solarzelle einfach über den IRLZ34N kurz schließt. Sinkt die Spannung unter einen, in der Bascom Software einstellbaren, Wert wir die Solarzelle wieder zugeschaltet.

Analog dazu wird die Last bei unterschreiten einer einstellbaren Spannung vom Akku getrennt. Erreicht die Spannung dann durch die erneute Aufladung wieder eine bestimmte Schwelle wird die Last wieder zugeschaltet.

Diese Schaltung nutze ich in verschiedenen Projekten, einer Wetterstation im Garten,  dem ESP8266 Briefkasten Postmelder u.v.a..m.

Hier das Programm für den ATTINY13 (Bascom):

'Solar-Lader für 12V PB-Akkus mit Lastabschaltung
'
'Mikrocontroller: Attiny13(A)
'
'Software Version: 1.0 02/2015
'
'Programmiert von Thomas Heldt, Karlsbad (Germany)
'
'Frei zur nicht kommerziellen Nutzung
'
'Platine und Bausatz erhältlich bei www.it-wns.de
'
'Taktquelle ist der interne 9,6MHz Takt, die Clkdiv/8
'Fuse muss gesetzt sein. Der Watchdog darf nicht
'über die Fuses aktiviert sein!

'Der Attiny13(A) wird genutzt
$regfile = "ATtiny13a.dat"
'$regfile = "ATtiny13.dat"    ' Für alte ATTINY13-20PU

'Interner 9,6Mhz Takt / 8 = 1,2MHz
$crystal = 1200000

$hwstack = 10
$swstack = 10
$framesize = 10

'Variablen dimensionieren
Dim Adcwert As Word
Dim I As Byte

'Konstanten festlegen
Const Abtrennen = 0
Const Zuschalten = 1
Const Kurzgeschlossen = 1
Const Zugeschaltet = 0
Const An = 1
Const Aus = 0
Const Schlafdauer = &B11110000                              '<-8 Sekunden &B11110001<-4 Sekunden
Const Debugging = 1                                         '<-0 = Keine Debugausgaben, 1 = Debugausgaben über UART

'Schwellwerte als Konstanten festlegen (Ggf. an Akku anpassen)

'Spannungsteiler 12K (R1) / 5K6 (R2) = Neue Version (Chip Kennzeichnung N)
Const Ladestartspannung = 883                               '13,6V
Const Entladestartspannung = 726                            '11,3V
Const Ladeschlussspannung = 897                             '13,8V
Const Entladeschlussspannung = 704                          '10,8V

'Spannungsteiler 47K (R1) / 3K3 (R2) = Alte Version (Chip Kennzeichnung A)
'Const Ladestartspannung = 180                               '13,6V
'Const Entladestartspannung = 150                            '11,3V
'Const Ladeschlussspannung = 183                             '13,8V
'Const Entladeschlussspannung = 147                          '10,8V

#if Debugging = 1
  'Serielle Schnittstelle zum Kalibrieren und Debuggen
  Open "comb.1:9600,8,n,1" For Output As #1
#endif

'Aliase festlegen um den Code einfacher lesbar zu machen
Ladeled Alias Portb.0
Last Alias Portb.3
Panel Alias Portb.4
Ladeledpin Alias Pinb.0
Lastpin Alias Pinb.3
Panelpin Alias Pinb.4

'Pins konfigurieren
Config Ladeledpin = Output
Config Lastpin = Output
Config Panelpin = Output

'Startbedingungen
Last = Abtrennen
Panel = Zugeschaltet
Ladeled = Aus

'ADC konfigurieren
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'AVCC = 5V !

'ADC stoppen, wird bei jeder Messung gestartet
Stop Adc

'Analog Komperator abschalten um Strom zu sparen
Stop Ac

'Alle Interrupts aktivieren
Enable Interrupts

'Hauptschleife (wird nie beendet)
Do
  'ADC starten
  Start Adc

  'Dummy Messung
  Adcwert = Getadc(1)

  '50 Messungen durchführen
  Adcwert = 0

  For I = 1 To 50
    Adcwert = Adcwert + Getadc(1)
  Next I

  'ADC wieder abschalten um Strom zu sparen
  Stop Adc

  'Mittelwert über die 50 Messungen bilden
  Adcwert = Adcwert / 50

  'Auf aktuellen Adcwert reagieren
  If Adcwert < Entladeschlussspannung Then
    Last = Abtrennen
  Elseif Adcwert > Entladestartspannung Then
    Last = Zuschalten
  End If

  If Adcwert < Ladestartspannung Then
    Panel = Zugeschaltet
    Ladeled = An
  Elseif Adcwert > Ladeschlussspannung Then
    Panel = Kurzgeschlossen
    Ladeled = Aus
  End If

  #if Debugging = 1
    'Status über serielle Schnittstelle senden
    Print #1 , "A=" ; Adcwert
    Print #1 , "L=" ; Lastpin
    Print #1 , "P=" ; Panelpin
  #endif

  'Watchdog definieren: Nach 8 Sekunden Interrupt auslösen aber keinen Reset durchführen
  Wdtcr = Schlafdauer
  Reset Watchdog

  'Controller in den Power Down Modus versetzen
  Powerdown
Loop

End

Es werden folgende Bauteile benötigt:
1x Platine
1x ATTINY13A-PU
1x IC-Fassung 8 polig (optional)
1x Wannenstecker 6 polig (ISP zur Programmierung des ATTINY)
1x Diode SB140 oder 1N5820
1x Diode 1N4148
2x MOSFET IRLZ34N (zur Not gehen auch BUZ11)
1x Spannungsregler 78L05
2x Keram. Kondensator 100nF/50V
1x Elko 10µF/16V
1x Elko 100µF/16V (für den Spannungsregler zur Stabilisierung der Ausgangsspannung)
1x Widerstand 10K (5% 1/4W)
1x Widerstand 47K  oder 12K (1% Metallschicht 1/4W)
1x Widerstand 3K3 oder 5K6 (1% Metallschicht 1/4W)
3x Anreihklemmen 2 polig, RM 5mm

Die Schaltung kann mit verschiedenen Widerständen für den Spannungsteiler aufgebaut werden, dies ergab sich aus den gerade verfügbaren Widerständen. Im Programm muss man natürlich die Zeilen zur gewählten Widerstandskombination aktvieren.

Aktuell sind leider keine Platinen mehr vorrätig. Sobald es wieder welche gibt kann  man sie im Blog-Shop bestellen.

 

 

Verlinke diesen Beitrag:

<a href="http://blog.thomasheldt.de/solar-pb-akku-lader-mit-attiny13/">Pb-Akku Solar-Laderegler mit ATTINY13</a>

The following two tabs change content below.
c7282393508c6050f22643a7feb8fec6?s=80&r=g Pb-Akku Solar-Laderegler mit ATTINY13

Thomas H.

Als Betreiber dieses Blog versuche ich hier interessante Projekte und Tipps rund um die Elektronik zu bieten.
c7282393508c6050f22643a7feb8fec6?s=80&r=g Pb-Akku Solar-Laderegler mit ATTINY13

Neueste Artikel von Thomas H. (alle ansehen)

Aktualisiert am: 19. Februar 2015

Bascom Programm-Code, Bauteilliste und Autor der Idee zum Projekt hinzugefügt

5 Gedanken zu „Pb-Akku Solar-Laderegler mit ATTINY13

  1. Bernd Simionoff

    Hallo,
    genau sowas habe ich gesucht. Ich hatte einen CMP12 gekauft, war aber mit dessen Eigenschaften etwas unzufrieden. In meinem Anwendungsfall (2 Stück 5W Panele an 7,2Ah) wäre der Akku permanent am unteren Ladelevel geblieben, was auf die Dauer nicht gut ist. Nach Schaltungsanalyse hatte ich die Schaltpegel in gewissen Grenzen ändern können, ideal war das ganze aber nicht. Außerdem lag der Ruhestrom des CMP12 bei 14mA was mir auch viel zu hoch für meinen kleinen Akku war. Noch während ich über eine Mikroprozessorlösung nachdachte, stolpert ich beim googeln über dieses Projekt.
    Ich kann nur sagen: ideal für mich.
    Nun warte ich auf die Platine, der Rest liegt bereit, Lötkolben ist in Standby 😉

    Gruß
    Bernd

    Antworten
  2. Michael

    Hallo,

    habe die Platine bestellt und mir gerade die Software nochmal durchgesehen. Ich kenne mich mit Bascom überhaupt nicht aus, daher meine Frage: ist das „$regfile“ ein Bestandteil einer Library?

    Gruß Michael

    Antworten
    1. Thomas H. Beitragsautor

      Hallo Michael,

      $regfile gibt bei Bascom an welcher Controller eingesetzt wird,
      also für welchen Controller das Programm gedacht ist.

      Gruß
      Thomas

      Antworten
  3. Michael

    Hallo Thomas,

    vielen Dank für die schnelle Rückmeldung.

    OK, ich habe mich nicht präzise genug ausgedrückt. Das die unterschiedlichen Controller angesprochen werden hatte ich erkannt. Ich wollte erfragen, ob die *.dat aus einer Library beim Compilieren nachgeladen wird. Aus Deiner Antwort schließe ich, dass dies wohl der Fall sein wird, oder?

    Besteht die Möglichkeit, dass Du ein *.hex – File Deiner Software zur Verfügung stellst? Ich habe bisher nur aus C compilierte Files auf einen Controller geschrieben. Das waren bisher ausschließlich *.hex – Files.

    Alternativ meine weiter Frage: Kann man mit dem AVR-Studio auch Bascom compilieren? OK, ich nutze zwar nur Linux (also letztlich kein AVR-Studio), aber den Sprung würde ich wohl hinkriegen.

    Sorry, dass ich hier Anfängerfragen stelle(n muss).

    Gruß Michael

    Antworten
  4. Benjamin

    Hallo,

    12V Batterien sind immer gleich so „gross“. Hast du es mal mit einer 6V Batterie versucht? bzw welche Amperstunden Batterien hast du im Einsatz, das es auch im Winter gut hält?

    danke!

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.