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