I’m pleased to announce that Interactive Controller for Brushless Motors reached the “revision” phase. I finished implementing and verifying the core functionality and now have a handy tool to test and compare brushless DC motors. In addition to basic abilities to spin a BLDC and change A4960 parameters, demonstrated in this video, the controller now has the following:
Untethered operation. Basic functions like start, stop, brake, and motor speed change can now be performed via controls on the board – no terminal connection necessary.
Separate power bridge. Power MOSFETs have been moved to a second board; this allows me to use the controller to drive loads with different power requirements. Also, replacing burnt MOSFETs is easier this way.
A heartbeat LED indicator is added – when a code crashes I can see it right away :-).
The circuit is built on a single-sided homemade PCB. The copper on the other side is kept intact and it serves as a ground plane and a heatsink. The Eagle CAD files as well as QM model file and PIC24 code generated from it is hosted on github. PDF files for two boards are also in the tree, the files can be printed on a laser printer and used in toner transfer process.
The following pictures show details of the project. Please take a look – and stay tuned for the updates.
I finished laying out the first revision of the PCB for ICBM. In addition to what is shown in the video I decided to add rotary encoder as a second control to change PWM duty cycle. RUN/STOP and BREAK functions will have their dedicated hardware buttons as well. The MOSFETs are mounted on a separate daughter board, this way I can have drivers for different power requirements. The first one I routed accepts DPAK-packaged transistors. The Eagle files plus pdf schematics for both boards are on github. Enjoy!
Recently I was working on a test bench for brushless motors based on Allegro A4960 BLDC controller – a device capable of driving motors while giving interactive read-write access to A4960 configuration registers and allowing changing motor driving parameters (such as phase advance, BEMF window, startup ramp, etc.) when motor is running. The circuit and accompanying code finally reached alpha stage, meaning the electronic is more or less finalized and the code is more or less working. I shot a short video demonstrating the capabilities of the device, please take a look at the video above.
The controller was built free hand, no documentation is available at this time. I will start capturing schematic tomorrow and make it available on github together with source code as soon as it’s ready – stay tuned! [EDIT: github repo here ]
Here is a little jig I made to test and characterize the BLDC controller I wrote about a while back. It is a dummy load consisting of two coupled motors: one driven by a controller and another having its windings shorted either directly for maximum load or through series resistors when measured load is desired. Title picture shows finished jig (click on it to make it larger). The construction details follow.
Two brackets made of 2″ aluminum angle profile hold 50-size brushless outrunner Chinese motors rated at 100A. The brackets are bolted to 0.5″ polycarbonate base. The motor shafts are coupled with a flex coupler. Finally, the contact plates are bolted next to each motor – this way if I burn a motor, changing will be easy. The high-current wires are soldered to the female contacts. I’m using double wires to increase current capacity of the wire and also to allow observing half of the flowing current with my little 50A current probe.
I tested the load with my prototype BLDC controller and was very pleased with results. The testing is documented in the short video – check it out.