Hi,
first post here. I'm developing on an Arduino-based NiMH (for AA or AAA) battery charger, I'm calling it Quite Smart Charger (or QSC). Eventually the project would allow to easily build a DIY smart battery charger that is fast but does not wear the battery through overcharging. Right now I have two sketches, one for discharging and one for charging. However the same circuit handle both charging and discharging so switching between the two is only a software issue (they can be integrated in a single sketch). So far only a single cell is supported. For charge termination I implemented 3 methods: negative delta V, timeout, overvoltage. The negative delta V method is a bit tricky since a 5-10mV voltage dip must be detected. This is the reason I use both HW and SW filtering. Optional temperature dT/dt sensing is on plan. The battery is "sensed", so, to start charging, you just push the battery in, to pause you pull the battery out. Led on 13 pin is ON while waiting for a battery.
I'm trying to keep the number of components to a minimum. However an external (at least 1A) powersuppply is compulsory for fast charging. The circuit I implemented uses an LM2941 (that includes a nice ON/OFF pin) to provide a constant current--see the attached schematic and picture. It uses 3 arduino PIN, 2 digital IO to control charge and discharge (pwrPin, dischargePin), and an analog input to monitor the battery voltage (inputPin). The circuit charges when pwrPin is LOW (and dischargePin LOW). Discharges with dischargePin HIGH (and pwrPin HIGH).
I do heavy filtering both hardware (1k-22uF LPF) and software averaging 8 voltage reads, once a second. 60 voltage acquisitions (1 minute) are stored in a circular buffer and averaged to have a stable reading once a minute to detect the negative delta V or overvoltage.The voltage acquisition is sent once a second to the serial port for logging. Additional info are on the header comment on the sketch file.
The discharge takes place at a constant current monitoring the cumulative energy (in mAh) being discharged.
So, please provide feedback, suggestions or additional ideas/contributions. Also would be nice to have some charge logs (serial dumps) for different cells in order to optimize the charging process.
Eventually we can get the best NiMH charger based on opensource hardware/software ;).
PS: For NiMH charging info you can refer to:
and linked documents.
QuiteSmartCharger.ino (7.09 KB)
BatteryDischarge.ino (1.27 KB)