事情的起因是想做个写字机,希望可以自己做PCB,就不用辛苦飞线焊贴片了
选定的程序是grbl + bCNC 网址如下
https://github.com/gnea/grblhttps://github.com/vlachoudis/bCNC不过grbl现在都是输出脉冲信号驱动专用的步进电机驱动芯片,如A4988之类,还要加上cnc shield,这太傻瓜了
我手头也没有这些东西,所以打算用另外一片arduino (pro mini)来接收脉冲信号,然后通过74HC595串转并驱动H桥来驱动步进电机 (分立器件的纯NMOS H桥,发现baidu能找到的电路图基本都是错的,吐槽一下)
不过在动手之前,首先要搞清楚grbl输出的信号是什么样子的,我用pro mini来读的时候按照什么顺序,什么逻辑去读,才能保证完整接收。
带着这个问题,我开始看grbl的源码-_-!!!
不幸的是我只发现x/y/z轴的脉冲信号貌似是一起发出的,持续时间没找到
我相信这个问题应该没人研究过,所以打算自己动手做个逻辑分析仪来亲眼看看
中间的曲折过程略过,这里只说结果
逻辑分析仪用stm32的比较好,频率高,用它来调atmega不担心丢信号
比较好用的是支持sump协议的stm32-sump,网址是
https://github.com/ddrown/stm32-sump 前几天改的串口线这会儿派上用场了
上位机用的是PulseView,网址是
https://sigrok.org/之前github上很多人推荐的OLS
https://lxtreme.nl/projects/ols/其实已经挂掉很久了 :(
为了分析5v的arduino,做了个电阻分压电路,就是用的做USBASP剩下的半块洞洞板
插上stm32板子是这样的
跟grbl连起来是这样的
抓到的信号如下
很遗憾的发现脉冲信号宽度只有7~8us,如果网上说法正确,digitalRead都要ms级时间的话,那妥妥的是没法用了。。。