2011年04月26日

ステッピングモータをArduinoで回す

バイポーラモーターを購入し,Arduinoで制御することを行った.


・苦労した点

公式サイト
http://www.arduino.cc/en/Tutorial/MotorKnob


このページ(Arduino公式サイトのサンプル例 MotorKnob)をみてとりかかったがここで使用しているドライバIC (H-Bridge SN754410NE)が1つのみの販売はパッと見なかった(10個単位ならあったような).そこで『バイポーラモーター制御用』と書かれていた別のドライバIC(TA7774PG)を秋月電子で見つけたので購入.


【バイポーラステッピングモータ用ドライバIC TA7774PG】
http://akizukidenshi.com/catalog/g/gI-02798/

購入したドライバIC.




組立自体は公式サイトの図を参照して行っていたのですが動く気配なし.きちんと考えようと,ドライバICの仕様を見ていたところ,サンプルのSN754410NEとは並びが異なっていそうなことに気付く.

…といっても,私の知識ではそれぞれが何を意味しているかはっきり分からない.


結論を書くと,端子説明に書かれていた,A出力,B出力のピンをモータのケーブルの図に合うようにつなげたらモーターが回ろうとする音が鳴った.やっほー!一歩前進.

以下,流れ.

最初は,関数Stepper(steps, pin1, pin2, pin3, pin4)を使用して,4ピン制御を行っていましたが,このドライバICは二つ制御(IN AとIN Bしかないので)で使用するのかなと思って,関数の引数も変更.


もう一つは1回転辺りのステップ数が分からなかったのでこれはステッピングモータを購入したメーカーに問い合わせ.


関数Stepper の第1引数で使用する二つのピン.
Stepper stepper(STEPS, 8, 9);




最初は,4PIN制御していたとき,モーターへかかる電圧が2本はかかるが,残りの2本は0Vのままだった.
電圧はちらちら変わっているため,ドライバICは正しく動いているっぽいと判断.おそらく,ArduinoのStepperのプログラムもそれなりに正しいだろう.


そこで配線の方法を疑う.


分からなかったのは,高電圧電源端子がPIN9とPIN16の2箇所にあり,これは同じ電圧をかけるのか,高電圧とはいくつからなのかが判断できなかった.要は図面も見れないど素人な自分.とりあえず,購入したステッピングモーターは12Vで動くと聞いていたので,PIN9には12Vをかけていた.
(これは元々参考にしていた公式サイトの例でPIN8に外部電源をつないでおり,他の部分はArduinoから電源供給を受けていたためそのような措置にしていた.)


モータから出ている4本と,ドライバICからの電圧をかける出力部分が不一致なのではないかと適当に図面見ずにごにょごにょ(適当に組み合わせていました)してたら,モータが回る音がするけどその場でガタガタするだけで進みも戻りもしない.

とりあえず,動作できそうな気がするので一歩前進!



ステップ数及びRPMを極端に落とし,つまり1を設定したりして,試しているうちに,どうも元の位置に戻ろうとする機能が有効になっているんじゃないかと疑う.(実際そうかはわからない)で,PIN2の制御電源端子を5VつないでHIGHにしたら回りだした!


注)それから色々試して分かったこと

■IN AまたはIN Bどちらかのみだけ有効だとその場でカタカタ動く現象が起きる.(要PIN7 HIGH)

■PIN16 及び,PIN7がHIGHでないと動作しない.

■PIN7 のPS(パワーセーブ)はなんのため?→PSのHIGHじゃないとカタカタする現象が発生.
『パワーセーブ機能を有する』と参考資料に記載されているので低電力消費量実現に使われるのでしょう..

■PIN2 制御電源端子はLOWでも動く..HIGHでも動く.
VS2 ENABLE時にIO(HOLD) 100mAと記載されている.IO(HOLD) って何かわからない...が,動力維持かなぁ.

■PIN1 定電圧電源端子は電圧かけなくても動くが,他には5Vの電圧をかけているが,ここには8Vちょっとの出力がでていた.
で,PIN1をHIGHにしたら,PIN8がLOWでも動作する.PIN1がLOWならPIN8がHIGHの場合動作する.

■PIN9 がLOWでもP8 またはP1がHIGHなら回る..

■PIN8 以下の記述あり.
Power制御はTA7774PGのVs2_bピン(pin8)に与えPOWER-OFF(Low)とOPERAITION(High)を切り替えるための信号です.
Power制御はset_power_ctrl( true )によってイネーブルされます.これがイネーブルされている間,モータが動作しない状態であるときにTA7774PGがPOWER-OFF状態になるようにします.




ただ,当然ながら電圧を上げて使用するとトルクは増すが音がうるさい...もっと静かにコントロールするには,細かいステップ数で制御するしかないのかなぁ.


最終的に参考になったサイト.とても感謝.

"stepper motor (bipolar motor driving) library and sample codes | mbed"
http://mbed.org/users/okano/notebook/stepper-motor/





私の作ったソースコードはMotorKnobbipolar.pde


あと配線図もつけます.
Arduino_BipolarStepperMoter.png




※(2011/6/6追記)
12Vで実行すると,大きな電流がドライバICを流れることに繋がり,高熱が発生し,ドライバICの故障の原因になります.トランジスタ,抵抗,ダイオードを組み合わせ大電流がドライバICに流れないように工夫する必要があります.

私自身,未熟な知識で工夫している最中です.出来ましたらブログに載せたいと思います.


posted by maplewine at 20:57| Comment(3) | TrackBack(0) | Computer | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
初めまして。

貴公と同じくステッピングモーターをarduinoで動かしたいと思っている者ですが、ソースコードのpdeファイルが開けずにおります。

もし可能であれば違った形式でお見せいただきたく思いコメントさせていただきました。

どうぞよろしくお願い致します。
Posted by 繭山 俊 at 2015年11月28日 14:18
繭山さん、はじめまして。
遅くなりまして申し訳ありません。ちょっといま対応している時間がないのですがpdeはprocessing言語(というかjava)の環境があれば見られるのではと思います。
もはや不要になってしまっているかもしれませんがお時間ありましたら試してみてください。
Posted by 管理人 at 2016年03月30日 23:24
すみません、時間が経ちすぎてあまり覚えてないのですがArduinoの環境入れればみれたりしないでしょうか?
Posted by 管理人 at 2016年03月30日 23:25
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック