<基本的なモータの動かし方 >
1.RS232Cでシーケンサとシリアル通信をする。
2.シーケンサからパルス信号をモータ ドライバに出力。
3.モータドライバからモータへ駆動信号を出力する。
産業用の高価なシステムは組めないので、Arduinoを使用する。
RS232Cの最大伝送速度は20kb/s。
なんかこうもっとブロードバンドな規格でモータを動かしたいなぁ。
画像取り込みに1Gb/s以上の帯域を使って、出力が20 kb/sってあまりにも貧弱な気がするが...。
まぁしょうがないか。
前回のLチカのコードをモータが動くように編集します。 nullpo24.hatenablog.com
環境
OS: Ubuntu18.04
HW:Arduino Mega 2560
Stepper Motor Driver Module : A4988
Stepper Motor : 17HD48002H-22B
Power Supply : Longwei 直流電源 DC 30V 10A
Arduino と A4988 でステッピングモーターを制御する方法 - Arduino - 基礎からの IoT 入門 を参考に結線。
Arduino側の実装
以下のスケッチをArduinoへ転送します。
初期状態ではA4988.hのライブラリが見つからないため、
コンパイル時にエラーとなります。
「ツール」→「ライブラリを管理」から"A4988"を検索し、インストールしてください。
コマンド'o':正回転
コマンド'p':逆回転
#include <A4988.h> const int MOTOR_STEPS = 200; const int DIR = 8; const int STEP = 9; float rpm = 100; int microsteps = 1; A4988 stepper(MOTOR_STEPS, DIR, STEP); void setup(){ // set the speed at 60 rpm: //myStepper.setSpeed(60); stepper.begin(rpm, microsteps); // initialize the serial port: Serial.begin(9600); } void loop(){ int inputchar; inputchar = Serial.read(); if(inputchar != -1 ){ switch(inputchar){ case 'o': // 読み込みデータが o の場合 // step one revolution in one direction: stepper.rotate(360); delay(500); break; case 'p': // 読み込みデータが p の場合 // step one revolution in the other direction: stepper.rotate(-360); delay(500); break; } } else { } }