簡単・ブラシレスモータの駆動制御
Brushless Motor Controller
2008年6月25〜27日に東京ビックサイトで開催されていた「第12回 機械要素技術展」で「日本電産コパル梶v社さんが出展されていた「 ブラシレスモータ」が私の目にとまり、モータ駆動回路がモータ内部に内蔵されいて、ロジックレベルで駆動するだけと言う、非常に簡単なモータに感動し、「これはすぐに入手して実験したい」と早速、私の家の近くに(たまたまです! え(゚○゚)!)代理店さんがおられたことを思い出し、注文して入手しました。・・・・ところが忙しさのあまり何もしないまま1年経ってしまいました・・・情けない! ?c(゚.゚*)エート。。。 今回やっと手が付けられるようになったのでご報告申し上げます。
2021年1月現在・・・その昔はコパル電子鰍ニ言う会社があり、このモータはそこで開発されたモータでしたが、会社が日本電産鰍ノ吸収され、今は「日本電産コパル梶vと言う社名に変わっています。
今回の「22H055C030」のモータは製品リストから除外されていて、入手できるかは不明です。直接、日本電産コパルと言う会社、または代理店等に問い合わせてください。ちなみに「日本電産コパル梶vに掲載されていたブラシレスモータはこちらです。
https://www.nidec-copal-electronics.com/j/product/list/015001/#
当時、使用したモータは右写真のもので型式が22H055C030と言うものです。値段は3,500〜4,000円
くらいだったと記憶しています。今ではネット上からも入手できるようです。 駆動電源は
DC8V〜15V、定格回転数は5300rpm・・・あとの仕様は上記のサイトを参照してください。
注目したいのは回転信号としFG出力信号があり、1回転に6パルスのデジタル出力信号が
あります。これを使って回転数の安定化制御できそうなので早速作り上げたいと思います。
駆動の基本はPWM制御です。駆動周波数は推奨値として15kHz〜25kHzとされています。
これであれば8ビット系のマイコンのPICで制御できそうです。
ソフトウェアのコーティング前に動作概要を申し上げます。先ほど、基本駆動は「PWM」と言いました。これは変わりありません。
と言うかそれしかないですね! ヽ(´〜`; ォィォィ
回転数を設定して、その通りの回転をさせるのにフィードバック信号が必要になります。それが先ほど申し上げました「FG出力信号」(
エンコーダパルス信号)です。この信号の周期を読み取り、回転数を計算しLCDに表示させます。
回転数の安定化制御は、読み取った回転数と設定した回転数を比較して、PWMのデューティーを可変させます。
従ってマイコンに必要なものはPWM機能と周期を読み取るキャプチャ-機能の2つの機能が内蔵されたものになります。私の手元にそれらしいものとして、PIC16F866-I/SPがあり、
2つのCCPを持っているのでこれを使うことにします。
ケースにしっかり入れてから報告しようと思ったのですが、なぜか「ノリ」気がなく、ブレードボードでの実験報告となりました。 (*_ _)人ゴメンナサイ 実験風景を下記に示します。
相変わらず汚い風景ですがご容赦を! ヾ(^-^;) ゴメンゴメン
ざっと見て、お分かりかと思いますが、ブレードボードに赤い
押釦がありますが、
これがスタートスイッチです。回転方向
決めるスイッチがありませんが、ブレードボードにしっくり入ら
ないので、配線変更レベルで対処しました。
もう一つの操作スイッチ部は上記左の写真のもので、下にある黒い二つの押釦は、左が回転途中で停止させるスイッチです。このスイッチは例えばメカ的にトルク検出をした時のセンサー信号を割り当てるなどして、
モータを停止させる時に役に立ちます。右のスイッチは、回転数設定時の編集(EDIT)スイッチです。モータが停止している時でないと動作しません。
中央にある小さな4つの押釦は、数値変更の編集時の桁移動や数値の上下などに使いますが、運転中は赤(上)と黒(下)のスイッチが有効になり、上または下のスイッチを1回押すたびに、回転数が100rpm可変
させることができます。
モータのシャフトには回転数を計測するためのジョイントと、それに黒いビニールテープを数回巻き付け、アルミホイールを5cm角に切ったものを両面テープで、回転計の反射センサー用に貼り付けています。
ソフトウェアーをコーティングするにはいくつかの要点がありますが、ここでは私の備忘録としての情報を載せておきます。
まず、PWMの周波数を決めるには、データシートやWeb情報、文献1などから・・・
デューティー比 = t-H / t
※ 周期およびパルス幅の式は、データシートやWebサイト、文献1などから確認できます。
※ Tosc=CLOCK・・・内蔵であればメインCLOCK値、外付けであれば水晶などのCLOCK値
CCS-CではPWMを動作させるために以下の関数が用意されていて、簡単に設定が行なえます。
setup_ccp1(ccp_PWM); @
・・・・・
setup_timer_2(T2_DIV_BY_prescaler,period,postscaler); A
・・・・・
setup_pwm1_duty(duty); B
例えば今回は駆動周波数を25kHzと決めました(カタログより)。その時のAの「prescaler」と「period」は次の様に算出します。
メインクロックは回路図から外ずけに16MHzのクロックモジュールで供給しています。これより・・・
priod = TMR2のプリスケーラ値
Tosc = メインCLOCK
t = 1/駆動周波数
TMR2のプリスケーラ値は、「1、4、16」から選択できますが、今「 1」を選択します。この時のTMR2の「period」は、上記の式より
従って・・・
setup_timer_2(T2_DIV_BY_1,159,1); と記述すれば、
25kHzの周期がCCP1の端子から出力されます。
なお、「postscaler」はPWMでは使わないので、必ず「1」に設定しておいて下さい、
次に、パルス幅(t-H)について、算出します。計算式は上記に出ているので、数値を当てはめてみます。
なお、CCPxCON<5:4>については、説明が長くなりますので、下記のサイトを参照してください。
http://www.kimurass.co.jp/pic/1025.htm
http://hobby_elec.piclist.com/pic7_4.htm#1
デューティー100%のときのCCPR1Lの値は下記計算では「640」になりますが、100%であれば直流になり、
今回のモータ制御には使えなくなりますので、639以下で使うことにします。
上の式より、(40us×1)/(1/16MHz)=640
従って、例えば99%のデューティにするには・・・
setup_pwm1_duty(633); と記述すれば、
パルス幅(t-H)は、40us×0.99=39.6usとなります。
これらの設定を行うには、いくつかの注意点があります。
このページを作成したのが6月16日、実は本業が忙しくなって止めていました。ちょっと時間が出来たのでマイコン部をユニバーサル基板で組立たの後、ケースに入れてみました。 下にその外観を示します。右側は動作のための接続写真です。
右側の写真では水色のケーブルがあります。これは片端D-SUB9Pinコネクタで、その反対側はRJ-45の8極になったちょっと変わったケーブルを使っています。
このケーブルは秋葉原のジャンク屋で1本100円で売っていたので、つい買ってしまったのはいいけれど、手持ちがなかったことと、使い道がなかったので今回採用しました。おかげでRJ-45側の方は、
変換基板が必要になり、結果的にはあまり安くなっていないことになりました。 「(゚ペ)ありゃ?
また右下にある基板は「中継基板」です。ここにはモータ用電源端子(3Pin)とモータ接続端子(6Pin)、RJ-45変換基板端子(8Pin)、モータからの
信号チェック端子(5Pin)、そしてDC+5V電源回路(使っていませんが)が載っています。
一方回路図でお分かりかと思いますが、このシステムには二つの電源を使っています。コントローラ側(上左写真の分)にはDC+5Vが要り、モータ側にはDC+12V(実際はDC8〜15V)が必要になります。
二つの電源を用意しても良いのですが、たまたま手持ちに未開封のUSB-IDE変換の箱があり、そこに添付されていた電源が+5V/2Aと+12V/2Aと言う都合の電源だったので、それを使うことにしました。コネクタはハードディスクやCD-ROMドライブの後方で差し込む従来の
4Pinコネクタのメスと反対側にはFDD用の4PInコネクタのオスが2本付いた分技ケーブルを使いました。
FDD用の1本は中継基板のモータ電源端子のピンヘッダーに直接差し込みました(電圧と極性に注意します)。もう1本は、3Pinヘッダーとφ2.1のDCプラグの変換ケーブルを作り、上左写真の
+5V電源入力端子に接続しました。
@ DC5V/DC12V電源 | A 分技ケーブル | B 3Pin:φ2.1プラグケーブル | C 3Pinヘッダ-との接続 |
D 中継基板 | E RJ-45-8Pin変換基板 | F 中継基板にコネクタ接続 | G コントローラー側接続 |
上記のFの中継基板に赤い小さなタクトスイッチが1個載っています。 これは外部ストップスイッチで、このスイッチが押されると、 回転中のモータは瞬時に停止します。 |
↑ 左から、全体操作表示面、回転数を設定するジョグスイッチとモータ回転RUN/STOPスイッチ、回転方向を切り替える CW/CCWスイッチと一番右端のスイッチが電源スイッチです。一番右の写真は、電源ON後の表示画面です。
運転と操作初期の回転数は「1,000rpm」になっています。この決め方は手抜きです。ヾ(~∇~;) コレコレ 本来であるなら電源OFF直前の設定回転数をEEP-ROMに記憶させて呼び出すのがプロですが、 手抜きしました。RUN/STOPスイッチを押すと左写真の様にLEDが緑色に点灯し、設定された回転方向と回転数でモータはまわりだします。モータ軸は若干ですがスロースタートさせています。 設定回転数になれば同時に現在の回転数も同時に表示します。この数値はFG出力信号から読み取って演算して表示しています。RUN/STOPスイッチを離すと、LEDは消灯し、モータは停止します。
回転方向を切り替えるスイッチを操作すると左写真の様に「CW」または「CCW」と表示切り替わります。 もし、運転中にこのスイッチを操作すると、モータは瞬時に停止し、変更された回転方向になって再び回り始めます。この操作は本来であるなら禁止事項で、マイコン側で約0.3秒ほど停止させています。
ジョグスイッチの中央を1回押すと、回転数を編集するモードになり左写真の様になり、一番右の桁がブリンクします。 左右の矢印キーを使い、変更したい桁に移動させ、上下の矢印キーで数値を変更します。現行のプログラムは、「1〜9999rpm」の設定が行えます。 モータの仕様に合わせた範囲で設定を行って下さい。コントローラはこの辺りは自由度を優先して考慮していません。最後にもう一度中央のスイッチを一回押して設定完了です。なお、この編集モードは、モータが停止している時でないとできません。
モータの回転中に、ジョグスイッチの上下スイッチを操作することにより、100rpmステップで回転数を変えることができます。
ある意味便利な機能です。但し、下限値は100rpmまでで、上限値は9900rpmまでです。一回の変更都度、モータは
スロースタートから始まりますので、高速回転になれば少し違和感があるかもしれません。
このモータの場合、モータ電圧12V時では5200rpmあたりが上限値の様ですが、モータ電圧を上限の15V付近まであげれば、6,000rpm
位まで上がると思われますが、やっていません。ヾ(~∇~;) コレコレ
モータの回転中に中継基板にある赤いスイッチ「EXT-STOP」を押すと、モータは瞬時に停止し、上写真の様に 橙色のLEDが点灯します。この信号は緊急停止やセンサー検出などの信号を使って入れてやれば面白い動作が期待できます。
ちなみに今回のモータの場合、モータ電圧12Vで、最低回転数はおよそ500rpmくらいが実用範囲だと思われます。
コントローラー側ではモータのFG信号を読み取り、設定回転数を表示すると同時に、万一、モータ軸に負荷が掛かり回転数が低下すると、PWMの幅を変えて 、回転数を上げる制御をします。つまり設定回転数になるよう制御されます。
軸の回転数を計測最後に2009年5月25日に掲載した回転計を用いて、モータ軸の回転数を計測したデータを載せておきます。
↑左側が本器(ボード実験中)で、「999.0prm」と表示しています。右側が回転計が示す値で、「 997.02rpm」と表示しています。設定回転数は1,000prmです。 |
|
↑左側が本器(ボード実験中)で、「2993.5prm」と表示しています。右側が回転計が示す値で、「 2992.07rpm」と表示しています。設定回転数は3,000prmです。 |
|
↑左側が本器(ボード実験中)で、「4986.8prm」と表示しています。右側が回転計が示す値で、「 4989.70rpm」と表示しています。設定回転数は5,000prmです。 |
課題であったジョグスイッチのノブ部の取り付けは、スイッチのわずかな突起部にM1.7mmのタップを立てることに成功し、
φ5mmの透明アクリル棒にM1.7×3.5mmの皿ネジが入るよう、ザグリ加工をして取り付けます。慣れるとタップ空けは失敗することなくうまく空きます。何個かやりましたが失敗はありませんでした。取り付け時はねじロックを施した方がいいでしょう。
詳細については別の機会に紹介します。
やっぱりケースに入れると見栄えしますね!!結構面倒ですが、ワンパターンなので、出来るだけケースに入れるようにしたいと思います。
今回使った日本電産コパル社のモータは、もう少し回転数の高いものがあったので、機会があればこちらも入手して実験してみたいと思います。コパル社さん、いいものをありがとうございました!<(_ _*)> アリガトォ!・・・
このモータは何に使おうかな?