CNC Motion issue
Philldapill
Posts: 1,283
Hey, I'm building a CNC machine mainly out of HDPE, using a drill press and radial arm saw. This setup is fairly precise for cutting wood and what not, but when you're dealing with CNC, not so much. I've managed to get my rails very parallel, but I've been thinking of a possible problem. Lets say·the top rail set is·perfectly parallel, but the rails themselves are not exactlly horizontal. What will happen, is as the carraige moves from side to side, it will actually "rise" or lower a few thousandths of an inch. I'm thinking this can be modeled as a simple offset vector. i.e. When determining the current XYZ position of the piece of work, you may need to add or subtract a little bit based on the current position. For example, if we are dealing with the left to right top carraige rails, we will have an exact X position which is determined directly by the stepper, but if the rails are slanted down slightly, we would have to offset the vertical Y axis(up down) by using a simple slope equation, Y = mx+b. Granted, m will probably be TINY and b will be zero. So, what you end up with, is when the carraige is at the left side, the offset will be zero since x is zero, but when you get to the right side, the offset might be quite large since x is large.
In addition to the Y axis, there will probably be another offset equation for the Z axis(front to back). Again, this is probably a straight slope-line equation like above but with Z = mx + b. With this, we would have a different m coefficient for this axis. The same would apply for the other rail sets too. Basically, two offset equations for each rail.
Remember, I'm totally new to CNC so this may be some basic "duh" info, but·even the novice's advice sure helps.
In addition to the Y axis, there will probably be another offset equation for the Z axis(front to back). Again, this is probably a straight slope-line equation like above but with Z = mx + b. With this, we would have a different m coefficient for this axis. The same would apply for the other rail sets too. Basically, two offset equations for each rail.
Remember, I'm totally new to CNC so this may be some basic "duh" info, but·even the novice's advice sure helps.
Comments
i'm a novice to descriptions like you posted above.
second idea very short to describe posted above the first:
how about adjusting all these tolerances by milling the mounting surface where the objects you want to work with are mounted ?
Then this mounting surface will be perfectly parallel to your axis as long as the rails don't move up AND down from one end to the other
My first Idea is:
define 3D-Vectors to create a calculation-base in this 3D-space
you have to measure the Deviation of the edges of the driving range
4 edges 4 points to measure in 3D. this means measure the X,Y and Z-coordinate
1 point is the shared basepoint between really flat level and the deviated level because of tolerances in your rails
with this 3 points you can calculate a 2D-Level-equation inside this 3D-space
with this level-equation you can calculate the Z-offset at any XY-point
for the mathematical basics of vectors and vector-algebra
http://en.wikipedia.org/wiki/Vector_(spatial)
out of three points you can get almost always two direction-vectors and a basepointvector
this gives you the level-equation inside the 3D-space
By giving in your actual XY-coordinates the level-equation calculates the Z-position
and this should be directly the offsetvector to the real flat level
best regards
Stefan
now i have to make a second posting
with HDPE do you mean High Density Polyethylen ??
i guess using this material for building a CNC-machine
you will get better results giving your work to a sculpture-artist working with hand-tools !
the mechanical and thermal properties are much lower than from steel
if it has to be plastic i would use POM Polyoxyinethylen
PE
thermal Expansion coefficient: 0,02 mm/m/°C
mechanical tension to burst 22 N/mm2 ( i can't describe it better in english)
POM
thermal Expansion coefficient: 0,10 mm/m/°C
mechanical tension to burst 70 N/mm2
steel
mechanical tension to burst 370-1400 N/mm²
thermal Expansion coefficient: 0,012 mm/m/°C
that's the reason why you don't find ANY bigger maschines build upon plastic
best regards
Stefan
Find some good·ball screws and you shouldnt have any problems with your·table moving Z when instructed to move x or y
Or make sure your·table is heavy enough.·
KEY: You need to make sure that you write into your code BACKOFF AND FEEDFORWARD ONLY if you want any accuracy.· Doing this will keep your bearings in your ballscrews siezed appropriately in the locked direction.
·
When you say you use these programs to genereate the G code, what does that mean? I mean, I know what G code is for the most part - instructions to move the tool, but somewhere along the line, those instructions have to get processed into individual step commands, and that further has to be processed into what phase to have on in the stepper, and so on. What do you use to do this processing? Can I just use the parallel port of the computer(or another port) to directly activate the phases? I know they can't source the current, but I'm saying use them as signals for a stepper driver?
i'm not a specialist about those driver-softwares.
in professional use in most cases you have a steppermotordriver that works that way:
the steppermotordriver has inputs for step and direction of the axis
the details how to switch the current for the coils is done INSIDE the steppermotordriver.
so i guess most of these PC-Softwares provide step and direction-signals at the parallelport
There are some other steppermotor projects in the forum from other people.
I didn't take a close look at them. I guess there will be projects where the propeller gets XY-coordinates
and the propeller generates the signals how to switch the H-bridges for all axis. Making the control able
to drive the cnc-tool in any 3D-direction
another idea for a datainterface is to use the *.PLT-format HPGL Hewlett packard graphic language
there the coordinates are stored as simple ASCII-Code like this:
Example X=120, Y=350
inside PLT: 120 350; X-coordinate space Y-coordinate semicolon
maybe you have to add a Z-coordinate
these coordinate could be easily transmitted through a simpel serial interface
of course this could also be done with G-Commands but then you have to interpret
the G-commands inside the propeller
inbetween would be that the propeller gets step and direction signals and does just the details about switching the H-bridges
in the right way (fullstep, halfstep, maybe microsteps)
best regards
Stefan
Post Edited (kelvin james) : 3/2/2008 11:36:25 PM GMT
As for the slightly non-horizontal rails issue, one solution is to build up the sample support stage with a machine-able material, then simply cut into it making a flat surface cut across the entire working area of the machine. The new surface will be exactly true to the rails, and so any material mounted to it will follow these definitions. THis is a lot easier than correcting the motion vectors or G code. If you only have a few thou of rise across the surface, this is trivial.
Another trick is to use your Mk I CNC to cut pieces for Mk II, and to incrementally improve the precision of your machine.
Cheers!
IMHO this is off topic for this forum really, you should try www.cnczone.com
Graham
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I am 1010, so be surprised!