Motion86 函式库
86Diuno IDE 从 Coding 318 版开始加入此函式库,利用此函式库能让 86Duino 成为一个简单的多轴运动控制器 (Motion controller)。运动控制 (Motion control) 是自动化技术的一部份,产业自动化可以提升生产速度、降低生产成本、改善生产品质、增强市场竞争力,所以运动控制常被运用在包装、印刷、纺织、半导体器件製造及生产线。
Motion86 函式库能让 86Duino 成为一个具备 Arduino 亲切好上手特色且容易开发的运动控制器,应用于自动化领域,能加快控制器开发速度并降低开发成本。Motion86 函式库主要特色如下:
- 至多 9 轴的步进与伺服马达运动控制,最高 10MHz 脉波输出。
- 最多 3 组独立轴群。
- 支援 G-Code。
- 多轴直线、圆弧、螺旋插补,细插补週期 0.5ms。
- 支援 JOG 功能。
- 支援手摇轮 (MPG)。
- 速度前瞻 (Look Ahead),程式预读 1024 个单节。
- 即时反应的速度重设功能 (Feedrate Override)。
- 可设定电子齿轮比的轴跟随功能。
接线说明与示例
Motion86 函式库最多支援 Machine0、Machine1、Machine2 三个轴群,每个轴群可连接控制一台 XYZ 三轴直角坐标系机器 ── 例如 SABLE CNC 工作室 出品的三轴 CNC 凋刻机,如下图所示:
每个 Motion86 轴群提供 X-DIR / X-Pulse、Y-DIR / Y-Pulse、Z-DIR / Z-Pulse 六根接脚,分别连接至机器 X、Y、Z 三轴伺服马达的方向与脉波输入。其中,每一轴的脉波输出皆提供 Pulse/DIR、CW/CCW、A/B Pulse 三种脉波模式,可在初始化阶段透过 config_PulseMode() 函式进行组态。下面是每个轴群在不同型号 86Duino 开发板上的接脚对应表:
轴群编号 | 轴群脚位 | 86Duino Zero | 86Duino One | 86Duino EduCake |
---|---|---|---|---|
0 | X-DIR | 42 | 42 | 42 |
X-Pulse | 9 | 9 | 9 | |
Y-DIR | 43 | 43 | 43 | |
Y-Pulse | 6 | 6 | 6 | |
Z-DIR | 44 | 44 | 44 | |
Z-Pulse | 5 | 5 | 5 | |
1 | X-DIR | 不支援 | 18 | 18 |
X-Pulse | 不支援 | 13 | 13 | |
Y-DIR | 不支援 | 19 | 19 | |
Y-Pulse | 不支援 | 11 | 11 | |
Z-DIR | 不支援 | 20 | 20 | |
Z-Pulse | 不支援 | 10 | 10 | |
2 | X-DIR | 不支援 | 33 | 不支援 |
X-Pulse | 不支援 | 29 | 不支援 | |
Y-DIR | 不支援 | 34 | 不支援 | |
Y-Pulse | 不支援 | 30 | 不支援 | |
Z-DIR | 不支援 | 35 | 不支援 | |
Z-Pulse | 不支援 | 31 | 不支援 |
下面以 Maker 自製 3D 印表机及 CNC 凋刻机时常用的 A4988 步进马达驱动器为例,提供每个轴群在不同型号 86Duino 开发板上的接线范例:
86Duino Zero | 86Duino One | 86Duino EduCake |
---|---|---|
Machine 类别
此类别提供组态与控制 XYZ 机器轴群的方法,并增加更进阶的函式使运动控制更加弹性与多变。
基本方法
Machine()
~Machine()
machineOn()
machineOff()
home()
gcode()
stop()
emgStop()
clearEMGStop()
基本控制
line()
arcXY()
arcXZ()
arcYZ()
arcXY_Theta()
arcXZ_Theta()
arcYZ_Theta()
circleXY()
circleXZ()
circleYZ()
helicalXY()
helicalXZ()
helicalYZ()
写入组态
config_MaxVelocity()
config_MaxAcc()
config_PosLimit()
config_PPU()
config_ReverseDirection()
config_MaxPulseSpeed()
config_PulseMode()
config_HomePins()
setDefaultFeedrate()
setHomeSpeed()
setRelative()
setAbsolute()
enableSoftLimit()
disableSoftLimit()
读取组态
getMaxVelocity()
getMaxAcc()
getPPU()
getActualPos()
getPulseMode()
getCmdCount()
getFreeCmdCount()
isDirectionReversed()
isMoving()
isValid()
isCmdBufferFull()
JOG / MPG 控制
beginJog()
endJog()
setJogSpeed()
setJogOffset()
beginMpg()
endMpg()
setMpgSpeed()
setMpgAxis()
setMpgRatio()
getJogPos()
速度重设功能
feedrateOverride()
getFeedrateOverride()
轴跟随功能
协助计算工具
computePPU_Belt()
computePPU_LeadScrew()
The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.