低価格の3Aステッピングモーター用ドライバの製作へ
現在私が使っているオリジナルマインドのモーターコントローラー「TRIO」は最大3軸の制御で、それ以上の拡張性がありません。
しかもTRIOは5万円以上する高価な製品の割に性能も単純で、非常に割高!はっきり言ってコストパフォーマンスの悪い製品です。
そこで、2台目、3台目のフライス製作の為に、TRIOの互換機を自作することにしました。
今回はマイコンは一切使わず、電子部品を半田付けするだけで簡単に作れる、モータードライバー部の互換部品を自作することにしました。
1500円で作るモータードライバー
TRIOに使われている電子部品をみると、どの部品も秋月電子で安価に購入できるものばかり。
例えば、オリジナルマインドTRIOに使われているステッピングモータードライバ用のIC「SLA7078MR」(下記写真)は、秋月電子通商で上位互換部品「SLA7078MPRT」が540円で売られています。
ざっと部品代を計算してみたところ、おおよそ1,500円ほどで作れることが判明。
しかも、2軸目いこうは、DC-DCコンバータやコンデンサの一部は共有できるので1,000円程度で作れてしまいます。
これは自作しなければ!
その他(導線など)
部品名 | 単価 | 数量 | 合計 |
耐熱電子ワイヤー AWG22 | 550 | 1 | 550 |
スズメッキ線(0.6mm×10m) | 210 | 1 | 220 |
ドライバの設計
モータードライバIC「SLA7078MPRT」のデータシートには回路例が掲載されているので、基本設計はこちらを参考に設計することにします。
http://www.semicon.sanken-ele.co.jp/sk_content/sla7078mprt_ds_jp.pdf
カレントダウン回路の追加
ステッピングモーターは回転していない状態でも駆動時と同等の電力を消費し、モーターも発熱します。
停止時には大きなトルクは必要ないのでモーターの電流を下げる機能があると無駄な電力を節約できます。
この機能を、カレントダウンといいます。
カレントダウン回路のアイディアとして、モーターの出力調整機能を利用する回路がよく利用されています。
出力調整機能とは、ドライバICの13番端子「Ref/Sleep」へ”0~0.45V”の電圧をかけることで、その電圧に応じて”0A~3.0A”の出力を制御する機能が付いています。
モーターの出力調整機能は回路図1のようにします。可変抵抗”Vr_1”を0~1kΩに変化させることで「Ref/Sleep」へ0~0.45Vの電圧を印加する回路です。
この出力調整機能をモーターの駆動・停止に合わせて瞬時に変化させることができればカレントダウンとして利用できるわけです。
回路図1
回路図2はモーター出力調整回路にカレントダウン機能を付加したものです。
モーター駆動中はカレントダウン信号はOFFで、停止時にONを入力します。
このON・OFF制御はマイコンや今回利用するICのウォッチドッグタイマを利用して制御します。制御方法は後程説明します。
カレントダウン信号がOFF(つまりモーターが動いている状態)のときは、トランジスタによって可変抵抗”VR_2”には電流が流れず、”VR_1”だけがつながれた状態です。この状態では、回路図1と同等です。
ステッピングモーターが停止したとき、左の「C/D」にHigh信号を入力すると”VR_1”と”VR_2”に電流が流れ、可変抵抗が並列接続された合成抵抗の状態になります。
この状態では、”VR_2”の抵抗値に応じて0%~80%ほど電圧が降下します。
するとモーターの出力が低下するので、カレントダウン機能を実現することができるというわけです。
回路図2
カレントダウン信号
モーターのON/OFFに合わせてカレントダウン信号を入力するには、2通りの制御方法があります。
一つ目はCNCコントローラーのカレントダウン機能を利用する方法。
CNCコントローラーにカレントダウン機能があれば、この信号をC/Dに入力すれば良いわけです。ですが、手元にあるCNCコントローラー「USBCNC」にはカレントダウン機能がありません。
二つ目の方法は、モーターのパルス信号をマイコンで読み取り、パルス信号が停止(モーターが停止)したらカレントダウン信号を入力するという方法です。
マイコンを使えば自由度の高い制御ができるのですが、マイコンへ書き込むツールが必要です。
そこで、「ウォッチドッグタイマ※」を内蔵した適当なICチップを使って同様の機能を実現できないかと考えてみました。
(※ウォッチドッグタイマとはパルスを監視し、パルスが途絶えたら信号を発信する機能のことです。)
今回はADM706RARZのウォッチドッグタイマを利用してみました。
入手先:http://www.marutsu.co.jp/pc/i/170681/
データシート:
http://www.marutsu.co.jp/contents/shop/marutsu/datasheet/ADM706P_R_S_T_ADM708R_S_T_jp.pdf
データシートによると6番ピンにパルスを入力すると8番ピンがハイ・レベルになり、パルスが途絶えてから1.6秒後に8番ピンがロー・レベルになるようです。
パルスが入力されると瞬時にハイ・レベルになるのでまさにぴったりの回路です。
欠点はカレントダウン信号の発生に1.6秒の遅延が生じてしまうこと。本来なら0.1秒程度で反応してほしいのですが、時間の変更はできないようです。
世の中にはいろいろなICがあるので、今回のような使い方に適したICを知っている方がいましたら、お知らせいただけると幸いです。
ドライバの回路図
部品図を描いてみました。穴間隔2.54mmの基盤で25×15穴に収まるように配置してみました。
部品配置図
スズメッキ配線図
赤線-24V
茶色-5V
青色-0V(GND)
緑色-ショート
被覆配線図
ドライバの組立
上記に示した「部品配線図」に従って基盤の上に電子部品を乗せ、少量の半田で仮止めします。
「スズメッキ配線図」と「被覆配線図」も参考に、取り付け穴位置を確認してください。
ウォッチドッグ用の監視回路「ADM706RARZ」は表面実装のタイプしか手に入らなかったので、変換基板で2.54mmピッチに合わせて取り付けました。
監視回路の表面には丸い印があるので、変換基盤の丸印の方向と合わせて半田付けします。
変換基盤には1番ピンと向きを表す記号が印字されています。
これにより、1番から8番ピンは下の写真の通りになります。
モータードライバ「SLA7078MPRT」は足の間隔が前後で半ピッチズレているので、そのままでは基盤に挿入できません。
足を基盤間隔に合わせ、少し曲げて取り付けます。
下の写真のように18番ピンと20番ピンの間を1つ開けて取り付けるのがポイントです。
モータードライバICにはヒートシンクを取り付けるので、目測で良いので垂直に取り付けます。
次に、「スズメッキ配線図」を参照して、スズメッキ線を半田付けしていきます。
出力調整用の端子を作ります
モーターの出力は所定の電圧を測定することで計算することが出来ます。
簡単に測定できるように端子を作りました。
図の赤い端子を追加し、基板表面に端子を出しておきましょう。
モータードライバの試運転
完成したモータードライバを早速使ってみました。
3Aモーターを使うので電源は大出力タイプが必要です。
産業用の電源ユニットが12,000円程度で購入できるのでこちらを利用することにしました。
24V-300W対応のスイッチング電源ユニット「RWS300B-24」
モータードライバに電源を配線します。
写真の奥が0V,手前が24Vです。(24V電源の配線は必ず電力がOFFの状態で行います。)
また、16分割マイクロステップ駆動したいのでDIPスイッチの2番と3番をONにします。
その他の駆動モードは下の「マイクロステップ対応表」参照
マイクロステップ対応表
1 | 2 | 3 | ステップ駆動 |
OFF | OFF | OFF | フルステップ |
OFF | ON | OFF | 2分割ステップ |
OFF | OFF | ON | 4分割マイクロステップ |
ON | OFF | ON | 8分割マイクロステップ |
OFF | ON | ON | 16分割マイクロステップ |
CNCコントローラとモータードライバを接続します。(※CNCコントローラはOFFの状態で配線します。)
モータードライバの端子入力ピンの配置は右から「GND」、「DIR」、「STEP」になります。
下の写真のように適当な細ピンに導線を配線して利用するとよいでしょう。
(取付向きだけ注意してください。)
「GND」とは基準となる0V
「DIR」とは、モーターの回転方向(右回り、左回り、のこと)情報
「STEP」とはモーターの回転させるパルス情報
CNCコントローラー側にピンを配線します。
originalmindの「USBCNC CPU5A4」の基盤の場合
2番ピンがX軸STEP、3番ピンがX軸DIR、18~24番ピンがGNDになります。
オリジナル「http://www.edingcnc.com/」の「USBCNC CPU5A4」の基盤の場合
2番ピンがX軸DIR、3番ピンがX軸STEP、22番~25番ピンがGNDとなります。
※ピン配列は異なりますが、基板は同じものが使われています。originalmind社は意図的にピンの配列を変えていてあえて互換性をなくしているようです。
コネクタ対応表
ピン番号 | originalmind | http://www.edingcnc.com/ |
2番 | X_STEP | X_DIR |
3番 | X_DIR | X_STEP |
22~24 | GND | GND |
シリアルポートのピン番号はポートをよく見ると刻印されています。
写真の右上が1番ピン、右下が14番ピンです。
シリアルポートへの接続は、Dサブコネクタの2番、3番、24番ピンに導線を半田付けして接続しました。
テストなので配線類は適当です。
最後にモーターをドライバに繋ぎ、CNCコントローラーをパソコンにを配線します。
※まだスイッチング電源はOFFの状態にしてください。
24V電力をONにする前に、モーターの出力を0にします。
可変抵抗を時計回りに回転させると出力が0になります。
右側の可変抵抗はドライブ用出力調整。左側の抵抗ははカレントダウン(スリープ)の出力調整になります。
24V電源をONにします。
テスターで出力確認端子を測定してみましょう。
出力が0のはずなので、測定電圧も0Vになっているはずです。
ここで、0.5V以上の数字になっている場合、基盤の配線が間違っている可能性があります。電源をOFFにして配線を確認してください。
0.01~0.4V程度の電圧がかかっている場合は、出力調整の可変抵抗を時計回りに回して最低になっていることを確認します。もし、右側に回っているのに電圧がかかっている場合、逆向きに回してみて、それでも0.01V以下にならない場合は配線が間違っている場合があります。
正しく配線できていれば0Vになるはずです。
出力0を確認したら、CNCソフトからステッピングモーターを駆動させてみましょう。(回転速度は遅めに設定します)
当然出力が0なのでこの状態では動きません。
ドライブ出力用の可変抵抗(右側)を反時計回りに回していくと、徐々に電圧が上昇していき、ステッピングモーターも回り始めるはずです。
さらに反時計回りに回していくと、計算上0.4545Vまで電圧が上昇するはずです。
(0.5V以上になってしまった場合、配線などに問題がある可能性があります。もう一度配線を見直してください。)
私の場合、0.455Vまで上昇してしまいました。ほぼ計算通りの測定値です。
実測値0.45Vでモーターは最高出力3Aになります。0.45V以上になっていても、出力は3A以上にはなりません。
測定値からモーターのドライブ電流は下記の計算値によって求めることが出来ます
測定電圧(V) / 0.15 = ドライブ電流(A)
例) 0.45(V) / 0.15 = 3(A)
これでモーターの出力調整ができることが確かめられました。
ちなみに、放熱板を取り付けていないので、最高出力で長時間動かし続けるとICが熱で破損してしまいます。
放熱板無しで最高出力を出す場合、10秒以内を目安にしましょう。
次に、カレントダウン機能を確認します。
モーターを停止させて1.6秒以上経過すると、電圧が低下するはずです。数mV以下になれば正しく機能しています。
理論上0Vになるはずですが、実測値が6.7mVになりました。これはトランジスタのON抵抗によるものたと思います。
左側の可変抵抗を反時計回りに回すことで、停止時の出力を調整できます。
停止時の出力は、ドライブ出力の0~50%の範囲で調整できます。適正な数値は実際に加工機に取り付けて様子を見ながら調整します。
尚、今回スリープ調整用の抵抗は0~1kΩの可変抵抗を使いました。
0~5kΩの可変抵抗に変更することで、0~83%の範囲で調整できるようになります。
用途と目的に応じて改造してもよいでしょう。
コメント
なんとなく自作CNCに興味をもち、ふらっと偶然に貴殿のHPを見つけました。とても詳細に開示されていますので、勉強になります。これからも、ちょくちょくのぞき見をさせてください。
弊社のオリジナルマインドCNC HAKUのモーターが動かなくなり(3ケ全て)、いろいろ検索していたら貴殿の資料を見つけました。かなり詳しく記載されており勉強になりました。
紹介されていたドライバを製作してみましたがドライブ用可変抵抗の電圧がMAX0.05Vまでしか上がらずモーターは動こうとするが動けないようです。初期の電圧は0Vで配線も合っていますが推定される原因がございましたらご教授いただけないでしょうか。
CNCコントローラーの2pin(STEP)はPCからの操作時5Vp-pの800Hzパルスがでているようで正常と思われます。
お手数ですがよろしくお願いいたします。
推定される原因として考えられるのは部品が間違っているか、配線が間違っているくらいでしょうか。
特に可変抵抗の値は正しいでしょうか?
ご連絡ありがとうございます。ご指摘頂いた箇所を再度確認してみます。
可変抵抗は1Kを使用しており問題ないようです。
お手数かけ申し訳ありませんでした。