Showing posts with label Stepper Motor. Show all posts
Showing posts with label Stepper Motor. Show all posts

Saturday, May 23, 2015

PVC Pipe Based CNC Mill using Arduino

What hobbyist doesn't want a CNC machine?  But realistically, how many can really justify the need for one?  Not me, but we did want to learn about CNC machines and experiment with GCODE.  If you are wanting to do the same; keep reading...

We had an Arduino UNO sitting around doing nothing as well as some stepper motors we rescued out of an old laser jet printer.  That's a good start for the project, but some hardware/software to drive and control those stepper motors was still needed.  Oh, and some PVC pipe and connecting joints to construct a mill platform, don't forget that.
-----
After a bit of searching we decided to use the Protoneer CNC Shield for Arduino.  You can get this shield for about $20US.  It comes completely unassembled, but a soldering iron and an hour or so of time fixes that.

Before assembly it looks like a bag of parts.  After assembly it looks like this:
 -----
The Protoneer CNC Shield plugs right into the Arduino UNO just like any other shield.  Of course, after you get it assembled you will want to test it.  But wait, first you will need some software to communicate with the Arduino and drive the Protoneer CNC Shield.  

The Protoneer CNC Shield is 100% GRBL compatible.  This is great because it provides you with several software options for CNC control.  I wanted something that was 1) free and 2) could be used with Windows or LINUX.  I experimented with SketchUp, f-engrave, and GCODESENDER.  In the end, I seemed to prefer GCODESENDER the best.  YMMV.
-----
Here is my first test run controlling the X and Y axis steppers.  Ahhhh, the sweet sound of progress:

Then added the Z axis:
-----
Before constructing the PVC "mill" I tested the rig on a Etch-a-Sketch.  Seems to work well enough to continue.
-----
Next, thanks to Home Depot and their endless assortment of PVC accessories, the rig below was constructed.  I did not use any PVC glue and the slide rails for the milling tray were held on with P-clamps and larger diameter PVC 'sleeves' for bushing/linear bearing.  

-----
Here are a few first run tests of the rig in motion:

-----
Example of simple text:

-----
A bit more elaborate example:
-----
The rig works.  Could you create an elaborate 3D design with it?  Heck no, but that wasn't the point.  It was; however, a great learning experience.  With some effort, anyone could take this concept and improve it to something more useful if they desired.  If you choose to take that path, drop us a line to let us know how it turned out.  Thanks!
-----

Tuesday, August 6, 2013

Failure Tutorial: All hail the Mighty Bypass Cap

It's frustrating.  You design a great project, get it working perfectly on the breadboard with that nice beefy bench power supply only to discover it stops working in "the real world".  What the hell's going on?
-----

Here is a short video showing how everything just stops when the bypass cap from my Etch-a-Sketch to chart Temperature vs Time is removed.  Connect the bypass cap and, like magic, everything is back to normal.  Pretty amazing, huh?
-----
If you follow DIY projects on the web you see this issue frequently.  The fix often is simply to add a capacitor between power and ground.  This is called a by-pass cap or decoupling cap.  They are most useful in projects with electrical noise or where larger loads like motors, solenoids, relays, etc. are involved.

As I said, this recently happened to me.  I had the great idea to use two stepper motors mounted to an Etch-a-Sketch to chart Temperature vs Time.  The project came off fine in the end, but not without a bump in the road.

The rig was stable with one stepper motor.  However, adding the second stepper motor made everything 'wacky'.   Sometimes the PICAXE 18M2 microcontroller would not even accept new code downloads.  All fixed with a by-pass cap.
-----
Below is short video of the finished rig in action. (Thanks Hack-a-Day for featuring it!)  Take a look at the build page if you are interested in duplicating the project.

-----
Thanks for the visit and "All hail the mighty bypass cap"!!!

Sunday, November 18, 2012

Analog Clock turned DC Voltmeter

Why create, what could be, the most impractical way to measure a DC voltage?  Well, because "Measurement Matters".

Actually, the idea was given to me in the comment section of my Voltmeter Clock project which was featured by the awesome team at "Hack A Day".  That is where rue_mohr wrote the comment, "who can be the first to turn a clock into a volt meter?"  Well, that is (and remains) the stupidest ideal I ever heard.  Now, read on....
----
The concept is easy.  Use the "time" on an analog clock to display measured voltage values between 0-12VDC.  1 o'clock means 1VDC, 2 o'clock means 2VDC; if the time reads 10:30 that means 10.5VDC, etc.   To do this a stepper motor is connected to the adjustment knob of the analog clock.  This short video of the rig being tested should help make things clear:
---
One of the ADC inputs on a PICAXE 18M2 microcontroller is used to read/digitize the voltage to be measured.  After the PICAXE measures the voltage, it gets translated into the number of steps the stepper motor needs to move.  This stepper motor movement adjusts the clock to display the voltage that was measured.  The PICAXE doesn't have enough output current to directly drive a stepper motor so the PICAXE feeds a L293D Motor Driver IC.  The outputs of the L293D are then used drive the stepper motor.

Since the clock can display a maximum value of "12 o'clock", the rig was designed to measure a maximum 12VDC input signal.  However, the max input voltage for the ADC on the PICAXE 18M2 is about 5VDC.  To tame the input signal for the PICAXE a simple 3:1 voltage divider (10K, 10K, 10K) was implemented.  This limited the input voltage into the PICAXE to 4VDC.  A trim pot was also used to adjust for the input impedance of the PICAXE and to help calibrate the measurement results.
----
Here is a video of the rig in action side by side with a DVM.
---
All in all the rig works as designed but has terrible lag and is no way what anybody would consider NIST traceable.  The accuracy is estimated at ~100mV.  The two control buttons pictured below help by allowing manual calibration of the rig to 0VDC (12 o'clock position).
---
I can't imagine that this project will ever be duplicated, but as always I will send schematics and source code to those that request it.  If you're still with us, thanks for checking out our site.
-----
Link back: Hack A Day
Link back: Hacked Gadgets
-----

Saturday, June 23, 2012

"Etch a Sketch" Turned Temperature Data Logger

A friend of mine gave me an OKI office printer.  The thing was HUGE and after about five years it finally broke.  Next step, out comes the screwdriver to rescue any useful parts; of which where several stepper motors.  Since what I didn't know about stepper motors was a lot I searched for a "useful" way to learn about them.  I decided to connect two of the stepper motors to an "Etch a Sketch" and ended up with this rig that graphically logs temperature in a strip chart fashion.


Here is a video if you are not interested in the build details and just the want to see the result.  The beer was cold.  The water in the shot glass hot.  Hot makes the graph go up.  Cold makes the graph go down.  When the graph reaches the far right of the "Etch a Sketch" the stylus moves full left and the process repeats.  In the video a temperature measurement is taken (and graphed) every 750 milliseconds, but that can be adjusted to anything; one reading per hour for example. 


-----
The process of driving the steppers was not trivial in the beginning.  First, I had no documentation on these steppers.  The second being I had no idea how "noisy" and power hungry the steppers could be.    The documentation turned out not to be a big deal.  Via the magic of the internet I learned they were of 4-wire, bi-polar configuration.  An ohm meter is all that is needed to figure out the connection scheme. 

----
Close up of one of the OKI printer 4-wire bipolar stepper motors:

-----
Driving a stepper motor requires a microcontroller.  My choice for a microcontroller was the PICAXE 18M2.  
-----
A stepper motor is not like a 'common' DC motor.  You cannot just apply a current and have the stepper spin.  The current has to be applied in sequence across the four available wires.  You also have to control the polarity (direction) of the current.  That said, steppers motors take way more current than a microcontroller can provide.  An H-Bridge motor driver solves the problem by providing more available drive current for the stepper and the ability to switch current drive polarity.

I was familiar with the SN754410NE H-Bridge motor driver.  Plus, I had some in my kit.  So, originally I decided to use one SN754410NE to drive each stepper motor.  This was a mistake that added much frustration.  The stepper motors are incredibly noisy and current hungry.  The noise caused by the steppers and energy from their back EMF (I think) caused nothing to work reliably.  After seeing on a datasheet that L293D motor drivers have protection diodes and some other features, I gave them a try instead.  The L293D is pin compatible with the SN754420NE so the swap was easy.  After inserting the L293D's everything started moving forward as planned with controlling the steppers.


-----
Now that we can control the stepper motors via the PICAXE 18M2 and L293D's we still need to interface then some way to the "Etch a Sketch".  I had a clear plastic cube thats purpose was to protect a trophy baseball.  Since I didn't have a trophy baseball I dismantled the cube and used the two "C" shaped pieces to mount the steppers to with the help of a Dremmel tool and double sided sticky tape.
-----
After mounting the steppers motors, you still have to mechanically couple them to the "Etch a Sketch".  Rubber hose and zip tie wraps worked perfectly.
-----
After getting the mechanicals figured out a "test" pattern was programmed into the PICAXE.  The test worked on the first run so we grabbed the video camera to document the success.


-----
Now that the stepper motors make the "Etch a Sketch" draw, we still need a way to measure temperature.  The PICAXE 18M2 is used to read a DS18B20 sensor (picture below) via I2C bus for this:

-----
To manually position the "Etch a Sketch" stylus, two buttons are wired into the PICAXE 18M2:
-----
After all of that it is just code and software debugging. 

I have other plans for the rig.  Stay tuned!
-----
If you are still with me, here is the build schematic (click to enlarge):
-----