#小型リニアアクチュエータをArduino+A4988+CNCシールドで駆動させる
2相ステッピングモータ搭載、小型リニアアクチュエータ(D8-MOTOR80形搭載)を手に入れ、駆動させることに成功したのでそのメモ
また、CNCシールドを使って複数のリニアアクチュエータを動かした
こんなに小さいのに想像以上のトルクでびっくりでした
#リニアアクチュエータ(D8-MOTOR80形搭載)仕様
駆動電圧DC 12V
1相あたり800アンペア/相
コイル抵抗15 10%Ω/相
ステップ角18。 / step
励磁法1-2相励磁
ドライブモードバイポーラドライバ
125pps
1600 ppsを超える最大応答周波数
最大開始周波数が1100 ppsを超える
モーター表面温度80°C
ねじ棒径3mm
ねじ棒の長さ90 mm
スライダストローク80mm
ねじ棒ピッチ±0.5mm
長さ10.3 cm / 4.1インチ
重さ50グラム(約)
↑これはAmazonの説明書きだが、この情報以外に、製品の詳しい日本語の情報は全く見当たらず、中国語の情報を参考にした。
(百度でD8-MOTOR80と検索すれば色々と情報が得られる。)
A4988の1A1B2A2Bには上記の図を参考に色を合わせてつなげば良い。
翻訳↓
注意点: モーターは全てドライバによる駆動が必須です、直接電源を接続できません!ドライバーA4988を手配すること。
以下はドライバーのリンク。
製品参考データ:
製品型番: D8-MOTOR80
(ステッピング)モーター類型:2相4線
定格電圧: 9V-12V (電圧を上げていくと、トルクも上がります、ただしそれに伴って、発熱も大きくなります)
電流: 800mA/phase
スクリュー(ネジ棒)長さ: 90mm
レール長さ: 80mm
モーター直径: 15mm
スクリュー直径: 3mm
スクリューピッチ: ±0.5mm ※一歩の移動は0.25mm,もしさらに小さくしたい場合は、マイクロステップを採用できます。
歩角度: 18度
駆動方式: 2段階駆動
全体長さ: 15x105mm
重量: 46g
直線走行の速度は毎秒25mm
赤 → A+
黄 → A-
青 → B+
黒 → B-
A+ A- B+ B- はA4988ドライバに対して
1A 1B 2A 2Bとする
A+ → 1A
A- → 1B
B+ → 2A
B- → 2B
赤 → A+ → 1A
黄 → A- → 1B
青 → B+ → 2A
黒 → B- → 2B
#Arduino UNO+CNCシールドを使用
Arduino UNOにCNCシールドを接続する。
これはピンに差し込むだけである。
また準備したA4988ドライバをそれぞれのソケットに接続する。
CNCシールドとArduinoUNOのピンの対応は以下の通りである。
今回はxとzを使用しました
以下はリニアアクチュエータを二機同時に動かすArduinoのスケッチ。
CNCシールド
int Speed = 900;
int Step = 20;
const int xstep = 2;
const int xdir = 5;
const int zstep = 4;
const int zdir = 7;
void setup(){
Serial.begin(9600);
pinMode(xstep,OUTPUT);
pinMode(xdir,OUTPUT);
pinMode(zstep,OUTPUT);
pinMode(zdir,OUTPUT);
digitalWrite(zdir,HIGH);
digitalWrite(xdir,HIGH);
}
void loop() {
if(Serial.available()){
byte buf;
while (1) {
if(Serial.available()){
buf = Serial.read();
}
if(buf == 'A'){
digitalWrite(zdir,HIGH);
digitalWrite(xdir,HIGH);
for (int u=0; u <=Step; u++){
digitalWrite(xstep,HIGH);
digitalWrite(zstep,HIGH);
delayMicroseconds(Speed);
digitalWrite(xstep,LOW);
digitalWrite(zstep,LOW);
delayMicroseconds(Speed);
}
} else if(buf == 'B'){
digitalWrite(zdir,LOW);
digitalWrite(xdir,LOW);
for (int d=0; d <=Step; d++){
digitalWrite(xstep,HIGH);
digitalWrite(zstep,HIGH);
delayMicroseconds(Speed);
digitalWrite(xstep,LOW);
digitalWrite(zstep,LOW);
delayMicroseconds(Speed);
}
}
}
}
}
パルス間隔(周期):Speed は適切な値を設定すること。
確認はしていないが上述の情報でおそらく毎秒25mmが最大速度だと思われる。
18deg/stepのモーターなので、1回転は20STEP。
1回転で0.5mm進む。
このスケッチでは、シリアルモニターにコマンドA Bを送信すると設定したステップ数まで進みます。
今後時間があるとき、性能評価をしたいと思います。
※12Vで使用すると結構発熱します、そのまま使用すると火傷しますので、必ず強制冷却処理してください。
私はステッピングモーターの後面から冷却するようにファンを取り付けています。