Two VESC controllers connected via a CAN bus for a dual-motor scooter

On a dual-motor scooter, each motor typically has its own controller. For both motors to work together, they need to receive the same commands and share information. With VESC controllers, they are connected via a CAN bus: one controller reads the throttle input and transmits the command to the other. This guide explains the wiring, the settings in VESC Tool, and the points to check.

The essentials

  • The two controllers are connected via the two CAN bus wires and share a common ground.
  • Each controller must have a unique identifier, and both must have the same bus speed.
  • Only the main controller reads the throttle inputs; the "Multiple VESCs Over CAN" option transmits the command to the other controllers.
  • Each motor is detected and configured on its own controller.

The CAN bus

The CAN bus is a two-wire network, consisting of CAN high and CAN low, which allows multiple devices to exchange messages. This is the same principle as in a car. Our guide on the CAN bus explains this in detail.

The wiring

  • Connect the CAN high line to the CAN high line, and the CAN low line to the CAN low line, using a twisted pair cable.
  • The two controllers must share the same ground connection, which is the case if they are powered by the same battery.
  • A CAN bus requires a termination resistor at each end. Many controllers already have this integrated; check the documentation for your hardware before adding one.
  • Make sure to route the CAN cable away from the phase cables, which can emit interference.

Settings in VESC Tool

Identifiers and bus speed

In the application configuration, each controller has a unique identifier, the VESC ID. The two controllers must have different identifiers; otherwise, their messages will conflict. The CAN Baud Rate, the bus speed, must be the same for both.

Once the bus is established, the VESC Tool, connected to the main controller, can see the second controller through the CAN bus. This allows you to read and write the configuration of each controller without having to change cables.

Shared control

The throttle levers connect to the main controller, which is configured using the ADC application (see our guide on throttle and brake settings). Within this application, the Multiple VESCs Over CAN option sends the same command to the second controller. No control application is needed on the second controller.

Traction control

The Traction Control feature compares the speed of the two motors and reduces the power to the motor that is spinning too fast, in order to limit wheel slippage. The TC Max ERPM Difference setting defines the maximum allowable speed difference. On an electric scooter, both wheels should ideally be spinning at the same speed: a large difference indicates that one wheel is slipping.

Detect and configure each motor

Each motor is detected on its own controller. The VESC Tool motor detection assistant can detect the motors on controllers present on the CAN bus. See our guide on FOC motor detection.

The current limits are set on each controller. Please note: the battery powers both, so the sum of the currents drawn from the battery by both controllers must remain below the BMS limit. See our guide on current limits.

Pre-ride checks

  1. With the wheels raised, check that both motors are rotating in the same direction.
  2. Ensure that both respond correctly to the throttle and brake.
  3. Disconnect the CAN cable for a moment: the second controller should no longer receive any commands and should not remain stuck on the last command it received.
  4. Start with initial tests at low speed.

Workshop tip

A CAN bus interruption often manifests as a single motor pulling or as jerky movements. If this occurs, first check the CAN connectors and the cable routing near the motor phases before suspecting the controllers.

To understand the VESC in its entirety, see our VESC guide. To prepare a dual-motor machine, also see our guide for preparing a Dualtron Thunder.

Frequently Asked Questions

Should the triggers be connected to both controllers?

No: they are connected to the main controller, and the "Multiple VESCs Over CAN" option transmits the command to the second VESC.

The VESC Tool is not detecting the second controller.

Please check the CAN bus wiring, both high and low, ensuring that the two identifiers are different and that the bus speed is the same on both sides.

Only one motor is providing power. Why?

The second controller is not receiving the command: this could be due to a cut or incorrectly connected CAN cable, the "Multiple VESCs Over CAN" option being disabled, or a fault within the second controller itself.

Is traction control useful on an electric scooter?

It limits wheel slippage during acceleration, especially on slippery surfaces or when starting. It does not replace the need for careful throttle control.

Do both controllers need to have the same settings?

Generally, yes, the limits and behavior will be the same if both motors are identical. However, each motor is detected by its own controller.