2年くらい前にステップモーターの記事書きましたが、今頃それの続編ですw
「ステップモーターを試してみました。バイポーラ編」はこちらです。
今回ステップモーターを使う機会が有って、少し躓いたのでその辺を紹介しま~す。
久しぶりにステップモーターを動かしてみたのですが、
プログラム、モータードライバーの種類、配線は以前のままなのですが全く動かない状況に陥ってしまいましたww
ココまで一緒の物がそろっていて動かないとなると、やはり配線が疑わしいですよね。ジャンパー線を取り替えたりして配線し直すのですが全く動かず・・・・
arduinoからは信号が出ているのはロジアナで確認。(ロジアナ使わなくてもLED刺せば分かるくらいなんですけどねww)
となるとモータードライバーなんですけど家に有る4個どれを使っても動かない・・・・・
何か間違えてるのかなとネットで調べるとA4988は作りが荒くて結構不良品も多いみたい。
//——————————追記——————————————————————
どうやらモータードライバーの不良というより、私がこのモータードライバーをよく理解していなかったようですm(_ _)m
コメント欄に色々と情報載っています。
//———————————————————————————————————————————-
念のためアマゾンでコチラのA4988のモータードライバーを注文。
到着~。
右が新しく購入したもの
色やプリントが綺麗だね。
で試してみると新しいA4988で快調に回っていますww
家に有ったA4988を刺しなおしてみると見事に動かないww
まじかよ~ww4個とも故障かよ・・・・・・
あれっ!!!そういえば買った時は5個セットだったよなw
では残りの1つは・・・・・・・・・・・・・・
ぎゃ~~~~っwバルキリーにガッツリ閉じ込めてるよwww
テスト動作の時は動いていたから大丈夫かな・・・・・・・
で、アレコレしていると以前その故障しているA4988の5個セットを2つ買ったんでしょうねも一袋発見wテストしてみると
5個中2個が故障wwなんちゅう不良率ww
うむ・・・・ホントどこで買ったのか覚えていない。
多分アマゾンのあそこというのは有るのですが確証がないので書けません^^;
気になる方は個人的に連絡くださいww
で、故障時に色々と調べていた時に少し気になる物も。
同じプログラムでステップモーターを動かせるモータードライバーを発見
左から順に
①A4988(家に有った物)
②A4988(新たに購入して物)
③A4988(基板の色が違うので気になって購入した物)
④DRV8825(いつも使うモータードライバーDRV8835の仲間かw?)
⑤TCM2208
を購入してみました。(今後は番号で呼びます。)
まずは①のチップ
4988sq HRB33 22Aが読み取れます
②は
HR4988sq B4802A
次③
4988ET A1937 368H
なるほど~同じ4988でもチップが少しづつ違うんですね~。
次④
DRV8825 92T5 A582
次⑤
読み取れんww
TMC2208でww
てな感じでおそれぞれチップが違うのですが同じプログラムで動くようです。
あっ、プログラムの方はarduino用ですがこちら。
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
/*/===================================================== ステッピングモータードライバーA4988用 ======================================================== -----------使用モーター----------------------------------- https://www.amazon.co.jp/gp/product/B072HZG9Y9/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1 モーターステップ15度 1周24ステップ ギアー比 1:41 軸1周ステップ数 24X41=984ステップ -------------配線----------h----------------------------- 1B 黄色 1A オレンジ 2A 茶色 2B 黒 SLEEPとRESETのピンを接続 VMOT モーターの電源(5V1Aで可動確認) GND モーター電源のマイナス GND arduinoのGND VDD arduinoの5V DIRECTION D4pin STEP D3pin ------------関数---------------------------------------- moveto(int v,int steps) v回転スピード 500~15000位まで 数字が小さいほど回転が速くなります。 step 移動させるステップ数 マイナス数字の場合は反時計回り 通常の数字なら時計回り -------------------------------------------------------- とりあえず動いたら電流調整ネジを反時計回りに回して最小の電流で稼働させるようにする。 */ void moveto(int v,int steps){ if(steps<0){digitalWrite(4,LOW); steps=-1*steps;} else{digitalWrite(4,HIGH);} for(int i=0;i<=steps;i++){ digitalWrite(3,HIGH); delayMicroseconds(v); digitalWrite(3,LOW); delayMicroseconds(v); } } void setup() { pinMode(3,OUTPUT); pinMode(4,OUTPUT); digitalWrite(4,HIGH); } void loop() { moveto(500,2000); delay(100); moveto(500,-2000); delay(10000); //moveto(15000,-184); } |
さて、可動テストです。
①②③のA4988回路はこちら
で、この回路図見つけるまでハマっていた事がありましてw
①、②のA4988はVMOTに入れるモーターの電圧が5Vでも可動していたのですが③のA4988ETは5Vではステップモーター動きませんでした^^;
最低でも7VまでVMOTの電圧を上げないと動きません。その分もちろんトルクは増えますが発熱が凄いw
次④DRV8825
コイツも配線はそのままで動きます。
もちろんプログラムもそのままです。
ただし、VMOT端子の電圧は最低でも8V程度まで上げないとモーター動きません。
次⑤TCM2208
コイツは少し配線が変わります。
VMOTへの入力電圧は5Vでも動きます。
ただ、こいつの場合同じプログラムでも動く角度が少なくなります。
こちらが①~④までの可動角度です。
TMC2208は同じプログラムで
このぐらいしか動きません。
おそらくデフォでのステップの設定がより細かいのでしょうね。
3DプリンターでA4988からこのTMC2208に変えると静音性が増すと書かれていました。
模型的に使いやすいのは電圧や発熱考えると①②⑤ですかね~。
ちなみにモーター停止時の発熱防止対策としてA4988はENABLE端子をHighにするとモーターへの電流供給が止まるようです。
てな感じで色々なドライバー試してみました。
それぞれのドライバーの細かなステップの設定や待機時の電流の停止などは調べてみてください^^。
関連すると思われる記事:
- None Found
5番が良さそうですね。
ちゃんとした出所のものを買って試してみますw
いくら引きのいい6jiroせんせーとはいえ、10個中半分以上が死んでたのはamazon怖すぎw
今の手のひらロボが終わったら成形色コンペ用にちっちゃいのを動かそうと思っていたのでナイスタイミングの記事です!
ヤンミンちゃんもここ見て一緒に勉強しましょうw
私もこういうので遊んでみたーいです。
しかし、パルスを送るつもりがバルスになりそうですw
こんにちは!
実験レポートありがとうございます。ステップモーターも奥が深いですよね。
以前、オムニホイール車やライントレース車でいろいろ経験しました。
ちょっと確認ですが、基板についている「半固定抵抗」の調整は、どのようにされましたか?
また、Mxの3個の端子から、マグネットの励起順番が変更できるのですが、その辺りはいかがでしょう?
gyoさん こんばんは!
⑤TMC2208お買い上げありがとうございますw!
これは初めからステップの分割が細かい設定になっているようですので低速の動きをさせる場合には良いと思います。設置をすればより細かいステップで動かせるようです。
ネットによると3Dプリンターでこのモータードライバーに変えてステップモーターの動きが静かになったという報告が沢山上がっていました。
ちなみに、他の各ステップモーターも必要ならMS1~MS3までの端子のHigh 、Lowの設定でステップをより細かく出来ますので低速の動きも出来ますよ。
その辺は調べたらすぐ出てきますので^^
それにしても10個買って半分以上は使い物にならないとかホントひどすぎww
schuさん こんばんは!
誰が上手いこと言えとwww
座布団5枚~!
確かに、私もしょっちゅうバルスを送っていますねww
今回の場合はバルス送る前にすでに壊れていましたが^^;
Vividさん こんばんは!
ステップモーターは奥深いですよね~。
半固定抵抗の調整は連続で動かす時には重要ですよね~。
熱が半端ないですからねw
とりあえずは回転確認したら半時計方向に回して最弱の位置探しますw
今回の私の使用方法では回転時間は短く、トルクが多めに欲しい状態でしたので半固定抵抗は時計方向に一杯迄回して電圧と電流多くなるようにしました。
停止時にはENABLEをHIGHにして電流カットしていますので発熱は殆どありません。
MSの端子は面倒でフルステップのままですwそれに、今回はむしろ速度が欲しいのでフルステップで問題ないですしね^^。
こんばんは
う~む、型番だけで買うとトラップにハマるっちゅうことか。自己責任とはいえ、なかなか意地悪な罠ですね。
それにしてもあのMk-IIにステップモーターってどこだろう?肩だったらサーボで十分な気がするし。。トルクが必用ってことは下半身か。やっぱ射撃ポーズに移行するんですねw
こんにちは。
当時の記事のリンクから同じショップで同じA4988を買った者が通りますよ~!
gyoさんが何やら仰ってますが(笑)
L6470で極小モーターが回るようになったんですが、run(定速回転)で制御しているはずなのに加速-減速-加速-減速・・・を繰り返しておりまして、”パルス”どころか”バルク”なモーターなんで定格情報が何も分からなくて、PICのプルダウン抵抗の抵抗値を高く、コンデンサの容量を低く変えると良いなどと言う記事を見て変更しても解決しないなど問題山積の試行錯誤だらけで、同じところで入手したA4988の不良率の高さに驚きつつも動作確認するに至っておりません(苦笑)
なおさん こんばんは!
この赤のA4988結構曲者が混ざっているみたいですw
今回ご紹介したリンクは5個セットで全て稼働しました。
Mk-2の可動はバスターランチャーだけですよww
肩の可動で射撃ポーズとかやりませんからねwww
てかそんな技術ありませんw
yangminさん こんばんは!
あっ、以前ご紹介した時のリンクは5個とも正常可動しましたよ。
多分大丈夫とおもいます。
その後に買ったところが惨憺たる結果でしてww
L6470は当時は結局よく分からずに放り投げてしまいましたが、今ならもう少しわかるかな・・・・・なるほど~色々と工夫が必要なんですね・・・・難しそう^^;
私は出来るだけ簡単に結果を求めちゃうのでwこのA4988のプログラムがAVRに簡単に移植出来るのでこれを使っちゃいますw
紹介していただいている最後の図ですが、MCU(arduino)からTMC2208へはSTEPとDIRの他にENABLEにも接続されていますよね。
実際にテストをしていらっしゃる画像ではENABLEはGNDへ接続されているようですが”使わないとき?はGND(LOW)にしておく”的な感じなんでしょうか?
yangminさん こんばんは!
TMC2208のENABLEは可動時にはLOWで停止時にHIGHにするとステップモーターへの電流供給がストップして発熱を防ぎます。
ブレッドボードはその実験の名残で、直接arduinoを使わずにHIGHやLOWにして試していましたw
ステップモーターは停止時にも電流供給されてブレーキの役割していますので、プログラム組まれる時はこのENABLE端子の取り扱いはした方が良いと思いますよ^^
6jiroさん、こんばんは。
返信ありがとうございます。
Higeで停止なんですか!?それで常時Low(GND)にしてテストしていたということなんですね。
L6470ではモーター停止時にどれくらいの電流(電圧)量(トルク)をかけるのか細かく指定できるみたいなんですが、A4988系ではHigh・Lowで指定するんですね。
ということはPICなどのDOピンでHigh・Low信号を送れば制御出来るということで良いのでしょうか。
色々勉強になりますφ(..)メモメモ
yangminさん こんばんは!
全ておっしゃる通りです^^
今回のドライバー系統ではENABLEで電流供給するか、しないかを決めます。
基本的にピンはSTEP,DIRECTION,ENABLEと3本使うのが安全と思います。停止時もモーターに電流供給していると電源の浪費が凄いですし、何より熱の発生が凄いです。
ちなみにステップを細かく設定したい場合はMS端子のH,Lでステップも決めることができます。
VMOTは8~35Vではないですか?なのでその範囲外の電圧では動作保証外かと思いますが…
abcさん こんにちは!
ああっw
A4988で5Vで動くものもありましたから5Vで動くと思っていましたが、
VMOTが8V以上でないと動作保証外なんですね^^;
ありがとうございます!勉強になりました!
1年以上も前の記事にごめんなさい。
関連記事やコメントも拝見しましたが、
皆さん「VREFの設定」について重大な勘違いをされているようです。
「モーターが熱くなる時は左に回せ」は間違いです。それだと壊れます。
「実際にモーターを回す」前に「Vrefの設定」をしないといけません。
「arduino.stackexchange.com」のフォーラムで、
「Can I control a 28BYJ-48 5V stepper with a DVR8825 driver」
という質問が出ていて、そのアンサーに詳しく書かれているのですが、
英語で難しい書き方だったので要約します。
先ず質問は
「定格5Vのステッピングモーター28BYJ-48をDVR8825で使いたい」
「DVR8825の最小動作電圧が8.2Vですが、28BYJ-48は10Vに耐えられますか?」
という質問です。
そのアンサーですが、まず「モーターのスペック表記」について、
「’直流抵抗と定格電圧’の場合と’相電流と相抵抗’の2種類有る」
「電流が許容範囲を超えるとモーターが壊れます」
と答えています。
要はモーターの「許容電流」の計算が必要で「定格電圧だけ見るのは間違い」
と言う事ですが、具体的なアンサーとして、
「28BYJ-48は’定格5V/50オーム’なので’許容電流は0.1A(500mA)’です」
「モーターへの電圧は常に最大供給電圧の8.2Vです(VMOTは10Vで良い)」
「電流はVrefの設定によりPWM制御で制限します」
「Vref電圧は「Vref=Imax/2」となるように設定する必要があります」
「モーターを強力に回すにはVrefを50mVから開始して熱くならないよう調節します」
と言う事です。
もう少し解りやすく補足させてもらいます。
まず、モーターへの供給電力VMOTですが、
TCM2208以外の大抵のコントローラーは最低8V必要です。
このブログなら、VMOTへは12V入れておけば間違いないと思います。
次にモーターですが、電圧(V)でなく供給する電流(A)を計算しないといけません。
上記の通り、定格5V/50Ωのモーターなら500mAです。
このブログの良く使用している小型のモーターなら大抵500mA位だと思います。
指の先ほどの大きさしかない極小モーターで200mA位です。
コントローラーからモーターへの供給電流はVrefで調節する必要が有ります。
DRV8825のモジュールなら上記の通りVrefは50mVで良いのではないかと思いますが、
A4988を搭載したモジュールはシャント抵抗(Rs)が色々と混在していますので要注意です。
Vrefの計算式は「制御電流[A]=Vref[V]/(8×Rs[Ω])」です。
上記フォーラムで’Vref=Imax/2’は、Imaxは(8×Rs[Ω])、Aが500mA(0.5A)なので/2です。
モーターが(制御電流)500mAでシャント抵抗(Rs)が0.05Ω(チップ抵抗の表記はR05)の時、
0.5=Vref/(8×0.05)
Vref=0.5x(8×0.05)
Vref=0.2
です。
Vrefを「モーターが熱いから左に回す」という方法で調整していた場合、
前回大きなモーターを繋いだ設定のまま、小さなモーターに付け替えると、
ほぼ確実にコントローラーが壊れます。注意して下さい。
上記のフォーラムではモーター側が壊れるというニュアンスですが、
Vrefの設定ミスでコントローラを壊したと話すHPが沢山ありますし、
私も実際に何度か壊した経験が有ります。
記事で「不良品が多い」「壊れやすい」と書かれていますが、
EG4YAup2hySgcimq8MkLuB6e34rNB2SF9h94LL1ryzzq
正しい設定をしていればコントローラーが故障する事は少ないです。
3Dプリンタ用のコントローラ基盤ではモーターコントローラーが基盤直付で、
交換不可の商品が多いです。故障して交換する事を想定していないからです。
以上です。長文失礼しました。