After you have some hardware to connect to your Metacycle, now you need the Windows software to perform the actual configuration. The Controller Debugging Manual, Programming Manual, and EM Motor Controller Manual will help walk you through the screens.
Screenshots are of the EM V3-40 software showing a stock Metacycle's controller's settings. Different software variants change the screens but are also similar enough to navigate. Documentation will correct obvious typos and misspellings, such as "buadrate" on page 1.
To start programming the controller, you need to have the controller powered on.
For further information about the settings, there's a lengthy thread discussing many parts.
Proceed only at your own risk. Modifying your settings will certainly void your warranty. Going beyond what your hardware can support will leave you with a large, expensive paperweight and you could get stranded. If you do decide to go forward, go with caution and monitor your vehicle for the slightest problems, especially with excessive heat.
Across the top of each screen are the following buttons, which let you navigate to different places.
Page 1: basic settings
Page 2: tuning
Page 3: motor profile
Display: real-time information
Port Settings: assign functions to buttons and controller ports
At the bottom are a series of other buttons.
Port: Which COM port to use for connecting to the controller
Status: If the COM port is connected or not.
Open / Close: To open or close the COM port. The port must be opened before using the Connect button.
Research: To scan your computer for COM ports again.
Connect: After the COM port is opened, you can connect to the controller.
Param Write: Commit the changes to the controller. Only do this after you've made a backup.
success_count: Number of successful messages received.
error_count: Number of bad messages received. This could be due to a CRC error, firmware configuration issues, noise on the line, or a bad connection.
Import Param: Read a saved configuration file and populate the settings in the software.
Save Param: Write the current settings in the software to a configuration file.
Turn on the Metacycle.
Attach the programming cable, either through the USB port in the storage area or using the 20-pin cable behind the display.
Do not hook up the cable to your computer.
Launch the software and look at the options in the PORT drop-down. This might be an empty list. If not, note each of the ports listed.
Hook the USB adapter to the computer and press "Research".
Open the PORT drop-down list and select the new COM port, set the baud rate to 115200, ensure "CAN enable" is not checked.
Press the OPEN button to open the port, then press Connect.
The settings will be read from the Metacycle and the pages will now populate.
The very first thing you should do is to save your current parameters. Keep this file safe so you can return to the stock settings. In case you didn't do this and now you want to go back to the stock Metacycle settings, you can download one that was shared.
SW: The controller's firmware version.
HW: The controller's hardware version.
Baud rate: How fast to communicate with the USB adapter. The USB CAN adapter only operates at 115200 baud.
CAN enable: This checkbox is for other controllers or the older cable. In order to use the programming cable, do not check this box.
ÖĐĨÄ / ENGLISH: This toggles the language to/from Chinese. It shows up as these characters because the Chinese languages are not installed on this Windows machine. If you do have the Chinese language installed, this shows "中文" instead.
Model: The model of the controller. Defaults to EM100 after connection because the protocol being used is shared by that same controller.
Battery Voltage (V): The rated voltage of the battery.
Overvoltage (V): When the battery provides more volts than this value, the controller will not output power. If set too high, this causes controller damage. If set too low, it will cause problems when the battery is full.
Undervoltage (V): When the battery's volts drops below this threshold, the BMS will not output power. This is where the battery's BMS will turn off. Riding beyond this is not possible. Battery life can be shortened and controller damage could occur in severe cases.
Soft undervoltage (V): If the voltage drops below this threshold, the controller's output will be throttled to help protect the battery.
Undervoltage variation (V): After the vehicle stops due to undervoltage, do not allow it to be driven until voltage is raised by this amount. Typically this is set to 1 V, so the battery will need to be charged to 56 V with stock settings in order to drive again.
Busbar current (A): How much current can travel through the controller. The stock controller is rated at 200 A but is set to 120 A. 72 V (battery voltage) times 120 A (busbar current) = 8,640 W = 8.64 kW. The motor is rated for 8 kW nominal, 14.5 kW peak. Other software calls this "Regenerative (A)" indicating that this value is the maximum amount of current that can flow back through the controller to the battery and the value here should indicate the maximum charge rate of the battery. It seems as though this may be used for both directions if the controller Debugging Manual and Programming Manual can both be trusted.
Phase current: Phase line current limiter. Controller damage can happen when set too high. More information about phase current. If set too high, the temperature will increase sharply, which burns out the MOS tube.
Low protect: Stops the ECU operation. Values between this number and start voltage are considered 0% throttle.
Start voltage: When throttle voltage is above this number, the motor starts running. When below this threshold, the motor stops running. The starting voltage of the throttle must be greater than the initial throttle voltage to prevent the vehicle from starting if water enters the handle. This should be at 0% throttle, or "fully closed."
The end of the: (End voltage) High end of the throttle voltage. The throttle is considered "wide open" at this voltage. Throttle volts from this value up to the high value are all considered 100% throttle.
High: The "too high" protection value. 5 V is the highest that should be set, which would indicate a short in the throttle. Must be higher than the throttle at "wide open".
The calculated throttle value is a linear graph when between the start voltage and the end voltage.
Start torque: Torque at startup. You probably want this at 0 at all times, otherwise your bike might drive away when powered on.
Combinative torque: A smoothing factor for when nearing the target torque. 0 means there's no smoothing, 350 is the max. This setting and the start torque are meant for mid-drive motors with gearboxes, not the direct-drive of the Metacycle.
Rate of rise: Acceleration slope, from 10 to 255. Faster acceleration is achieved with higher values.
Rate of decline: Deceleration slope, from 10 to 200. Controls how fast you slow down when the throttle is rolled back.
These parameters have useful graphs that explain them in the Programming Manual.
Current-limiting (A): Maximum amount of current to supply to the motor.
Flux-weakening value: The first input is the weak magnetic value, with an upper limit of 5000. The higher the number, the higher the speed of the motor. The second number (KI) tweaks the amount of vibration and ranges from 100 to 1200, adjusted in multiples of 50. Changing the second number can help tune some vibrations out of the motor at high speeds.
Automatic logout enabled: Should sport mode have a time limit?
Logout time (S): Maximum amount of time to stay in sport mode.
Recovery time (S): After the time elapses, do not allow sport mode for this many seconds.
With sport mode enabled, the motor is running in the flux-weakening region, which is where the motor is made to spin faster at the expense of torque. The magnetic field strength in the motor's stator is reduced, which also reduces the back electromotive force.
Long-term use of sport mode will cause the controller, battery, and motor to overheat, which leads to damage.
HHC enable: Hill Hold Control will hold the bike stationary when starting on a hill. Long-term use will cause controller temperature problems. Documentation says this is for three-wheelers, not motorcycles.
HDC enable: Hill Descent Control is a speed limiter to prevent runaway speed while going downhill. Sondors used this to limit the maximum speed of the motorcycle.
HDC lowest speed: Maximum RPM of the motor; the minimum rotation speed at which Hill Descent Control kicks in.
Speed limited enable: Limit the maximum speed. If enabled, limits the vehicle to 25 km/h (15.5 mph).
Speed ratio (%): Unknown how this figures into limiting speed. PB4 port should be set to speed limiting in port settings.
Flux-weakening compensation: The manual suggests this "adjusts the size of the reverse torque." Other software label it as MTPA (Maximum Torque Per Ampere) and says this makes the motor produce the maximum torque with the minimum phase current.
Low (%), Mid (%): The left side is the maximum rotational speed before HDC is enabled. For Mid using the default settings, it is 75% × 1200 RPM = 900 RPM. The right side is the maximum amperage allowed. For Mid using the default settings it is 68% × 220 A = 149.6 A.
High (%): The left side is the same as Low (%) and Mid (%). The right side will let you overshoot the rated RPM of the motor (KD). Documentation says to not adjust this value otherwise you may damage your power train.
Mid flux-weakening value: The programming guide says these are unable to be changed. Other software label the left field as the maximum phase line current corresponding to the first step of the accelerator at the start and the acceleration to the end. The first value is also labeled as "start phase." The right field is described as the maximum phase current maintenance time of the controller through the capacitor, protection time for the controller.
High flux-weakening value: The programming guide says these are unable to be changed. Other software will suggest changing the left field (KP) may affect motor noise. The right one is the upper limit for phase current.
Button/Switch 3 speed: "Button 3 speed" means the gear is determined by the number of times you press the switch. Use "switch 3 speed" when you have a three-position switch to control your gear. Using either one of these requires a change in the Port Settings page.
Three speed default gear: Select Low, Mid, or High for the default gear to be in when using "Button 3 speed."
Soft start enabled: When checked, make the acceleration from a standstill more gradual. When unchecked, do not start gently.
Soft start grade: Controls the amount of softening applied.
Pole pairs: Number of pole pairs in the motor.
Exchange hall wire color Yellow-Blue: Used for motor matching. Check wiring harness.
Exchange phase wire color Blue-Green: Used for motor matching. Check wiring harness.
Motor type: Both "surface-mount" and "v-type" are different motor types.
Hall shift angle: Matches motor manufacturer's parameters
One-LIN, Hall speedometer: Both of these control how information is sent to the speedometer. The Metacycle's display uses one-LIN, but the display can be changed. Make sure to update PB4 on the Port Settings page from "single_wire_co" to "hall_smulat_o" if this is changed.
Moving vehicle booster: Powers the motor to help you push the vehicle.
Cruise: Allow a button to enable a cruise control. Maintain speed for 8 or more seconds then press a button (configured on the Port Settings page) to enter cruise mode. Any operation exits cruise control.
Moving vehicle booster speed ratio (%): Amount of assistance as percentage of motor base speed.
Moving vehicle booster torque: Maximum torque to apply when assisting.
Double-voltage: Allows switching to one voltage category above or below the current battery rating.
Low, High: Determines if the default voltage is the lower or higher rating.
Reversing the speed limit (%): Maximum speed limit when driving in reverse.
EBS ratio (%): Enables regenerative braking and controls how much braking is applied.
Low brake: Alternate software labels this as "Motor noise reduction" and indicates that Page 1's Flux-weakening compensation value needs to be increased by 25 or the motor will overrun at high speed.
Secure boot: Need to enable the safety switch when running the vehicle.
RPM: The motor's current rotational speed.
Voltage: ("Switch" disabled on debug panel) The battery's supplying this much voltage to the controller.
Current: ("Switch" disabled on debug panel) The battery is discharging at this rate in amps. The manual indicates this is the bus current value; perhaps this is sent from the BMS.
Q-Axis voltage: ("Switch" enabled on debug panel) Voltage of Q-axis, which is related to torque.
D-Axis voltage: ("Switch" enabled on debug panel) Voltage of D-axis, which is related to main field flux.
Q-Axis amperage: ("Switch" partially enabled on debug panel) Amperage of Q-axis, which is related to torque.
D-Axis amperage: ("Switch" partially enabled on debug panel) Amperage of D-axis, which is related to main field flux.
Fault Code: 4-byte value, displayed as hex. Feeds into the fault display flags, which are covered as a part of the serial protocol information.
Hall fault: Unknown.
Brake: Unknown.
Motor hall: Unknown.
Undervoltage: Controller is not receiving enough voltage to operate safely. See Page 1.
Overvoltage: Controller is receiving too much voltage. See Page 1.
Overcurrent: Sending too much energy to the motor. See Page 2.
Controller failure: Unknown.
Out of control: Unknown.
Overheating: Temperature crossed thresholds defined in the advanced settings on page 3.
Controller temp (?): Controller temperature.
External Temp (?): Motor temperature
Temp coefficient: Controller hardware coefficient.
When the temperature is over its limit, the controller will shut down and not provide power until it has cooled. See the advanced settings on page 3.
Gears: What gear the vehicle is in, Low, Mid, High, or Sport.
R: Is the vehicle in reverse?
P: Is the vehicle parked?
Brake: A brake lever is being depressed.
ANT: Anti-theft system is engaged.
Side stand: The kickstand is down.
Regen: Deceleration is generating energy and feeding it back through the controller and into the battery. Regenerative braking is happening.
PD0: Nothing.
JTCK: Nothing.
SWD: Nothing.
PA11: From manual: "single support / low brake."
PB3: Thermostat.
PD1: Button to engage / disengage sport mode.
PA12: Nothing.
PC15: Nothing.
PA0: Nothing.
PB9: From manual: "high brake."
PB4: From manual: "ISDN." Single wire for speedometer.
PA15: Reverse button.
PB2: Park mode button.
PC14: Anti-theft.
PB5: Nothing.
PD15 (empty): Nothing.
Pressing the ">" icon on the right side of the window will open up a debug panel, then pressing "<" closes it. This panel doesn't change as you toggle between pages.
Communication and download set: Unknown
Set compare check: Set the CRC value for messages.
Current check: Current calculated CRC value of messages. Green if successful, red if CRC doesn't match.
Throttle: Show the current throttle as a slider and as a voltage.
Gear: Displays the current gear that the controller is in.
Switch: When not checked, shows the RPM, voltage, and current. When checked, shows the RPM, Q-axis voltage, and D-axis voltage. When in the third state (greyed + selected) it shows RPM, Q-axis current, D-axis current. This affects the "Display" page.
Brake: Is a brake currently applied?
R: Is the device in reverse?
Lock: Is the vehicle locked?
Vol cal: Calibrate so the detected voltage is consistent with actual voltage.
Cur cal: Calibrate amperes so the detected current is consistent with actual current.
Weak flux: Unsure how this affects weak flux.
CLR DTC: Clears failure. The button doesn't appear on this screen but is in the documentation and other software packages have it. It might only show up with a failure.
Open file: Open an ECU file (bin file) or configuration file (ini file).
Download: Send an ECU file (bin file) to the controller.
Moden: Unknown.
Delay: Unknown.
To access the advanced settings, go to the error_count field, delete the "0", then type "~~" (two tilde characters). Or you can delete the 0 and type "~" (one tilde character) and then tap shift again. Both methods do the same thing.
Some pages have additional controls that are added with the advanced settings.
Page 1
Brand: This drop-down list has several options, though its purpose is unknown.
Page 3
Initial temperature: Controller enters temperature protection when this temperature (° C) is reached.
Over-temperature: Controller enters second temperature protection at this limit.
Max temperature: Controller shuts down at this temperature and will need to cool (to over-temperature setting) before starting again.
T.C.1: Temperature limiting power. Limit power output when the item (motor?) reaches this threshold. Shut down when the temperature reaches 20° C above this value.
T.C.2: Called "Traction control" and "Dampening" in different software. With dampening, the range is between 10 and 30. If set too high, the motor will stop too fast and a current sound will appear when stationary. With traction control, it is enabled if the value is less than 9280.
T.C.3: Display speed adjustment. GPS / Speedometer × 64 × 256. Adjust in multiples of 256.
Debug Panel
Remote / Local: Switch between remote and local control. With the software set to remote control, the controller's input is from the software and not the controls.
Calibration: Writes calibration data.
Reset: Restarts the controller to use newly saved settings.
CAN: Adjusts CAN debugging line baud rate and ID. Controls the debug line restart. Shows a bunch more radio options and an extra button.
????? - Actual label is 重启调试线, restart debug interface. There's no English label for this button. Without Chinese installed, this will look like random characters.
The INI file that's written contains the seven pages of data that are also retrieved through LDGET and that are set through P commands. There are seven pages of configuration data, each containing 17 bytes. This is just the decimal form of each byte, written as one byte per line, using decimal notation.
For instance, line 1 is the controller model. Line 2 is the battery voltage and brand. Lines 3 and 4 correspond to the overvoltage setting. Lines 16 and 17 are the calibration for the current and that's the end of the data in the first set of 17 bytes. The second set of 17 bytes starts with the max bus current on lines 18 and 19.
See the field explanation on the serial protocol page.