Solar Boat Arduino PID control loop
Collaborators: Josh Johnson and Eli Abidor
Project Dates: 1/5/2014 - Present
Details:
Designed and assembled a cruise control system for the electric boat created by the Northeastern University Solar Boat club. The cruise control system was created to optimize the power consumption of the boat during the endurance event at the National Solar Splash Competition. The goal of the endurance event is to travel the greatest distance over the course of two hours, during this event the boat batteries can be recharged using an on board solar panel assembly with a maximum power rating of 528 watts.
The goal of designing a cruise control system was to ensure the electric power generated by the batteries and panels are used more efficiently. Additionally an automated system results in a steadier current draw from the batteries versus from a manually driven system. Over the course of two hours a driver is likely to make errors in keeping the throttle steady and cause spikes in the current delivered to the motors. A steadier current draw is ultimately better for the battery chemistry of the lead acid batteries used on the boat and results in a longer overall battery life. The system also reduces driver fatigue which is beneficial due to the amount of active data logging our drivers perform during each endurance event.
Currently an Arduino that receives input from a current sensor and a voltage sensor looks at the current generated by the solar panels and the overall charge of the boat batteries to determine the maximum speed the boat can travel at for the remainder of the race. The Arduino sends a voltage signal to the motor controller based on a PID control loop algorithm which regulates the current delivered to the motors based on current sensor data to drive the motors at the appropriate RPM to obtain the desired boat speed regardless of weather conditions
The cruise control designed for this event is unique in the sense that it dynamically changes the desired set speed of the boat. The PID controller operates similarly to a normal cruise control system would in that it attempts to regulate a power source (in this case battery current draw) to maintain a single set speed. The algorithm I wrote for this event looks at the amount of time left in the endurance event as well as the charge level of the batteries to adjust the desired speed input into the control loop. This ideally drains the batteries at the end of the two hour race. This ensures that the boat is always moving until the end of the race so we are never dead in the water and wasting energy in gaining momentum, as well as ensures that we travel the maximum possible distance by ensuring the batteries have been completely discharged (to a healthy discharge level that doesn't damage the battery chemistry) by the end of the race.
The system hardware is currently comprised of a buck which bucks down the system voltage generated by the boat batteries to a 9 V rail used to power the Arduino, a LDO is currently used to generate a subsequent 5 V rail to power the current sensor and voltage sensor used for data collection, these rails additionally power an LCD screen to create a dashboard for the driver. A bank of capacitors are used to ensure the power rail for the Arduino has minimal noise but additionally are used to filter a PWM signal from the Arduino into a corresponding analog signal to be used by the motor controllers.
