Intro to Motor Systems
The motor system encompasses the motors, motor controllers, and precharge controllers. We use two high-efficiency BLDC motors (NGM SC-M150s) to make the car move. We have off-the-shelf motor controllers that explicitly support these motors (Tritium WaveSculptor 20s) and handle the extremely complex work of safely converting the HV DC bus into a 3-phase output to drive the motors. Our motors are the primary consumers of power in our car and set the target bounds of our HV bus.
BLDC Motors and Motor Controllers
The operating principle behind any electric motor is the use of electromagnets to attract or repel permanent magnets in such a way that an axle spins. A brushless DC motor relies on electronically controlled phases to switch alternating windings of the motor, removing the need for a commutator. For a decent explanation on how a BLDC works, see this video. This results in a high-efficiency, reliable motor that just requires a separate controller to drive. Although the basic idea is relatively simple, motor controllers like the ones we use can be extremely complex, supporting both sensor and sensorless drive modes and DSP/PID algorithms for speed control.
In addition to the ability to cause the motor to spin by providing power to it, we can use it as a generator to slow the car down. By converting the kinetic energy of the rotating wheel to electrical energy through the reversal of current in the motor, we can recover some energy and charge our battery pack. This is known as regenerative braking, and it's a bit more efficient than traditional friction-based mechanical braking. This is the secondary source of power for our battery pack, but we need to be very careful with how much power we recover from regenerative braking so we don't damage our pack.
The motor controllers drive the motors in two main modes, six step and sine wave control. Six step control is used when the motor is at low speeds and does not produce enough back-emf. This control mode relies on hall-effect sensors inside the motor to tell the motor controller which of the three phases to energize. As the motor speed increases, the back-emf will become sufficient for the motor controllers to sense and use it to drive the motors instead. The motor controller switches to a sine-wave control, which is much smoother compared to the choppier six-step control.
Precharge Controllers
Our motor controllers contain large capacitors in their HV input circuit, requiring precharge and discharge circuits to safely charge and discharge the capacitors.
The idea behind a precharge circuit is that when a capacitor is connected to a DC source, the capacitor starts charging with a huge inrush current that decays exponentially to a more reasonable amount. Since we use HV relays to connect the motor controllers to the main HV bus, the combination of high voltage and high current can cause arcing to occur within the relay, damaging the contacts and possibly welding them together. A precharge circuit uses a power resistor to limit the maximum current until the capacitor is charged to around 95% of the main HV bus voltage before closing the HV relay. This prevents the relay from being damaged and keeps the system safe.
When we want to turn the car off, the capacitors present in our motor controllers continue to retain their charge. This is a major shock hazard, so we employ the use of a discharge circuit that essentially places a power resistor across the capacitor, discharging it to a safe voltage.
For MSXII, we've designed an analog precharge/discharge controller that handles motor controller precharge and discharge automatically. The controller expects a 12V input that is its sole power source and represents whether the motor controllers should be charged or discharged. When unpowered, it enters the discharge state so any faults will result in immediate isolation and discharge the motor controllers to a safe working voltage.
Motor Controller Interface
As one of the few off-the-shelf components in our electrical system, our motor controllers define a high-level CAN protocol to use for controlling them. Unfortunately, their protocol does not work with our defined protocol, and so we require a motor controller interface board that translates our protocol into their drive commands.
This also allows us to isolate the motor controllers on their own CAN bus, preventing them from interfering with our main system CAN bus. We can also operate the motor CAN bus at a different network speed and implement dedicated control algorithms.