VESC open source motor controller

I use VESC for controlling brushless motor. Control target is closed loop control with feedback sensing on electrical robot locomotion.

Purpose of this blog entry is to keep record atleast for myself.

VESC is developed by Benjamin Vedder. The design is open source and comes in different version on hardware and software.

VESC supports various operation modes with feedback by back EMF, hall sensors and encoders. Documentation for modes could be improved.

Per code review the hall sensor cannot be not used as primary feedback method, rather the code relies on back EMF. Due to this, the calibration of feedback is necessary to get the motor working properly. With bad calibration, the back EMF feedback is not stable. Unstable operations can be seen as oscillating control signal, which can also result power rails to become unstable due to power surging to motor. STM32F4 supports quadrature encoder A/B signals by hardware and VESC uses this functionality also. I have not tested quadrature encoder functionality.

The basic design is introduced in site below. In this site, the basic design of version 4.11/4.12 is shown. References are old and not all said on this site is true with new design,
http://vedder.se/2015/01/vesc-open-source-esc/

New version 6 exists. The new version has improved design for current and waterproof design,
http://www.trampaboards.com/vesc-6-complete--vedder-electronic-speed-controller-trampa-exclusive-p-24166.html

The firmware also more than single version, and the protocol dialect is not fully compatible between versions. Atleast packet contents from COMM_GET_VALUES and for configuration differ.

There are two control softwares, bldc_tool and vesc_tool.

BLCD tool from github on my pull was for firmware versions such as 2.17 and 2.18.
https://github.com/vedderb/bldc-tool

After this, the new firmware versions use different protocol and vesc_toool is used to configure this,
https://github.com/vedderb/vesc_tool

vesc_tool is a bit more tricky to compile on Linux. Instructions for compiling vesctool on Linux could be found from URL below,
https://www.vesc-project.com/node/310

The protocol implementations exists for ROS and Arduino. The same basic protocols works over serial communications as well as over USB. As long as correct dialect is used with correct firmware.

Arduino implementation, (notice, multiple brances in the repository for different versions)
https://github.com/RollingGecko/VescUartControl

Some ROS repositories I found
https://github.com/mrsd16teamd/loco_car/wiki/VESC
https://github.com/blinky-robot/vesc_driver
https://github.com/mit-racecar/vesc/tree/master/vesc_driver/src

Note: loco_car/utilities/vesc seems to be derived from mit-racecar, the protocol version is compatible with fw 2.18

VESC controller has impressive set of features, but is expensive and complex functionality documentation would require more documentation.

As another option for VESC controller, I would like to test more simple motor controller with external PID. I have note tested this, but I saw Instructables article using this (not in closed loop, tho):
https://www.aliexpress.com/item/15A-500W-DC12V-36V-Brushless-Motor-Speed-Controller-BLDC-Driver-Board-with-Hall/32916050694.html



Kommentit

Tämän blogin suosituimmat tekstit

Matrox G200eW 1920x1200 resolution on Ubuntu 16.04

Docker CUDA Runtime