Programming AM32 ESCs
What is AM32?
Recently the prior most popular ESC Firmware BLHeli-32 has discontinued operation. AM32 is a fully open-source alternative firmware which works on some BLHeli-32 ESCs. Also many manufacturers are (slowly) switching to AM32 from BLHeli-32
AM32 has many of the features of BLHeli, and it has some even nicer features that are better for Combat Robotics (mainly because it's been widely adopted in the RC Rock Crawler scene, for their drive motors, meaning it's been better optimized for slow startup high torque motors).
Programming Hardware
Firstly, you will need a programming device. Luckily the hardware is compatible with both types of BLHeli ESCs (BLHeli_S and BLHeli_32) as well as AM32, so a single "USB Link Programmer" will work
Any compatible BLHeli USB Linker/Programmer device which has a servo port to communicate with the ESC should work.
This is either a purpose built BLHeli ESC USB Linker/Programmer such as our product: https://combatrobotics.co.nz/products/blheli-usb-linker-programmer-for-escs
Or you can build your own using an Arduino (instructions will come for this, or are available within the instructions in the blheli suite software).
Programming Software
AM32 maintains a website for supporting their firmware. And it's much easier from a software point of view. There are 2 options to program the ESCs:
The preferable option (as it is more full featured, and works offline) is to use their Configuration Tool, which can be downloaded for Windows or Linux from:
https://am32.ca/downloads
Another option is to use their excellent Web Configurator. That's right, no software to install, just visit the configurator website, and it can directly program the ESC.
Flashing/Programming Process
Using the ESC Programming Software:
If you are using the stand-alone programming software, when you first run it, the window should look approximately like this:
Make sure the "Direct Connect" checkbox is checked, and then select the USB port in the dropdown immediately below it. Then click "Connect"
If successful, you should see the window change to look like this:
At this point click "M1" to read the ESC Settings, which should then bring you to a window that looks like this:
Here, you can edit the settings. Some important settings to pay attention to:
-
Reverse Rotation
(if the motor is running backwards, and it's too hard to swap a wire pair) -
Bi-Directional
(for Drive motors, allows it to run in forward/reverse) -
Motor KV
(should match the KV of the motor you have installed for best results)
Additionally, there are more settings available on the Input tab:
Additional important settings on this tab:
-
Servo Settings
(These allow you to tune the high, low, and neutral signal, usually this is 1000 for low, 2000 for high, and 1500 for center. It also lets you set the deadband, which is how much of a signal change from "Idle" there should be, for example in bi-directional mode, 50 deadband would mean from 1475 to 1525 would result in the ESC being "off", while in normal mode, from 1000 to 1050 would be "off", and everything above that would be active. This lets you tune how "responsive" the sticks are, while also ensuring a safe "idle" zone so you don't get wierd phantom movement when you don't want it) -
Low Voltage Cut-Off
(This lets you tune the ESC to shut down if the battery runs too low. 300 = 3.00 Volts per Cell, which is the absolute minimum you usually want to run a Lipo battery to avoid damaging it, some people set 3.20v to be extra safe. But many people leave this option off, as it allows them to push every last ounce out of their robot, but at the risk of killing their batteries) -
Temperature Limits
(You can configure the ESC to protect itself from overheating, though this may also cause it to stop during a fight, so must be used carefully)
-
Current Limits
(You can configure the ESC to limit how much current it provides. This will limit heat/stress on the ESC and Motor, as well as your batteries. But again it may cause the ESC to act strangely during a fight, or even stop working unexpectedly if you set this too low. It is a valuable safety setting, but should be used with care)
We're still learning the optimal settings for Combat Robotics for AM32, but several members of the club have been experimenting with these, so hopefully soon we will have some suggestions for optimal settings to use.
When ready to save settings back to the ESC, you can then click "Save Settings" which immediately applies the configuration to the ESC
Using Web Configurator:
First in the top right corner of the page, you must select the USB port you wish to connect to (you have to pick the correct USB serial port that the USB Link Programmer is detecting as on your computer, for Linux this will be something like /dev/ttyACM0 or /dev/ttyUSB0 for example, on Windows it will likely be COM5 or COM6 or something like that).
To select the port, click "Port Select" as shown in the screenshot below
Then click "Connect", which should then change that section in the top right to look something like this:
And you should see in the logs "Connected to device".
At this point, you should see some basic info in the center top of the lower pane like this (though the different values may differ between ESCs):
And a large panel of settings below like this:
First, click "Read" in the section on the top right, to ensure you have read the latest settings from the ESC. You can then adjust the settings, you can click "Save Config" which saves the settings to a file. Once you've done that you can use "Apply Config" and choose the file you saved, to send the config to the ESC.
Tips/Tricks for Combat Robotics Use
We need more time with these ESCs to come up with recommended tips and tricks. But in the meantime, please review this very comprehensive video on youtube from Team Just Cuz Robotics: