The controller performs both start-up and continuous monitoring of various conditions. A condition that is outside a normal range may cause the controller to automatically take mitigating action (e.g. cut back output power) or trigger a fault.
For clarity, the term condition refers to a specific status indication. A low battery voltage is an example of a condition. The term fault refers to a condition that causes the controller to inhibit motion, and requires a keyswitch cycle to clear.
So, for example, a throttle deadband check can result in a condition that inhibits motion, but it is not a fault. When the deadband condition clears (throttle moved back to neutral) the condition clears and motion is allowed.
The following conditions are monitored and reported as status. Conditions are not exclusive (more than one abnormal condition can be reported at a time)
An onboard sensor measures the temperature of the controller near the drive electronics. As the temperature rises near the limit, the controller will indicate a high temperature condition and automatically reduce power. When the temperature decreases, output power will be restored and the high temperature indication will clear. See Controller Temperature Limit for more information.
Version 1.7.2 and higher
When wired to a temperature sensor in the motor, the controller's ANALOG IN input monitors the sensor. There are two temperature thresholds. The first one causes the motor current to be reduced when the threshold is exceeded. The second (higher) limit will cause the motor to stop, report a fault, and require a key switch cycle before the motor will run again. See Motor Temperature Limiting for more information.
The controller monitors the input voltage and compares it to two values: a threshold for displaying a low battery indication (Undervoltage), and a second threshold (Severe Undervoltage) that reduces the output power in order to extend battery life and potentially allow the vehicle to return to a charging point before stopping completely. When the voltage drops below the severe undervoltage threshold by a few volts, the controller switches off. Cycling keyswitch will turn the unit back on if the system voltage has increased above the severe undervoltage limit.
To troubleshoot an under-voltage condition, check for
- Depleted batteries
- Correct wiring between the battery and motor controller
- Correct configuration of the low-voltage limit.
The system High Voltage Limit is configurable. If the system voltage increases toward this limit, the controller will report an overvoltage condition and will begin to limit the output power. When the over-voltage condition clears, power will be restored. A common situation that can lead to an overvoltage condition is heavy regenerative braking with a fully charged battery.
If the voltage continues to rise above the high-voltage limit, the controller will stop to protect the hardware from damage. The controller will resume operation when the over-voltage condition clears and (if Deadband Check is enabled) the throttle returns to a neutral position.
If the output current to the motor exceeds the preset limit, the controller limits its output to prevent damage to the system.
Throttle Deadband Check
If configured to do so, the controller will not allow movement after power on, until the throttle has been detected to be in the neutral position. This is intended to prevent unexpected movement when the controller is switched on, and the throttle is not in neutral. Moving the throttle to the neutral position will clear the condition.
Other things to check:
- Correct configuration of the Throttle Deadband
- Correct configuration of the Throttle Neutral
- Correct configuration of the No Deadband Start setting.
The Quickstop input allows the external system to inhibit motion. The Quickstop signal is configurable; for example, whether it is active high or low, how quickly the motor decelerates when the condition occurs, and whether the keyswitch must be cycled in order to restore motion. See Register 0x0318 and Register 0x0353 for more configuration information.
Typically this condition means that a safety sensing device such as a seat switch, proximity sensor, emergency stop button has been activated. Check for
- A device connected to the Quickstop input indicating a stop condition
- Loose or broken connection to the Quickstop input
- Incorrect configuration of the Quickstop input
A stall condition was detected using the motor position sensors. Check for
- Obstacles preventing movement
- Correct wiring to the motor and motor sensors.
- Correct configuration of the motor sensor(s)
The controller will continue to provide power to the motor during a stall condition.
CAN Bus Communication
If CAN Bus equipped, and CAN Bus is being used to provide control inputs, a loss of CAN Bus communication (too many missed messages or bus off condition) will cause the controller to inhibit motion. Re-establishing the CAN Bus connection will restore operation. Note: if the Deadband Check feature is enabled, the throttle must first be moved to the neutral position before motion is allowed.
The controller provides a motor state output byte that is useful for monitoring the drive state of the controller. Its value is one of the following. See System Status Message for more information.
|0||Powering Up/Down||A temporary state while the controller completes its power-up or power-down processing|
|1||Idle||The controller is ready but is not driving the motor|
|2||Idle Hold||The controller is ready but is not driving the motor, and is in a regenerative braking mode that resists motion.|
|3||Push Mode||The controller is running in push mode. The motor was turned by external forces which generated voltage enough to power on the module.|
|8||Overvoltage Protect||The controller is limiting output power due to a high input voltage condition|
|9||Diagnostic Fault||Motion is inhibited due to a fault condition|
|10||Operating Fault Decel||The motor is stopping due to an abnormal condition|
|11||Operating Fault Zero PWM||The motor is stopped due to an abnormal condition|
|16||Reverse Idle||The controller is ready to drive in reverse. The throttle is in a neutral position|
|17||Forward Idle||The controller is ready to drive forward. The throttle is in a neutral position|
|20||Reverse Limited||The controller is driving reverse, but a power-limiting condition is active. Refer to PWM Diagnostics for details.|
|21||Forward Limited||The controller is driving forward, but a power-limiting condition is active. Refer to PWM Diagnostics for details.|
|24||Reverse||The controller is driving in Reverse|
|25||Forward||The controller is driving in Forward|
The controller provides a status output that signals conditions in an abnormal range. It is possible for multiple conditions to be reported as out-of-range at the same time. See System Status Message for more information.
|0x01||Overtemperature||The on-board sensor is indicating a temperature approaching the limit|
|0x02||Stall||The controller has detected that the motor is not moving (stalled). This condition applies to BLDC motor types.|
|0x04||Undervoltage||The controller has detected that the input voltage is near or below the undervoltage threshold.|
|0x08||Overvoltage||The controller has detected that the input voltage is near or above the high voltage threshold.|
|0x10||Sensor_Fault||Set when invalid motor sensor pattern detected|
|0x20||Over Volt Protect||Set when High Volt Protect active|
|Holdoff (motor control is held idle. Could be a failure condition or charger detected but not active).
Throttle Fail is set when throttle has entered fail band. This feature was removed in 1.8.2.
|0x80||Quickstop Active||Set when quick stop active|
The controller provides a status message that contains information about what could be causing no PWM or limited PWM to occur. Multiple bits can be set. See System Status Message for more information.
|0x01||Accel Drive||PWM is set to zero due to acceleration drive|
|0x02||Hard Stop /
|Prior to 1.7.8 PWM is set to zero due to hard stop
1.7.8 and above this means current limit is not cur_ub
|0x04||Limited||PWM is being limited by unspecified source|
|0x08||Max PWM||PWM is being limited by max_pwm setting|
|0x10||Low Battery||PWM limiting w/in range of Low Battery Voltage|
|0x20||High Voltage||PWM limiting w/in range of High Battery Voltage|
|0x40||High Temperature||PWM limiting w/in range of High FET Temperature|
|0x80||High Motor Temperature||PWM limiting w/in range of High Motor Temperature|
The controller provides a status message that contains information about what caused the motor to stop. This is an enumerated value. Bits 0-3 contain the value. See System Status Message for more information.
|0||No stop condition||No stop has been activated|
|1||Drive time exceeded||Drive Timer Exceeded|
|2||Forward/Reverse inhibits active||Contact detected with object|
|3||Digital stop active||Stopped receiving CAN Bus Digital Throttle commands|
|4||Qstop pin active||Emergency stop signal activated|
|5||Seat stop active||Seat switch shows seat not occupied|
|6||Charging active||Battery is being charged|
|7||Deadband start fault||Throttle was not in deadband when powering on|
|8||Key off active||Key switch is turned off. Unit may shut off|
|9||Throttle failure active||Throttle exceeded Failband limits|
|10||Sensor failure active||Hall sensor disconnected/malfunction|
|11||ANALOG IN stop active||External temperature limit exceeded|
|12||Waiting for deadband start||Throttle is not in deadband|
|13||Locked||Special CAN Bus feature that requires 0 throttle before running|
|14||No Drive / Internal Failure||Diagnostic failure|
|15||Latched Failure||Fault occurred, key switch is required to clear fault|
|16||Current Limit Exceeded||Current limit exceeded. See Motor Current Limiting|
The controller provides a status message that contains miscellaneous information about what could be causing certain faults or conditions. See System Status Message for more information.
|0x20||Sensor Error||Hall Effect Sensor error active|
|0x40||ANALOG IN Limit||Motor temperature is above software limit. Throttle input range is being affected.|
|0x80||Seat Stop Active||Seat Stop request active|
Special Diagnostic Commands
Special diagnostic information on motor faults can be found by reading special RAM registers.
|0x00 No Warnings
0x81 EEPROM Revision Error
0x82 Calibration Error
|0107||FET Test||Test for motor opens and shorts
0x00 No faults
0x18 - 0x1F Faults during "No FET" test
0x38 - 0x3F Faults during "One FET" test
0x48 - 0x4B Faults during "FET Pairs" test
0x4C - 0x4F Open Motor Faults
The charge mode status byte indicates the status of the connected battery charger (applies to compatible chargers only). If the value is 0, the controller is not in charging mode.
|0x80||Just changed from charge mode to drive mode. Key cycle or power cycle is required to clear this.|
There are several diagnostic records stored inside the controller's EEPROM. Here is a list of information available.
Note: If EEPROM Register 0302 Bit 2 is set, the address of the counters is OR'ed with 0x0080. For example the reset cause will be at 03E9 instead of 0369.
|0301||Fault Log Pointer||EEPROM address of most recent fault in fault log|
|0370-037F||Fault Log||Circular buffer of last 16 fault codes|
|0360 or 03E0||Motor Runtime Counters (LSB)||LSB of total run time in .065536 second units|
|0361/03E1||Motor Runtime Counters (MSB)||MSB of total run time in .065536 second units|
|0362/03E2||Motor Runtime Hours (LSB)||LSB of total run time in hours|
|0363/03E3||Motor Runtime Hours (MSB)||MSB of total run time in hours|
|0364/03E4||Charge Float Errors||LSB of charge float errors|
|0365/03E5||Low Battery Runtime||LSB of low battery operation|
|0367/03E7||Over Temperature Fault Counter||Count of OT fault count (Max = 255)|
|0368/03E8||Throttle Fault Counter||Count of throttle fault count (Max = 255)|
|0369/03E9||Reset Cause||Cause of last microprocessor reset
Bit 0 = Timed shutdown
Bit 1 = Charge Finished
Bit 2 = Key Switch
|Serial #||The controller’s factory-assigned serial number.|
|Motor SW Version||Indicates the version of software (major.minor.patch) contained in the motor control microprocessor|
|Comm SW Version||Indicates the version of software (major.minor.patch) contained in the CAN Bus microprocessor (for CAN Bus-equipped and non DSP controllers)|