Stuck in a city far away from my lab, I had to resort to playing with the firmware.
Based on Johann Rocholl’s Marlin for Rosstock (a delta bot), this is the initial kinematics change I would like to test when the bot itself is finished:
in Marlin_main.cpp:
void calculate_delta(float cartesian[3])
{
// SCARA "X" = theta
// SCARA "Y" = psi+theta, motor movement inverted.
//static float SCARA_C2, SCARA_S2, SCARA_theta, SCARA_psi - Defined above...
// Length of inner support arm
//#define Linkage_1 150 //mm
// Length of outer support arm
//#define Linkage_2 150 //mm
// SCARA tower offset (position of Tower relative to bed position)
//#define SCARA_offset_x 100 //mm
//#define SCARA_offset_y -60 //mm
SCARA_C2 = (sq(cartesian[X_AXIS])+sq(cartesian[Y_AXIS])-Linkage_1_sq-Linkage_2_sq)/(2*Linkage_1*Linkage_2);
SCARA_S2 = sqrt(1-sq(SCARA_C2));
SCARA_K1 = Linkage_1+Linkage_2*SCARA_C2;
SCARA_K2 = Linkage_2*SCARA_S2;
SCARA_theta = atan2(cartesian[X_AXIS],cartesian[Y_AXIS])-atan2(SCARA_K1, SCARA_K2);
SCARA_psi = atan2(SCARA_C2,SCARA_S2);
delta[X_AXIS] = SCARA_theta * SCARA_RAD2DEG; // Multiply by 180/Pi - theta is support arm angle
delta[Y_AXIS] = (SCARA_theta + SCARA_psi) * SCARA_RAD2DEG; // - equal to sub arm angle (inverted motor)
delta[Z_AXIS] = cartesian[Z_AXIS]; // Standard Z for Morgan
}
Now the wait…
Like this:
Like Loading...