开源改变世界!!

axis_steps_per_unit 与 axis_units_per_step #654

推推 grbl 2年前 (2023-02-06) 123次浏览
关闭
whosawhatsis 打开了这个问题 2013 年 11 月 17 日 · 14条评论
关闭

axis_steps_per_unit 与 axis_units_per_step#654

whosawhatsis 打开了这个问题 2013 年 11 月 17 日 · 14条评论

评论

axis_steps_per_unit 与 axis_units_per_step #654
贡献者

我一直在做很多数学运算,我希望有人在我尝试替换主要配置变量和重写 Marlin 的深层部分之前检查我的结论,只是为了提交一个充其量会引起争议的拉取请求。

最近,在无数次向 演示为什么英制螺纹对 Z 轴来说不是一个好主意时,因为它迫使您选择带有几个额外小数位的层高以避免舍入错误(对于某些螺纹,您受到以下事实的严重限制大多数选项都有非终止小数),我试图计算 Z 轴的正确步数/毫米设置,并意识到该值本身有一个非终止小数,因此在固件编译之前会出现舍入错误. 我继续计算并意识到这对所有英制螺纹都是正确的,因为公制转换使 127 成为单位/步长值的质因数,而它的倒数(或除 2 或 5 以外的任何其他质因数)是一个不终止的小数. 某些公制音高(如 M4x)也是如此。7 和 M10x1.5。如果 Deltabots 的皮带间距或皮带轮齿数的质因数不是 2 或 5,它们也会遇到同样的问题。

我得出的结论是,固件以单位/步而不是步/单位存储和使用变量更好。除非我们将单位减少到微米(或更好,纳米),这意味着所有这些值都将是小数,但这意味着它们应该都是终止小数,并且它们应该更适合定点计算。这些数字不会那么漂亮,但是可以通过要求用户提供螺杆/皮带螺距、螺杆启动/滑轮齿、电机(本机)步数/转和微步比的单独值,并计算单位/步数来减轻这种情况它们在预处理器中的价值(无论如何我认为这是个好主意)。

想法?

axis_steps_per_unit 与 axis_units_per_step #654
贡献者

一个想法:拥有 steps/mm 可以在
移动计算(move_distances->steps)中进行浮动乘法运算,而您的想法需要
较慢的浮动除法。请记住,我们谈论的是微
控制器,其中每个浮点运算都是非常繁重的工作,而且我
也很确定浮点除法比
乘法花费的时间长得多。

伯恩哈德

2013 年 11 月 17 日星期日上午 6:21,whosawhatsis notifications@github.com写道:

我一直在做很多数学运算,我希望有人
在我尝试替换主要配置变量和重写 Marlin 的深层部分之前检查我的结论,只是为了提交一个 充其量
会引起争议的拉取请求。

最近,在无数次向 演示为什么英制
螺纹对 Z 轴来说不是一个好主意时,因为它迫使您选择
带有几个额外小数位的层高以避免舍入误差(对于
某些螺纹,您受到以下事实的严重限制大多数
选项都有非终止小数),我试图计算
Z 轴的正确步数/毫米设置,并意识到该值本身有
一个非终止小数,因此
在固件编译之前会出现舍入错误. 我继续计算并意识到
这对所有英制螺纹都是正确的,因为公制转换使得
127 单位/步长值的质因数,其倒数(或
除 2 或 5 以外的任何其他质因数)是不终止的小数。
一些公制螺距也是如此,例如 M4x.7 和 M10x1.5 。如果Deltabots
的皮带间距或皮带轮齿数的
质因数不是 2 或 5,它们也会遇到同样的问题。

我得出的结论是,固件以
单位/步而不是步/单位存储和使用变量更好。除非我们
将单位减少到微米(或更好,纳米),这意味着所有
这些值都将是小数,但这意味着它们应该都是
终止小数,并且它们应该更适合定点
计算。这些数字不会那么漂亮,但是可以
通过要求用户提供螺杆/皮带螺距、
螺杆启动/滑轮齿、电机(本机)步数/转和微步
比的单独值,并计算单位/步数来减轻这种情况它们在预处理器中的价值
(无论如何我认为这是个好主意)。

想法?


直接回复此电子邮件或在 GitHub 上查看它 https://github.com/ErikZalm/Marlin/issues/654

axis_steps_per_unit 与 axis_units_per_step #654
贡献者作者

但是浮点乘法与整数(定点)除法相比如何呢?

在 2013 年 11 月 16 日星期六晚上 9:33,Bernhard Kubicek 写道:

一个想法:拥有 steps/mm 可以在
移动计算(move_distances->steps)中进行浮动乘法运算,而您的想法需要
较慢的浮动除法。请记住,我们谈论的是微
控制器,其中每个浮点运算都是非常繁重的工作,而且我
也很确定浮点除法比
乘法花费的时间长得多。

伯恩哈德

在 2013 年 11 月 17 日星期日上午 6:21,whosawhatsis < notifications@github.com ( mailto:notifications@github.com )> 写道:

我一直在做很多数学运算,我希望有人
在我尝试替换主要配置变量和重写 Marlin 的深层部分之前检查我的结论,只是为了提交一个 充其量
会引起争议的拉取请求。

最近,在无数次向 演示为什么英制
螺纹对 Z 轴来说不是一个好主意时,因为它迫使您选择
带有几个额外小数位的层高以避免舍入误差(对于
某些螺纹,您受到以下事实的严重限制大多数
选项都有非终止小数),我试图计算
Z 轴的正确步数/毫米设置,并意识到该值本身有
一个非终止小数,因此
在固件编译之前会出现舍入错误. 我继续计算并意识到
这对所有英制螺纹都是正确的,因为公制转换使得
127 单位/步长值的质因数,其倒数(或
除 2 或 5 以外的任何其他质因数)是不终止的小数。
一些公制螺距也是如此,例如 M4x.7 和 M10x1.5 。如果Deltabots
的皮带间距或皮带轮齿数的
质因数不是 2 或 5,它们也会遇到同样的问题。

我得出的结论是,固件以
单位/步而不是步/单位存储和使用变量更好。除非我们
将单位减少到微米(或更好,纳米),这意味着所有
这些值都将是小数,但这意味着它们应该都是
终止小数,并且它们应该更适合定点
计算。这些数字不会那么漂亮,但是可以
通过要求用户提供螺杆/皮带螺距、
螺杆启动/滑轮齿、电机(本机)步数/转和微步
比的单独值,并计算单位/步数来减轻这种情况它们在预处理器中的价值
(无论如何我认为这是个好主意)。

想法?


直接回复此电子邮件或在 GitHub 上查看它 https://github.com/ErikZalm/Marlin/issues/654


直接回复此电子邮件或在 GitHub ( https://github.com/ErikZalm/Marlin/issues/654#issuecomment-28643042 ) 上查看。

axis_steps_per_unit 与 axis_units_per_step #654
贡献者

即使在那里,定点乘法也比定点
除法快得多。
Atmegas 没有除法的硬件实现。

伯恩哈德

2013 年 11 月 17 日星期日上午 6:35,whosawhatsis notifications@github.com写道:

但是浮点乘法与整数(定点)除法相比如何呢?

在 2013 年 11 月 16 日星期六晚上 9:33,Bernhard Kubicek 写道:

一个想法:拥有 steps/mm 可以在
移动计算中进行浮动乘法(move_distances->steps),而您的想法
需要
较慢的浮动除法。请记住,我们谈论的是

控制器,其中每个浮点运算都是非常繁重的工作,而且

也很确定浮点除法比
乘法花费的时间长得多。

伯恩哈德

在 2013 年 11 月 17 日星期日上午 6:21,whosawhatsis < notifications@github.com (mailto:
notifications@github.com )> 写道:

我一直在做很多数学运算,我希望有人 在我尝试替换主要配置变量和 重写Marlin 的深层部分之前检查我的
结论,只是为了提交一个 充其量 会引起争议的拉取请求。

最近,在无数次向 演示为什么英制
螺纹对 Z 轴来说不是一个好主意时,因为它迫使您选择 带有几个额外小数位的
层高以避免舍入误差 (对于 某些螺纹,您受到以下事实的严重限制大多数 选项都有非终止小数),我试图计算 Z 轴的 正确 步数/毫米设置,并意识到该值本身 有 一个非终止小数,因此 在固件编译 之前会出现舍入错误. 我继续计算并意识到 这 适用于所有英制螺纹,因为公制转换

使
127 成为单位/步长值的质因数,并且它的倒数
(或
除 2 或 5 以外的任何其他质因数)是一个不终止的小数。 一些公制螺距也是如此,例如 M4x.7 和 M10x1.5
。 如果Deltabots 的皮带间距或皮带轮齿数 的 质因数不是 2 或 5,它们也会遇到同样的问题。

我得出的结论是,固件以单位/步而不是步/单位
存储
和使用变量更好。
除非我们
将单位减少到微米(或更好,纳米),这意味着
所有
这些值都将是小数,但这意味着它们应该都是
终止小数,并且它们应该更适合
定点
计算。这些数字不会那么漂亮,但是可以
通过要求用户提供螺杆/皮带螺距、
螺杆启动/滑轮齿、电机(本机)步数/转和微步
比的单独值,并计算单位/步数来减轻这种情况它们在
预处理器中的价值
(无论如何我认为这是个好主意)。

想法?


直接回复此电子邮件或在 GitHub<
https://github.com/ErikZalm/Marlin/issues/654&gt;
上查看 。


直接回复此电子邮件或在 GitHub (
https://github.com/ErikZalm/Marlin/issues/654#issuecomment-28643042 ) 上查看。


直接回复此电子邮件或在 GitHub 上查看它 https://github.com/ErikZalm/Marlin/issues/654#issuecomment-28643061

axis_steps_per_unit 与 axis_units_per_step #654
贡献者

我也在想,marlin 的定点实现基本上是在
浪费能源。此外,它已经在码头固件中完成。
最好转向更强大的平台,并拥有更好的
可编程代码,而不是“优化得如地狱”的代码。

伯恩哈德

在 2013 年 11 月 17 日星期日上午 6:39,Bernhard Kubicek <
bernhard.kubicek@gmail.com > 写道:

即使在那里,定点乘法也比定点
除法快得多。
Atmegas 没有除法的硬件实现。

伯恩哈德

2013 年 11 月 17 日星期日上午 6:35,whosawhatsis notifications@github.com写道:

但是浮点乘法与整数(定点)除法相比如何呢?

在 2013 年 11 月 16 日星期六晚上 9:33,Bernhard Kubicek 写道:

一个想法:拥有 steps/mm 可以在
移动计算中进行浮动乘法(move_distances->steps),而您的想法
需要
较慢的浮动除法。请记住,我们谈论的是

控制器,其中每个浮点运算都是非常繁重的工作,而且

也很确定浮点除法比
乘法花费的时间长得多。

伯恩哈德

在 2013 年 11 月 17 日星期日上午 6:21,whosawhatsis < notifications@github.com (mailto:
notifications@github.com )> 写道:

我一直在做很多数学运算,我希望有人 在我尝试替换主要配置变量和 重写Marlin 的深层部分之前检查我的
结论,只是为了提交一个 充其量 会引起争议的拉取请求。

最近,在无数次向 演示为什么英制
螺纹对 Z 轴来说不是一个好主意时,因为它迫使您选择 带有几个额外小数位的
层高以避免舍入错误 (对于 某些螺纹,您受到以下事实的严重限制大多数 选项都有非终止小数),我试图计算 Z 轴的 正确 步数/毫米设置,并意识到该值 本身有 一个非终止小数,因此 在固件编译 之前会出现舍入错误. 我继续计算并意识到 这 适用于所有英制螺纹,因为公制转换

使
127 成为单位/步长值的质因数,并且它的倒数
(或
除 2 或 5 以外的任何其他质因数)是一个不终止的
小数。
一些公制螺距也是如此,例如 M4x.7 和 M10x1.5 。
如果Deltabots
的皮带间距或皮带轮齿数

质因数不是 2 或 5,它们也会遇到同样的问题。

The conclusion I came to is that it is better for the firmware to
store
and use a variable in terms of units/step rather than steps/unit.
Unless we
reduce the units to microns (or better, nanometers), this means that
all of
these values will be decimals, but it means that they should all be
terminating decimals, and that they should be more amenable to

喜欢 (0)