Mechatronics > Motor Control

Updated schematics for a BLDC motor controller

(1/10) > >>

I've taken a second look at my old BLDC stroboscope project, prompted by requests by other forum users, most recently Georg in this thread.

The original software as well as schematics left a lot to be desired. One of my own problems with it was the dangerous overheating of the SN754410 chip used as the H-bridge(s). The circuit only allowed for driving the winding with high or low levels and this is not a very efficient way of doing it since on each step there's one winding that's working against the force of the other two.

Anyway, given that two users have already reported that they cannot make the original software work, I decided to completely abandon both the circuit as well as the software and create them anew with potential for making an actually usable sensor-less ESC (Electronic Speed Control) for small BLDC motors, such as those used as the spindle motor in DVD drives.

I'm still playing with the circuit and the software is a b**ch given the issues with back-EMF on small RPMs which is what I was interested with. Perhaps I will eventually give up on the sensor-less approach but for now I can at least make the motor run in a good (for me) range of RPMs  between 0 and about 1100RPM and I'm playing with various settings for the spin-up routine as well as software PWM.

Anyhow, although the actual ESC is not ready yet, I already have a circuit as well as software that could be used for a more stable stroboscope project. Please see the attachments below for  the diagram and the Arduino sketch.

Please note that I based my new circuit on discrete transistors (three pairs of complimentary PNP-NPN transistors) but it should in theory work with SN754410 H-Bridge ICs as well. In fact, other users already reported it working with the equivalent L293 chip, so you should be fine with SN754410 as well. Just use the Arduino's digital outputs 9,10 and 11 which on my digram go to their respective  transistors H-bridges to activate the corresponding inputs of the L293 or SN754410 chip.

Please note also that this software is not using PWM (for speed of development I took it out) and so the DVD disk freely laying ontop of the BLDC spindle may slip (the spindle rotates in steps, not continuously as with PWM), so you may want to either use laptop DVD drive motor that has three little latches for the disk or, like I'm doing here, just lay two disks one ontop of another to weight it more and create more friction - that will take the choppiness of the rotation out.

Please post here if you've successfully built a stroboscope using this circuit / software and if you have any questions at all about this project, post them in this thread.   

Forgot another important note: since this ESC is not using any speed feedback (not much of ESC, really), for stroboscope you can omit R7, R8, R9 and R10 which are used by different software for back-EMF and comparative measurements.

Dear ElektoNick,
I just tested  your new code. It works - so thanks!
My problem is, that I cannot run my motor slow enough. The motor starts vibrating and stops turning. I can not add 2 CDs on it at all, the motor can not overcome the inertia - even if I help him by hand.
So probably the spindle-motor has a defect. I try to find a new (old!) CD-drive and exchange it.
Thanks again


--- Quote from: Georg on March 12, 2013, 03:36:00 AM ---My problem is, that I cannot run my motor slow enough. The motor starts vibrating and stops turning. I can not add 2 CDs on it at all, the motor can not overcome the inertia - even if I help him by hand.

--- End quote ---
This actually sounds like the motor voltage is probably not high enough or the source is not high enough to sustain it when the motor starts drawing current. How do you feed the motor? Are you taking the 3.3V or the 5V output of Arduino? I tried to run it from the 'ino's 3.3V and it does run but sometimes the load becomes too much for the 3.3V regulator and Arduino feels the "brown-out" and restarts itself. And that was with one CD only, so I imagine it would be even worse with 2. So, I'm using a separate 3V power supply. If that's not enough, I've raised it to about 6V at one point - the motor holds that still fine, I was just concerned about my transistors - they are spec'ed up to 400mA and the motor draws about 500mA at  6V. I imagine with L293 you can raise it even higher if needed.

If you are looking for a new spindle motor, try to find one that came from a laptop CD/DVD. They have little spring-loaded latches that grab the disk and won't let it slip on the spindle.

I am driving it with 5V - separate power supply 2.2A. So that should not be the issue.
The powersupply is switchable - so I tried also with 6V or 4.5V. No real difference.
It took some help by hand to find the point, where the motor is constant turning.
If the speed is too slow (estimated less than 85 rpm), then the motor does not constant turn. It looks like it gets slower at each half turn.
When I change the poti very sensible, then it gets faster (not possible to count). A little bit too much, then it lose synchronisation and it works unregular (eg 5 turns ccw and then suddenly x turns cw aso.).
What is the slowest rpm on your motor?


[0] Message Index

[#] Next page

Go to full version