Using the latest British designed 'ARM Cortex' technology, this board is designed to drive two Brushless (BLDC) Motors in the power range tiny to kilowatt!
Rugged Proven Design - 100% reliable through two years and nearly 200 miles of public passenger hauling duty at Ashton Court and Vivary Park
The 'Brushless Brute' locomotive runs on two bogies each of which has two powered axles. One STM3 ESC controller board is fitted to each bogie providing total high efficiency power, current, voltage and speed control - full four quadrant control, bidirectional with Regenerative Braking.
See a video of four STM3 ESC boards driving a selection of motors, rated from 100 to 1900 Watt (looks best at 'Full Screen')
'Brushless Brute' locomotive uses two bogies, each has two brushless motors, powered and controlled by one STM3 ESC module, all four loco axles under fully controlled power. See a short vid of loco in action
Join us for a whole lap around the beautiful track at Bristol Ashton Court
An ARM Cortex controller is at the heart of the design. This accepts commands from any of the multiple inputs, and using advanced PWM (Pulse Width Modulation) techniques, provides independent control of voltage applied to, and peak current drawn by, each motor. A 'Regenerative Braking' mode enables conversion of mechanical power returning it to the system electrical power supply. This gives full four quadrant control : - Motoring and braking in both forward and reverse.
Massively rated 100V 120A MOSFET modules provide rugged and overload-protected outputs.
(That's it for the simple description. If you are interested in this board and you are experienced in electronics and engineering, the technical info below should give you all you need to build your own. If not, I have agreed to build a few for club members although I've plenty of other things to be doing, so contact me if you wish.)
A Radio Control receiver may be connected to the STM3_ESC. Using one or two channels, two motors can be controlled in tandem or independently. A Radiolink R8EF receiver was used during test and development but any similar should work. The receiver is powered by the STM3_ESC. External batteries or power sources ** Must Not ** be used, connection is made between receiver and ESC using one or two three conductor leads only, and no batteries.
See 'User Settings' below to find out how to setup the STM3_ESC for use with radio control.
Everything you need to build your own STM3_ESC is here.
Zip of PCB Gerber files, right click and 'save as' here
Software developed and compiled using ARM Mbed free online toolchain. Published 29th September 2019 - Updated 18th August 2020, Import your own copy from https://os.mbed.com/users/JonFreeman/code/Brushless_STM3_ESC_2019_10/
Firmware binary file 29 Sept 2019 here
Latest Aug 2020 binary here
BOM (prices unlikely to be accurate) here
To follow - some useful data sheets
And that's your lot !
** New Aug 2020 ** Setting Up and Using the STM3_ESC Dual Brushless Motor Controller
Control from PC
Essential for tweaking User Settings, and useful during bench testing, the STM3_ESC can communicate with a PC, laptop etc using a USB to serial adapter. Type CP2104 from hobbytronics is one such. With the computer running 'PuTTY' or other terminal programme, commands typed into the terminal are sent to the ESC which responds accordingly. The current list of recognised commands is shown below. For example, typing a ? question mark character, followed by a press of 'Enter' (or Return) instructs the ESC to output the list below.
'pot' invokes a response "Driver's Pot x.xxx" where x.xxx reflects 'normalised' knob setting from 0.000 to 1.000
'fw' and 're' set motor directions, forward or reverse. Nothing prevents a change of direction while motors are running. That this is possible does not make it wise! Advice - stop motor before changing direction.
Some commands require numeric values e.g. 'v 50' or 'v50' sets motor voltage to 50% of max available, 'i 20' or 'i20' sets motor current limit to 20% of max. 'vi22 60' sets volts to 22% and current limit to 60%.
Some commands have '?' as the first character, these are, in general, requests to report voltage, current, speed, rpm or other measured parameters. Not all 'request' type commands use '?', e.g. 'rpm'.
'ssl 15.8' sets speed limit to 15.8 MPH, but beware of pitfalls here. Motor speed RPM is accurately measured, there will be no issues with rpm, but MPH is calculated from rpm with three other values set under 'us' User Settings, the "Wheel diameter mm", "Motor pinion", and "Wheel gear". Motor pinion and Wheel gear express reduction ratio between motor and wheel whether coupled using gears, belts or whatever. IT IS QUITE EASY TO SET STUPID VALUES TO THESE WHICH COULD PLAY HAVOK WITH YOUR SANITY as you wonder why the top motor speed is only in the tens of revs per minute!
You probably wouldn't read a handbook even if I wrote one. These are the commands, play and learn for yourself. It's the only way. Except for the most important function [us], the User Settings, which warrant a section of their own. Read on...
"WARNING - sema cnt 44" - ignore this.
Dual BLDC ESC type STM3 2018-20, Ver 1.0.y2020.m05.d21 At menucmd function - listing commands, source PC:- [ls] Lists available commands [?] Lists available commands, same as ls [pot] read drivers control pot [fw] forward [re] reverse [rb] regen brake 0 to 99 % [hb] hand brake [v] set motors V percent RANGE 0 to 100 [i] set motors I percent RANGE 0 to 100 [vi] set motors V and I percent RANGE 0 to 100 [?v] Report system bus voltage [?i] Report motor both currents [?w] show WatchDog timer contents [kd] kick the dog, reloads WatchDog [who] search for connected units, e.g. 3who returs 'who3' if found [us] read or set user settings in eeprom [ssl] set speed limit e.g. 10.7 [sbe] set brake effectiveness 5 to 90 percent [ver] Version [rpm] read motor pair speeds [mph] read loco speed miles per hour [?s] read loco speed miles per hour [?rc] report RC1 and RC2 input condition and activity [nu] do nothing End of List of Commands WARNING - sema cnt 44
In response to entering the 'us' command with no numeric parameter, the STM3_ESC outputs a list similar to : -
us - User Settings data in EEPROM Syntax 'us' with no parameters lists current state. No Changes us 11 MotorA direction [0 or 1] = 1, MotorB direction [0 or 1] = 0 us 12 MotorA poles 4 or 6 or 8 = 8, MotorB poles 4 or 6 or 8 = 8 us 13 Numof motor current shunt resistors [1 to 4], MotorA = 2, MotorB = 2 us 14 Brake Effectiveness percentage [min 5, max 91] = 90 us 15 POT_REGBRAKE_RANGE percentage 10 to 50[10 to 50] = 20 us 16 Servo1 [0 or 1] = 0 Disabled, Servo2 [0 or 1] = 0 Disabled us 17 RCIn1 [0 disable, 1 Uni_dir, 2 Bi_dir] = 2, Bi_directional RCIn2 [0 disable, 1 Uni_dir, 2 Bi_dir] = 2, Bi_directional us 18 RCIN1 direction swap 0 normal, 1 reverse RCIN1 = 0, NORMAL us 19 RCIN2 direction swap 0 normal, 1 reverse RCIN2 = 0, NORMAL us 21 RCIn1 two's comp trim, [-128 to +127] = -3 us 22 RCIn2 two's comp trim, [-128 to +127] = 3 us 23 RCIn Regen braking uses this pcntage of movement range, [10 to 50] = 20 us 24 RCIn Stick move Attack rate, [10 to 90] = 50 us 25 Board ID ['0' to '9'] = '9' us 26 Top speed MPH, range 1.0 to 25.0 = 19.7 us 27 Wheel diameter mm = 98, Motor pinion = 27, Wheel gear = 85 us 28 Command Src  - 2=COM2 (Touch Screen), 3=Pot, 4=RC In1, 5=RC In2, 6=RC1+2 us 29 Nominal system voltage, used to calculate current scaling = 24 us 30 Baud rate, [1=9k6, 2=19k2, 3=38k4, 4=78k6, 5=115k2] = 1 us 83 Set to defaults WARNING - sema cnt 50
"us11 0 0" sets both motor directions the same, as does "us11 1 1" setting both to the opposite direction. Thus motor directions can be independently set as required.
"us12 8 8" is used to indicate a pair of 8 pole motors are in use. Most motors seen are 8 pole, except the Nanotec which are 6. Only affects RPM and speed measurement.
"us13 n m" must be set to report the number of current sense resistors fitted to the board. These carry the ident 'R050' and are situated near the motor power connectors. This must be set correctly for proper operation.
"us15 xx" The anti-clockwise end of the driver's pot puts the STM3_ESC into Regenerative Braking, the fierceness of which is settable using "us14 xx". us 15 sets the percentage of pot travel in the braking region. Only applies when driving using a driver's pot.
"us 16" The STM3_ESC has two servo outputs, currently unused.
"us 17 n m" For Radio Control, us17 is used to disable or enable radio control inputs, and when enabled, allows specification of uni or bi directional action.
"us25 n" sets Board Identity to a single digit. This is important in systems using multiple STM3_ESC boards which should each have locally unique Board IDs.
"us 28 n" The STM3_ESC can be setup to be operated in a number of ways, curiously numbered 2 to 6.
us28 2 locks out radio control and locks out the driver's pot input. Commands are accepted via opto isolated serial link from a higher level controller, for example the TS2018 Touch Screen controller fitted to the "Brushless Brutalist" loco. This is the preferred control method when using multiple STM3_ESC boards.
us28 3 enables the 'Driver's pot' analogue input. Potential problems with common mode groud imbalance mean this is not reccommended for use with multiple STM3_ESCs.
us28 with codes 4, 5 and 6 are all about Radio Control. For multiple STM_ESC applications a separate RC Rx is used for each STM3_ESC, this avoids potential common mode ground issues. Codes 4 and 5 select which RC input is used to control both motors. Code 6 gives independent control of motors through use of two channels. Please note the STM3_ESC will always respond to commands received from a PC via USB/Serial, and to commands seen on the opto isolated serial input.
STM3_ESC Source Code is published on 'mbed' at https://os.mbed.com/users/JonFreeman/code/Brushless_STM3_ESC_2019_10/
Binary executable for download (August 2020) here.
Boards are produced in small batches so contact us for availability and to place orders.
Prices - no VAT, excluding carriage :-