- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 15

Thema: 1S LiPo Überwachung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    ---------------------------------------------------
    Akkuspannung / Blinken

    > 3,6V ==> 1 x blinken
    < 3,6V ==> 2 x blinken
    < 3,4V ==> 3 x blinken
    < 3,3V ==> 4 mal blinken
    < 3,2V ==> Wechselblinker rechts links dauerhaft
    < 3,0V ==> alle 3 Sekunden ein kurzer Blitz

    ---------------------------------------------------
    Zusätzliche Infos:

    Wenn man sich mal die Schaltung ansieht, fragt man sich sicher wo ist denn da der ADU Eingang ?

    Ursprünglich war dafür AN0 vorgesehen, dort wollte ich mit einem Spannungsteiler die Akkuspannung überwachen.

    Als ich dann im Datenblatt suchte, wie ich dafür sorgen kann, dass der ADU die interne Referenz
    als VREF+ heranzieht, musste ich feststellen das geht garnicht bei diesem PIC.

    Vref+ ist IMMER VDD
    Ich kann aber die Referenzspannung intern auf den ADU Eingang schalten und so die Referenz konvertieren.

    So kam ich auf die Idee, immer die Referenzspannung zu konvertieren,
    also gar keinen ADU Pin zu benutzen, denn die Referenzspannung ist ja ein fester Wert
    und wenn ich jetzt die Versorgungsspannung ändere (Akkuspannung geht runter),
    dann ändert sich der ADU Wert, weil als Referenz zur Konvertierung ja immer die
    Versorgungsspannung herangezogen wird.
    Das bedeutet der ADU Wert für die feste Referenz 2,048 Volt ändert sich.

    Die Kurve hab ich dann mal präzise durchgefahren mit folgendem Ergebnis:

    Code:
    bei +5,500 Volt Versorgung count = 95  maximum PIC Voltage 10F322, ! nicht die "LF" Version
    bei +5,400 Volt Versorgung count = 97
    bei +5,300 Volt Versorgung count = 99 
    bei +5,200 Volt Versorgung count = 101
    bei +5,100 Volt Versorgung count = 103
    bei +5,000 Volt Versorgung count = 104
    bei +4,900 Volt Versorgung count = 106
    bei +4,800 Volt Versorgung count = 109
    bei +4,700 Volt Versorgung count = 111
    bei +4,600 Volt Versorgung count = 113
    bei +4,500 Volt Versorgung count = 116
    bei +4,400 Volt Versorgung count = 118
    bei +4,300 Volt Versorgung count = 121
    bei +4,200 Volt Versorgung count = 124  LiPo voll geladen
    bei +4,100 Volt Versorgung count = 127
    bei +4,000 Volt Versorgung count = 131
    bei +3,900 Volt Versorgung count = 134
    bei +3,800 Volt Versorgung count = 137
    bei +3,700 Volt Versorgung count = 141  
    bei +3,600 Volt Versorgung count = 146  if( count > 146) ==> < 3,6 Volt 2 mal blinken 
    bei +3,500 Volt Versorgung count = 150
    bei +3,400 Volt Versorgung count = 154  if (count > 154) ==> < 3,4 Volt 3 mal Blinken 
    bei +3,300 Volt Versorgung count = 158  if (count > 158) ==> < 3,3 Volt 4 mal Blinken
    bei +3,200 Volt Versorgung count = 163  if (count > 168) ==> < 3,2 Volt dauerblinken  
    bei +3,100 Volt Versorgung count = 168
    bei +3,000 Volt Versorgung count = 174  LiPo absolutes Minimum
    bei +2,900 Volt Versorgung count = 180
    bei +2,800 Volt Versorgung count = 187
    bei +2,700 Volt Versorgung count = 194
    bei +2,600 Volt Versorgung count = 202 
    bei +2,500 Volt Versorgung count = 210
    bei +2,400 Volt Versorgung count = 218   
    bei +2,300 Volt Versorgung count = 228  minimum PIC Voltage 10F322  
    bei +2,200 Volt Versorgung count = 238
    bei +2,100 Volt Versorgung count = 250
    Übrigens die "LF" Variante des PICs kann auch runter bis 1,8 Volt arbeiten,
    aber Achtung: maximal dann nur bis 3,6 Volt und das ist in dieser Anwendung zu wenig.

    Daher unbedingt den PIC10F322 benutzen, NICHT den PIC12LF322.

    Damit ergibt sich folgende Formel:
    aduCount = FVR * 256 / Vdd
    FVR ist die Fixed Voltage Reference 2,048 Volt
    Vdd ist die Versorgungsspannung am PIC, also die Akkuspannung
    Die 256 rührt von dem 8 Bit AD Wandler, also 2 hoch 8
    Ich berechne alles in Millivolt
    aduCount = 2048 * 256 / Vdd

    umgekehrt ist die Akkuspannung dann
    Vdd = 2048 * 256 / adCount
    Ergebnis in mV
    --------------------------------------------------------------
    Ursprünglich wollte ich noch eine Kalibrierung mit einbauen, aber als ich anfing die Flash Erase, Flash Write usw. zu programmieren war der Speicher plötzlich voll.
    Er hat ja nur ein halbes Kilobyte
    Mit geschickter Programmierung oder Assmbler ist das sicherlich möglich, aber ehrlich gesagt gibt das nicht wirklich Sinn für diesen Anwendungsfall,
    das ist ja kein Meßgerät sondern eine Überwachung / Zustandsanzeige und funktioniert trotzdem sehr genau, da war ich wirklich erstaunt.
    -------

    Die Programmierung

    Ein Problemchen stellt sich noch: wie bekomme ich den Code in den PIC ?

    Während der Experimentierphase kann man die 8-Pin DIP Variante fürs Steckbrett benutzen.
    Für die SOT-23 Variante habe ich eine Adapterplatine von SOT-23-6 auf DIP-6 genommen.

    Als Programmer nehme ich den PicKit 3

    Es gibt einen, bzw. sogar zwei spezielle Programmieradapter mit Schnellspannsockel von Microchip für die Gehäuse DFN und SOT-23-6

    Leider kosten die knapp 50 Euro pro Stück

    Der AC163020 ist für das SOT-23-6 Gehäuse zuständig.
    https://www.mouser.de/ProductDetail/...oZGX6agg%3D%3D

    Aber Achtung, unbedingt darauf achten wo Pin 1 ist, der befindet sich beim dem Sockel nämlich oben rechts.....
    Klicke auf die Grafik für eine größere Ansicht

Name:	K110_LiPo_Blitzer_10.jpg
Hits:	8
Größe:	11,3 KB
ID:	34993

    Oder man lötet den PIC zunächst auf eine Adapterplatine, programmiert ihn auf dem Steckbrett und entlötet ihn wieder.
    Hier kann man der Kreativität freien Lauf lassen...

    Klicke auf die Grafik für eine größere Ansicht

Name:	K110_LiPo_Blitzer_11.jpg
Hits:	9
Größe:	36,8 KB
ID:	34994 so in etwa...

    Siro
    Geändert von Siro (08.05.2020 um 11:16 Uhr)

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Es wird immer gesagt, was man mit dem 555 so alles realisieren kann. Am Ende bleibts dann aber nicht bei einem 8 Pin Chip, eine Handvoll passive kommen noch dazu. So ein kleiner µC, ebenfalls im 8 Pin Gehäuse oder sogar im SOT23-6, ist da noch wesentlich flexibler. Du hast da einen feinen Custom-Chip gebaut. Jemand, der den fertig programmiert einsetzt, braucht noch nicht mal zu wissen, daß das ein µC ist. Schönes Projekt!

    MfG Klebwax

    P.S. Was mir dabei so durch den Kopf geht: Statt der LEDs zwei Optokoppler. Unter 3V sind beide aus, über 3V ist einer an und über 4,2V beide. Dies schaltet man an jede Zelle eines größeren Akkus und hat damit eine Einzelzellenüberwachung fürs Laden und Entladen. Custom BMS-Chip
    Strom fließt auch durch krumme Drähte !

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    @Klebwax:
    Da freut man sich natürlich über die positive Rückmeldung, vielen Dank:

    Ich habe deine Idee mal umgesetzt:

    Code:
    /* 
      File:   main.c
      Date:   11.05.2020
      Author: Bernd Sirozynski
     
      Idee von Klebwax umgesetzt:
       
     */
    
    
    // PIC10F322 Configuration Bit Settings
    
    // 'C' source line config statements
    
    // CONFIG
    #pragma config FOSC = INTOSC    // Oscillator Selection bits (INTOSC oscillator: CLKIN function disabled)
    #pragma config BOREN = OFF      // Brown-out Reset Enable (Brown-out Reset disabled)
    #pragma config WDTE = OFF       // Watchdog Timer Enable (WDT disabled)
    #pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
    #pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
    #pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
    #pragma config LVP = OFF        // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)
    #pragma config LPBOR = OFF      // Brown-out Reset Selection bits (BOR disabled)
    #pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
    #pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
    
    // #pragma config statements should precede project file includes.
    // Use project enums instead of #define for ON and OFF.
    
    #include <xc.h>
    
    typedef unsigned short U16;   /* 16 Bit ohne Vorzeichen */
    typedef unsigned long  U32;   /* 32 Bit ohne Vorzeichen */
    
    // LED 1 connected to pin RA0
    #define LED1_ON  LATA0=1 
    #define LED1_OFF LATA0=0
    
    // LED 2 connected to pin RA1
    #define LED2_ON  LATA1=1 
    #define LED2_OFF LATA1=0
    
    U32 value;       // wird zur Berechnung benötigt 32 Bit Wert
    U16 mV_Value;    // umgerechneter Wert in Millivolt
    
    void main(void) 
    { 
      TRISA = 0x00;   /* all pins to output */ 
      
      // internal fixed voltage reference
      // set first the FREN Bit before changing the gain bits
      // see errata sheet
      FVREN = 1;  // Fixed Voltage Reference is enabled
      
      ADFVR1=1;  // set 2,048 Volt Reference
      
      // init the ADC
      ADCON = (0x07 << 5)  // conversion clock =FOSC/64
            + (0x07 << 2)  // select Fixed Voltage Reference  
            + (0x01 << 0); // ADC enable
       
        
      nWPUEN = 0;    // enable global pullups 
      WPUA   = 8;    // pullup only on RA3/MCLR
      
      while (1)
      {
            
        GO_nDONE = 1;       // start ADU conversion 
        while (GO_nDONE) ;  // wait until adu ready
      
        value  = (U32)(2048) << 8;    // constant 32 Bit = 524.288
        value /= ADRES;               // durch den ADU Wert teilen
        mV_Value = (U16)value;        
    
        // Auswertung der LiPo Spannung
        if (mV_Value < 3000) // kleiner 3 Volt
        {
          LED1_OFF;
          LED2_OFF;
        } else if (mV_Value < 4200)  // grosser 3 Volt aber kleiner 4,2 Volt
        {
          LED1_ON;
          LED2_OFF;
        } else  // >= 4,2 Volt
        {
          LED1_ON;
          LED2_ON;
        }
    
      } // while 
    
    } // main

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Crazy Harry
    Registriert seit
    15.01.2006
    Ort
    Raum Augsburg - Ulm
    Beiträge
    1.313
    Wenn du mehrere baust, würde ich dir einen Nadeladapter zum programmieren vorschlagen.
    Ich programmiere mit AVRCo

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Da hast Du völlig recht, ebenso wenn ich die Software nochmal ändern will

    So habe ich mir mal folgendes (sündhaft teures Tool) besorgt:

    https://sensepeek.com

    Klicke auf die Grafik für eine größere Ansicht

Name:	K110_LiPo_Blitzer_12.jpg
Hits:	14
Größe:	46,6 KB
ID:	35005 Klicke auf die Grafik für eine größere Ansicht

Name:	K110_LiPo_Blitzer_13.jpg
Hits:	12
Größe:	30,4 KB
ID:	35006 Klicke auf die Grafik für eine größere Ansicht

Name:	K110_LiPo_Blitzer_14.jpg
Hits:	18
Größe:	57,3 KB
ID:	35007


    Das kann man sich aber auch selber basteln mit Akkupunkturnadeln..

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von Crazy Harry
    Registriert seit
    15.01.2006
    Ort
    Raum Augsburg - Ulm
    Beiträge
    1.313
    Gratuliere, das hab ich mir auch gegönnt. Ja teuer, aber erstaunlich wertig verarbeitet .... naja bis auf die Isolierscheiben zum selber einkleben.

    Ich dachte eher an sowas (siehe Bilder). Speziell nur für diese Platine. *** sorry aber das Forum läßt mich vom Tablet keine Bilder hoch laden. Ich ergänze das morgen:***

    Die Nadeln, die in deinem teuren Tool drin sind, kann man einzeln im 100er Pack kaufen

    Gruss
    HarryKlicke auf die Grafik für eine größere Ansicht

Name:	NA01.jpg
Hits:	14
Größe:	26,7 KB
ID:	35008Klicke auf die Grafik für eine größere Ansicht

Name:	NA02.jpg
Hits:	17
Größe:	20,6 KB
ID:	35009

    [Edit] Mit Trick gehts doch
    Ich programmiere mit AVRCo

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Gratuliere, das hab ich mir auch gegönnt.
    Is ja witzig, ja, die Isolierscheiben selber drauf machen, war etwas fummelig.

    Die verbauten Pins mit den Federn heissen wohl PoGo Pins (kann das sein ?), die kannte ich auch noch nicht.

    Selbst ist der Mann. Mit dem Adapter sieht doch supi aus.

    Ich hab mir auch noch die Ossi Strippen 100 MHz bestellt, kommt die Tage...

    Kleine Änderung notwenig:
    Für ein Softwareupdate musste ich eine Leiterbahn unterbrechen, sonst ziehen mir die LEDs die Pegel weg....
    Hier sollte ich eine Lötbrücke vorsehen, die einfach mit Lötzinn überbrückt wird.

    Klicke auf die Grafik für eine größere Ansicht

Name:	K110_LiPo_Blitzer_15.jpg
Hits:	10
Größe:	23,1 KB
ID:	35010 Die grün markierte Leitung muss getrennt werden, sonst bekommt man den Chip nicht mehr programmiert.
    Es wird die Masseleitung der beiden LEDs damit getrennt.
    Geändert von Siro (13.05.2020 um 20:42 Uhr)

Ähnliche Themen

  1. Starterkit: Serverraum-Überwachung
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 30.09.2013, 23:30
  2. Elektromagnet Überwachung
    Von nikolausi im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 28.07.2011, 19:56
  3. Drahtbruch Überwachung.
    Von sellentin im Forum Elektronik
    Antworten: 19
    Letzter Beitrag: 08.02.2008, 12:06
  4. Roboter überwachung
    Von MiniMax im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 30.07.2007, 16:17
  5. Überwachung von Bleiakkus?
    Von Klingon77 im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 27.09.2006, 17:32

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen