I am new to hardware so please be patient if my questions seem obvious or are badly phrased. : )
I am building a wireless RFID reader using a Deicimila, Xbee shield & P*rallax RFID reader. The RFID reader requires 5V and 100mA current. I have it connected to the Arduino's 5V pin, where it works fine when running from USB power. I measure overall current for the project as 184mA (measured at the jumpers).
I am now trying to develop a battery power solution for the project to make it fully wireless. I am looking at two 3.7V Polymer Lithium Ion batteries connected in series to create 7.4V. I would connect this battery pack to the Arduino's Vin and Gnd pins to regulate the voltage.
Does this sound like a viable option? Any better ideas?
should work well enough but beware when using lipos, if they discharge below 3v (3.3v to be safe) per cell, they are damaged and can possibly erupt explosively (youtube it). better have a reliable way to monitor battery voltage and cut it off
i'm sure you know this but, keep in mind that parallax rfid reader uses serial (so you could just hook the xbee right up to the parallax reader and read the parallax over the other xbee)
if you were opening a door or something you'd then need a microcontroller on the rfid side....
Thanks for your suggestions thefatmoop. My code is all sorted (that is the area where I have the least problems. :)) I am however interested in your idea of hooking the reader directly up to the xbee. How would you pull the enable pin on the reader low (to start reading) without the microcontroller?
That's is indeed the cut off voltage. But you sheet mail sparkfun if it has a built-in cuff off circuit. Most LiPo batteries have those but it's not clear if this one has it too.
That's is indeed the cut off voltage. But you sheet mail sparkfun if it has a built-in cuff off circuit. Most LiPo batteries have those but it's not clear if this one has it too.
I have mailed them and the reply is no. They suggest monitoring the discharge with an ADC. Anyone with experience in this area??
You could also get a discharge control pcb or a "lipo saver", google it or go to your local RC shop.
But you can also use the analog inputs of the arduino. Then the arduino itself can monitor the voltage and shutdown when the batteries are drained. Check the playground for the analog inputs.
Just to confirm, if one is powering the arduino from an external power source which is more than 5V - Deicimila specs recommend 7-12V - one should ONLY use the Vin pin? Is the power jack not an option?
Id second the lipo saver. Its a simple circuit thats well worth the price to keep the lipo from going kablooey. RC sites carry them (lipo is super popular in RC helis and planes) There might even be a diy version floating around on the internet. Can I also assume you have a way to balance the two cells (also very important with lipos)?
Hm, sounds interesting. Powering the arduino from an LiPo battery pack and loading it via usb port would be nice. There are serveral 5V LiPo loader circuits:
knuckles904, I am not familiar with cell balancing. Can you provide a little more info on this please?
sunbox, thanks for the links. 5V is insufficient for the project - I have tried Libelium's solar power module (just the board & battery) which uses a 3.7V lithium-ion battery pushed up to 5V. I require the full 5V from the Arduino 5V pin and the Diecimila specs say you need to provide 7-12V (when running from non-usb power) in order to get this. Also the sparkfun USB Lipo charger only charges one 3.7V cell at a time. You cannot use it to charge two cells connected in series - they must be disconnected and charged separately. Not a very functional option. :-/
For the short term, given that this project will be used by people other than myself, I have decided to test out a 7.2V NiMH battery used in RC & robotics. (I have read too much about the instability of lipos.) Anyone with experience monitoring a NiMH battery for end-of-discharge voltage with an Arduino?
The Lipo project will continue as a long-term goal. Thanks for all the help.
Here is a code fragment from an arduino application that uses 5 nickel cells. The battery is connected through a voltage divider that has two 4.7k ohm resistors – so the voltage on the analog input is exactly half the battery voltage.
// the following defines allows the preprocessor to calculate the values without using any runtime floating point
#define VOLTS_FACTOR 102 // analogRead divided by this factor = tenths of volts
#define LOW_VOLTS_WARNING ((575 * VOLTS_FACTOR) / 100) //1.15v per cell = 5.75v
#define VLOW_VOLTS_ERR ((550 * VOLTS_FACTOR) / 100) // 1.1v per cell = 5.5v
int BatteryVolts; // raw value from analogRead of battery pin, 1024 = 10 volts
void CheckBattery(){
BatteryVolts = analogRead(BattVoltsPin); // note BatteryVolts is global and this value is used when DisplayBattery is selected
if( BatteryVolts < VLOW_VOLTS_ERR)
DisplayError(errBattFlat); // code here to raise alarm that battery is flat !!!
else if (BatteryVolts < LOW_VOLTS_WARNING)
DisplayError(errBattLow); // code here to warn that battery is low
}
CheckBattery should be called periodically.
edit: Btw, I replaced my freeduino voltage regulator with a low dropout version so I could use the 5 cell pack down to below 5.5 volts (my nominal battery voltage is 6 volts).
For your six cell pack, if you use the standard regulator and assume 2 volts dropout, you need to modify the threshold constants to something around:
basically, each cell (2 in your case) needs to be within a certain voltage tolerance of the others to keep one cell from bleeding into another one and causing over/undervoltage problems. Once again, there are commercial balancers available for about 20$ and several diy versions http://www.shdesigns.org/lionchg.html
The main advantage to Li-poly batteries are their energy density (watts per weight ratio) but they do carry price and safety (over discharge & over charging) concerns that require additional costs and complexity in using them.
Unless one is needing the weight advantage (R/C airborne use) then one is better off with NiMH batteries for typical Arduino applications.
mem, thanks very much for the code! what a help. would definitely not have got there on my own.
a follow up question: if we are setting the LOW_VOLTS_WARNING constant to 7.2 (in analog), what voltage should I expect from the fully charged 6 cell pack?
Fresh Nickel batteries will charge to 1.5 volts per cell or even a slightly higher. So you will find the pack is around 9 volts when it comes off the charger, but will quickly drop down to around 8.5 volts or so and then slowly drop from there.
You might consider using an external fuse. R/C batteries have pretty high short circuit current ratings (low impedenace) and the 'standard' Arduino type boards usually don't fuse the external Vin power.