For something basic like a brushed DC motor, speed control can be quite simple, and powering up the motor is a simple matter of just applying voltage. Brushless motors are much more demanding in their requirements however, and won’t spin unless driven just right. [Electronoobs] has been exploring the design of a brushless speed controller, and just released version 1.0 of his open-source ESC design.
The basic design is compact, and very similar to many off-the-shelf brushless ESCs in the low power range. There’s a small PCB packing a bank of MOSFETs to handle switching power to the coils of the motor, and a big capacitor to help deal with current spikes. The hacker staple ATMEGA328 is the microcontroller running the show. It’s a sensorless design, which measures the back EMF of the motor in order to determine when to fire the MOSFETs. This keeps things simple for low-torque, low-power applications.
Current. Too little of it, and you can’t get where you’re going, too much and your hardware’s on fire. In many projects, it’s desirable to know just how much current is being drawn, and even more desirable to limit it to avoid catastrophic destruction. The humble current shunt is an excellent way to do just that.
To understand current, it’s important to understand Ohm’s Law, which defines the relationship between current, voltage, and resistance. If we know two out of the three, we can calculate the unknown. This is the underlying principle behind the current shunt. A current flows through a resistor, and the voltage drop across the resistor is measured. If the resistance also is known, the current can be calculated with the equation I=V/R.
This simple fact can be used to great effect. As an example, consider a microcontroller used to control a DC motor with a transistor controlled by a PWM output. A known resistance is placed inline with the motor and, the voltage drop across it measured with the onboard analog-to-digital converter. With a few lines of code, it’s simple for the microcontroller to calculate the current flowing to the motor. Armed with this knowledge, code can be crafted to limit the motor current draw for such purposes as avoiding overheating the motor, or to protect the drive transistors from failure.
In fact, such strategies can be used in a wide variety of applications. In microcontroller projects you can measure as many currents as you have spare ADC channels and time. Whether you’re driving high power LEDs or trying to build protection into a power supply, current shunts are key to doing this.
[Patrick] is using a capable 380KV Propdrive motor, capable of pushing him up to 30mp/h! A waterproof 120A speed controller and 6000mAh, 22.2V LiPo battery slim enough to fit under the board give the motor the needed juice. He ended up buying the cheapest RF receiver and remote combo to control the board, but it fit the all-important “want electric long board now” criterion.
At any rate, we enjoyed reading two posts on this topic. [Göran’s] first adventure with the hardware started when he was trying to design his own speed controller. He saw a reference design in the LM7805 linear regulator datasheet which allows the adjustment of the output by changing the ground reference. When fed with 12V this ends up putting off some heat but it is a simple and reliable solution. He was a bit surprised to crack open a Zalman module and find the exact same circuit inside.
The controller in the background is an eBay purchase. He cracked that one open as well (that’s the link at the top) and found a circuit with a linear regulator in it, but this time it was a TL431 adjustable regulator. So here are our questions: Which one of these two is better and why. And can you do it relatively inexpensively without generating as much heat?
The yellow modules hiding underneath the display panel are responsible for setting the speed of the hot air blower and the rate at which the drum turns. They’re adjustable using some trimpots, but it sounds like the stock machine doesn’t give any type of speed feedback other than direct observation.
The solution was to patch into those speed controllers using the ADC of a PIC chip. They each output 0-10V, which [Ludzinc] measures via a voltage divider. After the speed is quantified the microcontroller outputs to one of the displays. Since there’s a different chip for each readout, the firmware can be custom tuned to suit the operator’s needs.
The speed controller is a $20 unit from Harbor Freight. It comes with an On/Off switch and knob which adjusts the power going to the router. [Jesse] pulled off the knob and milled a gear which takes its place. The second gear is attached to the horn of a hobby servo mounted on the side of the speed controller. The video after the break demonstrates an Arduino driving the servo based on a potentiometer input as well as commands from the CNC controller board he’s using.
Design files for the gears and the Arduino code which drives the servo is available from his Github repository.