The BMS board overlooks all battery actions and aims to prevent any battery malfunctions from resulting in disasters. It is also tasked with sending battery information to the main Arduino, using a iso-CAN connection. It has for main functionalities: Cell Voltage Reading, Cell Voltage Balancing, Current Measurement, and Temperature Reading.
Main Schematic
Cell Balancing & Reading Schematic
Temperature Measurement Schematic
There are four main sensors and switches in the car: The throttle, the brakes, the E-Stop, and the Direction Switch. We used a linear potentiometer to control our throttle input, and this data was directly fed into the Arduino. This allowed us to customize the throttle pattern to our liking. For brakes, we used a limit switch and established communication with the motor controllers via Arduino. The E-STOP was directly connected through the relay lines allowing us to shut the power to the relay if there is an emergency. Also, the Key Switch had a direction knob which we connected its outputs to the Arduino, allowing us to have reverse and neutral modes.
Throttle & Brakes
Direction Knob & E-STOP
The main Arduino circuit has 2 Arduinos and a breadboard that gets inputs from sensors and the BMS and outputs motor speeds, break information, and direction to the motor controllers. The reason we used two Arduinos was that Arduino R4s have only one DAC pin that can supply the throttle information to the motor controllers.Â