注释
|
查看 UGS git hub。FaulterLee 为我制作了一个 arduino 程序, 在 2016 年 8 月 31 日凌晨 2:30,“cspwcspw” notifications@github.com写道:
|
|
不要担心哪个是罪魁祸首。在所有 3 行上放置过滤器。 2016-08-31 5:24 GMT-03:00 Julius notifications@github.com:
|
|
@lalo-uy: 好建议。我可以看到这非常有用。我会看看我能把它塞进 v1.0 中做什么。 |
|
@lalo-uy: 今天看了一下。我认为添加哪个限制引发了硬限制不会可靠地工作。如果您的系统中有电气噪声,它可以触发中断以设置硬限制警报,但无法检测到当处理器开始执行该部分代码时哪个轴切换了。另外,当 10 美元启用时,Grbl 已经可以在状态报告中报告限位开关状态。 也就是说,我可以添加一个 limit_state_check() 并提供一个反馈消息,表明限位开关在任何有意义的地方仍然处于接合状态,例如在欢迎字符串和警报解锁之后。 |
|
@chamnit: 感谢您查看这个! 是的,通过轮询可以很好地发现限位开关状态,并且您可能会报告重置后仍在使用的硬限位的建议也可能会有所帮助。 但我真的想问我们是否可以找出是什么引脚导致了瞬态触发,一般来说,噪声不会“可轮询”。因此,如果中断服务例程 (ISR) 不知道或无法找出是哪个引脚引起了它的执行,或者如果多个限制引脚共享同一个 ISR,这听起来像是为了获得最小回报而做的额外工作。 |
|
@cspwcspw:我明白你的意思是知道哪个引脚有噪音并触发硬限制中断。有了这个,它将为用户处理 EMI 提供一个非常好的工具。 为了确保我对引脚更改中断如何工作的记忆,昨晚很晚我检查了数据表。AVR 引脚中断检测端口(8 个引脚组)上的引脚变化。它不保留有关端口组中哪个引脚抛出中断标志的任何信息。据我了解,您必须在中断中轮询端口以获取其状态。因此,如果您遇到瞬态噪声问题,则无法保证通过轮询进行检测。 此外,328p 只有 3 个管脚变化中断例程。可以将限制引脚移动到不同的端口(D0-D7、D8-D13、A0-A7)以将轴隔离到每个端口。但是,这需要重写大量代码才能适应这一点;引脚需要交换;并且您将丢失输入控制引脚(复位、进给保持、恢复),因为它们也使用引脚更改中断。所以,我会说它的额外工作是为了获得最小的回报。 |
|
@chamnit: 谢谢,很有道理。我没有意识到引脚被聚合到端口中。我还没有仔细阅读代码,更不用说数据表了,反正这也不是我的主要关注点。因此,很高兴获得您提供的支持和见解。 |
|
一个前面有 74ls14 的触发器应该提供一个锁存器来显示触发了哪个引脚?在某个地方,我有一个内置此功能的数字测试仪。 |
|
@gerritv: 好主意。我不是 EE,但对我来说,Ardunio 的内部上拉似乎有些弱,所以它们对噪音很敏感。因此,带有电容器(也许还有电阻器?)的滤波器可以对此进行补偿,或者可以放弃 Ardunio 内部上拉并提供您自己的。因此,如果我要在 Ardunio 引脚前面放置任何东西,我可能会尝试为开关安排一个稍强的上拉电流,我怀疑问题可能会消失。 如果只是反转逻辑,一些人会报告成功(grbl 有可配置的设置来适应这一点)。因此,如果开关常闭,线路将带有“强”地,使得杂散电噪声难以将电压拉高。连接到同一个限制引脚的多个开关必须串联而不是并联, |


我触发了一些错误的限制,就像我之前的许多人一样!我确实有屏蔽电缆,问题只在主轴打开时出现,但我必须安装用于高过滤器旁路的模块。
但我不共享 X、Y、Z 限制:它们在不同的引脚上。所以了解“哪个轴是我的罪魁祸首?”可能会有用。我的 Z 开关限位电缆非常靠近主轴,主电源和那些限位信号在同一条拖链中传输,所以这些是我的主要怀疑对象。
我在 limits.c 的 grbl 代码中看到有一个函数uint8_t limits_get_state()返回我想看到的信息。作为硬限制警报或警报状态的一部分,将其回显到 GUI 会不会很困难?(有点像带有返回错误代码的软错误/解析器消息。)或者可能将它存储在某个地方(例如,有一个额外的哈希参数),一旦我清除了警报,我就可以查询它。
谢谢。