Problem with battery level value
-
@boozz
Many Thanks, now I understand but I still have doubts, in the skecth i have change this
float batteryV = sensorValue * 0.003363075;
in
float batteryV = sensorValue * 0.00575035;because if I understand it ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
in my case is ((1+0,23)/0,23)*1,1 = 5,88 and after 5,88/1023 = 0,0057478
Now, however with new battery the output is99
Battery Voltage: 0.57 V
Battery percent: 9 %
:(The code i used is
// get the battery Voltage
int sensorValue = analogRead(BATTERY_SENSE_PIN);
Serial.println(sensorValue);
// 1M, 470K divider across battery and using internal ADC ref of 1.1V
// Sense point is bypassed with 0.1 uF cap to reduce noise at that point
// ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
// 3.44/1023 = Volts per bit = 0.003363075
float batteryV = sensorValue * 0.00575035;
int batteryPcnt = sensorValue / 10;Thanks
Mattia -
Did you change the divider?
In my temperature sensor i measure the battery level with:
R1: 1 MOhm
R2: 220 kOHMfloat batteryV = sensorValue * 6.1 / 1023;With an input voltage of 7.2 V the dividers gives 1.1 V (1023) on the analog input.
Don't forget to place a capacitor between AREF & GND to stabilize the measurement.
-
@boozz
Many Thanks, now I understand but I still have doubts, in the skecth i have change this
float batteryV = sensorValue * 0.003363075;
in
float batteryV = sensorValue * 0.00575035;because if I understand it ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
in my case is ((1+0,23)/0,23)*1,1 = 5,88 and after 5,88/1023 = 0,0057478
Now, however with new battery the output is99
Battery Voltage: 0.57 V
Battery percent: 9 %
:(The code i used is
// get the battery Voltage
int sensorValue = analogRead(BATTERY_SENSE_PIN);
Serial.println(sensorValue);
// 1M, 470K divider across battery and using internal ADC ref of 1.1V
// Sense point is bypassed with 0.1 uF cap to reduce noise at that point
// ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
// 3.44/1023 = Volts per bit = 0.003363075
float batteryV = sensorValue * 0.00575035;
int batteryPcnt = sensorValue / 10;Thanks
Mattia@Mattia-Reggiani
As TimO already asked: did you change the divider? (replace the resistor 470k into a resistor 220k or the 1M into 2M)? it's essential.Boozz
-
I have change R1 to 2M and R2 470k , I think to have some problem with resistors, tomorrow will buy new resistors and try again from scratch.
Thanks for your help
Mattia -
I have rebuild the dividers with R1 1M ohm and R2 220k ohm, i have try with pin A1 and A0 and have strange value
990
Battery Voltage: 5.59 V
Battery percent: 99 %1023
Battery Voltage: 5.78 V
Battery percent: 102 %First read is correct, but after this all other value have value 1023, if use multimeter on R1 and R2 have a value of 0,93 on touch point have 0,93 and on the Pin A0 or A1 have the same value.
It is possible that Arduino read the wrong value ? -
Did you place a capacitor between AREF and GND?
-
@TimO
Sorry, but Whatsapp is AREF? Is the Pin thai I use to measure the battery voltage (A0) ? Bcause on Google i find some Arduino Board with AREF pin but my Arduino mini pro has not that pin.Thanks
Mattia -
Oh, I'm sorry, at the Arduino pro mini there already is a capacitor between AREF & GND, so don't worry about it.
Here is my working example, a sensor for humidity, temperature and status of the battery:
It's basically:
line 30: with "analogReference("INTERNAL)", did you call that?
The function in line 70 measures the battery status.
-
-
@Mattia-Reggiani
Good to see that you solved it and learned by doing. Congrats!Boozz