tenlog / TL-D3

Marlin dual X carriage 3d printer firmware source code for tenlog-D3
GNU General Public License v3.0
38 stars 48 forks source link

Y axis steps/mm seem not making difference when changing the value #16

Open murdock62 opened 3 years ago

murdock62 commented 3 years ago

Hello,

I have a version with TMC2208. Firmawre version 17.

When I change the steps per mm on the y axis and increase this value the displacement of this axis is not more important. On the X axis it works normally.

Many thanks for your help.

murdock62 commented 3 years ago

New informations,

I think I have identified a small problem with the firmware. (Tests carried out on firmware versions 1.0.17 and 1.0.10 with the same results)

Wishing to precisely calibrate my D3 (TMC2208), I wanted to carry out a fine calibration of the axes. Neither one nor two:

A quick little calculation: ((70 / 69.81) * 80) = 80.217. I prefer unlike the rule to round down and between 80.21 in steps per mm of the y axis.

I resume my tests:

Recalculate: ((70 / 69.81) * 80.21) = 80.428. I enter 80.42 in the steps per mm of the y axis.

I resume my tests:

New calculation: ((70 / 70.18) * 80.42) = 80.213. I enter 80.21 in the steps per mm of the y axis.

I resume my tests:

Well let's admit ... I redo a Home I redo my verification:

And there I understand !!!

When the values ​​are not applied there has always been a de facto homicide. Neither one nor two I re-enter my value (80.21) but this time directly by gcode (M92 Y80.21) The machine responds directly to "settings stored".

Without doing home I resume my tests:

My conclusion (to be compared with other tests, on other machines and firmware versions to exclude certain experimental bias: When home, the machine does not retrieve the value of steps per mm in the eeprom but directly in the firmware, thus resuming the default value. (80)

Am I the only one to get this result?

murdock62 commented 3 years ago

Good morning all,

The problem is solved.

I started from the sources of version 1.0.16 (only version available on TENLOG's GITHUB) In the file "Marlin_Main.cpp" at line 2689 you have this:

int Y_step_per_unit = axis_steps_per_unit[Y_AXIS];

this is used to save the current value of the steps per mm of the Y axis in a variable then what during the "home" phase this axis is temporarily assigned to the independent management of the second motor of the Z axis.

Only problem this variable is of type integer and the steps per mm can be decimal. So if to have a perfect displacement I had put 80.24 steps per mm for the Y axis as long as I do not "home" no worries only here if I do "home" sela will enter my 80.24 in my integer variable (which will bring it back to 80) and so I come back to a bad calibration of my Y axis ...

To correct the problem, just replace this line with this one:

float Y_step_per_unit = axis_steps_per_unit[Y_AXIS];

It's not much, but it can really be a problem!

It would be a good idea for the engineers at Tenlog to fix this in version 1.0.17. Thanks to them !

Good prints!