The Absolute Maximum Current, often shortened to ABS Max Current or ABS Current, is a protection limit used by the controller to prevent excessive phase current.
If the measured phase current exceeds this value, the controller will trigger the FAULT_CODE_ABS_OVER_CURRENT fault to protect the controller, motor, and power stage from potential damage.
ABS Max Current is a hardware protection limit and is not a tuning parameter. It should never be increased simply to make over-current faults disappear. Raising the limit without understanding the cause of the fault can result in overheating, damaged MOSFETs, damaged motor windings, or unsafe operating conditions.
If a controller repeatedly triggers FAULT_CODE_ABS_OVER_CURRENT, the underlying cause should be investigated and corrected. Common causes include:
- Incorrect motor parameters
- Observer instability
- Poor current sensor readings
- Mechanical binding or sudden load changes
- Current limits that are too aggressive for the system
- Hardware faults
- Wiring issues
- Excessive motor inductance or resistance estimation errors
⚠️ Absolute Maximum Current is not the same as Motor Current Max. Motor Current Max is a user-configurable operating limit used during normal operation, whereas ABS Max Current is an emergency protection threshold designed to prevent hardware damage. Under normal operating conditions, the controller should rarely, if ever, reach the ABS Max Current limit.
Example
A controller may be configured with:
- Motor Current Max: 300A
- ABS Max Current: 450A
During normal operation, the controller attempts to remain within the configured motor current limits. If a fault condition causes the measured phase current to exceed 450A, the controller will trigger FAULT_CODE_ABS_OVER_CURRENT and shut down the output stage to protect the hardware.
In simple terms: ABS Max Current is the controller's emergency over-current safety limit and should be viewed as a protection setting rather than a performance setting.
ADC is a hardware component that converts a continuously varying analogue voltage into a digital value that can be processed by a microcontroller or processor.
Within the VESC ecosystem, ADC inputs are commonly used to connect devices such as throttles, potentiometers, joysticks, brake levers, sensors, and other analogue control inputs. The ADC continuously measures the input voltage and converts it into a numerical value that can be used to control motor speed, current, duty cycle, or other functions.
ADC inputs can also be used to connect simple buttons and switches. By connecting a switch between the ADC signal and ground, the VESC device can detect different voltage levels and perform specific actions when the switch is activated. This allows features such as drive mode selection, cruise control, reverse, traction control adjustment, or other user-configurable functions to be implemented using only two wires.
Example
A hall-effect throttle connected to an ADC input outputs 0.8V at zero throttle and 3.6V at full throttle. The VESC reads this voltage through its ADC input and maps it to the desired motor output.
As another example, a momentary push button can be connected to an ADC input and configured in VESC Tool to cycle between Eco, Sport, and Race drive modes each time the button is pressed.
In simple terms: ADC inputs allows the VESC to understand analogue signals from devices such as throttles, sensors, buttons, and switches, converting them into digital control commands.
Battery current is the current flowing between the battery and the motor controller. It represents the amount of electrical current being drawn from the battery to power the system.
Battery current is one of the primary factors that determines battery load, electrical power consumption, battery heating, and runtime. Unlike phase current, which primarily determines motor torque, battery current determines how much power is being supplied by the battery.
⚠️ Battery Current is not the same as phase current. A motor controller functions as a power converter and can regulate phase current independently of battery current. As a result, phase current may be considerably higher than battery current, particularly at low motor speeds.
At low motor speeds:
- Phase Current can be several times higher than battery current
- High motor torque can be produced while drawing relatively modest battery current
At higher motor speeds:
- Phase current and battery current become increasingly similar
- Battery current becomes a stronger indicator of overall system load
Battery current limits should be selected based on:
- Battery cell specifications
- Battery pack construction
- BMS current limits
- Connector ratings
- Wiring ratings
- Desired performance and range
Setting battery current too high can result in:
- Excessive battery heating
- Reduced battery lifespan
- BMS over-current protection triggering
- Voltage sag
- Damage to battery cells in extreme cases
Example
A system may be configured with:
- Battery Current Max: 50A
- Motor Current Max: 200A
During low-speed acceleration, the battery may only supply 50A while the controller delivers 200A of phase current to the motor. Although the motor is receiving 200A, the battery is only required to provide 50A.
At higher speeds, battery current and phase current will become more similar as the controller's ability to multiply current decreases.
⚠️ Battery Current Max is a normal operating limit configured in VESC Tool. The battery, BMS, connectors, and wiring must all be capable of safely handling the selected current.
In simple terms: battery current is the current being drawn from the battery and determines how much electrical power the system is consuming.
Battery Current Max is a setting in VESC Tool that defines the maximum current the controller is allowed to draw from the battery during acceleration and driving.
This setting primarily determines how much electrical power can be supplied by the battery to the motor controller. Increasing Battery Current Max allows the system to deliver more power, while reducing it limits power consumption and battery load.
⚠️ Battery Current Max is not the same as Motor Current Max. Battery Current Max limits the current drawn from the battery, while Motor Current Max limits the torque-producing current flowing through the motor. Particularly at low speeds, motor current can be several times higher than battery current.
Battery Current Max should be selected based on:
- Battery discharge rating
- Battery chemistry
- Cell configuration
- BMS current limits
- Wiring and connector ratings
- Number of controllers connected to the battery
- Desired vehicle performance
⚠️ Battery Current Max should never exceed the continuous current rating of the battery system. This includes the battery cells, BMS, wiring, connectors, fuses, and any other components carrying battery current.
⚠️ When multiple controllers share the same battery, the combined Battery Current Max values should not exceed the battery system limits. For example, if a battery and BMS are rated for 100A continuous discharge and two controllers are connected to the same battery, each controller might be configured with a Battery Current Max of 50A. The exact distribution can vary, but the total current available to all controllers should remain within the limits of the battery system.
Setting Battery Current Max too high can result in:
- Excessive battery heating
- Excessive voltage sag
- BMS overcurrent faults
- Reduced battery lifespan
- Connector or wiring overheating
- Battery damage in severe cases
Example
A system may be configured in VESC Tool with:
- Battery Current Max: 60A
- Motor Current Max: 180A
In this example, the battery will never be required to supply more than 60A, while the controller can regulate up to 180A of motor current to produce torque at lower motor speeds.
In simple terms: Battery Current Max determines the maximum current that can be drawn from the battery during normal operation.
Battery Current Max Regen is a setting in VESC Tool that defines the maximum regenerative current the controller is allowed to return to the battery during braking.
Because regenerative current flows back into the battery, Battery Current Max Regen is entered as a negative value. Increasing the magnitude of this value allows more regenerative braking energy to be returned to the battery, while reducing it limits battery charging current during braking.
⚠️ Battery Current Max Regen is not the same as Motor Current Max Brake. Battery Current Max Regen limits the charging current flowing into the battery, while Motor Current Max Brake limits the braking current flowing through the motor windings and therefore determines the available braking torque.
Because the controller acts as a power converter, Motor Current Max Brake can often be significantly higher than Battery Current Max Regen. This allows strong braking torque while limiting the charging current seen by the battery.
Battery Current Max Regen should be selected based on:
- Battery charge current rating
- Battery chemistry
- Cell configuration
- BMS charge current limits
- Wiring and connector ratings
- Number of controllers connected to the battery
- Desired regenerative braking performance
⚠️ Battery Current Max Regen should never exceed the peak charging current rating of the battery system. This includes the battery cells, BMS, wiring, connectors, fuses, and any other components carrying regenerative current.
⚠️ When multiple controllers share the same battery, the combined Battery Current Max Regen values should not exceed the battery system charging limits. For example, if a battery and BMS are rated for 20A continuous charging current and two controllers are connected to the same battery, each controller might be configured with a Battery Current Max Regen of -10A. The exact distribution can vary, but the total regenerative current returned to the battery should remain within the limits of the battery system.
Setting Battery Current Max Regen too high can result in:
- BMS charging overcurrent faults
- Battery overheating
- Reduced battery lifespan
- Overvoltage faults
- Damage to the battery in severe cases
Example
A system may be configured in VESC Tool with:
- Motor Current Max Brake: -120A
- Battery Current Max Regen: -20A
In this example, the controller can apply up to 120A of braking current through the motor while limiting the regenerative current returned to the battery to 20A.
⚠️ Regenerative braking is also limited by battery voltage, battery state of charge, and the configured Battery Voltage Regen Cut-Off Start and Battery Voltage Regen Cut-Off End settings. As the battery approaches full charge, regenerative braking may be reduced or disabled to prevent overvoltage.
In simple terms: Battery Current Max Regen determines the maximum charging current that can be returned to the battery during regenerative braking.
Battery Voltage Cut-Off End determines the voltage at which power reduction reaches 100%.
Once this voltage is reached, motor output is reduced to zero to prevent further battery discharge.
⚠️ This value should always be set above the battery manufacturer's absolute minimum recommended voltage.
The difference between Cut-Off Start and Cut-Off End determines how gradually power is reduced as the battery approaches empty.
Example
For a 22S lithium-ion battery, a common setting is 68.2V (22 × 3.1V).
If Cut-Off Start is set to 74.8V and Cut-Off End is set to 68.2V, motor power will be reduced gradually between these two voltages.
In simple terms: this is where the controller completely removes motor power to protect the battery.
Battery Voltage Cut-Off Start determines the voltage at which the controller begins reducing available motor current.
As battery voltage falls below this point, power is gradually reduced. This helps protect the battery while still allowing the vehicle or machine to continue operating.
Higher values provide additional battery protection, while lower values allow more of the battery's capacity to be used.
Example
For a 22S lithium-ion battery, a common setting is 74.8V (22 × 3.4V).
When the battery voltage falls below 74.8V, the controller will begin reducing available motor power.
In simple terms: this is where the controller starts limiting performance as the battery becomes depleted.
Battery Voltage Regen Cut-Off End determines the voltage at which regenerative braking is completely disabled.
Once this voltage is reached, no additional energy will be sent back into the battery.
⚠️ This value should always remain below the Maximum Input Voltage setting and within the battery manufacturer's specified charging limits.
Improper regen cut-off settings can result in overvoltage faults or damage to the battery and controller.
Example
For a 22S lithium-ion battery, a common Regen Cut-Off End setting is 92V.
When battery voltage reaches 92V, regenerative braking will be completely disabled to prevent the battery voltage from exceeding its safe charging range.
In simple terms: this is the voltage where regenerative braking is fully turned off to prevent overcharging the battery.
Battery Voltage Regen Cut-Off Start determines the voltage at which regenerative braking begins to be reduced.
As the battery approaches full charge, the controller gradually limits regenerative current to prevent the battery voltage from rising too high.
This setting is particularly important on systems with strong regenerative braking.
Example
For a 22S lithium-ion battery with a fully charged voltage of 92.4V, a common Regen Cut-Off Start setting is 90V.
As battery voltage approaches 90V, regenerative braking current will begin to be reduced.
In simple terms: this is where the controller starts reducing regenerative braking to protect a nearly full battery.
BLDC Control is a motor control method that operates a brushless motor using six-step commutation. The controller energizes the motor phases in a sequence based on the rotor position to produce a rotating magnetic field.
Unlike FOC (Field-Oriented Control), which generates smooth sinusoidal currents, BLDC Control switches between phase states in discrete steps. This makes the control algorithm simpler and requires less computational processing.
Historically, BLDC Control was widely used because it could be implemented on lower-cost hardware with limited processing power. Many traditional motor controllers still use BLDC Control today.
Compared to FOC, BLDC Control typically offers:
- Simpler control algorithms
- Lower processor requirements
- Faster startup on some motors
- Reduced tuning requirements
However, it may also result in:
- Increased motor noise
- Less smooth operation
- Reduced efficiency
- Reduced low-speed performance
- Less precise torque control
- Increased motor heating in some applications
As modern microcontrollers have become more powerful, FOC has become the preferred control method for most applications. FOC provides smoother operation, improved efficiency, quieter running, and significantly better torque control across the entire speed range.
One of the key advantages of the VESC platform compared to many traditional BLDC controllers is its advanced FOC implementation. While many conventional controllers continue to rely on six-step BLDC Control, VESC controllers are designed around high-performance FOC operation, allowing more precise motor control and improved overall system performance.
⚠️ BLDC Control is a control method, not a motor type. A BLDC motor can be operated using either BLDC Control or FOC.
Example
A VESC controller configured in BLDC mode uses six-step commutation to control the motor by switching current between the motor phases according to the rotor position.
In simple terms: BLDC Control is a traditional six-step motor control method that has largely been superseded by FOC in modern high-performance motor control systems.
A BLDC Motor (Brushless DC Motor) is an electric motor that uses electronic commutation instead of mechanical brushes to control the flow of current through the motor windings.
Despite the name, a BLDC motor does not operate directly from DC power. A motor controller converts the battery's DC voltage into three-phase currents that create a rotating magnetic field and produce motion.
BLDC motors are widely used because they offer:
- High efficiency
- High power density
- Low maintenance
- Long service life
- Excellent reliability
- Precise electronic control
BLDC motors are available in many forms, including:
- Outrunner motors
- Inrunner motors
- Hub motors
- Servo motors
A BLDC motor can be operated using different control methods, including BLDC Control and FOC (Field-Oriented Control).
⚠️ A BLDC Motor is a type of motor, not a control method. The motor itself does not determine whether BLDC Control or FOC is used.
Example
A three-phase outrunner motor connected to a VESC controller is a BLDC motor. The controller can operate the motor using either BLDC Control or FOC.
In simple terms: a BLDC motor is a brushless electric motor that uses electronic switching instead of physical brushes.
A BMS (Battery Management System) is an electronic device that monitors, protects, and manages a battery pack.
Within the VESC ecosystem, a BMS is responsible for monitoring individual cell voltages, pack voltage, current, and temperatures while helping ensure the battery operates safely and within its specified limits.
A BMS can provide a range of functions, including:
- Cell voltage monitoring
- Battery current measurement
- Temperature monitoring
- Cell balancing
- Overvoltage protection
- Undervoltage protection
- Overcurrent protection
- Charge and discharge control
- State of charge estimation
- CAN Bus communication
A BMS sits between the battery cells and the rest of the system, continuously monitoring battery conditions and taking action if a fault or unsafe condition is detected.
Many VESC BMS devices communicate with motor controllers, displays, and other accessories over CAN Bus, allowing battery information such as voltage, current, temperatures, and state of charge to be shared throughout the system.
The VESC Harmony range of BMS devices also integrates a precharge switch and short-circuit protection. This allows the BMS to safely control power delivery to the system while helping protect against damaging fault conditions.
⚠️ A BMS is not a motor controller. A motor controller regulates power to the motor, while a BMS monitors and protects the battery pack.
⚠️ A BMS does not increase the inherent performance of battery cells. Its primary role is to ensure safe operation and help protect the battery from damage caused by overcharging, over-discharging, excessive current, or excessive temperatures. However, upgrading to a higher-capability BMS may allow a battery pack to deliver more of its available performance if the previous BMS was limiting current below what the cells were safely capable of providing.
Cell balancing is one of the most important functions of a BMS. During charging, the BMS can help equalise the voltage of individual cells, improving battery longevity and ensuring all cells remain within safe operating limits.
Example
A VESC Harmony BMS can monitor a battery pack, balance the cells during charging, communicate battery information to a motor controller over CAN Bus, control the precharge process, and disconnect the battery if unsafe operating conditions are detected.
In simple terms: a BMS is the device that monitors and protects a battery pack to keep it operating safely and reliably.
CAN Bus or CAN (Controller Area Network) is a communication protocol that allows multiple electronic devices to communicate with each other over a shared two-wire connection.
Within the VESC ecosystem, CAN Bus is commonly used to connect motor controllers, BMS systems, displays, sensors, IO modules, and other accessories. Rather than requiring a separate communication connection between every device, all devices can share the same CAN Bus network.
This simplifies wiring while allowing devices to exchange data in real time.
CAN Bus devices are connected in parallel, with all CAN H connections linked together and all CAN L connections linked together. This allows every device on the network to transmit and receive messages over the same communication bus.
CAN Bus can be used for:
- Multiple VESC controllers
- VESC BMS communication
- Displays and dashboards
- GPS modules
- External sensors
- IO and expansion modules
- Custom applications and automation
One of the most common uses of CAN Bus is connecting multiple VESC controllers together. In a dual or multi-motor system, one controller can receive commands from the user and distribute them to the other controllers over the CAN Bus network, ensuring all motors operate together.
⚠️ CAN Bus must be wired as a shared parallel network. CAN H should connect to CAN H on all devices, and CAN L should connect to CAN L on all devices. Wiring devices in series or crossing the CAN H and CAN L connections will prevent communication.
⚠️ CAN Bus is a communication network, not a power connection. While CAN devices often share the same battery system, CAN H and CAN L only carry communication data and are not intended to transfer significant power between devices.
⚠️ All devices connected to the same CAN Bus network must have a unique CAN ID. If two devices share the same CAN ID, communication conflicts can occur.
One of the strengths of CAN Bus is its reliability. The protocol was originally developed for the automotive industry and includes error detection, message prioritisation, and noise immunity features that allow it to operate reliably in electrically noisy environments.
Example
A VESC BMS, VESC controller, and VESC Dash display can all be connected to the same CAN Bus network. The BMS can transmit battery information, the controller can transmit motor data, and the display can show information from both devices over a single communication network.
In simple terms: CAN Bus is a two-wire communication network that allows multiple VESC devices to exchange information and work together.
A CAN ID is a unique numerical address assigned to a device on a CAN Bus network.
Within the VESC ecosystem, CAN IDs are used to identify devices such as motor controllers, BMS systems, displays, IO modules, and other CAN-enabled accessories. When a device sends a CAN message, the CAN ID allows other devices on the network to identify the sender and communicate with specific devices.
CAN IDs are configured within the device settings and can be changed using VESC Tool.
To change a CAN ID, connect to the device and navigate to App Settings → General. In VESC Tool, the CAN ID is labelled VESC ID. The current CAN ID can also be seen next to the device name in the CAN Devices list.
By default, VESC devices are typically assigned CAN IDs within specific ranges to help organise devices on the network:
- 20-29 – ESP-based devices such as the VESC Nanolog
- 30-39 – VESC BMS devices
- 40-49 – Displays and user interface devices
- 50-254 – Motor controllers
These ranges are conventions rather than strict requirements, but following them can make larger CAN Bus networks easier to configure and troubleshoot.
⚠️ Dual motor controllers such as the use a separate CAN ID for each motor channel. For example, a Duet may appear as CAN ID 50 and CAN ID 51, even though both channels are located within the same physical device.
⚠️ Every device on a CAN Bus network must have a unique CAN ID. If two devices share the same CAN ID, communication conflicts can occur. A common symptom is that only one device appears in the CAN Devices list despite multiple devices being connected correctly. In this case, disconnect one device, change the CAN ID of the remaining device, then reconnect the network.
Example
A CAN Bus network may be configured with:
- Front Motor Controller: CAN ID 50
- Rear Motor Controller: CAN ID 51
- VESC BMS: CAN ID 30
- VESC Dash: CAN ID 40
- VESC Nanolog: CAN ID 20
In simple terms: a CAN ID is the unique address that identifies a device on a CAN Bus network.
A Dual Motor Controller is a motor controller that can independently control two electric motors from a single device.
Controllers such as the VESC Duet and VESC Duet XS contain two motor control channels within a single unit. By sharing common components between both channels, a dual motor controller can reduce overall cost, wiring complexity, installation space, and system weight compared to using two separate controllers.
The two motors can operate independently or in a coordinated manner, depending on the application. This allows a dual motor controller to support everything from simple dual-drive vehicles to advanced systems requiring separate control of each motor.
Benefits of a dual motor controller include:
- Reduced wiring complexity
- More compact system design
- Lower overall cost compared to using two separate controllers
- Coordinated or independent control of two motors
- Simplified installation and maintenance
Typical applications include:
- Dual-motor electric skateboards
- Electric scooters
- Electric bikes with front and rear motors
- Tracked vehicles
- Robotics and automation systems
- Any application requiring synchronized control of two motors
⚠️ A dual motor controller is not simply equivalent to two separate controllers. Although it can control two motors independently, both motor channels share the same battery input, power supply, and processing resources. This means the total available battery current must be shared between both motors, and the controller's microcontroller (MCU) must divide its computational resources between both motor control channels and any additional functions. As a result, a dual motor controller may have different performance limits compared to using two completely independent controllers.
Example
A VESC Duet can control the left and right motors of a dual-motor electric skateboard from a single controller, reducing wiring and simplifying the overall system compared to using two individual motor controllers.
In simple terms: a dual motor controller allows two motors to be controlled from one device while sharing common power and processing resources.
Duty Cycle is the ratio between the effective motor voltage and the battery voltage, expressed as a percentage.
A duty cycle of:
- 0% means no voltage is applied to the motor
- 50% means the motor receives approximately half of the available battery voltage
- 100% means the motor receives nearly the full battery voltage
Duty cycle is one of the most important parameters affecting motor speed. As the motor accelerates, the duty cycle generally increases. Once the controller reaches 100% duty cycle, it can no longer increase the motor voltage. Further increases in motor speed typically require field weakening, a battery with a higher voltage, or a motor with a higher KV.
⚠️ Duty Cycle is not the same as throttle position. A throttle may be at 100%, but the duty cycle can be significantly lower if the motor is operating under load, accelerating, or limited by current settings.
⚠️ Duty Cycle is not the same as power. A motor operating at a high duty cycle is not necessarily producing high power. Power depends on both voltage and current.
Duty cycle is commonly used on VESC controllers for features such as:
- Duty Cycle control mode
- Duty Cycle current limits
- Field weakening
- Maximum ERPM protection
- Telemetry and data logging
Example
A motor controller connected to a 50V battery and operating at a 50% duty cycle is applying approximately 25V to the motor.
As the motor accelerates, the duty cycle may increase from 20% to 95% as the controller increases the voltage supplied to the motor.
In simple terms: duty cycle represents how much of the available battery voltage is being applied to the motor.
Electrical Power is the power supplied to the motor controller from the battery. It represents the rate at which electrical energy is consumed by the system.
Electrical power is determined by the battery voltage and battery current:
Electrical Power = Voltage × Battery Current
In the VESC ecosystem, electrical power is measured at the controller input and is commonly used to estimate energy consumption, battery load, and system performance.
⚠️ Electrical Power is often confused with Mechanical Power. These terms should not be used interchangeably. Electrical power describes the energy being supplied by the battery, not the useful power being delivered by the motor. System losses mean that electrical power will always be greater than mechanical power.
Example
A battery supplying 50V at 20A is providing:
50 × 20 = 1000W
of electrical power to the controller.
In simple terms: electrical power is the power being drawn from the battery.
An Encoder is a sensor used to measure the precise position, speed, and direction of a rotating shaft.
In the VESC ecosystem, encoders are commonly used to provide accurate rotor position feedback to the motor controller. This allows the controller to know the exact position of the motor at all times, improving low-speed performance, startup behaviour, and position control accuracy.
VESC Labs currently offers two magnetic encoder formats:
- ABI Encoders
- Sin/Cos Encoders
ABI encoders provide digital position signals and are commonly used for speed, position, and sensored FOC applications. Sin/Cos encoders output analogue sine and cosine signals which only need 4 wires (5V, GND, SIN, COS) and are robust against noise when used with compatible hardware.
When connected to a VESC controller, encoder feedback can be used for:
- Sensored FOC operation
- Improved startup performance
- Position control
- Speed control
- Servo applications
⚠️ An Encoder is not required for motor operation. Most motors can operate successfully using sensorless FOC, where the controller estimates rotor position without requiring a dedicated position sensor. While encoders generally provide the highest position accuracy, they also require additional wiring, connectors, and hardware inside the motor, which can introduce additional points of failure.
In some applications, such as electric skateboards, the motor cables are repeatedly flexed during operation. Eliminating encoder or hall sensor wiring can improve long-term reliability. Similarly, some motors are fitted with low-quality sensors that may cause more problems than they solve. In these cases, a properly tuned sensorless, VSS, or HFI setup may provide more reliable operation than using the built-in sensors.
Example
A magnetic encoder mounted on a motor shaft can continuously report the rotor position to a VESC controller, allowing precise control of motor position, speed, and torque.
In simple terms: an encoder is a position sensor that tells the controller exactly where a motor shaft is rotating.
Field weakening is a motor control technique used to increase the maximum speed of a motor beyond its normal maximum speed.
Under normal operation, a motor controller can only increase motor speed until it reaches approximately 100% duty cycle. At this point, the controller is already applying nearly the full battery voltage to the motor and cannot increase the motor voltage any further.
Field Weakening works by injecting additional current into the motor in a way that reduces the motor's effective magnetic field. This reduces the back-EMF generated by the motor, allowing it to spin faster than would normally be possible at the available battery voltage.
On VESC controllers, Field Weakening is configured using the Field Weakening Current Max setting.
Field Weakening can be used to:
- Increase top speed
- Extend the speed range of a motor
- Reduce the need for a higher voltage battery
- Reduce the need for a higher KV motor
⚠️ Field Weakening does not increase torque. In fact, as field weakening increases, the available motor torque generally decreases.
⚠️ Field Weakening is not free speed. Increasing field weakening current increases motor losses and heat generation within both the motor and controller.
⚠️ Excessive field weakening can result in:
- Increased motor temperatures
- Increased controller temperatures
- Reduced efficiency
- Reduced runtime
- Reduced motor torque at high speed
- Motor instability
- Loss of speed regulation
In extreme cases, excessive field weakening can cause the motor to become unstable enough that the controller can no longer accurately regulate motor speed. This may result in the motor continuing to accelerate beyond the commanded speed, sometimes referred to as a runaway condition.
Generally, motors with higher inductance are better suited to field weakening than motors with very low inductance. The effectiveness and stability of field weakening can vary significantly between different motor designs, so results should not be assumed based solely on motor size or power rating.
For these reasons, field weakening should generally be used only when additional speed is required beyond what can be achieved through battery voltage and motor selection alone. Field weakening is an advanced motor control technique and should only be configured by experienced users. Any increases should be made gradually and tested after each adjustment to ensure the motor and controller remain stable and operate within safe temperature limits.
Example
A motor may naturally reach a maximum speed of 5,000 RPM at 100% duty cycle when powered from a particular battery. By applying field weakening, the controller may be able to increase the motor speed to 6,000 RPM or higher, depending on the motor, controller, and field weakening settings.
In simple terms: field weakening is a technique that allows a motor to spin faster than its normal maximum speed by reducing the effect of the motor's magnetic field.
Field-Oriented Control (FOC) is an advanced motor control method used to precisely control the magnetic field inside a motor. It is the primary control method used by VESC controllers for PMSM and many BLDC motors.
Unlike traditional BLDC control, which energizes the motor phases in discrete steps, FOC generates smooth sinusoidal current waveforms that continuously rotate with the motor's magnetic field. For this reason, FOC is often referred to as sine wave motor control.
Compared to traditional BLDC control, FOC provides:
- Smoother motor operation
- Lower electrical noise
- Improved efficiency
- Better low-speed performance
- More accurate torque control
- Reduced motor heating
FOC uses mathematical transformations to separate motor current into two components:
- D-Axis Current – controls magnetic field strength
- Q-Axis Current – produces torque
In most applications, torque is controlled by regulating the Q-axis current while minimizing D-axis current.
FOC requires accurate motor parameters such as motor resistance, inductance, and flux linkage. These values are typically measured using the Motor Detection Wizard in VESC Tool.
Example
A motor operating under FOC control can run smoothly across a wide speed range while maintaining precise torque control and high efficiency.
In simple terms: FOC is a sine wave motor control method that continuously controls the motor's magnetic field to produce smooth, efficient, and precise motor control.
Input Voltage is the voltage supplied to a device from its power source. In the VESC ecosystem, this typically refers to the voltage measured at the controller's battery input terminals.
The input voltage is determined by the battery pack and varies during operation. A fully charged battery will have a higher input voltage, while the voltage gradually decreases as the battery is discharged.
VESC devices continuously monitor input voltage for performance calculations, battery monitoring, fault detection, regenerative braking management, and battery protection functions.
Input voltage is also used by several important protection settings, including:
- Minimum Input Voltage
- Maximum Input Voltage
- Battery Voltage Cut-Off Start
- Battery Voltage Cut-Off End
- Battery Voltage Regen Cut-Off Start
- Battery Voltage Regen Cut-Off End
⚠️ Input voltage must always remain within the operating range specified in the controller datasheet. Exceeding the maximum rated input voltage can permanently damage the controller.
Example
A 22S lithium-ion battery has a fully charged voltage of 92.4V (22 × 4.20V). When connected to a VESC controller, the controller's input voltage will be approximately 92.4V when fully charged and will decrease as the battery is used.
In simple terms: input voltage is the voltage that the battery supplies to the controller or device.
Kill Switch is a safety feature that can immediately disable motor output when a configured input becomes active. The Kill Switch overrides all other control inputs and can be used as an emergency stop or safety interlock. In VESC Labs controllers the Kill Switch function does not use dedicated hardware, instead it relies upon the VESC firmware.
The Kill Switch mode can be configured in VESC Tool → App Settings → General.
The following modes are available:
- Disabled
- PPM Low
- PPM High
- ADC2 Low
- ADC2 High
When the Kill Switch is activated, the motor is disabled. If Timeout Brake Current is configured and greater than 0, braking can also be applied automatically.
Common applications include:
- Emergency stop buttons
- Safety interlocks
- Access door switches
- Machine guarding systems
- Operator enable switches
Example
An industrial conveyor system may use a safety access door switch connected to ADC2 and configured as a Kill Switch.
During normal operation, the conveyor can be controlled using the configured input method. If the access door is opened, the ADC2 input changes state and activates the Kill Switch. The controller immediately overrides all other inputs and disables motor output. If Timeout Brake Current is configured, braking can also be applied automatically.
In simple terms: A Kill Switch is an input that can immediately disable motor output regardless of what other control signals are doing. It is commonly used as an emergency stop or safety interlock.
kV is a motor specification that describes how fast a motor will spin for each volt applied with no load attached. It is typically expressed in RPM per Volt (RPM/V).
A motor with a higher kV will spin faster for a given voltage but generally produce less torque per ampere. A motor with a lower kV will spin slower but typically produce more torque per ampere.
kV is determined by the motor's design and winding configuration and cannot be changed through software settings. It can usually be found in your motor datasheet.
⚠️ kV is not the same as kilovolts (kV), a unit of electrical voltage. In the context of electric motors, kV refers to the motor velocity constant.
Example
A motor rated at 100 kV supplied with 50V will have a theoretical no-load speed of:
100 × 50 = 5000 RPM
In practice, the actual motor speed will be lower due to load, losses, and controller limitations.
In simple terms: kV tells you how many RPM a motor will spin for every volt applied.
A latching button or switch remains in its selected state until it is pressed again or manually moved back to its original position.
Many VESC Labs products use latching buttons or switches for power control. When the switch is turned on, the device remains powered until the switch is turned off again. This provides a simple and reliable method of controlling power without requiring the device to monitor button presses continuously.
Latching buttons and switches can also be used for other functions such as enabling reverse, selecting drive modes, enabling accessories, or switching between operating states. For these applications, a latching switch can often be connected to an ADC input using only two wires: the ADC signal and ground.
The VESC monitors the ADC voltage and can detect the position of the switch. To perform custom actions beyond the standard ADC functionality, a LispBM script must be written and configured within VESC Tool. This script can then trigger different actions depending on whether the switch is in the ON or OFF position.
Example
A latching power switch may be used to connect or disconnect power to a display, communication module, or other accessory. Alternatively, a latching switch connected to an ADC input could be configured to enable a high-performance drive mode when ON and an economy drive mode when OFF using a custom LispBM script.
In simple terms: a latching button or switch remains in its selected position until it is changed again.
LispBM (Lisp Bare Metal) is an embedded scripting language that allows custom applications and control logic to run directly on VESC hardware. Within the VESC ecosystem, LispBM is integrated into VESC Tool, where scripts can be written, tested, uploaded, and monitored without modifying the underlying firmware. It runs in a sandboxed environment on the device itself and automatically starts when configured to do so.
LispBM was created by Bo Joel Svensson and is the scripting language behind all VESC Packages. It is also responsible for many of the advanced features and behaviours found throughout the VESC ecosystem, including VESC Express applications, display interfaces, communication modules, CAN Bus integrations, custom user interfaces, automation, telemetry, and device-to-device interactions.
Using LispBM, developers can create custom functionality such as:
- Drive mode selection
- Button and switch handling
- CAN Bus communication
- Display interfaces
- Battery management logic
- Data logging and telemetry
- Sensor processing
- Custom vehicle control systems
- Wireless communication over WiFi and Bluetooth
- Integration with VESC Packages
LispBM has access to a wide range of VESC-specific functions, allowing scripts to read ADC inputs, monitor battery voltage, communicate over CAN Bus, control outputs, interact with displays, and exchange data with other devices on the network. VESC Tool includes an integrated development environment (IDE), REPL console, live variable monitoring, plotting tools, and example projects to help develop and debug applications.
Example
A VESC Express module uses a LispBM script to read a button connected to an ADC input. Each button press changes the active drive mode, updates a display, and sends commands to other devices on the CAN Bus network.
Learn More
Official LispBM website:
VESC-specific LispBM documentation:
https://www.lispbm.com/lispbm-reference-manual/html/vesc-lisp-documentation.html
LispBM language reference manual:
https://www.lispbm.com/lispbm-reference-manual/html
VESC firmware LispBM integration documentation:
https://github.com/vedderb/bldc/blob/master/lispBM/README.md
In simple terms: LispBM is the programmable logic layer of the VESC ecosystem. It powers VESC Packages and allows users to create custom functionality without modifying the main firmware.
The Maximum Input Voltage setting determines the highest voltage the controller will allow before triggering an overvoltage fault.
A common starting point is approximately:
10-15% above the battery's fully charged voltage
This provides some headroom for regenerative braking, which can temporarily increase battery voltage during operation.
⚠️ The Maximum Input Voltage must never exceed the maximum rated input voltage of the controller.
Exceeding the controller's voltage rating can permanently damage MOSFETs, capacitors and other components, even if fault protection is configured correctly.
⚠️ Always refer to the controller datasheet when selecting voltage limits.
Example:
For a controller with an absolute maximum input voltage of 100V, the recommended maximum battery voltage is 92.4V, which corresponds to a fully charged 22S lithium-ion battery (22 × 4.20V = 92.4V).
The difference between the battery's maximum voltage and the controller's absolute voltage limit provides a safety margin for voltage spikes and regenerative braking events.
In VESC Tool, the Maximum Input Voltage should typically be set slightly below the controller's absolute voltage limit. For a controller with a 100V absolute maximum input voltage, a setting of 98V is commonly used to provide an additional layer of protection against overvoltage conditions while maintaining the maximum available operating range.
Mechanical Power
Mechanical Power is the useful power produced by a motor and delivered to the output shaft. It represents the rate at which the motor converts electrical energy into mechanical work.
Mechanical power is determined by the motor torque and rotational speed:
Mechanical Power = Torque × RPM
In VESC Tool, mechanical power is calculated using measured motor speed and torque-producing current. It represents the power available to perform useful work such as accelerating a vehicle, driving a wheel, or moving a robotic actuator.
⚠️ Mechanical Power is often confused with Electrical Power. These terms should not be used interchangeably. Mechanical power is the useful power produced by the motor, while electrical power is the power supplied by the battery. Due to system losses, mechanical power will always be lower than electrical power.
Example
A motor producing 10 Nm of torque at 3000 RPM is generating mechanical power. If the motor speed or torque increases, the mechanical power will also increase.
In simple terms: mechanical power is the useful power being delivered by the motor.
The Minimum Input Voltage setting determines the lowest voltage the controller will allow before shutting down.
This acts as a final layer of protection against excessive battery discharge and prevents the controller from attempting to operate when the supply voltage becomes too low.
⚠️ This value should be selected based on the battery chemistry, cell count and controller datasheet.
⚠️ Setting the Minimum Input Voltage too low can result in battery damage due to over-discharge.
Example
For a 22S lithium-ion battery, a Minimum Input Voltage of 55V provides a final safety limit. If battery voltage falls below 55V, the controller will stop operating to protect the system.
In simple terms: this is the controller's emergency low-voltage shutdown point.
A momentary button is a switch that only remains active while it is being pressed. Once the button is released, it automatically returns to its normal state.
Many VESC Labs products use momentary power buttons. The device detects the button press and handles the power-on or power-off sequence internally. This allows features such as soft power control, controlled shutdown, and status indication.
Momentary buttons can also be used for other functions such as changing drive modes, activating reverse, triggering a horn, enabling cruise control, or navigating menus. For these applications, a momentary button can often be connected to an ADC input using only two wires: the ADC signal and ground.
The VESC monitors the ADC voltage and can detect when the button is pressed. To perform custom actions beyond the standard ADC functionality, a LispBM script must be written and configured within VESC Tool. This script can then trigger specific actions when the button is pressed, held, or released.
Example
A momentary power button connected to a communication module may be pressed briefly to turn the device on or off. Alternatively, a momentary button connected to an ADC input could be configured to cycle between Eco, Sport, and Race drive modes using a custom LispBM script.
In simple terms: a momentary button only remains active while it is being pressed.
A Motor Controller is an electronic device that controls the operation of an electric motor by regulating the voltage, current, and frequency supplied to the motor. Motor controllers are also commonly referred to as ESCs (Electronic Speed Controllers), particularly within the RC and electric vehicle industries.
In the VESC ecosystem, the motor controller is responsible for converting the battery's DC voltage into controlled three-phase power for the motor. It continuously monitors the motor and system conditions to provide smooth, efficient, and safe operation.
Modern motor controllers can provide a wide range of functions, including:
- Motor speed control
- Torque control
- Current control
- Regenerative braking
- Position control
- FOC (Field-Oriented Control)
- CAN Bus communication
- Data logging and telemetry
- Motor and battery protection
A motor controller sits between the battery and the motor, receiving commands from user inputs, displays, scripts, sensors, or other devices and converting them into precise motor control.
⚠️ A motor controller does not create power. It can only control and distribute the power available from the battery. The maximum performance of a system is ultimately limited by the battery, motor, cooling system, and motor controllers specifications.
Example
A motor controller can receive power from a battery, process throttle commands from a remote control, and regulate the motor current to provide the desired acceleration, speed, and braking performance.
In simple terms: a motor controller is the device that sits between the battery and motor and controls how the motor operates.
Motor Current Max is a setting in VESC Tool that defines the maximum positive motor current the controller is allowed to apply to the motor during acceleration and driving.
This setting is one of the primary factors that determines the amount of torque a motor can produce. Increasing Motor Current Max increases the available motor torque, while reducing it limits acceleration and motor force.
Unlike Battery Current Max, which limits the current drawn from the battery, Motor Current Max limits the current flowing through the motor windings. As a result, Motor Current Max is often significantly higher than Battery Current Max.
In VESC controllers, motor current is regulated directly by the FOC or BLDC control algorithm to achieve the requested torque output.
⚠️ Motor Current Max is not the same as Battery Current Max. Motor current determines motor torque, while battery current determines the power drawn from the battery. Because a motor controller acts as a DC-to-AC power converter, motor current can be considerably higher than battery current, especially at lower motor speeds.
Motor Current Max should be selected based on:
- Motor current rating
- Motor cooling capability
- Controller current rating
- Application requirements
- Desired acceleration and torque
Setting Motor Current Max too high can result in:
- Excessive motor heating
- Reduced motor lifespan
- Over-current faults
- Controller overheating
- Demagnetisation of motor magnets in extreme cases
Example
A system may be configured in VESC Tool with:
- Battery Current Max: 60A
- Motor Current Max: 180A
Even though the battery is only supplying 60A, the controller can regulate up to 180A of motor phase current to produce higher torque at lower speeds.
⚠️ Motor Current Max is a normal operating limit, not a hardware protection limit. If the controller exceeds the Absolute Maximum Current (ABS Max Current) threshold, an over-current fault will be triggered to protect the hardware.
In simple terms: Motor Current Max is the VESC Tool setting that determines the maximum torque-producing current that can be delivered to the motor during normal operation.
Motor Current Max Brake is a setting in VESC Tool that defines the maximum negative motor current the controller is allowed to apply during braking and regenerative braking.
This setting determines the maximum braking torque that can be produced by the motor. Increasing Motor Current Max Brake increases braking force, while reducing it results in gentler braking.
Like Motor Current Max, this limit applies to motor phase current rather than battery current. Because braking current flows in the opposite direction to acceleration current, Motor Current Max Brake is entered as a negative value.
During regenerative braking, the motor operates as a generator and converts mechanical energy back into electrical energy. The controller regulates Motor Current Max Brake to control how much braking torque is applied.
⚠️ Motor Current Max Brake is not the same as Battery Current Max Regen. Motor Current Max Brake limits the braking current flowing through the motor windings and therefore determines the available braking torque. Battery Current Max Regen limits the amount of regenerative current that can be returned to the battery during braking.
The controller acts as a power converter, so Motor Current Max Brake can often be significantly higher than Battery Current Max Regen. This allows strong braking torque while limiting the charging current seen by the battery.
Motor Current Max Brake should be selected based on:
- Desired braking performance
- Motor current rating
- Motor cooling capability
- Controller current rating
- Vehicle traction and stability
Setting Motor Current Max Brake too high can result in:
- Excessive motor heating
- Wheel lock-up or loss of traction
- Over-current faults
- Controller overheating
- Unstable vehicle behaviour on low-grip surfaces
Example
A system may be configured in VESC Tool with:
- Motor Current Max: 180A
- Motor Current Max Brake: -120A
- Battery Current Max Regen: -20A
In this example, the controller can apply up to 120A of braking current through the motor to generate braking torque, while limiting the regenerative current returned to the battery to 20A.
⚠️ Strong regenerative braking is also limited by battery voltage, battery charge state, and the configured Battery Voltage Regen Cut-Off Start and Battery Voltage Regen Cut-Off End settings. When the battery is fully charged, regenerative braking may be reduced or disabled to prevent overvoltage.
In simple terms: Motor Current Max Brake is the VESC Tool setting that determines the maximum braking torque the motor can produce during braking and regenerative braking.
Motor Poles are the individual north and south magnetic poles located on the rotor of a motor. In permanent magnet motors, each magnet contributes one north pole and one south pole, creating a series of alternating magnetic poles around the rotor.
The number of motor poles affects the relationship between the motor's electrical speed and mechanical speed. Motors with more poles require more electrical cycles to complete one mechanical revolution.
Motor poles are commonly specified as a total count.
Example
A motor with 14 poles contains:
- 7 north poles
- 7 south poles
for a total of 14 magnetic poles.
⚠️ Motor Poles are often confused with Pole Pairs. The total pole count is always twice the number of pole pairs.
In simple terms: motor poles are the individual magnetic north and south poles on the motor rotor.
Phase current is the current flowing through the motor windings. In VESC motor controllers, phase current is regulated directly by the motor control algorithm (FOC or BLDC) and is the primary current responsible for producing motor torque.
Because torque in most electric motors is approximately proportional to phase current, increasing phase current increases the torque the motor can produce. This makes phase current one of the most important factors affecting acceleration, hill-climbing ability, braking force, and overall motor performance.
Unlike battery current, which measures the current flowing from the battery to the controller, phase current measures the current circulating between the controller and the motor. Since the controller acts as a DC-to-AC power converter, phase current can often be significantly higher than battery current.
⚠️ Phase Current is not the same as battery current. Many users assume that a motor drawing 200A of phase current is also drawing 200A from the battery. In reality, the controller can convert lower-voltage, higher-current power at the motor while drawing a much lower current from the battery.
⚠️ Motor controllers are limited by phase current, not by battery current. Motor controllers have to deal with the full phase current at all times, regardless what the battery current is. Therefore it is impossible to tell how much battery current a motor controller can handle as the relation between battery current and phase current depends on the operating point of the motor. At low speed most current circulates between the power stage and motor and at higher speed more and more current flows from the battery through the power stage to the motor. However, regardless of speed, the power stage always sees the full phase current.
⚠️ Motor and controller losses are proportional to the square of the phase current. This means that doubling the phase current will generate four times more heat in the motor and controller. Therefore it is very important to choose appropriate gearing for your system. Insufficient gearing where the motor always operates at low speed will cause excessive heating in the motor and controller even at low power levels.
At low motor speeds:
- Phase current can be much higher than battery current
- High torque can be produced with relatively modest battery current
At higher motor speeds:
- Phase current and battery current become increasingly similar
- The controller's ability to multiply current decreases
- Battery current becomes a larger factor in determining available power
Phase current limits should be selected based on:
- Motor current rating
- Motor cooling capability
- Controller current rating
- Desired torque output
- Application requirements
Setting phase current too high can result in:
- Excessive motor heating
- Reduced motor lifespan
- Controller overheating
- Over-current faults
- Demagnetisation of motor magnets in extreme cases
Example
A system may be configured with:
- Battery Current Max: 50A
- Motor Current Max: 200A
When accelerating from low speed, the controller may draw approximately 50A from the battery while supplying up to 200A of phase current to the motor. This allows the motor to produce high torque without requiring the battery to deliver the same current.
⚠️ The maximum allowable phase current is limited by both the motor and controller. Always refer to the controller datasheet and motor specifications when selecting current limits.
In simple terms: phase current is the current flowing through the motor windings and is the primary factor that determines motor torque.
A PMSM (Permanent Magnet Synchronous Motor) is a type of brushless AC motor that uses permanent magnets on the rotor and operates synchronously with the rotating magnetic field produced by the stator.
In a PMSM motor, the rotor rotates at exactly the same speed as the magnetic field generated by the controller. This synchronous operation allows for highly efficient and precise motor control.
Many motors commonly referred to as BLDC Motors are actually PMSM motors from an electrical and control perspective. The distinction largely comes from how the motor is controlled rather than its physical construction.
PMSM motors offer:
- High efficiency
- Smooth operation
- High torque density
- Precise torque control
- Excellent low-speed performance
- Reduced noise and vibration
PMSM motors are ideally suited to FOC (Field-Oriented Control), which is why FOC has become the preferred control method for most modern VESC-based systems.
⚠️ PMSM Motors and BLDC Motors are often confused because they have very similar construction and both use permanent magnets. In practice, many motors sold as "BLDC Motors" are operated as PMSM motors when using FOC. The difference is primarily in the mathematical motor model and control method rather than the physical hardware.
Compared to BLDC Control, PMSM motors operating with FOC typically achieve smoother operation, quieter running, and more precise torque control.
Example
A motor detected and configured using the FOC Motor Detection Wizard in VESC Tool is typically being operated as a PMSM motor, with the controller continuously controlling the motor's magnetic field using FOC.
In simple terms: a PMSM motor is a permanent magnet motor designed to operate synchronously with the controller's rotating magnetic field and is the motor type most commonly associated with FOC control.
A Pole Pair is a pair of magnetic poles consisting of one north pole and one south pole.
Pole pairs are commonly used in motor control calculations because they determine the relationship between the motor's mechanical rotation and electrical rotation. VESC controllers use the number of pole pairs when calculating motor speed, rotor position, and FOC control parameters.
The number of pole pairs is calculated as:
Pole Pairs = Motor Poles ÷ 2
Motors with a higher number of pole pairs require more electrical cycles to complete one mechanical revolution.
The relation between mechanical and electrical RPM (ERPM) is
Mechanical RPM = Electrical RPM ÷ Pole Pairs
Example
A motor with 14 poles has:
14 ÷ 2 = 7 Pole Pairs
If the motor completes one mechanical revolution, the controller must generate 7 electrical revolutions of the rotating magnetic field.
⚠️ Motor poles is one of the motor parameters in VESC Tool and it is entered as twice the number of pole pairs. Entering an incorrect pole count will result in incorrect RPM calculations for efficiency and speed calculations in the gauges and connected displays. The core motor control algorithms do not use pole pairs anywhere; they use ERPM (Electrical RPM) internally.
In simple terms: a pole pair is one north pole and one south pole on the rotor of the motor; the number of pole pairs determines the relation between mechanical and electrical RPM.
VESC (Vedder Electronic Speed Controller) is an open-source motor control platform designed to control electric motors with high performance, flexibility, and efficiency.
Originally developed by Benjamin Vedder, the VESC Project has evolved from a motor controller project into a comprehensive ecosystem for electric vehicles, robotics, industrial automation, drones, and other motor-driven applications.
The VESC ecosystem includes both hardware and software. Controllers are configured and monitored using VESC Tool, which provides motor setup, tuning, data logging, firmware updates, and real-time diagnostics.
Today, the VESC ecosystem extends far beyond motor controllers. It now includes a growing range of electronics designed to support and enhance electric drive systems, including:
- Battery Management Systems (BMS)
- Communication modules
- Display interfaces
- Input and control accessories
- Sensor modules
- Data logging and telemetry devices
These devices communicate seamlessly with VESC controllers, enabling complete vehicle, robotics, and energy management systems to be built around a common platform.
As the ecosystem expanded, VESC Labs was established as the official retail and distribution platform for VESC hardware and related products. VESC Labs provides customers with access to genuine VESC controllers, accessories, and ecosystem products, helping make VESC technology more accessible to developers, businesses, and enthusiasts worldwide.
Unlike many closed motor control solutions, VESC provides extensive configuration options, open documentation, and support for advanced features such as regenerative braking, CAN Bus networking, field weakening, custom firmware development, and multi-device integration across the wider VESC ecosystem.
The open-source nature of VESC has encouraged a global community of developers, manufacturers, and users to create compatible hardware and software, making it one of the most flexible and widely adopted motor control platforms available.
In simple terms: a VESC is the intelligent control system that sits between the battery and motor, managing how electrical energy is converted into motion while also coordinating the wider ecosystem of electronics that support the vehicle or machine.
A VESC Package is a self-contained application that runs on VESC-compatible hardware using LispBM and/or C code. The package can also include a custom User Interface loaded by VESC Tool written in Qml to configure and interface with the package. Packages provide additional functionality beyond the core motor control firmware and can be installed, updated, and managed through VESC Tool.
VESC Packages allow developers to create complete applications that interact with motor controllers, displays, communication modules, sensors, and other devices within the VESC ecosystem. A package can include user interfaces, configuration menus, graphics, scripts, communication protocols, and custom control logic.
Packages can be downloaded and installed directly from the Package Store within VESC Tool, making it easy to add new functionality to compatible devices. Developers can also create their own custom packages using LispBM and distribute them privately or publicly for others to use.
Packages are commonly used for:
- Vehicle dashboards and displays
- Remote controls
- Data logging and telemetry
- Battery monitoring
- CAN Bus device management
- Robotics applications
- Custom vehicle control systems
- WiFi and Bluetooth connectivity
- Device configuration tools
Unlike firmware updates, packages can be installed and updated independently without changing the core firmware running on the device. This makes it possible to add new features and applications while maintaining a stable motor control platform.
Many VESC devices, including VESC Express modules and compatible displays, rely on packages to provide their user interface and application-specific functionality.
Example
A display package running on a VESC Express module can show battery status, speed, motor temperature, and ride statistics while communicating with one or more VESC motor controllers over CAN Bus. The package can be installed directly from VESC Tool or developed from scratch using LispBM.
How do I make my own package?
All VESC Packages are hosted on this github repository
https://github.com/vedderb/vesc_pkg
You can edit all packages for your needs if you want to tweak them. To contribute your own package to the VESC Tool package store you can make a pull request to this github repository. If your pull request gets accepted after a review it will end up in the VESC Tool package store on all platforms.
In simple terms: a VESC Package is an application that runs on VESC hardware, adding features and functionality without modifying the core firmware.
VESC Tool is the official open-source software used to configure, monitor, and update devices within the VESC ecosystem. It provides a user-friendly interface for setting up motor controllers, BMS devices, communication modules, displays, and other compatible hardware.
Using VESC Tool, users can perform motor detection, adjust settings, view real-time data, update firmware, analyse logs, and troubleshoot issues. It is available on Windows, macOS, Linux, Android, and iOS.
VESC Tool was created by Benjamin Vedder, the creator of the VESC project and its lead developer. Development is driven by Benjamin's extensive experience in motor control, embedded systems, electric vehicles, and industrial applications. New features, improvements, and bug fixes are released regularly as the VESC ecosystem continues to evolve.
As an open-source project, VESC Tool also benefits from contributions from the wider community. Developers, manufacturers, and users regularly submit feedback, code contributions, and pull requests, helping to expand functionality and improve compatibility across a wide range of hardware and applications.
In simple terms: VESC Tool is the central application used to configure, monitor, and manage VESC-powered devices.
