Throttle Application
Introduction
Overview
The Throttle application allows the user to implement a simple throttle control directly on the emDrive. Input devices can be connected directly to the emDrive and mapped to the throttle application. The application calculates the desired output based on these inputs and passes it to motor control. The output can be used as either a torque input or a speed input in the motor controller, depending on which CANOpen object the output is mapped to. No further configuration is needed to switch the application from one output mode to the other.
Features
The Throttle application supports the following features:
- Throttle Module
Functionality: Calculates the desired output based on mapped input and configuration parameters.
Capabilities: Can be configured as unidirectional or bidirectional. - Brake Module
Functionality: Calculates the desired brake torque based on mapped input and configuration parameters.
Capabilities: Unidirectional only, with brake torque always in the opposite direction to motor rotation.Note that if the desired output is speed, the brake should be disabled.
- Pump Control Module
Functionality: Controls the pump, turning it on or off depending on motor and drive temperature. - Pre-charge Module
Functionality: Manages the pre-charge process at startup. - DC-DC Turn On Delay Module
Functionality: Delays the activation of the DC-DC converter after startup to ensure controlled power application. - SOC Monitoring Module
Functionality: Monitors the State of Charge (SOC) of the battery.
Capabilities: Reduces the maximum allowed torque when SOC is below a specified threshold.Requires an external Battery Management System (BMS) to operate correctly.
- Charging Detection Module
Functionality: Detects when the battery is charging and disables the drive during the charging process. - Input Mapping
Functionality: Allows certain inputs to the throttle application to be mapped to CAN objects on the emDrive.
All throttle application features can be independently enabled or disabled (except the brake module, which requires the throttle module to be enabled). This is done by setting the Thr1_Enable CAN objects of the throttle application as detailed in Table 1.
Object Name |
Object Index |
Object Subindex |
Description | Unit |
Thr1_Enable |
0x4010 | 0x00 |
Enables the throttle application: 1 – enabled (must be enabled for any modules to work) |
/ |
Thr1_Enable__Throtle | 0x4011 |
0x03 |
Enables the throttle module: 0 – disabled |
Bit |
Thr1_Enable__Brake | 0x4011 | 0x04 |
Enables the brake module: 0 – disabled |
Bit |
Thr1_Enable__Pump | 0x4011 | 0x05 |
Enables the pump control module: 1 – enabled |
Bit |
Thr1_Enable__Precharge | 0x4011 | 0x06 |
Enables the pre-charge module: 0 – disabled |
Bit |
Thr1_Enable__DC_DC | 0x4011 | 0x07 |
Enables the DC-DC turn on delay module: 0 – disabled |
Bit |
Thr1_Enable__SOC | 0x4011 | 0x08 |
Enables the SOC monitoring module: 0 – disabled |
Bit |
Thr1_Enable__ChargingDetBitect | 0x4011 | 0x09 |
Enables the charging detection module: 0 – disabled |
Bit |
Input and Output mapping
Input and output mapping for the Throttle application is managed using the Thr1_Obj
object, which stores the CANOpen indexes and subindexes of the inputs and outputs mapped to the Throttle application variables. You can remap any variable to a different input by writing the CANOpen index and subindex of the new input to the corresponding Thr1_Obj
sub-object.
For example, to map the throttle voltage input to the emDrive analog input 1 (which has a CANOpen object HW_AIN_AIN1
with index 0x3090
and subindex 0x01
as shown in the picture bellow), you would write 0x309001
to Thr1_Obj__ThrottleVoltage
.
DODAJ SLIKO kako zgleda v configuratorju ko napišeš obj v obj |
The following table outlines the object mapping parameters for the Throttle application. Each object in the table represents a specific function or control point within the application, and the corresponding CANOpen index and subindex define where these objects are located in the CANOpen network. By configuring these parameters, users can tailor the Throttle application to their specific needs, ensuring precise control and monitoring of various functions.
By correctly configuring these object mappings, users can ensure that the Throttle application communicates accurately with the various inputs and outputs connected to the emDrive. This flexibility allows for precise control of throttle, brake, pump, and other critical functions, enhancing the overall performance and reliability of the system.
Object Name |
Object Index |
Object Subindex |
Description | Unit |
Thr1_Obj__AppControl | 0x4012 | 0x01 |
Address of CAN object where commands are sent to application |
Obj |
Thr1_Obj__AppState | 0x4012 | 0x02 |
Address of CAN object where application state is saved |
Obj |
Thr1_Obj__ThrotleVoltage | 0x4012 | 0x03 | Address of CAN object with throttle input | Obj |
Thr1_Obj__ThrotleFWD_DIvalue | 0x4012 | 0x04 |
Address of CAN object to forward switch input |
Obj |
Thr1_Obj__ThrotleREW_DIvalue | 0x4012 | 0x05 |
Address of CAN object to reverse switch input |
Obj |
Thr1_Obj__TargetObj | 0x4012 | 0x06 |
Address of CAN object where output torque of throttle application is written |
Obj |
Thr1_Obj__BatValid | 0x4012 | 0x07 |
Address of CAN object which stores BMS status. |
Obj |
Thr1_Obj__BatSOC | 0x4012 | 0x08 |
Address of CAN object which stores battery SOC in percentage |
Obj |
Thr1_Obj__BatState | 0x4012 | 0x09 |
Address of CAN object which stores battery state |
Obj |
Thr1_Obj__ChargingDetectDIvalue | 0x4012 | 0x0A |
Address of CAN object which shows if charging is detected. If not 0 throttle application considers battery to be charging. |
Obj |
Thr1_Obj__MainPumpEnableDO | 0x4012 |
0x0B |
Address of CAN object with main pump enable control |
Obj |
Thr1_Obj__CoolingPumpEnableDO | 0x4012 | 0x0C |
Address of CAN object with cooling pump enable control |
Obj |
Thr1_Obj__CoolingInputTemperature1 | 0x4012 | 0x0D |
Address of CAN object with temperature input 1 (default bridge heatsink temp) |
Obj |
Thr1_Obj__CoolingInputTemperature2 | 0x4012 | 0x0E |
Address of CAN object with temperature input 2 (default motor temp) |
Obj |
Thr1_Obj__DCDCenableDO | 0x4012 | 0x0F |
Address of CAN object with DC-DC enable control |
Obj |
Thr1_Obj__BuzzerDO1 | 0x4012 | 0x10 |
Address of CAN object with buzzer high side enable control |
Obj |
Thr1_Obj__BuzzerDO2 | 0x4012 | 0x11 |
Address of CAN object with buzzer low side enable control |
Obj |
Thr1_Obj__BrakeVoltage | 0x4012 | 0x12 | Address of CAN object with break input | Obj |
Thr1_Obj__RPM_in | 0x4012 | 0x13 | Address of CAN object with RPM data | Obj |
Thr1_Obj__MainRelayEnableDO | 0x4012 | 0x14 |
Address of CAN object with main relay enable contro |
Obj |
Thr1_Obj__PrechargeRelayEnableDO | 0x4012 | 0x15 |
Address of CAN object with pre-charge relay enable control |
Obj |
Thr1_Obj__PrechargeDC_voltage | 0x4012 | 0x16 |
Address of CAN object with measured voltage during pre-charge procedure |
Obj |
How to Use Each Module
Initial Setup Assumptions
This document assumes that the angle sensor calibration has already been completed by the user, and that all other emDrive parameters for the motor and regulation have been properly configured. Before using any module we have to enable the CANOpen object Thr1_enable
with index 0x4010
and subindex 0x00
, for that we have to write 1 to the "value" field.
Example
DODAJ sliko kk to zgleda
Pre-charge Module
The Pre-charge module limits the charging current of the emDrive capacitors by activating the pre-charge relay switch before the main relay switch is engaged. The pre-charge relay switch has a resistor connected in series, which limits the current during the capacitor charging phase.
Note that the main and pre-charge relay switches are not integrated within the emDrive and must be provided externally. For more details, refer to chapter 5.4 of the EmDrive user manual.
For readability and clarity, the following abbreviations are used:
- The pre-charge relay switch refers to
Thr1_Obj__PrechargeRelayEnableDO
- The main relay switch refers to
Thr1_Obj__MainRelayEnableDP
The sequence begins with the activation of the pre-charge relay switch. After the duration specified by the Thr1_Precharge__PrechargeTime
parameter (default is 2 seconds), the drive voltage is checked. If the voltage does not exceed the threshold set by the Thr1_Precharge__MinDC_Voltage
parameter, an error state is reported. If the voltage is above this threshold, the main relay switch is activated. Finally, after the time specified by the Thr1_Precharge__DelayAfterMainClose
parameter has elapsed, the pre-charge relay switch is turned off, and the run state is set to true, activating the throttle and brake functionality. Additionally, we have a diagram illustrating the above functionality. It is assumed that after the pre-charge time, the DC voltage exceeds the set threshold, thus no error state is encountered.
To set this module you have to set all of the objects in table 3 and also use the correct mapping for Thr1_Obj__PrechargeRelayEnableDO
and Thr1_Obj__MainRelayEnableDP
.
Object Name |
Object Index |
Object Subindex |
Description | Unit |
Thr1_Precharge__PrechargeTime | 0x4016 | 0x01 | Time to wait after pre-charge relay switch is activated before voltage is checked |
s |
Thr1_Precharge__DelayAfterMainClose | 0x4016 | 0x02 | Time to wait before pre-charge relay switch is deactivated after the main relay switch has been activated |
s |
Thr1_Precharge__MinDC_Voltage | 0x4016 | 0x03 | Minimum voltage that must be present on drive capacitors in order to not enter error state |
V |
You can also verify whether the pre-charge completed successfully or if an error occurred using the pre-charged module signals.
Object Name |
Object Index |
Object Subindex |
Description | Unit |
Thr1_Precharge__Run | 0x4016 | 0x04 | Set to 1 when pre-charge is successfully finished | bit |
Thr1_Precharge__Err | 0x4016 | 0x05 | Set to 1 if there was an error during pre-charge | bit |
Example
Doddaj sliko kk to zgleda