How decimal places after . for firmware config?
-
I’m tuning my 556 (Axis skew compensation) and was wondering how many decimal places can the firmware work with past the (.)? 2.57 3.456, 4.7812, 5.12398? more?
Would it be the same for steps and other settings?
Thanks
`mike -
@gallaghersart RRF uses 32-bit IEEE standard floating point numbers to represent these quantities. The number of decimal digits that can be accurately represented (including digits before the decimal point) is 6 or 7 depending on the leading digit.
-
@dc42 did some googling on this, out of my math scope. I have some 7 digits will these work?
For my steps I have E set to 142.3188 (7 digits and a .)
and want to make my M556 be 0.1172 (5 digits plus .) (this is my most wanted)
then I have Z steps at 4814.125 (7 digits plus .)Do these work? or they too long?
or could they be E 142.318854 (some before . then 6 after)?FYI, I'm about to share a setup that use dial gauges to measure M556, I'm finding even good belts stretch within a weekly basis. Once my M556 is (+-)0.2+ I then re-tighten the belts and rerun my calibration for M556.
Thanks Again!
`mike -
@gallaghersart
6-7 is the number of decimal digits (I.e. the number of digits after the decimal point). So you could have 142.318779.In reality you can specify more decimal places, but they will loose precision (e.g. 142.318800011 may actually become 142.3188000125). Not sure if I've got the bit representation 100% correct there but you get the idea.You can always try setting a much higher number of decimal places, then just send the command on its own to see what the Duet returns.With your M556 variation, I wonder if there is also some level of thermal distortion going on? Unless you've got some impressive high grade industrial machine, you might also be running into the accuracy limits of your system (backlash in rails, clearance in bearings, flex in the frame/joints etc)
Edit: seems I was not correct!
-
@gallaghersart said in How decimal places after . for firmware config?:
@dc42 did some googling on this, out of my math scope. I have some 7 digits will these work?
For my steps I have E set to 142.3188 (7 digits and a .)
That is OK. If you run this:
echo move.extruders[0].stepsPerMm+0.00000000
then it will print the 7-digit representation of the actual value, which in this case is 142.3188.
and want to make my M556 be 0.1172 (5 digits plus .) (this is my most wanted)
That's OK because you have provided only 4 significant digits. Leading zeros don't count.
then I have Z steps at 4814.125 (7 digits plus .)
That looks OK too, I ran "echo move.axes[2].stepsPerMm+0.00000000" and got the same value back. Bit if I set the Z steps/mm to 4814.1258 then I get 48124.126 back.
-
@gallaghersart
Thanks For your reply's guys, I have my units in chambers and do not print till all parts and frame are at 40-50deg C. Thermal distortion is measurable from cold to hot. even though printer will "print" at all temps in a chamber. I found the Z axis has the most Thermal distortion.I'm about to share my designs of a series of printers soon (Bricked3D), all chambered except 2. with a larger 525x525 bed that I need to be perfect. I have found that a third digit after the (.0) ie 0.234 has a measurably difference from 0.23. on my 300mm bed.
Just posted my take on the Skew test https://forum.duet3d.com/topic/26915/skew-test-and-adjustment-with-dial-gauges and I have all the pictures and source files for free and no requirements to download on my personal website https://gallaghersart.com/page/miscellaneous_3d_prints_and_source_files
thanks!
`mike