Einfaches Kapazitäts-Prüfgerät für Bleiakkus

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • oscar schrieb:

      Ach so, ich hab noch was vergessen: Ich vermisse den 1nF-Filterkondensatoran deinem ACS und verwende bitte jeweils beide Mess-Pins desselben.
      Ich hab' noch ein breakoutboard (Bildchen 1. post) das pflanz ich auf meine Platine. Da ist der Filter-C drauf und natürlich die obligatorische Led, die auf solchen boards immer drauf sein muss. :D
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Noch mehr habe ich vergessen (der Kalk rieselt wohl schon :D )
      Vergiss nicht eine Schmelzsicherung (sagen wir 6,3A) in den Akkustromkreis einzufügen, ein Kurzschluß am Entladewiderstand brennt dir sonst einen Leiterzug weg. Nett wäre auch eine rote Led welche ein verpolen des Akkus anzeigt.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von oscar ()

    • Tschoeatsch, der unerschrockene Powerfummler, kennt keine Angst! Schmelzsicherungen sind nur für die, die Dinge aus Bequemlichkeit nur einmal machen wollen!


      (ja, hab' mal dran gedacht, aber dann beim layouten doch vergessen. a_45_132ca9f5 Muss ich jetzt mit dummen Geschwätz kompensieren. Die rote Led samt Sicherung bau' ich dann beim 2. Versuch ein. a_52_eb39d6ae )
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Leiterbahnmindestabstand 0,2mm. So hab' ich meinen designrulecheck eingestellt. Der Fräser fräst manchmal bisschen breiter, dann werden halt die Bahnen schmäler.

      Einen design-Fehler hab' ich schon gefunden, die Relaisspule ist zu nah am ACS, der den Strom über Magnetfeldstärke misst a_28_2c02f089
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Vielleicht brennt das board wegen fehlender Sicherung ab, dann kann ich die Bauteile beim nächsten Versuch günstiger platzieren.
      Der Einfluss ist mehr im hundertstel Volt Bereich, schau ich mal drüber weg X/
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Murkszähler=Murkszähler + 1
      Mangels Erfahrung hab' ich versäumt Kontrollerversorgung und gleichzeitig Spannungsmessleitung von der Stromleitung zu trennen. Jetzt mess' ich die Spannung, die am Lastwiderstand abfällt, die ja kleiner als die tatsächliche Akkuspannung ist. Ich hab' ja mit den Zuleitungen einen Spannungsteiler. Ich helfe mir mal mit möglichst großen Kabelquerschnitten.
      Der möglicherweise nächste Versuch wird bei diesem Detail besser.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Mein 1. Versuch vom code. Die Strommessung zappelt recht, deswegen eine Glättung. Ich hab' nicht herausgefunden, woran es liegt, die Messbrücke ohne Verstärker zappelt auch. Die Variablen der Messungen haben in der Regel den 100fachen Wert, um bei Divisionen nicht zuviel zu verlieren. Erst beim Anzeigen werden die auf 1fach Werte gebracht.
      Ich werden den code einmal an einem kleinen 45Ah, alten Akku testen, ob die auch paar Stunden durch hält. Als Belastungswiderstände nehme ich Halogenstrahler.

      BASCOM-Quellcode

      1. 'Bleiakku-Kapazitätsprüfer
      2. $regfile = "m8def.dat"
      3. $crystal = 16000000
      4. $hwstack = 64
      5. $swstack = 32
      6. $framesize = 64
      7. 'ports konfigurieren
      8. Config Portb.0 = Input 'Taste_mitte
      9. Set Portb.0 'pullup
      10. Config Portb.1 = Input 'Taste_links
      11. Set Portb.1 'pullup
      12. Config Portb.2 = Input 'Taste_rechts
      13. Set Portb.2 'pullup
      14. Config Portb.4 = Output 'Relais
      15. Config Portc.0 = Input 'Akkuspannung
      16. Config Portc.1 = Input 'Strombrücke
      17. 'alias
      18. Taste_links Alias Pinb.1
      19. Taste_mitte Alias Pinb.0
      20. Taste_rechts Alias Pinb.2
      21. Rel Alias Portb.4
      22. 'ad-Wandler einrichten
      23. Config Adc = Single , Prescaler = Auto , Reference = Avcc
      24. 'IC2
      25. Config Sda = Portb.3
      26. Config Scl = Portb.5
      27. Const Ds3231w = &HD0 '208 Schreibaddresse des Ds3231
      28. Const Ds3231r = &HD1 '209 Leseadresse des DS3231
      29. I2cinit
      30. ' LCD konfigurieren
      31. Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.2 , Wr = Portd.3
      32. Config Lcd = 16 * 2
      33. Deflcdchar 2 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31 'gefülltes Rechteck
      34. Deflcdchar 1 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 31 'leeres Rechteck
      35. Cls
      36. Cursor = Off
      37. Const Spannung_15 = 946 '15V gibt 946 adc-Punkte
      38. Const Strom_0 = 504 '0A
      39. Const Strom_bei4 = 299 '4A
      40. Const Strom_4 = Strom_0 - Strom_bei4
      41. Const V_min = 1080 'Entladeschlussspannung in mV
      42. Dim Akku_spannung As Dword , Akku_sp As Dword
      43. Dim Strom_staerke As Dword , Strom_st As Dword , Strom_st_100 As Dword , Strom_mit As Dword
      44. Dim _sec As Byte , Sekunde As Byte
      45. Dim _sekunde As Byte
      46. Dim Status As String * 1
      47. Dim Akku_spannung_str As String * 4 , Strom_staerke_str As String * 4
      48. Dim Animation As Bit
      49. Dim Weiter As Bit , Test_stop As Bit
      50. Dim Z As Byte , Z1 As Byte
      51. Dim Strom_sum As Dword , Kap_ah As Dword , Kap_ah_str As String * 4
      52. Dim Dummy As Eram Byte
      53. Dim Kap_ah_alt_eram As Eram Dword , Kap_ah_alt As Dword , Kap_ah_alt_str As String * 4
      54. Do
      55. Wait 1
      56. Bitwait Taste_mitte , Set
      57. Rel = 0
      58. Status = Chr(1)
      59. Weiter = 0
      60. Z = 0 : Z1 = 0
      61. Kap_ah_alt = Kap_ah_alt_eram 'früheren Wert für die Anzeige in string wandeln
      62. Kap_ah_alt_str = Str(kap_ah_alt)
      63. Do
      64. Do 'warte auf eine neue Sekunde
      65. Sekunde = _sec
      66. Gosub Hole_sekunde
      67. Loop Until Sekunde <> _sec
      68. Incr Z1
      69. If Z1 = 3 Then
      70. Z1 = 0
      71. Incr Z
      72. If Z > 3 Then Z = 0 'Durchschalten des Menues verlangsamen
      73. End If
      74. Select Case Z
      75. Case 0 : Locate 1 , 1 : Lcd "Kapazitaetstest " : Locate 2 , 1 : Lcd "fuer Bleiakkus "
      76. Case 1 : Locate 1 , 1 : Lcd "Stromtest " : Locate 2 , 1 : Lcd "rechte Taste "
      77. Case 2 : Locate 1 , 1 : Lcd "Starte Test " : Locate 2 , 1 : Lcd "linke Taste "
      78. Case 3 : Locate 1 , 1 : Lcd "Letzte Messung " : Locate 2 , 1 : Lcd " " : Locate 2 , 1 : Lcd Format(kap_ah_alt_str , " 00.00") ; " Ah"
      79. End Select
      80. Debounce Taste_rechts , 0 , Strom_test , Sub
      81. If Taste_links = 0 Then Weiter = 1
      82. Loop Until Weiter = 1
      83. 'Starte Kapazitätsmessung
      84. Strom_sum = 0 : Test_stop = 0
      85. Cls
      86. Do
      87. Rel = 1 'Belastungswiderstand zugeschaltet
      88. Do 'warte auf eine neue Sekunde
      89. Sekunde = _sec
      90. Gosub Hole_sekunde
      91. Gosub Hole_strom
      92. Loop Until Sekunde <> _sec
      93. Toggle Animation
      94. If Animation = 1 Then Status = Chr(2) Else Status = Chr(1)
      95. Gosub Hole_spannung 'aktuelle Spannung messen
      96. Strom_sum = Strom_sum + Strom_staerke '100facher Asec
      97. Kap_ah = Strom_sum / 3600 '100fache Ah
      98. Kap_ah_str = Str(kap_ah)
      99. Locate 1 , 1
      100. Lcd Format(akku_spannung_str , "00.00") ; " V"
      101. Locate 1 , 9
      102. Lcd Format(strom_staerke_str , " 0.00") ; " A"
      103. Locate 2 , 1
      104. Lcd Format(kap_ah_str , " 00.00") ; " Ah"
      105. Locate 2 , 16 : Lcd Status
      106. If Akku_spannung < V_min Then Test_stop = 1 'bei Entladeschlussspannung abbrechen
      107. If Taste_mitte = 0 Then Test_stop = 1
      108. Loop Until Test_stop = 1
      109. Rel = 0 'Belastungswiderstand wird abgeschaltet
      110. Kap_ah_alt_eram = Kap_ah 'Wert im eram speichern
      111. Cls
      112. Locate 1 , 1 : Lcd "gemessene Ah"
      113. Locate 2 , 1 : Lcd Format(kap_ah_str , "00.00") ; " Ah"
      114. Wait 1
      115. Bitwait Taste_mitte , Set
      116. Do : Loop Until Taste_mitte = 0
      117. Loop 'zurück ins Auswahlmenue
      118. End
      119. Strom_test:
      120. Cls
      121. Do
      122. Gosub Hole_spannung
      123. Gosub Hole_strom
      124. Locate 1 , 1 : Lcd "Stromtest"
      125. Locate 2 , 1 : Lcd Format(akku_spannung_str , "00.00") ; "V"
      126. Locate 2 , 11 : Lcd Format(strom_staerke_str , " 0.00") ; "A"
      127. If Taste_rechts = 0 Then Rel = 1 Else Rel = 0 'nur bei Tastendruck wird der Belastungswiderstand zugeschaltet
      128. Loop Until Taste_mitte = 0
      129. Cls
      130. Return
      131. Hole_spannung: '100fache Spannung in V
      132. Akku_sp = Getadc(0)
      133. Akku_spannung = 1500 * Akku_sp : Akku_spannung = Akku_spannung / Spannung_15
      134. Akku_spannung_str = Str(akku_spannung)
      135. Return
      136. Hole_strom: '100facher Strom in A, gemittelt
      137. Strom_st = Getadc(1)
      138. Strom_mit = Strom_mit * 1900
      139. Strom_st_100 = 100 * Strom_st
      140. Strom_mit = Strom_mit + Strom_st_100
      141. Strom_mit = Strom_mit / 2000
      142. If Strom_mit < Strom_0 Then Strom_staerke = Strom_0 - Strom_mit Else Strom_staerke = 0
      143. Strom_staerke = Strom_staerke * 400 : Strom_staerke = Strom_staerke / Strom_4
      144. Strom_staerke_str = Str(strom_staerke)
      145. Return
      146. '-------------------------
      147. ' Zeit
      148. '-------------------------
      149. Hole_sekunde:
      150. I2cstart 'Start
      151. I2cwbyte Ds3231w
      152. I2cwbyte 0 'auf 0 stellen
      153. I2cstart
      154. I2cwbyte Ds3231r
      155. I2crbyte _sekunde , Nack 'Sekunden
      156. I2cstop
      157. _sec = Makedec(_sekunde)
      158. Return
      Alles anzeigen
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Die Spannungsmessung ist sehr ruhig. Die hat die gleiche Referenz. Wenn die auch so gezappelt hätte, dann hätte ich an der AVCC-Leitung zur Siebung noch was rein gefummelt.

      Michael schrieb:

      Zappelt es bei höheren Strömen auch?
      Ja. Ich muss mal an der VCC vom ASC712 gucken, ob da alles glatt ist, das hab' ich noch nicht geschaut. Ist aber dieselbe VCC, die der Kontroller bekommt. Vom Spannungsregler geht die Leitung zum Kontroller, von da zum ACS und weiter zum LCD.

      So wie es gerade ausschaut gibt es Chancen alles neu zu entwickeln. Das Relais wird knalleheiß, obwohl es für 12V sein sollte. Verbraucht auch 100mA. a_28_2c02f089
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Ich wäre mit der Art der Strommessung auch nicht glücklich.
      Der OPV invertiert den Eingangswert.
      Je höher der Eingang, desto tiefer der Ausgang.

      Wenn die Versorgung jetzt schwankt, dann verstärkt der OPV das in die falsche Richtung und der AVR (dessen Versorgung ja mitschwankt) misst entgegengesetzt, was sich ja verstärkt.

      Bei der Spannungsmessung wird ratiometrisch mit der Störung gemessen, was diese wieder beruhigt.
    • Murkszähler=Murkszähler + 1
      Dann muss man beim nächsten Versuch den Strom in der anderen Richtung durch den ACS fließen lassen. Dann ergibt ein höherer Strom einen höheren Ausgangswert am op. Allerdings verstärkt der ja x2, also wird's nicht ganz kompensiert.
      Wieder was gelernt.

      Ich hab' ja mal Probeweise den Ausgang vom ACS direkt an den Adc angeschlossen, hat aber auch gezappelt wie'd Sau (+-3 Punkte vom ad-Wert). Daher ist mir ja auch nicht klar, woher das kommen könnte.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Vorschlag: Messungen per Timerinterrupt von sagen wir alle 100ms im Hintergrund ausführenlassen und durch gleitende Mittelwertbildung glätten (4 bis 8 Stützstellen sollten genügen).
      Deine Hole_strom und Hole_spannung - aufrufe fragen dann nur den jeweils aktuellen Mittelwert ab.
      Die Stromzappeligkeit wird durch die OPV-Verstärkung verstärkt.
    • Wenn ich mich nicht bös' vertan habe, dann hab' ich eine gleitende Mittelwertbildung. Zeile 151..154. Und die wird wärend dem Warten auf die neue Sekunde sooft wie möglich durch geführt.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch,

      habe viel mit ADC gemacht. Versuch den Filterkondensator zu vervielfachen (0.1-0.2uF).
      Zusaetzlich solltest du auch einen 1Kohm Widerstand vorschalten (vor dem C).
      Der Eingang zum ADC hat etwa 50-100 Megaohm, auch wenn es nur 30Kohm sind, spielt ein TP mit 1K keine Rolle.
      Den ADC-Teiler in Config auf 128 anstatt Auto.
      Der ADC alleine bei 200KHZ hat 2 LSB Schwankung (ohne VCC ripple!).
      Falls moeglich, waehrend der ADC-Messung keine anderen Aktivitaeten (Timer u.s.w.) und keine Leitungskreuzungen unter dem MCU. MCU Takt eventuell auf 8MHz setzen.
      Kondensator an AVCC 0.1uF (keine Drossel verwenden...erzeugt oft Schwingungen), Eingang zirka 30Kohm.
      Der Lastwiderstand an sich erzeugt Stromrauschen wie jeder andere Widerstand auch.
      Batterien selbst sind auch nicht 100% stabil als Stromquelle, erzeugen auch Stromschwankungen.
      So viele Mittelungen der Messungen wie nur moeglich.
      Zeit spielt hier wirkich keine grosse Rolle.
      In der naechsten Version eventuell eine Hardware Uhr auf der Platine oder eine Externe mit INT.
      50%-70% genauer sollte moeglich sein.
      Eines solltest du auch noch beachten....Bleiakku Entladerate ist zirka 2% pro Monat bei sauberen Anschluessen und ein geladener 12V-Akku hat etwa 13.3-13.8 Volt. Wuerde Als Schalter zur Batterie
      einen Powermos mit sehr niederem Innenwiderstand verwenden.
      Gruss
      Hubert
    • hubertg schrieb:

      Versuch den Filterkondensator zu vervielfachen (0.1-0.2uF).
      Zusaetzlich solltest du auch einen 1Kohm Widerstand vorschalten (vor dem C).
      Wo, wie hä? C am Ad-Eingang und vom Messverstärker/Spannungsteiler über R an Ad-Eingang?

      Also, wie gesagt, die Spannungsmessung ist sehr ruhig. Eine RTC ist schon eingebaut und gibt den Sekundentakt vor.

      Power-Fet statt Relais wäre nicht schlecht gewesen, stimmt.

      Hier mal ein Bildchen während der aktuellen Messung am Womoakku, der mit 90Ah (C5) und 110Ah (C20) protzt.
      Der Spannungsabfall bei der geringen Ladungsentnahme ist schon groß, finde ich. Ich werde wohl einen neuen bestellen...
      Akkutester-in-Funktion.jpg

      Ach ja, ich hätte einen alten Akku abzugeben, den von der 1. Messung, war mal mit 35Ah angegeben, hat jetzt eine Kapazität vom 4,52Ah gebracht. Möchte den jemand?

      Nachtrag: Es wäre jetzt noch ein weiterer Akku im Angebot, 1,37Ah, statt 110Ah. Sehr schweres und wertiges Teil, optisch im guten Zustand, aus Nichtraucherhaushalt, --günstig--!
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------