Marlin:在给定时间内将任何 GPIO 引脚设为高电平

3D打印 马林鱼 g代码
2021-05-03 17:48:21

Marlin Firmware 有什么办法支持 G 代码,可以使引脚“高”并在指定的时间内保持该状态?

我制作了一台机器,它运行在 Marlin Firmware 上,这是一个模具成型工具,可以将模具制成粉末,然后另一个工具会从这个模具上过来并在其中分配一些液体。我有一个自定义 GUI 可以将工具移动到给定的坐标,按下模具,将第二个工具放在模具上。

对于分配液体,我正在考虑购买隔膜阀我已经下载了它的用户手册。根据文档,当压缩空气进入阀门时,它会提升隔膜并开始分配。它分配的液体量取决于阀门打开的时间。所以我正在考虑使用继电器来转动电磁阀ON并向阀门OFF供气。要打开继电器,ON我需要将某个 GPIO 引脚设为“高”。有什么办法可以在 Marlin 固件中做到这一点吗?

1个回答

正如汤姆在评论中所解释的那样,您可以使用M42命令直接从 G 代码设置任何端口要将引脚设置为22“高”,您需要调用M42 P22 S255. 没有为命令添加时间的参数,因此您需要使用G4(dwell 或 pause)自己添加来指定打印机需要等待下一条指令的时间,例如:

M42 P22 S255 ; Activate solenoid/relay
G4 P2000     ; Dwell/pause for 2000 milliseconds (2 seconds)
M42 P22 S0   ; Deactivate solenoid/relay

作为替代方案,如果您的机器中未使用该风扇,您可以使用现有风扇(或在固件中添加一个“额外风扇”并将值 255 发送到该风扇)。要使用现有风扇:

M106 S255 ; Activate solenoid/relay
G4 P2000  ; Dwell/pause for 2000 milliseconds (2 seconds)
M107      ; Deactivate solenoid/relay

这个答案中已经描述了如何添加额外的风扇(对于特定的 RAMPS 板)但是,答案也适用于其他电路板,只要您有可以访问的外露引脚(或者如果您可以直接焊接到开放引脚),就可以使用所描述的技术。

用于激活“额外风扇”(电磁阀)的 G 代码是M106 P1 S255禁用的M107 P1请注意,有一个选项/参数可以为命令添加时间(BnnnBlip 时间 - 风扇将在从静止状态启动时以全 PWM 运行此秒数)到M106命令中,但这仅在 RepRapFirmware 中实现。另一种方法是使用G4(dwell or pause) 来指定打印机需要等待多长时间来等待下一条指令 ( M107) 被解析,例如:

M106 P1 S255 ; Activate solenoid/relay
G4 P2000     ; Dwell/pause for 2000 milliseconds (2 seconds)
M107 P1      ; Deactivate solenoid/relay