A2:
If you use Marlin you will need to modify only one function:
Marilin_main.cpp: void calculate_delta(float cartesian[3])
This will add 3 calls to an inverse trigonometric function, some additions, and multiplies. I do not know how slow the inverse trigonometric functions are in ATmega or ARM. Maybe there is a way to get rid of them but I do not see it now.
If you will not use ARM board, you will probably need to reduce DELTA_SEGMENTS_PER_SECOND to avoid line buffer underflow (which leads to pauses in effector movement). You can go down to 70 (from original 200) if your maximum speed will be 100mm/s and diagonal rod about 200mm. In such a case the worst delta segmentation error will be below 0.01mm. In general the error is bigger when (any of):
* speed is bigger,
* delta segments per second is smaller,
* diagonal rod is smaller.
If you use Marlin you will need to modify only one function:
Marilin_main.cpp: void calculate_delta(float cartesian[3])
This will add 3 calls to an inverse trigonometric function, some additions, and multiplies. I do not know how slow the inverse trigonometric functions are in ATmega or ARM. Maybe there is a way to get rid of them but I do not see it now.
If you will not use ARM board, you will probably need to reduce DELTA_SEGMENTS_PER_SECOND to avoid line buffer underflow (which leads to pauses in effector movement). You can go down to 70 (from original 200) if your maximum speed will be 100mm/s and diagonal rod about 200mm. In such a case the worst delta segmentation error will be below 0.01mm. In general the error is bigger when (any of):
* speed is bigger,
* delta segments per second is smaller,
* diagonal rod is smaller.