
![]() 一年前,在Makerfaire参与者和Kickstarter社区的支持下,我发布了一个基于arduino的CNC控制器(“沙比尔”),专门用来帮助K40激光设备,包括性能和工具链。虽然它的功能对于很多K40用户来说已经足够了,但是还有更多的其他用户需要额外的功能,比如Z表来提高激光对焦、旋转轴、风扇电机控制等等。 Dan建议升级到STM32。许多论坛都对这款Blue Pill进行了评论,许多用户只能在那边闪烁LED灯。 ( B! l: ?/ }5 U% g% _7 f6 E1 ^ 沙鼠Kickstarter上的一个曲球是AVR328PB微控制器(类似于Arduino AVR,但有16位PWM),令人震惊的是这个控制器居然在全球范围内销售一空!所以我只能找另一个供应商,幸好Kickstarter有足够的资金支持着我,所以一切顺利~ 我决定深入研究STM32世界,经过4000页的数据表和一些实验,我发现,尽管有正确的代码,但却无法有效得启动。在学习了ARM架构和在线帖子之后,我意识到用户需要打开每一个外围设备、外围总线、时钟,并通过代码将这些部件粘在一起。 4 C4 ^# T( \1 i 这种复杂性背后的原因是ST授权了ARM cortex处理器,并围绕它构建了自己的基础架构。为了将能耗和电磁干扰降到最低,他们决定在默认情况下关闭一切。ST承认他们的方法很复杂,并尝试用STM32cube软件来减轻配置的麻烦,虽然我在这方面取得了一点成功,但它并没有减轻阅读所有数据表的负担!8 Y U" I* p* G! e 在使用了一些基本功能之后,我开始将沙鼠设计移植到STM32,大多数旧的8位沙鼠代码必须转换为32位,因为有很多轴和限制开关要被覆盖。下一个难题就是,沙鼠和STM32的有些功能似乎是相互排斥的——我的控制线或限位开关分开都能工作,但两个却不能同时工作。我偶然发现了一个没有被记录过的特性:GPIO端口可以配置为使用内部中断功能,但是配置不是原子的。换句话说,新配置将覆盖旧配置,因此任何配置更改都必须反复保留任何配置设置。 6 u" B& ? m$ I0 k+ E ![]() 照片:我的原型控制器 / V# c3 s5 \9 ]2 |6 u; g; G5 I 有趣的方面是3 d打印模型五轴数控测试机——毕竟,我想测试五轴运动,但不能在五轴铣床附近测试…这是一个伟大的举动,因为它是轻便,容易威胁到当地制造商。 R& j6 w3 O8 S- w) t 从这些制造商的反馈,我一直在重复PCB的设计和测试。用户测试包括花一个周末的时间和一个钟表制造商去看他的车床和轧机与超级沙鼠一起工作。另一个测试用例升级Nomad 883轧机-丹剥离了原来的控制器,并安装了超级沙鼠。游牧者最初是一个三轴机器,但现在运动一个新的自定义设计的第四轴。% h, F5 u7 [3 ^+ N, H + d4 ^ Y7 D% a: c4 X# S/ R5 H: U 作为我的试验台的DIY数控磨机可以从这里下载:http://www.thingiverse.com/thing:3204933,但仍有工作在进行中。; H* \3 h- v/ a$ A! g) W 9 W/ `3 @& X. a 下一个步骤: 对于64 Kb或128 Kb的闪存(其中使用了41K),有足够的空间扩展Grbl ARM代码。我希望实现的两个特性是: " \* s, r+ t2 D2 a& } 1、G76 Gcode命令,用于攻丝和钻孔循环,使手动钻的pcb和打破0.6毫米钻的事情成为过去。( p; \% t' ^) L, }8 D$ f" F # N7 i% r+ h8 {( \ 2、G80 . .G99 Gcode命令,用于“固定循环”,这允许更容易的Gcode编程,本质上类似于在Gcode中使用嵌套循环。这需要在Grbl解析和执行g代码的方式上进行一些返工。这是你能为我的项目做出最大的开源贡献。我需要有足够的胶带和线程,以确保这些新的附加g代码的正确实现,所以它可以在车床或轧机上正确工作。' d3 i, D5 ^ k/ d+ ~ ![]() 总之,在经历了一段艰难的STM32学习曲线之后,超级沙鼠项目现在处于良好的状态,我期待着它的未来。) s5 \6 a; z) O# ~( d3 u/ ]) w 4 A: P" j5 Z9 |2 K( | : J1 T1 ]: U, W$ \. d) `" A$ `0 |* w |