In the previous issue of Raspberry Pi Geek, I introduced the SunRover project. SunRover is a solar-powered robot I am building that will transmit environmental information from a remote location. This article will focus on the SunRover power system and some of the problems I faced getting the power system to play nicely with all the electronic components in the SunRover assembly. I'll show how I redesigned the motor power system and then look at the solar power charging system, which, happily, is working perfectly!
What is Sun Rover?
SunRover  is a tracked, solar-powered robot designed to move around and explore the area while sending back reports, tracking weather, managing a power budget tightly, and providing a platform for testing new sensors and equipment as they become available. SunRover Robot Philosophy: Yes, I will move around by myself until I get confused or find a cliff. Then I will ask for help from a human. Or at least from a cat.
The major subsystems are shown in Figure 1. SunRover is a big project. The motors, the controllers, the computers, and the sensors are all complex devices in their own right. The current count is 30 for the number of I2C sensors in the project. A block diagram like the one in Figure 1 requires a lot of thought. When you are creating the block diagram, you are actually making design decisions that might be difficult to change later. The SunRover comes with a prebuilt track and motor controller system, two major computer components (a Raspberry Pi 2 for higher levels of control and an Arduino for power management and turning devices and sensors on and off), and dual WiFi communication paths. Solar panels will shift from one subsystem to another according to demand, and the system will use the RasPiConnect control panel application for remote monitoring and control.
Figure 1: Block diagram for SunRover.
Track Motor Controller/ Power Subsystem
Since the previous article in Raspberry Pi Geek magazine , I started another set of tests on the motor and battery stacking and unstacking system. I was stacking three 3.7V LiPo batteries to create ~12V for the motors and motor controller. Then, I unstacked the batteries to charge them with the SunAirPlus solar power controllers. The stacking and unstacking worked well. I could run the TRex motor controller. However, when I started to run the robot with the motors running full blast, I discovered a significant problem. The motors started the first time, but after one or more starts, I could no longer start them. I opened the equipment bay and looked at the Quad Power Management (QPM) Power Boards . Each of the QPM boards has an LED for each of the four channels to indicate whether the switch (like a solid state relay) is on or off. When the motor turned on (or mostly when the motors turned off), it would turn all the LEDs off, disconnecting the batteries, and they would not respond to any I2C commands. Knowing that starting and stopping motors creates current and voltage spikes, and seeing that the lights are correlated with the stopping of the motors, I knew I had a big noise problem.