I haven't posted nearly as often as I planned to, but I have been working on it. I'll probably describe what I figured on design, and problems when I get time. So far I've solved the motor to shaft transfer problem, by modifying someone else's solution, which is probably stronger than theirs, as well as some support problems, which are nearly solved (I ran out of screws before I finished the full x/y assembly today.)
Showing posts with label main project. Show all posts
Showing posts with label main project. Show all posts
Thursday, September 9, 2010
Progress
I haven't posted nearly as often as I planned to, but I have been working on it. I'll probably describe what I figured on design, and problems when I get time. So far I've solved the motor to shaft transfer problem, by modifying someone else's solution, which is probably stronger than theirs, as well as some support problems, which are nearly solved (I ran out of screws before I finished the full x/y assembly today.)
Positioning-
There two options that seem somewhat practical, there are also some solutions like laser positioning, which seems expensive, complicated and impractical:
1) Rotary encoders, which don't completely show you where you are (I don't think), but they also let you know if you didn't step, because the motor stalled. (A possibility which can burn out chips.) These generally are used on conventional motors, not steppers, but can be to make sure that it steps on better equipment.
2) Limit switches, which tell you where the limits of motion are, and combined with a stepper, assuming it doesn't stall should tell you the position. Also much cheaper. Ideally, these should have very little resistance.
Wednesday, July 28, 2010
Materials-The electronics
As noted in the initial post, I already have some (most) of the electronics required. First of all, some basic ideas of how the project is going to be built.
First of all, this is going to be a three dimensional device, and the cutting head will be able to move on at least 3 axis. This means there will need to be at least 3 motors operating to position it. Below is a small summary of what seem to be the four main ways to move something using a small controller:
DC motor: While speed/torque can be controlled somewhat by PWM (Pulse Width Modulation, essentially outputting a fractional power, which is close enough to a lower power), they aren't necessarily exacting. They use 1 H-bridge to control. They use a 2 wire connection (Motor input A and Motor input B), from the H-bridge, one of which is providing voltage and the other not. They can be reversed by making the other high. Note that they will never both be high. (Well they shouldn't be anyway.) The example at the left is what you might find in a simple toy, especially like a battery powered fan.
Servo motor: (commonly just Servos) These have positional control, which is easily programmed, however, almost all servos that you can easily find (trust me, I looked) have a range of motion that's usually either 180 or 270 degrees. While this can be translated into larger linear motions, with a large connector, it means it's harder to handle. Internally, they have a DC motor, but also have gears and electronics to have it move/hold position based upon a PWM signal. Requires 1 PWM output to control. They use a 3 pin (Signal (PWM), Vin and GND) connection. The example at the right is what seems to be called a hobby servo.
Continuous Servo Motors: These are servo motors which have been modified, so that the speed is what is controlled. This means that they don't control position. Making them very similar to straight DC motors, but often with higher torque, due to gearing, and finer control. Requires 1 PWM output to control. Like Servos, they use a 3 pin (ground, Vin and GND) connection. I don't have one, so no pictures, but the one above could be modified for continuous rotation, and look exactly the same.Stepper Motors:These motors are very useful for this sort of thing, as instead of controlling speed, they (somewhat like Servos) control position, but don't have a limitation on movement, so they mostly combine the advantages of all of the above, having control over position, having some control over speed, and not being limited in range of motion. How they achieve this is via having (generally) two coils, which alternate which is powered to move, and just keep one on to keep the motor in position. However, they have the drawback in that they require two H-bridges to control. They may use a variety of wires to interface, 4-6 being the most common. In those 4 of them are as far as I can think of always Motor control 1A, 1B (for one coil), Motor control 2A, 2B (for the other). Extra wires are often ground wires. The example on the left is a 7.5 deg/step (48 steps per rotation) from adafruit, which can operate as either unipolar or bipolar (the two types don't make a difference in code, just how they are wired.) The example on the right is a 1.8 deg/step (200 steps per rotation) pulled from an Epson Stylus 777 printer, and will probably be what is used for at least 2 axis of the machine.
There are some variants of the 4, such as linear servos, which control a linear position with the same method a servo maintains it's angle, however, most of them I've come across that are potentially useful for this project, are $100 each, which for my purposes, puts it out of consideration.
Because of the advantages, I decided to go with steppers, I have two 200 steps/rotation (1.8 deg/step) motors I salvaged out of a Epson 777 printer that wasn't working and had been replaced. I also have two 48 step (7.5 degree) steppers, which I will probably end up using for the other axis.
For Arduino, what seems to be the best motor shield is the Adafruit Motor Shield. However, it is insufficient for my choice of stepper motors. It can control 2 steppers (via 2 dual H-bridges), which is very close to what is needed, I was considering using a continuous rotation servo. This left me needing another pair of h-bridges, and considering designs for them. I noticed while looking around, the SOC Cricket, which has 2 H-bridges, and runs Arduino. If you've read the other entries, you'll know I got that. That gives me a total of 6 H-bridges, enough to run 3 stepper motors. (I also have the option to use a few servos as well.)
So electronically, we have the Arduino Duemilanove, Adafruit Motor Shield (hooked to 2 steppers), talking to the Cricket, which will be connected to 1 stepper. (Another post will cover the communication needs of the project). For power, neither the Duemilanove/Motor Shield or the Cricket can use their normal power (5V and 3.3V respectively) to power the motors, so we have to hook up motor power for both of those, separately (though we can probably use the same power source for both motor powers). As far as for the devices themselves, they don't draw much power, so we will be powering the Duemilanove off USB, and the Cricket from the Duemilanove's 3.3V power.
Friday, July 23, 2010
An Introduction to this
I decided to on the project I'm working on, start a blog for once. The reason being that, in other situations, I've lost documentation on projects. For example, in high school, I was working on an ebook reader for the TI-83 in Z80 assembly, and recently found just the code which was nearly done, but not the documentation that was on paper, so unless I wanted to have the fun of figuring out what I did, and why I did it 10 years later, I figured I would write a blog, theoretically which should be around for a long time, which will also allow others to benefit from my knowledge.
This project is to build a CnC milling machine (and possibly a laser cutter), hopefully improving it to the point where it is suitable for *very* precise work. If you haven't guessed, the electronic interface to this will be via Arduino & Arduino-compatible boards controlling stepper motors, and interfaced via the Arduino's onboard USB-serial connector. The non-electronic physical hardware will for at least the first version, be done by hand, with hopefully good results.
As it exists now, one axis control is built, but the motor is not permanently attached. A motorshield from Adafruit Industries has been assembled, which is not that hard, even though it'd been a long time since I'd soldered most anything. (and I did make a mistake, when de-soldering in the terminals I'd put in backward. Ooops. It's functional though.)
Hardware wise, In addition to the Arduino Duemilanove (with an Atmega 328 chips) I will be using one or two Crickets from SOC-Robotics (with Atmega 644 chips), which were purchased on ebay. This required me to figure out how to program the Cricket via the Duemilanove, and connect them to the Duemilanove, which while a less powerful chip, will be the primary controller (due to it's USB connectivity.)
Someday I'll be able to spell Duemilanove without reference. The next post will describe how to program the Cricket, with pictures.
This project is to build a CnC milling machine (and possibly a laser cutter), hopefully improving it to the point where it is suitable for *very* precise work. If you haven't guessed, the electronic interface to this will be via Arduino & Arduino-compatible boards controlling stepper motors, and interfaced via the Arduino's onboard USB-serial connector. The non-electronic physical hardware will for at least the first version, be done by hand, with hopefully good results.
As it exists now, one axis control is built, but the motor is not permanently attached. A motorshield from Adafruit Industries has been assembled, which is not that hard, even though it'd been a long time since I'd soldered most anything. (and I did make a mistake, when de-soldering in the terminals I'd put in backward. Ooops. It's functional though.)
Hardware wise, In addition to the Arduino Duemilanove (with an Atmega 328 chips) I will be using one or two Crickets from SOC-Robotics (with Atmega 644 chips), which were purchased on ebay. This required me to figure out how to program the Cricket via the Duemilanove, and connect them to the Duemilanove, which while a less powerful chip, will be the primary controller (due to it's USB connectivity.)
Someday I'll be able to spell Duemilanove without reference. The next post will describe how to program the Cricket, with pictures.
Labels:
arduino,
begin,
cricket,
duemilanove,
goals,
isp,
main project
Subscribe to:
Posts (Atom)