开源改变世界

主轴控制.cpp 中的错误,主轴设置速度() #252

推推 grbl 3年前 (2022-10-09) 423次浏览 0个评论
关闭
owenduffy 打开了这个问题 on 16 Oct 2019 · 5 条评论
关闭

主轴控制.cpp 中的错误,主轴设置速度()第252章

owenduffy 打开了这个问题 on 16 Oct 2019 · 5 条评论

注释

主轴控制.cpp 中的错误,主轴设置速度() #252

欧文达菲 评论 on 16 Oct 2019  

请回答以下问题。

您使用的是什么版本的固件?
b7ee426

问题是否可重复?
是的

什么情况下会出现bug?
使用 INVERT_SPINDLE_PWM,测量占空比与请求占空比的特性存在截距误差。 截距应该为零。
主轴控制.cpp 中的错误,主轴设置速度() #252

以下更改修复了该问题,导致 2e-5 的截距很好。

@@ -108,11 +108,12 @@ void spindle_set_speed(uint32_t pwm_value)
 		#else
 			if (pwm_value == 0) {
 				grbl_analogWrite(SPINDLE_PWM_CHANNEL, (1<<SPINDLE_PWM_BIT_PRECISION));
 			}
 			else {
-				grbl_analogWrite(SPINDLE_PWM_CHANNEL, (1<<SPINDLE_PWM_BIT_PRECISION) - pwm_value - 1);
+//od				grbl_analogWrite(SPINDLE_PWM_CHANNEL, (1<<SPINDLE_PWM_BIT_PRECISION) - pwm_value - 1);
+				grbl_analogWrite(SPINDLE_PWM_CHANNEL, (1<<SPINDLE_PWM_BIT_PRECISION) - pwm_value);
 			}			
 		#endif
 		
 	#endif

事实上,if 语句的另一个分支是多余的,代码可以简化。

主轴控制.cpp 中的错误,主轴设置速度() #252 owenduffy 添加了 漏洞 有些东西不工作标签 2019 年 10 月 16 日
主轴控制.cpp 中的错误,主轴设置速度() #252
所有者

婚戒 评论 2019 年 10 月 16 日

这个对吗?我无法阅读您的代码格式。

void spindle_set_speed(uint32_t pwm_value)
{	
	#ifndef SPINDLE_PWM_PIN
		return;
	#else
		#ifndef SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED
			spindle_set_enable(true);
		#else
			spindle_set_enable(pwm_value != 0);
		#endif
		
		#ifndef INVERT_SPINDLE_PWM
			grbl_analogWrite(SPINDLE_PWM_CHANNEL, pwm_value);			
		#else
			if (pwm_value == 0) {
				grbl_analogWrite(SPINDLE_PWM_CHANNEL, (1<<SPINDLE_PWM_BIT_PRECISION));
			}
			else {
				grbl_analogWrite(SPINDLE_PWM_CHANNEL, (1<<SPINDLE_PWM_BIT_PRECISION) - pwm_value);
			}			
		#endif
		
	#endif
	
}
主轴控制.cpp 中的错误,主轴设置速度() #252
作者

欧文达菲 评论 2019 年 10 月 16 日  

是的,但它简化为:

void spindle_set_speed(uint32_t pwm_value)
{	
	#ifndef SPINDLE_PWM_PIN
		return;
	#else
		#ifndef SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED
			spindle_set_enable(true);
		#else
			spindle_set_enable(pwm_value != 0);
		#endif
		
		#ifndef INVERT_SPINDLE_PWM
			grbl_analogWrite(SPINDLE_PWM_CHANNEL, pwm_value);			
		#else
			grbl_analogWrite(SPINDLE_PWM_CHANNEL, (1<<SPINDLE_PWM_BIT_PRECISION) - pwm_value);
		#endif
		
	#endif
	
}

好?

主轴控制.cpp 中的错误,主轴设置速度() #252
所有者

婚戒 评论 2019 年 10 月 16 日

好的

bdring 添加了引用此问题的提交 2019 年 10 月 16 日

主轴控制.cpp 中的错误,主轴设置速度() #252 bdring 提到了这个问题 2019 年 10 月 16 日
合并
主轴控制.cpp 中的错误,主轴设置速度() #252

很抱歉在测试中没有发现这一点……我将小错误归因于分段近似。解决这个问题可以改善低端的 cal。

再次感谢。

主轴控制.cpp 中的错误,主轴设置速度() #252
所有者

婚戒 评论 2019 年 10 月 16 日

合并为主

atlaste 将提交推送到引用此问题的 atlaste/Grbl_Esp32 2020 年 10 月 13 日

主轴控制.cpp 中的错误,主轴设置速度() #252
 
添加标题文本添加粗体文本,<Ctrl+b>添加斜体文本,<Ctrl+i>
添加引号,<Ctrl+Shift+.>添加代码,<Ctrl+e>添加链接,<Ctrl+k>
添加项目符号列表,<Ctrl+Shift+8>添加编号列表,<Ctrl+Shift+7>添加任务列表,<Ctrl+Shift+l>
直接提及用户或团队引用问题、拉取请求或讨论

添加已保存的回复

喜欢 (0)

您必须 登录 才能发表评论!