Monthly Archives: February 2017

Wall-E2 System Documentation

Posted 27 February 2017

In a previous post I described a charging status display panel that was co-mounted with the front-mounted IR detector assembly. The status panel showed charging power, ‘on-charge’, and ‘Finished charging’ status lights for both chargers.  This is what I was after with this panel, but I ran into some problems that led me to reconsider this whole arrangement.

  • In the original design, the status signal lines from the charger module ran directly to the display panel, but not to the controller.  The controller has to be ‘in the loop’ for charging status, as it has to decide when to disconnect from charging  power and from the charging station.  I added lines to piggyback the signals to the controller, but this became ugly very quickly
  • The physical panel I came up with worked OK, but was more than a little un-elegant; the LED mounting holes were way too big, so the physical alignment of the LEDs was very poor.

So, I decided to re-do this entire physical module and wiring layout.  When considering the wiring, I had a couple of alternatives.

  • I could essentially re-do the original wiring plan – i.e. run a cable from the charging module to the display panel, and then tap off this cable to the controller.  This is messy, but only uses 6 controller pins.
  • I could run the cable from the charging module directly to the controller, and then run a separate cable from the controller to the display panel.  This uses 12 controller pins, but has the advantage of being much neater, and considerably simplifies the display panel wiring.

Considering these two alternatives, the natural question becomes ‘can I afford to waste 6 controller pins just for neatness/elegance?’  To answer this question I decided to do an audit of the current Mega pin usage.  I created a nice little Excel spreadsheet listing all the available Mega pins, their nominal functions (analog/digital/serial) and their current assignments, as shown below:

As can be seen from the document, there are lots of unused pins available, so using an additional 6 pins for neatness/elegance seems like a pretty easy trade-off.  So, my plan is to run the charger module status cable to controller pins 34, 32, 30, 28, 26, 24 & 22 (Pwr1, Chg1, Fin1, Coil En, Fin2, Chg2, Pwr2), and a corresponding LED drive cable from controller pins 35, 33, 31, 29, 27 &  25

04 March 2017 Update

After adding all the status signal input and status LED output lines associated with the Charger Module and moving the ‘Charger Connected’ line from pin 2 to pin 23 to be in the same group with all the other charger-associated lines, I updated the pin assignment spreadsheet as shown in the following PDF document:

The  next challenge was to reorganize and update the system schematic to reflect all the new inputs, outputs, and function blocks.  The complete system schematic is shown below:




4WD Robot System Schematic with pin assignments as of 05 March 2017

For completeness, I have included front, rear and both side views of Wall-E2 in its current state of construction.  The new battery pack and associated charging electronics has been fully integrated into the internal volume, and all the charging-station related modules/electronics have also been mounted.   The only thing missing physically at this point is the second deck with its two sonar ping sensors, the LIDAR forward distance sensor, and the forward red laser pointer

Front view showing charger jack coupler and new charge status display

Left-side view. Nothing much has changed in this view

Rear view showing ‘taillight’ assembly. Loose cabling is for 2nd deck ping sensors

Right-side view showing some of the new cable bundles



Charging Station Design, Part IX

Posted 20 February 2017

As part of the project to implement autonomous charging capability for Wall-E2, I needed a way to monitor main battery voltage in normal ‘run’ mode, in order to tell when to start searching for a charging station.  The main battery is a 2-cell LiPo stack, and so has a nominal stack voltage of around 7.5-8V when fully charged.  Since this is well above the Arduino Mega’s internal +5V operating voltage, I can’t measure this directly via the analog input ports.  So, I installed a 1/3-2/3 resistive voltage divider between the main battery voltage input, analog input A0, and ground, as shown in the following schematic detail.

System schematic detail showing resistive voltage divider for battery voltage monitoring

The nominal reading at A0 is 1/3VBatt.  Using the Arduino’s internal +5V regulator as the reference, the nominal battery voltage is 5*[A0/1023]*3.

To test this arrangement, I modified the operating software to print out the raw and calculated battery voltage values, and got the following printout.

BattMonVol: Raw 568 pin 2.78V TTL Batt 8.33V
BattMonVol: Raw 569 pin 2.78V TTL Batt 8.34V
BattMonVol: Raw 539 pin 2.63V TTL Batt 7.90V
BattMonVol: Raw 559 pin 2.73V TTL Batt 8.20V
BattMonVol: Raw 567 pin 2.77V TTL Batt 8.31V
BattMonVol: Raw 570 pin 2.79V TTL Batt 8.36V
BattMonVol: Raw 568 pin 2.78V TTL Batt 8.33V
BattMonVol: Raw 554 pin 2.71V TTL Batt 8.12V
BattMonVol: Raw 553 pin 2.70V TTL Batt 8.11V
BattMonVol: Raw 566 pin 2.77V TTL Batt 8.30V

In addition, I measured the battery voltage directly using my trusty multimeter, and got 8.03V, so a pretty reasonable monitor setup.


Next up; I had previously added the 4-detector IR module to the robot, and now I needed to integrate the IR detector measurements into the telemetry stream.  The battery monitor is on A0, and the 4 detectors are on A1-A5.  After adding the telemetry code, I got the following printout.

Time Batt DET1 DET2 DET3 DET4
0.20 8.15 937 935 651 950
0.40 8.01 943 934 739 952
0.60 7.61 934 935 792 953
0.80 7.90 932 937 824 955
1.00 8.14 940 940 847 957
1.20 8.04 927 937 862 956
1.40 7.70 930 939 876 957
1.60 7.70 932 942 889 959
1.80 8.11 935 940 898 957
2.00 8.06 929 941 899 959
2.20 7.89 944 943 904 960

Now I will add back in the left/right/forward distances, the forward variance, and the left/right wheel speeds.  After adding everything back, I get the following telemetry stream:


Time	Batt	DET1	DET2	DET3	DET4	Left	Right	Front	Track	Var	LSpd	RSpd
0.20	8.12	933	944	748	956	200	200	400	IR	407	127	127
2.00	7.65	936	941	818	955	200	200	48	IR	446	127	127
3.81	8.08	924	934	821	951	200	200	64	IR	516	127	127
5.61	8.08	942	933	830	951	200	200	85	IR	641	127	127
7.42	8.15	938	943	829	956	200	200	65	IR	705	127	127
9.22	7.92	939	945	832	958	200	200	71	IR	781	127	127
11.02	8.01	944	939	827	954	200	200	73	IR	858	127	127
12.83	8.11	941	932	826	950	200	200	69	IR	921	127	127