ステッピング・モーター&DCモーターの台形駆動ライブラリ

ステッピング・モーターの台形駆動ライブラリ
DCモーター/ソレノイドの台形駆動ライブラリ

上記投稿のコードを改良し複数モーターを同時駆動できる台形駆動ライブラリを作ってみた。

最大クループ数は256(規定値は32)、最大モーター数はグループ毎に255個、最大駆動周波数はCPUの処理性能とモーター同時駆動数に依存する。32ビット以上のCPUがお勧めだが、モーター1個の場合arm(48MHz)なら20KHz程度まで行けそうだ。

波形生成をソフトウェアのみで処理しているので全てのARDUINOで利用可能である。

下記投稿内のソースコード(hardware.cpp)を参考にタイマー割込みを利用することもできる。

Micro Core Library for Arduino

【サンプル・スケッチ】

【修正履歴】
2023-09-18
リミット入力が入った状態からの原点復帰動作を改良。

2023-09-10
リミット入力のデバウンス処理の代わりとして20msの駆動開始遅延を入れていたがデバウンス処理を追加し駆動開始遅延をなくすとともにデバウンス処理によってリミット入力による停止遅延が発生しないように改良。

2023-09-07
複数のモーターをグループとして管理できるように改良。handle(グループ番号)の戻り値で指定グループに含まれるすべてのモーターの動作状況を返す。

2023-08-25
A4988(DRV8825)に対応したクラスを作成してみた。リミットスイッチの指定をすることでhome()の呼び出しにより原点復帰動作が可能。
start()の駆動ステップ数は相対指定。その符号により回転方向が変わる。

2023-08-19
handle()の仕様が少しわかりにくかったので仕様変更を行った。
handle()は駆動処理を行い、まだ駆動中のモーターがあればtrue、なければfalseを返す。新たに追加したrunning()は個々のモーターの駆動状態を返す。

2023-08-17
AVRシリーズで全く動作しなかったため修正。

【ライブラリ】