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

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.

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?

The slowest I can make it run (with 2 CDs stacked up) is about 30 RPM. I might go even lower a bit but the stroboscope effect breaks down, so looks like there's not reason to. Regarding the problem with 2 steps forward 1 step back: in this case you may want to try and go in the opposite direction with the power supply: try to lower the voltage then. It becomes rather choppy when I raise it to more than 3~3.3V, so I wonder if you'll see better movement with lower power supply. It may be that the motor has so much torque that it races to the position it needs, but gathers so much rotational speed that the inertia of the disk moves it past the proper position very fast and the next step has to bring it back. Since this is a very much a mechanical system, the physical properties of the disk and the motor (weight, diameter, moment of inertia, friction between the disk and the rotor) just cannot be ignored and that's what makes the control of it rather complicated.

So, my next step would be to add the PWM back (for smoother movement) to see if I can remove the second CD and still observe smooth and slow rotation.

Hmm - I followed your advise and changed to 3V. Thats works smoother, it is about 80rpm - but slower does not work. The force of the motor is about the same. How can I change the direction of the power supply? (I must connect GND to -?). By the way the CD is fixed on the motor, there is no friction.But look at my video

: mickey is clapping hands: left side you see only the clapping and rights side you see his hands up. That is at least what you would see here on my table! It looks like the flash leaves one section out.(12 mickeys are on it)???. Or are my eyes too slow? (I just asked my wife, she sees it in the same way). By incidence if you leave one section out, clapping and hands up can be seen as as separate sets on the disk. It is a pity that the motor is not slower rotating, then I could really see if the flash leaves one section out, or if it is an illusion.You are rigth it is this mechanical issues... :)

How can I change the direction of the power supply? (I must connect GND to -?).

Are you trying to change the direction of rotation? It's defines in the software but you can also just swap the ends of windings A and C (or A and B for that matter) - it should start rotating in the opposite direction. Don't change polarity on the driver chip, you'll likely damage it!

I've just done a video of my own, will post it here is a few minutes - it turned out to be a big file, needs time to transfer it to Youtube. I'll post it here as soon as I'm done.

Are you able to reproduce the newer schematic (with 3 PNP and 3 NPN transistors) instead of the L293? These driver chips are nice because they simplify things but I have a feeling the fact that they cannot float the winding (i.e. effectively disconnect it from both ground and supply rails when it's required by the switching sequence) makes for uneven rotation, especially at low speeds when the inertia of the disk is not enough to help smooth the transition between the steps.

So I did finally upload today's video to YouTube (these HD videos take ages to upload), here goes:

Fast forward to about 1:45 if you like to see the low RPMs. It does jerk quite a bit but still rotates, so I hope the discrete transistor circuit may help you to see better low RPM performance. At the extremely low end (like, 1-5 RPM) it does behave similarly to what you describe. I think this can only be fixed by using PWM so "smooth edges" between the steps.

Wow the motor reacts in your schematic so much better! It is uncomparable with my situation. My motor works only in small speed limits after manual start... Will be interesting to see if it is the L293 versus pnp/npn schematic or my motor?!

They should be similar spec PNP and NPN ones, like 2N3904/2N3906 (200mA) or C9012/C9013 (400mA) which is what I'm using. If you are shopping for the transistors, just search for their datasheet and make sure their specified max collector current is no less than 200mA ('cause they'll probably fry before the rotor will start turning). 2N3904/2N3906 are probably the most common and cheap small general purpose switching transistors out there, should be the easiest to find.

I built it up - it works. But the motor behaves the same as with the L293! It turns only in a very very small sector of the poti with manual help to start. So it has something to do with the motor. I will look for a new CD-player motor and then try is again...

It turns only in a very very small sector of the poti with manual help to start.

This is peculiar - I'm wondering if the potentiometer itself is OK, did you verify that?

Also, are you positive you've identified the winding ends for the motor properly? Sometimes they are connected to a flat ribbon cable that goes under the magnet bell and is notvisible. There may be other connections there on that cable, such as the Hall-effect sensor outputs and the ground and +5V for them as well. Usually the windings are the thickest conductors but not always, and the ground as well as the +5V line could also be thick, so could be easily confused. Did you verify the same resistance between all three ends? It can be anywhere between 4 and 20 Ω, depending on the motor but it has to be the same value when measured between each of the three ends. The fact that you need to start it manually every time makes me wonder if one of the windings is actually missing.