Created Delta kinematics (mediawiki)
parent
f0c1f39c33
commit
60f22e9948
1 changed files with 20 additions and 0 deletions
20
Delta-kinematics.mediawiki
Normal file
20
Delta-kinematics.mediawiki
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
Delta kinematics uses triangulation to control the nozzle position. Three coordinated carriages with rigid arms connect to a single effector where the nozzle is mounted. Delta triangulation has been documented extensively, perhaps nowhere better than in the PDF document [https://docs.google.com/viewer?a=v&pid=forums&srcid=MTgyNjQwODAyMDkxNzQxMTUwNzIBMDc2NTg4NjQ0MjUxMTE1ODY5OTkBdmZiejRRR2phZjhKATAuMQEBdjI Delta Robot Kinematics] by Steve Graves. Marlin performs delta kinematics in real-time during printing, and this can add significant processing overhead. The <code>DELTA_SEGMENTS_PER_SECOND</code> configuration option can be reduced to tune performance when movement is choppy. Combining delta kinematics with a [http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller Full Graphic Smart Controller] will test the limits of a Mega2560.
|
||||||
|
|
||||||
|
The math for inverse kinematics can seem pretty daunting, but it comes down to these basic facts:
|
||||||
|
|
||||||
|
* Three Carriages are mounted on three Towers and together move a single Effector.
|
||||||
|
* Each carriage moves in coordination with the other two (but "doesn't care" about the other two).
|
||||||
|
* The only numbers that really matter are the distances in the XY plane from each carriage to the effector perimeter.
|
||||||
|
* Once you know the distance, you can easily get the carriage Z position:
|
||||||
|
|
||||||
|
H = DELTA_DIAGONAL_ROD // The hypotenuse of all delta triangles is an arm's length
|
||||||
|
Dx = Tx - Ex // X difference between carriage and effector center
|
||||||
|
Dy = Ty - Ey // Y difference between carriage and effector center
|
||||||
|
Dte = sqrt(Dx^2 + Dy^2) // Distance from carriage XY to effector center (A)
|
||||||
|
Dte -= EFFECTOR_RADIUS // length to the edge, not the center
|
||||||
|
// H*sin(acos(A/H))
|
||||||
|
Ø = acos(Dte/H) // Get the angle Ø from A/H
|
||||||
|
O = H * sin(Ø) // Opposite side is solved, O=H*(O/H)
|
||||||
|
Zt = O + z // Add the carriage Z position
|
||||||
|
Zt += effector_thickness/2 // Now the effector will touch the bed when z=0.
|
||||||
|
Zt += nozzle_length // Now the nozzle touches the bed at z=0. Done!
|
||||||
Loading…
Add table
Add a link
Reference in a new issue