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 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.
The limit value is a function of the Relative Temp = Actual Temp - Temperature Threshold:
The temperature threshold is set in configuration register 0x16
|Relative Temperature||%PWM||%PWM Hex|
If the limit value is not 0xFF, a fault code of OTEMP (0x31) is generated.
By setting bit 5 of EE Address 0x86, the limiting begins 32 degrees from the threshold with 5 bits of resolution. For example,
|Relative Temperature||%PWM||%PWM Hex|
When wired to a temperature sensor in the motor, the controller's ANIN input monitors the sensor. There are two temperature thresholds that the controller looks at. The first one causes the motor current to be cut in half. The second higher limit will cause the motor to stop and a fault will be generated and a key switch cycle will be required.
Configure the following registers to enable the temperature sensor.
- EEPROM Address 0x92 Set to 0x60 to configure ANIN (GPIO2) as an analog input
- EEPROM Address 0x23 Bit 7: (motor_therm) 1 = ANIN determines current limit
threshold (cur_lb or cur_ub)
- EEPROM Address 0x4E (cur_time) Persistance / ramp time for cur_lb / cur_ub transitions, 40ms resolution.
- EEPROM Address 0x21 (cur_lb) Lower current limit threshold
- EEPROM Address 0x22 (cur_ub) Upper current limit threshold
- EEPROM Address 0x15 (hi_tcol) ANIN voltage for current limit change, 19.5mV resolution
- EEPROM Addr 0x5E (cfr_opts9) Bit 0: anin_invert 0 = excessive temperature when anin_v is less than threshold 1 = excessive temperature when anin_v is greater than threshold
- EEPROM Address 0x5C (ina1_type) set upper nibble to '1' to enable ANIN as a temperature 'stop' signal
- EEPROM Address 0x9B (anin_temp_stop) ANIN voltage for 'stop' functionality, 19.5 mV resolution. When ANIN is configured as a 'stop', the fault code 0x32 will be generated upon assertion of 'anin_stop'. This condition is 'latched' and will require a key switch to recover.
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.
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.
If CANBUS equipped, and CAN is being used to provide control inputs, a loss of CANBUS communication (too many missed messages or bus off condition) will cause the controller to inhibit motion. Re-establishing the CAN 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.|
|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|
|14||Reverse Limited||The controller is driving reverse, but a power-limiting condition is active. Refer to PWM Diagnostics for details.|
|15||Forward Limited||The controller is driving forward, but a power-limiting condition is active. Refer to PWM Diagnostics for details.|
|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|
|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|
|0x40||Throttle Fail||Set when throttle has entered fail band|
|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||PWM is set to zero due to hard stop|
|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|
|1||Drive time exceeded|
|2||Forward/Reverse inhibits active|
|3||Digital stop active|
|4||Qstop pin active|
|5||Seat stop active|
|7||Deadband start fault|
|8||Key off active|
|9||Throttle failure active|
|10||Sensor failure active|
|11||ANIN stop active|
|12||Waiting for deadband start|
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||ANIN Limit||Motor temperature is above software limit. Throttle input range is being affected.|
|0x80||Seat Stop Active||Seat Stop request active|
The charge mode status byte indicates the status of the connected battery charger (applies to compatible chargers only). If no status bits are set, the controller is not in charging mode.
The controller maintains the following statistics in non-volatile memory.
|Hour Meter||Displays the number of hours the controller has operated.|
|Low Batt||Displays the number of hours the controller has operated with the battery voltage input below the low voltage threshold.|
|Overtemp||Display the number of over temperature faults that have occurred.|
|Tht Faults||Display the number of throttle faults that have occurred.|
|Chg NoFloat||Displays the number of times the charge cycle did not complete (integrated charging only).|
|Fault Log||Contains the last 16 diagnostic fault codes.|
|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 CANBUS microprocessor (for CANBUS-equipped controllers)|
|Controller Type||Indicates the type of motor controller (e.g. Brushed DC Traction Controller, BLDC Traction Controller, BLDC Chore Controller, etc)|