Thermistors

Over Temperature Current Limiting

There are two temperature sensitive currrent limiting modules on the ODrive Pro, <axis>.motor.fet_thermistor and <axis>.motor.motor_thermistor. The temperature reading (in Celcius) from each thermistor can be monitored from <thermistor>.temperature. Both modules can be enabled by setting <thermistor>.config.enabled to True.

When enabled, either module will start limiting the motor current when the <thermistor>.config.temp_limit_lower threshold is exceeded. The current limit will then ramp down, ending with 0A once <thermistor>.config.temp_limit_upper is reached. If the temperature continues to rise past <thermistor>.config.temp_limit_upper + 5°C, the ODrive will exit CLOSED_LOOP_CONTROL with an error of either INVERTER_OVER_TEMP or MOTOR_OVER_TEMP, depending on which thermistor exceeded this threshold.

_images/current_limiting.png

Current Limit vs. Thermistor Temperature

Warning

The lower and upper thresholds for <axis>.motor.fet_thermistor can be changed, but this is not recommended.

Motor Thermistor Configuration

All motors with an integrated thermistor offered by odriverobotics are compatible, otherwise make sure you have an NTC type thermistor before use.

Note

For users migrating from ODrive v3.*, no external circuitry is required to use a motor thermistor. The ODrive Pro has a built in 1k ohm voltage divider.

Thermistor Coefficients

Note

Setting thermistor coefficients is not currently supported in the GUI.

Every thermistor is different and thus it’s necessary to let the ODrive know how to relate voltage and temperature, this is done setting the polynomial coefficients poly_coefficient_[0-3]. The suggested method of setting these is to use the set_motor_thermistor_coeffs function provided by odrivetool:

set_motor_thermistor_coeffs(axis, Rload=1000, R_25, Beta, Tmin=-10, Tmax=150, thermistor_bottom=True)

These parameters describe the thermistor characteristics and are defined as follows:

  • axis: Which axis to set the motor thermistor coefficients for.

  • Rload: The Ohm value of the resistor used in the voltage divider circuit.

    Note

    Only advanced users should modify this parameter, the default value is set to match the internal voltage divider, which can be found on the pinout page.

  • R_25: The resistance of the thermistor when the temperature is 25 degrees celsius.

    • Can be found in the datasheet of your thermistor.

    • Can also be measured manually with a multimeter.

  • Beta: A constant specific to your thermistor.

    • Can be found in the datasheet of your thermistor.

  • Tmin and Tmax: The temperature range used to optimize the polynomial coefficients.

    This is different than the min and max allowable temperatures for the motor or thermistor, and should only be changed from their default values when operating in extreme thermal conditions

Fan Control (Pro only)

The ODrive Pro has one 12V supply with a switched negative lead (Fan-) on J12. This is designed to power an offboard fan which can be controlled by one of two modules:

  • <odrv>.config.odrv_fan

    Used for cooling the ODrive FETs. Feedback is received from the integrated fet_thermistor

  • <odrv>.config.motor_fan

    Used for cooling the motor. Feedback is received from an offboard motor_thermistor

Both <fan> modules use hysteresis control, where the fan is engaged once the temperature reading reaches <fan>.upper and remains on until the temperature drops below <fan>.lower, either module can be enabled by setting <fan>.enabled to True.