Marlin code for scissor lift z-axis

Posted by OoiTY
 Marlin code for scissor lift z-axis February 22, 2014 04:06AM Registered: 8 years ago Posts: 11
I'm trying to figure out where in marlin I might modify the Z axis so that it follows a non-linear path for a scissor lift. The formula is quite simple and thanks to wolfmanjm's help in the IRC channel, I think I figured out what I should change.

The formula that needs to be plugged in is above, and in Marlin's planner.cpp, there are these few lines below;

``` // The target position of the tool in absolute steps
// Calculate target position in absolute steps
//this should be done after the wait, because otherwise a M92 code within the gcode disrupts this calculation somehow
long target[4];
target[X_AXIS] = lround(x*axis_steps_per_unit[X_AXIS]);
target[Y_AXIS] = lround(y*axis_steps_per_unit[Y_AXIS]);
target[Z_AXIS] = lround(z*axis_steps_per_unit[Z_AXIS]);
target[E_AXIS] = lround(e*axis_steps_per_unit[E_AXIS]);```

Since I have no idea on how to code properly, is there anyone who can help me with the proper syntax for the formula above?

My own rough attempt results in something like this;

`  target[Z_AXIS] = 1round(sqrt((sq(Scissor_arm_length)-sq(y*axis_steps_per_unit[Z-AXIS])));`

Can anyone help me with this little coding problem?

Edited 1 time(s). Last edit at 02/22/2014 05:46AM by OoiTY.
 Re: Marlin code for scissor lift z-axis February 25, 2014 01:42AM Registered: 10 years ago Posts: 43
I don't think theres a sq() function in C. Also, don't you mean z instead of y?
I think it should be something like...
```float c = z*axis_steps_per_unit[Z-AXIS];
target[Z_AXIS] = lround( sqrt( Scissor_arm_length*Scissor_arm_length - c*c ) );```

In addition, you might want to look at this or this as examples on how to modify the firmware for nonlinear motion.
 Re: Marlin code for scissor lift z-axis February 27, 2014 02:06AM Registered: 8 years ago Posts: 11
Thanks! That looks pretty good, I couldn't figure out how to plug in the current position of (b) into the code, but that looks like how it should work. I'll test it out later to see if it works.
 Re: Marlin code for scissor lift z-axis April 04, 2014 07:36PM Registered: 7 years ago Posts: 231
Any more work being done on this?

--------------------------------------------------------
Custom Hypercube 3D
- Duet 2 Wifi w/ PanelDue 7i
- 305mm x 305mm x 400mm
- 750w Silicon heater

Custom Mendel90
(Backup printer - Old reliable!) - Sold
 Re: Marlin code for scissor lift z-axis December 17, 2014 09:06PM Registered: 4 years ago Posts: 3
I'm looking into using a lab jack as a z axis on a printer, did anyone have any luck modifying Marlin to compensate for non linear scissor lift mechanics?
 Re: Marlin code for scissor lift z-axis December 31, 2014 08:48PM Registered: 6 years ago Posts: 56
Just a thought — it might be better to use a Gcode preprocessor instead. Just modify the coordinates depending on the Z-height.
 Re: Marlin code for scissor lift z-axis April 12, 2015 06:42AM Registered: 4 years ago Posts: 6
Has anyone done ? Experiences,..
I will use tabel at
[reprap.org]

Experience whit g-code solution or firmware change
welcome.

This bit more comlicate, there must 4 point vompensation done at
difrent heights. So hacking must be done compoensation code ???

Better idea's ?
 Re: Marlin code for scissor lift z-axis January 11, 2017 05:07PM Registered: 2 years ago Posts: 1
Hi there, I have same plan. To create a scissor bed.
I don't know if you had progress in you idea.
But maybe I can write a conversor in PHP and put it online.
Let me know if you have interest yet.

Thanks
Sorry, only registered users may post in this forum.