Dumpster diving nets 100 Arduino-powered motor controllers

Never one to pass up the recycle pile at work, [Scott] usually doesn’t find much. A few old hard drives, maybe a ancient laptop every once in a while, but on very rare occasions he finds something actually useful. This latest haul is a gaggle of stepper motor drivers that, with a bit of work, can be reverse engineered and turned into an Arduino.

After prying into one of the plastic-enclosed boards, [Scott] found a LED, a quartet of transistors for powering the motor, and an ATMega168 microcontroller. Interestingly, most of the pins for the 168 were already broken out on the DA15 connector on each controller. The only thing needed was to build a programmer to dump the Arduino bootloader onto these little widgets.

After much trial and error (and building a new programming interface), [Scott] now has 100 Arduinos with a single stepper motor controller built in. He’s already made a toy light cycle rotate on a small stepper (after the break) and blink a LED, but with this many widgets, we’re wondering what crazy contraption [Scott] will come up with.


  1. Trav says:

    some guys have all the luck…

  2. Infidellic says:

    Can someone clarify – I’m a touch confused. In his post has he put a capacitor in series on a DC ground connection? If so wtf?

    • Fallen says:

      Apparently it stops the host arduino from resetting when programming the stepper motor drive.

      • Eirinn says:

        Correct, it is recommended when programming it.
        It can/should be omitted afterwards :)

      • Infidellic says:

        Well I read that! I mean putting a capacitor in series with the DC power is the same effect as simply disconnecting the line. After all it’s a ground line it shouldn’t ever change!

        I simply don’t understand why you’d put a capacitor there instead of a jumper – except that’d leave ground floating (mind you it’ll still float here). Just “because I read it on the internet and it magically works” seems a little dodgy to me – I’d rather work out why.

    • bleullama says:

      I had just heard of doing either method (resistor to VCC, or capacitor to ground) would disable the reset from the FTDI interface to the host Arduino. I had tried one of the two suggested solutions and didn’t have luck with it, and the other solution other people had no luck with. In retrospect, and I’ll experiment with this, just the resistor to VCC should be enough. I just put them both there, and it works for me. I’m no EE, in fact, admittedly, I failed an EE class back in college, but this works for me reliably 100% of the time. Perhaps one of you out there that are smarter than me can explain why? ;)

      • Infidellic says:

        Again I can’t really see why a resistor in series with VCC should do it either – except in a scenario where you get a voltage divider setup (with the added resistor being part of it and chip internals the other half) dropping the voltage below some threshold.

        It’s not like either of these “solutions” pulls pins high or low (that weren’t previously so).

        I won’t lie I haven’t looked beyond the article and don’t fully understand how this is wired to the MCU (or indeed I don’t actually personally know the MCU) but this has a ring of “it magically works” to me that as an EE grad (sadly no longer in the field) I automatically dislike ;)

      • bleullama says:

        All it needs to do is prevent the reset pulse (i don’t remember whether it’s active low or high) from affecting the micro. If i could, i would have just intercepted the line to the micro from the FTDI, but the Arduino I was using has these two components already on the board.

    • SavannahLion says:

      It’s a simple reset “hold” circuit, exactly the same as detailed in the AVR docs to hold an AVR in reset long enough for VCC to stabilize or to ensure reset is held low for the recommended minimum time. The OP is using a jumper to optionally tie it to reset.

      The schematic looks a little strange because we’re probably not used to seeing it laid out that way.

    • adcurtin says:

      Because he didn’t understand the solution correctly. The correct solution is to put a cap or 110 ohms (as close to that as possible) between reset and vcc.

      • SavannahLion says:

        Where is that solution defined? I’m looking at the AVR042 docs and I do not see it. That circuit uses both a resistor to VCC and a cap to ground.

      • adcurtin says:

        If you’re looking in the datasheet, the resistor is a pullup resistor, to keep the pin held high. The cap you can think of as a push up cap. (it keeps the voltage on the pin high, but it can be pulled low) There should be a resistor in series with the pin between that vcc > res > cap > gnd string, forming a T. I just looked at this in a pic datasheet earlier today…

        Anyway, all of that is pullup mechanics under normal circumstances. The programmer(via the ftdi or 2nd avr chip) is trying to pull that line low, so you have to beat the programmer at pulling it high. Since the programmer is designed to pull it low under the normal conditions, you need something much stronger under these conditions.

        Here’s the arduino link about it: http://www.arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection

        I’m sure the math works out as a resistor divider between the 120 ohm and the pulldown equivalent resistance from the programmer, and the small value on top keeps the signal high enough to not trigger reset (and also low enough not to sink too much current through the programmer).

        That’s why he misunderstood the solution.

    • fluffles the cat says:

      I really appreciate your attitude. I am not an EE but maybe it is to prevent a reflection, the likes that happen with SCSI drives or broken network cables.

      You want the line to be both clear AND clean.



  3. IndianTinker says:

    This is a lucky man..At least he got a 100 Atmega168 and loads of steppers..:)

  4. xorpunk says:

    lol with oversight and efficiency like this I’d make sure I have a updated resume handy..

    Must be american

    • Eirinn says:

      Not sure what those two have in common – could you clarify? :)

      • bleullama says:

        I think he was implying that these were on the loading dock heading in to the building, and I stole them? The exact opposite is true. These were essentially being thrown into a dumpster, valued at $0. I rescued them, figured them out, and have been playing with them since. :D

    • Ren says:

      I think he means that a company that would throw away such “junk” is inefficient and therefore American and will soon be bankrupt, therefore the need for the updated resume’.

      • xorpunk says:

        The irony is they didn’t comprehend it..

      • Balloonman says:

        I’m an American, and I understood the implied message. I think the term “penny wise and pound foolish” might be a proper response. Certainly, a part that doesn’t meet specs, or one that has been rendered obsolete by an upgrade, might be useful somewhere. That doesn’t mean it would make sense for a business to take the time to find that find an alternate use instead of leaving it for the dumpster divers. Such efforts would likely be a waste of manpower and money.

      • bleullama says:

        Actually, the current solution for what these motors/drivers were used for is a much more robust solution. We’re already about 2 generations past the use of these. The new designs that were used (and i’m sorry, i can’t give details) allow for much more precision and feedback, that trying to retrofit such features onto these just didn’t make sense to do. Not to mention that the motors that these were attached to were completely shot. Most were slipping or failing. It made good business sense to dispose of these and go with the newer, better solution.

      • Eirinn says:

        xorpunk I’m sorta happy i didn’t…then :)

      • xorpunk says:

        Me too since my national currency is the Euro :)

    • fluffles the cat says:

      The funny bit is, a great deal of the quality components for things manufactured in Europe come from the United States. Case in point: I was responsible for shipping emission control units to BMW, Stihl (yeah even chainsaws have em), Toyota, and Lotus, among others.

      The reasoning was that nobody in Europe had the Quality Control to do it.

      • xorpunk says:

        @fluffies: An the US got them from Asian foundries , who’s nations owns most of the US dept which grows 3.86 billion USD per day.. go figure

        BTW you might want to look where most US engineers and scientists are from..

  5. Fin says:

    Scott – what is the make/mfg. of these drivers?

    • bleullama says:

      Excitron FTFc15. They’re at least 4-5 years old at this point. At Excitron’s site, there’s nothing remotely similar to these available. I have no idea if they were a special order, or just a discontinued product. :)

  6. Jay says:

    Love seeing old “crap” get recycled into something usable~

    Someone’s rubbish is someone’s treasure.

  7. Larry Mann says:

    What an incredible score!!!

  8. noouch says:

    Build 50 segway-style balance bots and stack them on top of each other.

  9. dALE says:

    So, do you want to sell a couple of them to me?

  10. Sven says:

    Why, when someone finds an AVR, does Hackaday say he/she found an Arduino?

    An Arduino is a product that uses an AVR, an AVR isn’t an Arduino.

  11. Six_Shooter says:

    Man, I’d love to have come across these, and then find the gold within.

    Note to self:
    *need to keep eyes peeled more*

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

Join 97,790 other followers