Three of my last three designs have been Arduino + Motor Driver Chip(s), so I got to thinking that lots of people must need this! Plus I keep zapping the inputs with the high voltage! So protection is needed at least on the analog inputs and possibly on power inputs as well. Why not make a set of shields for the various Arduino formats that are out there? Beef + Arduino = BeefyDuino!
In the latest news on the BeefyDuino frontier, my friend Ryan who is the founder of elequa, the company I am helping to start, assembled eight BeefyDuino prototypes (with a little help from his friends including me). He did this because he was going to do a demonstration / workshop at the SXSW conference in which he showed a crowd of interested people how our water treatment system works.
Based on a technique called electrocoagulation (EC), it is the application on electricity to water in order to treat it for filtering. We believe that this approach to water purification can be of extremely wide application, everything from small and slow solar emergency survival units to large processing plants.
I wont get any further into the benefits of EC or our company elequa, suffice to say that we used the BeefyDuino technique to wow the audience and show off how magically effective water treatment is with EC. At this point we are taking a break from actual work on the project after our big crunch for the conference which is good because I may have some time to draw up schematics or whatnot for this project!
I have been wondering what to do on the BeefyDuino about the issue of selecting input or output mode, the use of the enable pins, and such. I have an answer.
Each SN743310 pair shares an enable pin, so connect the two in parallel to get one enable per output. Simple. This means each chip provides two outputs and we need six chips. Right.
Then, how to set the enable pin? Why, sniff the output of course! If the output is being driven high or low, then it is an output and enable should be high. if the output is hiZ or pullup, then it is an input and enable should be low. buffer the input so it is not driven by the input circuit and sense it with a window comparator. Oh, add an integrator to the comparator to make sure logic transitions don't throw it.
That way we get a super-muscled BeefyDuino with no change in pin functionality. It will take some design effort but I think the circuit is quite designable.
Here we see an image of Ivan's Playground, a wooden base made by my buddy Walt with parts on top all related to the construction of my robot Ivan who is being designed in a team effort in the project: #Ivan the TeamBot.
The stepper motors draw 1.7A at 12V, just under the 1.8A limit of two SN754410 chips piggybacked together. Rather than solder them, I have placed them in pairs on the right breadboard to drive three steppers from the 12 outputs of the Metro Mini board on the left breadboard. Also shown are the microphone, CdS cell, and TL074 quad opamp chip on the lower part of the left breadboard. This system represents your typical BeefyDuino setup.
My plan is to go ahead and build this electronics, write the software to control it, and demonstrate that the BeefyDuino does it's job this way. Once that is done I can publih the schematics for anyone to use. In the longer term future I may do a soldered protoboard and / or a custom PCB design intended for laser cutter prototyping and also board house manufacture.
I dont' know all that much about power drivers and neither do you (most likely)! All we want is some kind of muscle behind our outputs. We want our digital outs to do logic levels or higher voltage if need be, drive motors, drive long wires, pump out current like mad, drive high power electrodes (in my case) and just basically kick butt on the circuit board. And as long as the application is not overly high performance in some aspect, we would like it if this were as simple as possible - a no brainer please!
Well I have one way to meet that need. It's not the solution for everyone, but it is at least a FAST solution in that it can provide what is needed with no muss, no fuss, and as little brainology as necessary! What I am going to do is take the 12 unused digital outputs (pins 0 and 1 are used for USB communications, so that's pins 2 thru 13) and put three SN754410 motor driver chips on them.
Each motor driver is capable of driving four outputs from four inputs, has diode protection to prevent inductive spikes from going zappy zap zap with our precious circuitry, and offers thermal protection. We can use our digital outputs, PWM outputs, and tone outputs with nary a concern (to my knowledge). We'll just tie the enable pins high, make one output votage pin available, and shoot from the hip!
As to the analog inputs, they are typically used to sense what the heck is going on on the circuit board and we've just introduced the capability of driving up to 36Volts on the outputs, so there be some high voltage juice running around in these here parts, just the thing to take out an unsuspecting arduino board! So what's the answer? Why, simply add diode protection to the inputs! put a little R in there and a pair of D's on each input and you got yourself some safety margin!
And that's it. I'm going to make this simple, quick, and easy for all of us. Remember: no brain, no pain! If you want to get into fancier stuff you are certainly welcome to do so and improve upon what is done here, but I'm going to simply do a breadboard version that is transferrable to a solderable protoboard with breadboard patterns, and then maybe make a PCB or a few PCBs and call it a job well done. Stay tuned for details.