Stroboscope (zoetrope) using Arduino and a broken Xbox 360 DVD drive

Picture of Stroboscope (zoetrope) using Arduino and a broken Xbox 360 DVD drive

Stroboscope (AKA zoetrope) is a device that creates an illusion of a moving picture by showing a rapid successions of frames  "stopped" for a fraction of a second due to the persistence-of-vision (POV) effect. It is a very old toy; zoetropes have been amusing crowds since 19th century. It makes it all the more fun to make one out of decidedly 21st century parts!

The project was inspired by my own interest in zoetropes (non-electronic variety) since my childhood. Many a good book were spoiled by drawing stick figure stop motion animations on successive pages ... But I digress.

I am also very interested in all kinds of motor control and I did not have much experience with brushless DC (BLDC) motors before starting this project. I'm glad I did because BLDC is a fascinating technology and I'm now trying to upgrade some of my motors with stronger magnets to see if I, too, can make an RC plane fly on one of those. I'm afraid there won't be much space to go into details of BLDC operation here, so I invite anyone interested to visit my blog and read the recent entries on BLDC theory, circuits and software.

Additionally, since BLDC motors are used in pretty much every CD/DVD/Bluray device out there, I had a huge pile of these BLDC motors ever since I started breaking DVD-RW drives to harvest lasers from them. This in large part was the influence of another instructable I read right here, written by Groover, the Pocket Laser Engraver . Ironically, I've yet to build by own (I already had a larger one) but I can't stop tearing apart broken DVD drives and the pile of available parts just keeps growing :)

So, enough talk, let's start building something!
elabz (author) 2 years ago
Just wanted to post a follow up here. I returned to the project while building another BLDC-based project and in the process re-worked the motor driving circuit. It now works much more efficiently (no overheating of the driver) and is based on very common and chip components - discrete PNP and NPN transistors. Here is the video of the new circuit running the old zoetrope animation and here is more info, including the circuit diagram and the new Arduino sketch.   

bachfederico10 months ago

thanks elabz for share this instruct able. I make it.

spesdio10 months ago

I enjoy the project ! thanks for the code :)

spesdio10 months ago

I enjoy the project ! thanks for the code :)

Could you do a similar thing but with the light on the inside so it projects a big image onto a wall. Do you think it's possible.
elabz (author)  Zaphod Beetlebrox3 years ago
What a great idea! Why didn't I think about it myself :)
I don't see why it wouldn't work.
If you do make it please reply to this comment as I would like to see how you did it. How about replaceable slides so you could change the animation.
elabz (author)  Zaphod Beetlebrox3 years ago
Sure thing.

I think I will use a laser diode though. Just completed a TTL-controlled driver for red laser diodes, will use that - they provide better illumination and the beam has narrower aperture, even without the optics - better for throwing light to far away walls :)

The slides are interchangeable - the CD is not glued in place, you can take it off if you like. That was the whole big deal with using PWM control - otherwise the CD would slip on the spindle. See more about slippage prevention :) here: http://elabz.com/brushless-dc-bldc-motor-with-arduino-part-3-the-stroboscope-project/ 
My blog page has pictures of both animations I made - the Rumba and the Stick Figure Dance :), and both are downloadable in SVG and  G-Code formats. I also describe how to make your own. Haven't had much time to play with it lately, would be nice to see if anyone else had created any new animations .
bpenner3 years ago
This would be much easier if you use a dc motor and add a small electrical contact to the cd at each image. So when the cd rotates and the contacts are shorted at the image points you get a strobe. No micro controller required and you r timing wouldn't go off as it did in the video.
bpenner bpenner3 years ago
Yes the contact would wear and debouncing would be an issue which is fairly easily solved using discharge caps or by switching the electrical contacts to magnets or using a line counter instead or a million other contactless solutions. Just my 2¢ :)
e5frog bpenner3 years ago
I had a similar thought but I guess it's a good learning experience using an arduino.

I would have punched a hole (or a cut) in the disc for each image, then placed a led beneath and a phototransistor or similar on the other side that would electrically close a circuit to the LED. These can be bought as a fork like module as well.

It wouldn't matter what speed you run it (within limits) or in which direction it runs, it would always stay synced.

Doesn't seem there's a need for an Arduino. ;-)

EDIT: Aha... it's the motor that needs the controller...
With some feedback though the off sync could be corrected.
elabz (author)  e5frog3 years ago
Thank you for your comment, e5frog!

These are all valid points and yes, the motor was the defining element of the project, at least for me because I was very curious about BLDCs in general. Using an MCU was essential for the motor part. However, even for small things like the flash timing MCU can make it so much easier.

For example, if I based my flash on a 555 timer, I would need a circuit with something like 10-12 components in it to implement the photo transistor triggering and flash duration control. Just that little part would have been more than the entire project in terms of parts (if you consider the Arduino one black box, obviously).

Additionally, the polycarbonate the CDs are made of  is very brittle and often cracks when you try to drill it or cut a slot. Plus, you'd need to position and drill your holes perfectly. I just know I'm not good at that :)

Anyhow, like I said before, there are many ways to achieve the same result. But the beauty of an MCU such as Arduino is that it can take care of so many things at once and eliminate great many electronic and non-electronic components to simplify design of the project.

That said, there are ways to implement feedback without resorting to CD disk mutilation :)  For example, most BLDC motors these days have Hall-effect sensors built in. Xbox drive was a notable exception I used to simplify the project. It would have been an almost trivial upgrade of this little project to implement rotation speed feedback / flash sync  based on the output of that sensor.  
e5frog elabz3 years ago
Yes, many ways and as you basically needed an MCU for the motor there's no reason not to use it for that as well.

Anyway, fun little project, glad it worked out the way you wanted it to.
elabz (author)  bpenner3 years ago
Mechanical contacts have a nasty habit of bouncing (rapidly connecting and disconnecting multiple times during what might seem like a single click). And they also worn out in time. 

A  reed switch and a whole bunch of tiny super-strong magnets glued next to the figures might do the trick (although reeds still bounce). 

However, part of the fun was to build the animations on CDs and DVDs to emphasize the crossover between the old technology and the new. And it is very difficult to find a CD drive with a DC spindle motor these days. They've mostly all migrated to the trash bins and landfills by now. I actually have one but decided not to base the design on it because no one would be able to reproduce it because it's so hard to find.

Regardless, by the time you take care of the switch bouncing, some spindle speed control, positioning contacts or magnets, etc., you'll realize that it was just easier to employ an MCU (Arduino here) to do all the hard work.

By the way, sorry it's not quite clear from the video but the timing in a middle of the video went off because I switched the direction or rotation. The CD, however light, cannot stop and change direction immediately due to inertia, and that's how the sync was lost.  I had to use my finger to restore the sync :)  Once the flash is synced to the figure position, it's pretty stable even without close loop speed control. Well, stable for a toy, anyhow...

Thanks for stopping by!
bpenner elabz3 years ago
What if the figures were directly on a clear poly carbonate disk and the flash was from behind... Could be a cool effect but then again might not work if the images are too close and the speed wasn't just right... HHHmmmmmm
elabz (author)  bpenner3 years ago
You mean, if they instead of standing on the disk like they do now would be laying on the disk? I guess it's possible.  I don't see what might prevent it from working except of course the space towards the center of the disk will become pretty crowded.

And yes, the timing is very important regardless of the frames positions - if the strobe is just right (synchronized to the disk rotation and it's not too long) they will be "frozen" in whatever position they happen to be in that instant.

You just have to be careful with the LED positioning: you don't want a 1W LED shining right into your eyes.

In fact, you can have plenty of fun by aiming the LED under the disk and using some sort of a piece of white paper as a reflector to reflect it up. Then taking a transparent CD holder from a 50- or 100-pack (you know, the clear one on top) and drawing your frames with Sharpie or something like that. If you'd watch this stroboscope from above, it should show your 2D animations.
I think it's a great idea!
Awesome project ! Very nicely done ! Just thumbing through and I always check out the Arduino projects ....nice project and very nice code.

Thanks so much for the share!

But I can do it without the Arduino.
elabz (author)  blinkyblinky3 years ago
Indeed, you can accomplish anything you put your mind to :)

But it won't be easy. This kind of BLDC motor requires 36 commutation steps per rotation. In fact, I myself had started to implement it first MCU-less but quickly gave up. Had I known that it would be very important to also employ PWM or else I would have to glue the disk to the motor and forget about changing the animations (I tried to illustrate that in a video here), I might have given up on logic-driven BLDC even sooner :)

Tell you what: this project was born in part as a self-imposed challenge after I read another instructable here where the author (whose work I otherwise find very informative) dismissed these motors : "Remove the spindle motor, it could be useful but I feel they are hard to drive and thus don't keep them".
I thought to myself: wait a minute, these motors look like beautiful pieces of fine engineering, I can't just dispose of them, I have to do something  useful!  (I realize that the degree of usefulness is debatable :) )

So, if you're up to a good challenge, I challenge you to come up with a way to drive these BLDCs without an MCU and write an instructable about it. Don't even worry about syncing the LED strobe - just seeing the motor turn would already be enough fun. I have a boatload of these motors and would love to learn another way to make them useful. I'll be sure to check out the instructable and vote for you!

Thanks for stopping by!
You're welcome.

True, very true.

I didn't realize you used BLDCs but I think I have a 555 timer driver circuit somewhere...
elabz (author)  blinkyblinky3 years ago
555 timer for clock and a decade counter (plus a driver IC or 3 transistors) for a very simple commutation 1-2-3. Yes, it might work on an HDD spindle which usually has the center point of all three windings connected to a lead, hence 4 leads.  I think it will also require the BLDC to have an even number of magnetic poles and an even number of winding cogs else the simple commutation sequence won't work.

These little puppies from CD/DVD/Bluray drives normally have 12 magnetic poles and 9 cogs, and three leads (center point inaccessible) so the simple commutation is definitely out.

That said, however, most spindle motors (Xbox was notable and useful exception) have a controller IC right next to them. I've looked into the specs for a couple and they are little marvels of an IC themselves - take power and clock (say, from your 555) and produce the right commutation sequence.  They even have speed feedback via the Hall-effect sensors inside the rotor bell.

One of those days, when I get more time on my hands, I want to connect to that on-board controller instead of just scraping the IC off and using the bare motor. Ironically, it may just be that an MCU may not be strictly required in that case as long as something is producing the clock, direction and whatever else may be needed as far as inputs...
thealeks elabz3 years ago
couldnt you just set up the cd on a motor, and set it up so every time the cd hits a given postion(or multiple positions) it connects a circuit that lights up the led, and avoid all the microprocessors and timer chips? or am i thinking to simply for something like this?

also, awesome job! ill have to try making one of my own
elabz (author)  thealeks3 years ago
As we all know, cats can be skinned in many different ways :)

In theory, if you look hard enough through piles of old computer equipment, you might just get lucky and find a pre-1995 CD-ROM drive that has a DC (classic, brushed type) spindle motor. In that case you would not need a microcontroller to rotate the spindle. But you would still need to time the LED strobes to the disk's rotation so you can fire 12 times per one rotation.

In other words, you saved one timing circuit but in turn you need to create another. So, in terms of the ease of construction it might just be a wash.

That said, I have to say that I wish I had implemented an open loop feedback for the rotation speed control because the sync does wander a bit as is evidenced by the videos. I was thinking about drawing a thick black Sharpie line on the underside of the disk and have an optical sensor to read that line once per rotation and re-adjust LED flash sync. 

By the same token, you could have drawn 12 lines, one under each frame (figure) and flash the LED each time you sensed the line. Combine that with a DC spindle (provided you can still find one) and you got yourself an MCU-less stroboscope.

In my case the dis-sync was not terribly bad (thanks to a very light load) and in the end I decided not to mess with speed control.

Anyhow, I just wanted to say that with the right components and some serious adjustments to the design your idea could have been implemented.
He's using BLDCs.
I like it!