I got now a 1s Lipo working with a step up voltage regulator and all this powers an Arduino.
Now I would like to measure the voltage of the battery. How does this work? I can't just connect the wire from the Lipo + to an Analog.
Could someone help me?
You could do something like
int val = 0;
val = analogRead(0);
val = map(val, 0, 1023, 0, 500);
Which would print to serial the voltage on analog pin 0 in millivolts. Be careful not to exceed 5V though!
I can't just connect the wire from the Lipo + to an Analog
Well actually you probably can. If the Lipo's negative is common to the step-up regulator's common, which is then the Arduino common, you are free to just run a wire from the Lipo's positive terminal to one of the Arduino's analog input pins. A single cell Lipo maxes out at around 4.2 volts so that is within the 0-5vdc. How you scale (map) the analog counts to a voltage value depends on what the output voltage is for the step-up regulators, as that voltage is the default voltage reference. If it's 5vdc then mapping the 0-1023 counts to 0-5000, will give you the Lipo's terminal voltage directly in millivolts.
Caution about Lipo batteries. If you over discharge them they go bad and won't take a recharge. If you overcharge them they tend to catch fire or explode. :-?
Thx, but I tried this and the readout was allways 5V. If i attach an extern battery it works great but with the one connected to Step up Voltage regulator doesn't work...
Hm now I get a value 3.91v but the right one would be (measured with a DVM and another Arduino) 3.78v. whats wrong?
Hm this doesn't work. I recorded the data for about 1.1 Day and it looks like this:
My Arduino doesn't use any battery :)
Can someone help me?
Keep in mind the resolution of a 10bit A/D reading is around 5 millivolts. What you probably need to do is to take around 8 readings at a time, add them together and then divide by 8, thus getting a good average reading value for each sample. Try that and see if it doesn't help with the noise/resolution you are seeing.
thx for the hint now it looks much better:
Sorry, made a mistake in the first code, map to 5000 not 500 >.<!
Good to see you got it working, though
But could someone explain me why the result when I measure a Lipo which isn't conected to the Arduino are better (more precisely) then measuring the Lipo which does power the Arduino?
Well what load is the Li-po powering when measuring but not powering the Arduino? The Li-po powering the Arduino is under a load, lots of digital switching going on. Perhaps a little filtering (cap) would help, but that's what averaging the analogreads is doing also.
You are most likely picking up switching noise from the Arduino or the
step-up regulator. As the Arduino clock switches from low to high and
back it draws a higher current. These switching currents produce a voltage
drop across the battery that will appear to be random to the ADC.
Your trend line is lower and you have a random deviation around above
and below the line. Since there is no switching load on the second Lipo
you do not see the variation due to switching currents.
(* jcl *)
ok that sounds logic thx a lot for all those explanations.