Hallo,
ich hab mal wieder mißt gebaut.
Ich hab mir ein kleines Meßgerät zum messen von Batteriekapazitäten gebastelt.
Leider zählt das ding zu schnell hoch.
Bei einem Strom von 0,328A der auch richtig angezeigt wird zählt er um 1mAh pro Sekunde hoch.
Eigendlich müssten es viel weniger sein und ich finde den Fehler einfach nicht.
Alles anzeigen
Grüße & Danke!
Alex
ich hab mal wieder mißt gebaut.
Ich hab mir ein kleines Meßgerät zum messen von Batteriekapazitäten gebastelt.
Leider zählt das ding zu schnell hoch.
Bei einem Strom von 0,328A der auch richtig angezeigt wird zählt er um 1mAh pro Sekunde hoch.
Eigendlich müssten es viel weniger sein und ich finde den Fehler einfach nicht.
Quellcode
- '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 'Mikrocontroller Konfigurieren
- $regfile = "m48def.dat" ' specify the used micro
- $crystal = 1000000 ' used crystal frequency
- $hwstack = 32 ' default use 32 for the hardware stack
- $swstack = 10 ' default use 10 for the SW stack
- $framesize = 40 ' default use 40 for the frame space
- 'Ende Mikrocontroller Konfigurieren
- '=============================================================
- '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 'Ports für Display Konfigurieren PortD,
- Config Portd = Output 'LCD Display Datenbits
- 'LCD Datenbits im 8BIT Mod
- Config Portb.0 = Output 'LCD E
- 'LCD Enable
- Config Portb.1 = Output 'LCD Rs
- 'LCD Reset
- Config Portc.5 = Input
- Config Portc.3 = Input
- Config Portc.1 = Input
- 'Ende Ports für Display Konfigurieren PortD
- '=============================================================
- '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 'LCD Displayö Konfigurieren PORTD, PortB.6, PortB.7
- Waitms 100
- Config Lcdpin = Pin , Port = Portd , E = Portb.0 , Rs = Portb.1
- Config Lcdbus = 8 ' LCD arbeitet über 8-Bit
- Config Lcd = 16 * 2
- Initlcd
- 'Ende LCD Display Konfigurieren PORTD, PortB.6, PortB.7
- '=============================================================
- '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 'Spannung Messen Anfang
- Config Adc = Single , Prescaler = Auto , Reference = Internal
- Start Adc
- 'Ende Spannung Messen
- '=============================================================
- '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 'Datum Konfigurieren
- Enable Interrupts
- Config Date = Dmy , Separator = .
- Config Clock = Soft
- 'Ende Datum Konfigurieren
- '=============================================================
- '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 'Variablen
- Dim Var_old_sec As Byte
- Dim Var_adc_ampere As Word
- Dim Var_adc_volt_batterie As Word
- Dim Var_adc_volt_eigenver As Word
- Dim Var_ampere As Single
- Dim Var_ampere_tmp As Single
- Dim Var_volt_batterie As Single
- Dim Var_volt_eigenver As Single
- Dim Var_ampere_hour As Single
- Dim Var_zeile(2) As String * 16
- Dim Var_eram_ampere_hour As Single
- Dim Var_eram As Bit
- 'Ende Variablen
- '=============================================================
- '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 'Konstanten
- Const Cons_2_1v = 0.001973876953125
- 'Spannungsteiler 2,1Volt
- Const Cons_5_8v = 0.0056640625
- 'Spannungsteiler für Eigenversorgung
- Const Cons_ampere = 0.0020131106321
- 'Strom an 0,5Ohm
- 'Ende Konstanten
- '=============================================================
- '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 'Hauptprogramm
- 'Var_ampere_hour = Var_eram_ampere_hour
- Do
- Waitms 5
- Var_adc_ampere = Getadc(5)
- Waitms 15
- Var_adc_volt_batterie = Getadc(3)
- Waitms 15
- Var_adc_volt_eigenver = Getadc(1)
- Waitms 5
- Var_ampere = Var_adc_ampere * Cons_ampere
- Var_volt_batterie = Var_adc_volt_batterie * Cons_2_1v
- Var_volt_eigenver = Var_adc_volt_eigenver * Cons_5_8v
- If _sec <> Var_old_sec Then
- Var_old_sec = _sec
- Var_ampere_tmp = Var_ampere / 3600
- Var_ampere_hour = Var_ampere_hour + Var_ampere_tmp
- End If
- Locate 1 , 1
- Var_zeile(1) = "A:" + Fusing(var_ampere , "#.###") + "|Ah:" + Fusing(var_ampere_hour , "#.###")
- Lcd Var_zeile(1)
- Var_zeile(1) = ""
- Locate 2 , 1
- Var_zeile(2) = "VB:" + Fusing(var_volt_batterie , "#.##") + "|VV:" + Fusing(var_volt_eigenver , "#.##")
- Lcd Var_zeile(2)
- Cursor Off
- If Var_volt_eigenver < 2.7 Then
- 'If Var_eram = 0 Then
- ' Var_eram = 1
- ' Var_eram_ampere_hour = Var_ampere_hour
- 'End If
- Goto Ende
- End If
- Loop
- Ende:
- Portd = 0
- Portb.0 = 0
- Portb.1 = 0
- Powerdown
- 'Ende Hauptprogramm
- '=============================================================
Alex