【上級編】Industrial Shields製M-duino(PLC)を使用したステッピングモータ制御 -arduino IDE-

Industrial Shields製のPLC、M-duinoを使用してのステッピングモータ制御を紹介します。

まず、このPLC、Industrial Shields製のM-duinoを聞いたことがあるでしょうか。
M-duinoとは、arduino IDEがベースであり、それを産業用PLCとして使用しているものです。
電子回路を製作する方はarduinoをご存知だと思います。そのarduino IDEのプログラムで記述できるということで汎用性は高いと思われます。

今回のステッピングモータを動かすという経緯としまして、私にある企業からご連絡があり、お話が進みました。それがRSコンポーネンツです。

はじめまして。RSコンポーネンツ株式会社です。
少し変わった製品があります。部材を提供するのでレビュー記事の作成を依頼させてもらないでしょうか?

お世話になります。にわかFA電気屋です。
ではステッピングモータの制御でもしてみましょうか。

というやりとりが5月くらいにあり、今回やっと記事にすることができました。新規で取り掛かったので時間が掛かりました。笑

まず、RSコンポーネンツがどのような企業かご存じでしょうか。

RSオンライン|電子部品・半導体の通販/販売サイト

RSコンポーネンツは主に電気部品の販売を行っています。
今回使用する部品のほとんどはRSコンポーネンツの支給品となっております。

これらの支給品を使用しまして、ステッピングモータを制御します。

概要は下記の動画を参考にして頂ければと思います。

youtu.be

【目次】

広告


はじめに

Mーduinoとはarduino IDEベースのPLCであり、無料プログラムを組むことができるという特徴があります。arduinoといえばステッピングモータの制御が多く行われており、今回はMーduinoでも同様なことが出来ないかという考えで進めました。

通常PLCとステッピングモータ間はステッピングモータ用ドライバがあり、PLCからの起動信号をステッピングモータ用ドライバが受け取り、ステッピングモータをドライバが動かすパルスを出力するようになっています。

理由としてはステッピングモータの制御プログラムを書く手間が省けるからが大きいかと思います。
また、トランジスタ出力の場合、電流を0.1A程度しか流すことができず、大きな容量のステッピングモータをトランジスタから制御することができなくなってしまうという点も、ドライバを設ける理由となっています。

今回はそのステッピングモータを動作させるプログラムを書き、位置制御させようというのが目的です。

ステッピングモータとは

ここまで読んでもらっておいて申し訳ありませんが、ステッピングモータをご存じでしょうか。

ステッピングモータとは、正確な位置決め運転を簡単に実現できるものです。

パルス信号によって回転角度・回転速度を正確に制御できるモーターとして、さまざまな装置に利用されています。
詳しく知りたい方はオリエンタルモータサイトをご覧頂きたいです。
www.orientalmotor.co.jp

バイポーラ駆動とユニポーラ駆動

ステッピングモータの駆動方法は2通りあります。それがバイポーラ駆動とユニポーラ駆動です。

どのような違いがあるのか説明していきたいと思います。

バイポーラ駆動

f:id:vv_6ong_3ka_cp:20180816151301j:plain:w500
f:id:vv_6ong_3ka_cp:20180816151316j:plain:w500

バイポーラ駆動ではトランジスタを8つ(2相の場合)使用します。1相の電流をトランジスタを使用して正逆させ、回転方向を制御します。

私自身ステッピングモータに詳しくないのですが、バイポーラ駆動は低速トルクが強いという特徴があるそうです。

今回はPLCより直接ステッピングモータを制御するということでしたが、PLCのトランジスタは0Vが共通となっており、バイポーラ駆動のようにトランジスタを接続することができないので、バイポーラ駆動は諦めました。笑

ユニポーラ駆動

f:id:vv_6ong_3ka_cp:20180816151331j:plain

ユニポーラ駆動は1相あたりに別々のコイルがあるので、トランジスタを別々に接続することができます。それによって、PLCのトランジスタを0Vと共通にすることができました。

今回はPLCから制御したいので、ユニポーラ駆動にします。


Point・バイポーラ駆動はユニポーラ駆動よりもトランジスタを使う。
・PLCから直接制御するならユニポーラ駆動にする。

支給部品


PLC M-duino

f:id:vv_6ong_3ka_cp:20180816113829j:plain:w300

ステッピングモータ 191-8299

f:id:vv_6ong_3ka_cp:20180816113911j:plain:w300
f:id:vv_6ong_3ka_cp:20180816113935j:plain:w300
f:id:vv_6ong_3ka_cp:20180816114057j:plain:w300

パワーサプライ UNO POWER AC100V / DC24V 100W

f:id:vv_6ong_3ka_cp:20180816114127j:plain:w300

セットアップ方法

ステッピングモータを動かすためには、

セットアップ方法1.PLCへの電源供給
2.PLCからステッピングモータへの電源供給と出力トランジスタの接続
3.PLCのプログラム設定

が必要となります。

どのようにこの手順を踏んでいくかを説明していきます。

配線例

f:id:vv_6ong_3ka_cp:20180816113849j:plain

このように配線しました。
回路図も載せます。

f:id:vv_6ong_3ka_cp:20180823053431j:plain

まずはPLCへの一次側電源DC24Vを給電します。
パワーサプライでAC100VをDC24Vにすることで、PLCへの給電は完了します。
次にPLC出力トランジスタとステッピングモータへの給電です。これはバッテリ9Vにて行います。

広告


Mーduinoセットアップ方法

f:id:vv_6ong_3ka_cp:20180818124003j:plain

上記ショートカットをデスクトップに表示することができれば終わりです。

arduino IDEインストール

f:id:vv_6ong_3ka_cp:20180818124244j:plain
Arduino - Software

インストール方法は上記サイトから簡単にできますが、詳細が載っている下記のサイトを紹介致します。

Arduino IDEインストール方法 – Windows編 – IoT Gym
IoT GYM

M-duino接続設定

f:id:vv_6ong_3ka_cp:20180818125308j:plain

今回使用するM-duinoは、ボード『Arduino Leonardo』というタイプです。
ですので、『ツール』→『ボード』で『Arduin Leonardo』を選択します。

プログラム例

f:id:vv_6ong_3ka_cp:20180816151903j:plain

まず出力ピンを設定します。
設定方法は『pinMode(??, OUTPUT);』の部分です。
これを設定しないとPLCから出力することができないので、必ず設定します。

MsTimer2をライブラリ追加

MsTimer2はもともとライブラリに入っていないものです。
ですので、ライブラリに追加し、その命令、プログラムを使えるようにします。

f:id:vv_6ong_3ka_cp:20180819124907j:plain

まずはライブラリに追加したMsTimer2を認識させます。
その方法は、まず『スケッチ』→『ライブラリをインクルード』→『ライブラリを管理』を選択します。

f:id:vv_6ong_3ka_cp:20180819124926j:plain

選択が完了したら、上記画面がポップアップしてきますので、検索で『MsTimer2』を入力して下さい。
ここで検索しても表示されない場合は、ライブラリにMsTimer2を入れられていませんので、再確認して下さい。

検索が完了したら、インストールを選択して下さい。
これでMsTimer2が使用可能になります。

ダウンロードなどの詳細は下記サイトを参考にして下さい。

arduino使い方:タイマー割り込み(MsTimer2)

Arduinoの動かせ方入門

f:id:vv_6ong_3ka_cp:20180816151916j:plain

どのようなプログラムかというと、タイマーが一定時間毎に割り込み、i=i+1を行います。
j=i÷4の余り(i%4)を計算することで、電流を与える箇所を決め、if文で出力のON、OFFを決定します。

正転回転確認

youtu.be

連続位置決め制御

正転確認が終わったので、連続で位置決めできるようにプログラムを変更します。

プログラム例

f:id:vv_6ong_3ka_cp:20180823053920j:plain

追加プログラムとして、countの数値部分で指定位置xを決定します。

x[°] ÷ 1.8[°/step]を行い、yを決定します。
※1.8°は1ステップあたりの移動量です。

yはdouble型で演算していますので、それをint型のzに直します。
zとiを比較します。比較して正転方向ならiに+1、逆転方向ならiに-1を行います。

zとiを比較して同じなら、countを増やします。このようにすることによって、連続で位置決めを自動で行うことができます。

連続位置決め制御確認

youtu.be

終わりに

今回はArduino IDEベースでプログラムを組みました。
私は大学生の時にC言語でプログラムを組んできたので、自然にプログラムを組むことができました。

普段ラダーでプログラムを組んでいる人には慣れないとかもしれませんが、参考にして見て下さい。

広告


www.niwakafa.com

www.niwakafa.com

www.niwakafa.com

www.niwakafa.com