86Diuno IDEはコーディングバージョン318以降、このライブラリを追加し、86Duinoをシンプルな多軸モーションコントローラとして利用できるようになりました。モーション制御は自動化技術の一部です。産業オートメーションは生産速度の向上、生産コストの削減、生産品質の向上、市場競争力の強化につながるため、モーション制御は包装、印刷、繊維、半導体デバイス製造、生産ラインなどで広く利用されています。
Motion86 ライブラリにより、86Duino は自動化アプリケーション向けの Arduino 対応機能を備えた開発しやすいモーション コントローラとなり、コントローラ開発のスピードアップと開発コストの削減を実現します。
Motion86 ライブラリの主な機能は次のとおりです。
- 最大 10 MHz のパルス出力を備えた最大 9 軸のステッピングおよびサーボ モーターのモーション コントロール。
- 最大 3 つの独立した軸グループ。
- G コードのサポート。
- 0.5 ミリ秒の微細補間サイクルによる多軸直線、円、スパイラル補間。
- JOG機能のサポート。
- ハンドホイール(MPG)のサポート。
- Speed Look Ahead プログラムは 1024 セッションを事前に読み取り。
- 即時応答のための送り速度オーバーライド。
- 電子ギア比設定によるシャフト追従機能。
配線手順と例
Motion86 ライブラリは、Machine0、Machine1、Machine2 の最大 3 つの軸グループをサポートし、各グループを接続して XYZ 3 軸直角座標系マシン (たとえば、SABLE CNC Studio の 3 軸 CNC 彫刻機) を制御できます。
Motion86の各軸グループには、X-DIR/X-Pulse、Y-DIR/Y-Pulse、Z-DIR/Z-Pulseの6つのピンがあり、それぞれX軸、Y軸、Z軸サーボモーターの方向入力とパルス入力に使用されます。各軸のパルス出力には、Pulse/DIR、CW/CCW、A/B Pulseの3つのパルスモードがあり、初期化時にconfig_PulseMode()関数で設定できます。以下は、86Duino開発ボードの各モデルにおける各軸グループのピンマッピング表です。
| Axis Group No. | Axis Group pin | 86Duino Zero | 86Duino One | 86Duino EduCake |
|---|---|---|---|---|
| 0 | X-DIR | 42 | 42 | 42 |
| 0 | X-Pulse | 9 | 9 | 9 |
| 0 | Y-DIR | 43 | 43 | 43 |
| 0 | Y-Pulse | 6 | 6 | 6 |
| 0 | Z-DIR | 44 | 44 | 44 |
| 0 | Z-Pulse | 5 | 5 | 5 |
| 1 | X-DIR | Not Support | 18 | 18 |
| 1 | X-Pulse | Not Support | 13 | 13 |
| 1 | Y-DIR | Not Support | 19 | 19 |
| 1 | Y-Pulse | Not Support | 11 | 11 |
| 1 | Z-DIR | Not Support | 20 | 20 |
| 1 | Z-Pulse | Not Support | 10 | 10 |
| 2 | X-DIR | Not Support | 33 | Not Support |
| 2 | X-Pulse | Not Support | 29 | Not Support |
| 2 | Y-DIR | Not Support | 34 | Not Support |
| 2 | Y-Pulse | Not Support | 30 | Not Support |
| 2 | Z-DIR | Not Support | 35 | Not Support |
| 2 | Z-Pulse | Not Support | 31 | Not Support |
以下は、Maker が 3D プリンターや CNC 彫刻機によく使用する A4988 ステッピング モーター ドライブの例であり、86Duino 開発ボードのさまざまなモデル上の各軸グループの配線例を示しています。
Machine クラス
このカテゴリでは、XYZ マシン軸グループの構成と制御の方法を提供し、より柔軟で多用途なモーション制御のための高度な機能を追加します。
基本的な方法
基本的な制御
- 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()
スピードリセット機能
軸追従機能
計算ツールによる支援
使用制限
TimerWDT ライブラリと AIServo86 ライブラリもタイマーを使用します。ライブラリ間の競合を避けるため、これらのライブラリを同時に使用することはできません。
デモビデオ
ライブラリリファレンスホーム
86Duinoリファレンスのテキストは、Arduinoリファレンスを改変したもので、Creative Commons Attribution-ShareAlike 3.0ライセンスに基づいてライセンスされています。リファレンス内のコードサンプルはパブリックドメインとして公開されています。


