google-site-verification: google3bd66dd162ef54c7.html

Arduinoでステッピングモーターを廻す。駆動回路作り

 何とかしてポタ赤が作れないか、という話の続きです。

 前回まではArduinoのポートにステッピングモーターのコイルを接続するという荒技でやっていました。小さなモーターなので一応動きましたが、明らかにトルク不足です。それにマイクロステップ駆動にした場合に、スムーズに回転しないという問題が出ています。

 今後はちゃんとしたドライブ回路が必要になるのは間違いないので、手持ちにあったフルブリッジドライバICのL298Nで駆動回路を組んでみました。

▼回路図
バイポーラ駆動ステッピングモーターの駆動回路
 フライホイールダイオードは手持ちの高速スイッチングダイオード1N4148を使いました。でも、これで良かったのかあまり自信が無いので、回路図への型番の記載はやめました。
 フルブリッジのドライバICはいろいろなことに使えるので、エレメカに興味のある方は常備しておくことをお勧めします。ちなみにこのICは倒立振子作りでも活躍してくれました。

▼Arduinoとブレッドボード
ブレッドボード

▼L298N
フルブリッジドライバIC
 足を曲げるとブレッドボードに挿すことが出来ます。

 以下はこの回路図の動作確認用スケッチで、2相駆動用になっています。14行目のtの値は適当に調整して下さい。最初は50000くらいから始めるといいと思います。

/* ステッピングモーターのドライブテスト、2相励磁+外部ドライブ回路
* バイポーラ方式のモーターを駆動
* 2015/7/18 ラジオペンチ 
* http://radiopench.blog96.fc2.com/blog-entry-578.html
*/
#define input1 4 // input1 @ L298N
#define input2 5 // 2
#define input3 7 // 3
#define input4 8 // 4
#define enableA 9 // enableA
#define enableB 10 // enableB

unsigned int pos = 32000; // 回転位置記録用変数
int t = 1500; // パルスレート設定 単位:ms

void setup() {
Serial.begin(9600);
pinMode(input1, OUTPUT);
pinMode(input2, OUTPUT);
pinMode(enableA,OUTPUT);
pinMode(input4, OUTPUT);
pinMode(input3, OUTPUT);
pinMode(enableB,OUTPUT);

digitalWrite(enableA, HIGH); // 出力許可
digitalWrite(enableB, HIGH);
}

void loop() {
for(int i=0; i<200; i++){
cwP(); // CW方向へ1パルス
}
delay(500);
for(int i=0; i<200; i++){
ccwP(); // CCW方向へ1パルス
}
delay(500);
}

void cwP() { // CW方向へ1パルス
pos++;
PMdrive(pos);
}

void ccwP() { // CCW方向へ1パルス
pos--;
PMdrive(pos);
}

void PMdrive(unsigned int n) { // 指定状態にコイルを励磁
int phase;
phase = n % 4; // 位相を求め
switch (phase) { // 相当する状態に通電
case 0:
digitalWrite(input1, HIGH); // A+
digitalWrite(input2, LOW);
digitalWrite(input3, HIGH); // B+
digitalWrite(input4, LOW);
break;
case 1:
digitalWrite(input1, LOW);
digitalWrite(input2, HIGH); // A-
digitalWrite(input3, HIGH); // B+
digitalWrite(input4, LOW);
break;
case 2:
digitalWrite(input1, LOW);
digitalWrite(input2, HIGH); // A-
digitalWrite(input3, LOW);
digitalWrite(input4, HIGH); // B-
break;
case 3:
digitalWrite(input1, HIGH); // A+
digitalWrite(input2, LOW);
digitalWrite(input3, LOW);
digitalWrite(input4, HIGH); // B-
break;
}
delayMicroseconds(t); // 一定時間待つ
}
 回路とプログラムを実際に動かした動画です。ハードオフのジャンクで100円で売っていたDVDドライブから、ヘッドのシーク機構を取り出して動かしてみました。

 余分な部分があるので、移動距離に比べて外形寸法が大きいですが、マイコン制御の直動機構です。なかなかキビキビと動くし、移動の寸法精度も高いはずです。

 ということで、ドライバ回路が出来たので、ポタ赤のメカ作りに入りたいと思います。
関連記事

コメントの投稿

管理者にだけ表示を許可する

カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード