Monthly Archives: December 2017

Wall-E2 battery charger module testing, Part II

Posted 22 December 2017

After having worked out (hopefully) all the bugs in the Arduino Uno program and associated test hardware, I have moved on from testing just one of the Adafruit PowerBoost 1000C  charging module in isolation to testing the entire 2-cell battery pack system, albeit with the smaller 2500mAh LiPo’s rather than the full-up 18650 stacks.

Full-up test of the 2-cell charging system using 2500mAh LiPo cells

Full charge of 2500mAh cells

After several days of testing, I never really got consistent results with this setup – I seemed to be always chasing intermittent problems of one sort or another.  Then I finally figured it out (I think) – the problem wasn’t my setup, it was the proto plug-board I was using.  This board was a cheap no-name plugboard I got off eBay, and apparently I got exactly what I paid for! ;-(.  So, I reverted to my tried-and-true (but HUGE!) AP Products A.C.E. 236 plugboard that I have had around the lab for a couple of decades, at least.  When I transferred the setup to this plugboard, everything started working better.  In particular, the battery charging current went from about 0.5A to about 1.5A – a much more believable (and practical) figure than before.  Here’s the new test setup.

New test setup with my trusty AP ACE 236 plugboard. Note charging current shown on current meter

After getting the hardware problems squared away, I started getting reliable charge/discharge cycle data, as shown in the curves below

Two complete charge/discharge cycles. Note the time axis is in minutes here

The next step in the process will be to replace the PKCell 2500mAh flat-pack LiPo cells with the 6800mAh pack (two series banks of 2ea Panasonic 18650 3400mAh cells in parallel) to be used in the robot.

26 December Update:

Chg/Dischg testing with the Panasonic 18650 packs from the robot.

As shown above, I switched out the 2500 mAh flatpacks for the Panasonic 3400 mAh cells from the Wall-E2 robot.  Initially I was somewhat disappointed with charging performance, as I was only seeing about 1 – 1.5A initial charge current for both 6800 mAh cells, instead of the 2+ A I expected to see.  Eventually I narrowed the problem down to stray resistance in the testing circuit itself, through the plugboard, the plugboard wiring, and the relay being used to switch charging power to the battery module.  When I bypassed these elements and connected the external MeanWell 5V power supply to the battery module terminals, the max current increased to slightly over 2A, as expected.  This is actually very good news, as it means that the resistance of the PCB traces supplying power to the PowerBoost 1000C modules is low enough to not materially affect the max charging current – yay!

Still, even with the max charging current up at 1A/cell and with the PB 1000C’s PROG3 charge termination resistor reduced from 100K to 33K, it takes every bit of 10 hours to charge the battery pack from 3V to 4.2V, as shown below.

Panasonic 18650 6.8AH robot battery pack. Initial charge rate approx 1A per 2-cell parallel stack

Panasonic 18650 6.8AH robot battery pack discharge, 15 ohm load

28 December 2017 Update:

While testing these battery packs for charge and discharge performance, I came to realize that I had over-complicated the test circuit.  The original test circuit is shown below:

This circuit uses a relay to switch +5V power to the charger modules in the battery pack module, and also to switch the load in and out.  As I gained more experience, I realized the relay contact resistance was substantially reducing the charge current, so I wired +5V directly to the battery pack; this worked because the Arduino running the test circuit keeps the battery pack parallel/series relay disengaged (meaning the battery cells are arranged in series) until the load voltage drops below a set threshold.  So, this realization resulted in the following updated circuit schematic.

As shown above, I added the connections to the battery charger module, and the LED displays.

However, I have now come to realize that the other half of the relay isn’t necessary either, as the ‘Robot +’ line isn’t connected to anything until the test manager computer (Arduino Uno) recognizes the end-of-charge condition and changes the Coil Enable signal from HIGH to LOW, disabling the battery pack’s internal relay and changing the battery configuration from parallel (CHARGE) to series (RUN).  So, now the test circuit can be reduced to just the LEDs and the load resistors, as shown below.

While I was making the other changes, I also cut the load resistance in half, from 15Ω to 7.5Ω to more accurately simulate the actual robot motor loads, and (finally!) managed to capture a complete discharge cycle, as shown below.

Complete Robot Battery Pack Discharge Curve, 7.5-ohm load.

The 7.5Ω load for this run provides a good approximation for the maximum current drain experienced by the robot under most operating conditions, so it is now safe to say that the robot should be able to run at least 6 hours on a charge, and that a full charge will take about 10 hours.  So, the robot will spend more time on the charger than on the road, but that’s life in the robot lane.

Stay tuned!





Wall-E2 battery charger module testing, Part I

Posted 15 December 2017

For the last couple of months I have been working on the battery subsystem for my Wall-E2 autonomous wall-following robot.  Along the way I upgraded the robot chassis to provide more room for the on-board charger & battery pack, and created a PC board design for the module that charges the 2-cell LiPo stack in parallel and then switches to a serial configuration to run the motor.  This post describes the first part of a testing program to validate the performance of the Adafruit PowerBoost 1000C charger module, and the idea of switching seamlessly from charging to powering a load.

By way of background for this post, I ran into some difficulties when I tried to integrate the full-up 2-cell, 2-PB1000C battery pack/charger combination into my Wall-E2 robot, and troubleshooting the problems using the complete operating system software proved to be somewhat tedious, I decided to start at the other end with a very simple test program running on an Arduino Uno, and a single PB1000C charger.

The Arduino test program is very simple; when it is initialized, it checks the battery voltage to see if is above or below a preset threshold.  If above, it energizes a DPDT relay to connect the battery to a 15Ω load; if below, it de-energizes the relay, which disconnects the battery from the load and also connects 5V to the ‘USB’ (5V input) terminal of the PB1000C, thereby charging the battery.  After that, the program alternately switches the battery between the load and charging states, recording the battery voltage every four seconds.

Battery Testing Hardware

Arduino Uno and test circuit.  Note the yellow ‘charging’ LED on PowerBoost 1000C shown at middle right

After working the inevitable bugs out of the Arduino program, I got some reasonable battery cycling data, as shown in the following plots.  The battery used in all these tests was a PKCell LP795060 LiPo cell, rated for 3.7V and 2500mAH.  It is rated for about 5hrs at 0.2C discharge, but I was only seeing about 3hrs at 0.1C, most probably because I was terminating the discharge at 3.4V rather than the 2.75V used in the discharge tests.

Two complete chg/discharge cycles

Chg/Dischg cycles using PB2 (same battery as previous tests). Short cycles may imply battery wear-out

After the last test above, I was concerned that either the PowerBoost 1000C was not operating properly, or the battery itself was failing, or both.  So, I changed the discharge termination threshold from 3.4 to 3.0V to be more consistent with the 2.75V cutoff used by the battery manufacturer.  After making this change only, I got the following plot

Charge/discharge cycles after changing the discharge termination threshold from 3.4 to 3.0V

As can be seen from the above plot, the discharge and charge times were extended dramatically.  Discharge (at approximately 220 mA or 0.1C) took well over 3hrs, and charge took about the same amount of time.  So, it appears that both the PowerBoost 1000C modules are still working OK even after the abuse I put them through by plugging them into a PCB with wiring errors ;-).




Wall-E2 Battery Charger PCB Part II

Posted 1 November 2017

In my last post on this subject, I described my efforts to create a PCB for the charging module in my wall-following robot(s).  I showed the hand-wired original, and the first (of three, so far) PCB versions. My circuit-checking skills are a bit deficient, so I keep finding ‘issues’ with the PCBs I received from Bay Area Circuits.  It’s not their fault as they produced PCB’s exactly like I told them – apparently they don’t know about the RDM (Read Designer’s Mind) checkbox on their order form! 😉

In any case, the major problems I discovered on the first two revs are, kind-of, understandable for a PCB newbie like myself; I had the JST battery connectors switched, so Batt+ showed up on the PCB as Batt-, and the IRF-510 transistor holes were reversed as well.  A bit of cut-and-jumper work solved the first problem, and simply turning the transistor around solved the second one.  However, I really didn’t like leaving that as the ‘final solution’ so I splurged another $30 on a third rev with these problems fixed.  These boards have not yet arrived, so in the meantime I continued testing on the current setup.

As the photo below shows, the finished and populated PCB has almost exactly the same dimensions as the hand-wired perfboard model.  Since the perfboard version had several components mounted on the wiring side, arriving at the same dimensions with everything on one side is a definite plus!

comparison between the hand-wired perfboard version and the PCB

After getting the PCB populated, I did some electrical testing, and somewhere along the way I think I managed to damage the boost regulator chip on one of the PowerBoost 1000C modules.  And this is where I discovered my next major booboo – I had hard-wired the PB1000C’s to the PCB, and so now I couldn’t replace the damaged part without destroying the part, and probably the PCB too – oops!

07 December 2017 (Pearl Harbor Day) Update:

I received the latest (and hopefully, last!) batch of battery charger module PCB’s from Bay Area Circuits a week ago, but have been too busy with other things (mostly dealing with the new V3 robot chassis) to do much with it. So, today I started populating and testing the new charger module.  As I mentioned before, one of the bigger mistakes I made on the previous version was to hard-wire the PowerBoost 1000C’s onto the PCB, making it almost impossible to replace if it failed (and, as I learned from the Adafruit forums they can be easily damaged if they are powered up without a battery attached).  So, this time I soldered female headers onto the PCB and male headers onto the charger modules, making them easy to replace if needed.

New charger module with some test batteries attached

Charger module showing PowerBoost 1000C header arrangement

The next step will be to test the module’s ability to manage the robot’s battery stack.  I plan to simulate the robot load with a 500 mA resistive load, and simulate the actual battery stack with the two smaller 2500 mAH batteries shown in the above photos.  I’ll simulate the robot with an Arduino, programmed to print out time-stamped readings of the robot power voltage (actually 1/3 of the robot power voltage, but what’s a scaling factor between friends?).

Stay tuned!