DCモータを動かす(PWM)

このエントリーをはてなブックマークに追加

 

 今回はDCモータを制御します。DCモータの回転速度を制御する方法はPWMとします。簡単に説明すると、電源のオンとオフを高速で切り替え、モータに流す電流を制御します。オンの時間が長ければより最高速に近づき、オフの時間が長ければゆっくり回ります。PWMの良いところは常に電圧は最大値をかけているので、高トルクを得ることができるところです。
 今回の回路では、とりあえず動かすことを目的としているため、簡単なつくりにしています。保護回路などはつけていませんので注意が必要です。

 

1.今回使用するPICについて

 今回使用するPICは「PIC12F1822」です。

 

2.回路

2.1 電子回路図

 

 

2.2 電子回路の写真

 

 

 

2.3 モータドライバ

 PICからの出力で直接モータを動かすことは出来ません。そこで使用するのがモータドライバです。PICからモータドライバに信号を送ると、モータドライバはその信号に合わせた、モータ用の出力をモータに対して行います。
 使用するモータドライバは「BD6222F HRP7」です。出力電圧は6[V]~15[V]なので、モータはその範囲内のものを使用してください。
 今回は諸事情により3[V]用のモータを使用しています。真似はしないでください。「BD6212」の2[A]バージョンを使用すれば問題ありません。

 

2.4 回路説明

2.4.1 PIC
  • 電源:5[V]
  • RA2:FIN(モータドライバ)
  • RA5:RIN(モータドライバ)
2.4.2 モータドライバ
  • 電源:7.2[V](ニッケル水素電池6本)
  • FIN:RA2(PIC)
  • RIN:RA5(PIC)
  • OUT1:モータ
  • OUT2:モータ
2.4.3 電源

 PIC用の電源とモータ用の電源は分けています。

  • PIC用はニッケル水素充電池を4本直列に接続し使用
  • モータ用はニッケル水素充電池を6本直列に接続し使用

     

 

2.5 回路についての注意

 動作させるときは、PICkit3を外すこと。

 

3.プログラム

 DCモータを制御するプログラムについて説明します。

 

3.1 初期設定

 今までと同じように以下のように設定します。

 

3.2 PWM設定

 

 RA2をPWM出力にします。(1をセットするとRA5を出力に設定します)
CCP1SEL = 0;

 PWMモードに設定する。
bit6-7:P1M:00:シングル出力(Bit2-3が11なので)
bit0-3:CCP1M:1100:PWMモード
CCP1CON = 0b00001100;

 TMR2プリスケーラ値を1/4に設定する。
bit0-1:T2CKPS:01:プリスケーラ値 4
T2CON = 0b00000001;

 初期化する。
CCPR1L = 0;
CCPR1H = 0;
TMR2 = 0;

 PWMの周期を20[kHz]に設定する。
PWMの周期 = (PR2 + 1) × 4 × 1 / 32000000 × 4
1/20000 = (PR2 + 1) × 4 × 1 / 32000000 × 4
PR2 = 1 / (4 × 1 / 32000000 × 4 × 20000) – 1
PR2 = 99

 CCP1Mで指定した極性に従って、PWMの波形を出力する
STR1A = 0;

 

3.3 PWM出力する

 

 モータドライバにつながっている、RA2とRA5にPWM出力を行い速度制御を行います。正転と逆転は回路の作り方により変わってしまうので、配線後確認してください。
 今回のプログラムでは、RA2を正転(デューティ比:プラス)、RA5を逆転(デューティ比:マイナス)としています。

 

3.3.1 RA2にPWM出力

 RA2にPWM出力を行う場合、以下の設定をします。
STR1A = 1;
CCP1SEL = 0;
 ステアリングレジスタ設定をオンにし、PWMの波形を生成します。RA2に出力するため、CCP1SELに0を設定。最後に、デューティ比を設定します。とりあえず早すぎない程度の15%にします。
CCPR1L = 15;
 以上でRA2にPWM出力を行えます。

 

3.3.2 RA5にPWM出力

 基本的にRA2に出力するのと同じです。違いは以下のCCP1SELに1を設定するところです。
CCP1SEL = 1;

 

3.3.3 停止

 PWM出力を停止させるには、STR1Aとデューティ比を0に設定します。
STR1A = 0;
CCPR1L = 0;

 

3.4 補足

 今回、モータドライバの出力が6[V]なのに、DCモータが3[V]用です。デューティ比を低めに設定することで、出力を3[V]程度にしています(テスターで計測)。ただ、あくまで出力の平均が3[V]で、最大では6[V]が流れています。10分程度連続運転しても発熱などなく使用できましたが、本来このような使い方は間違っているので壊れてしまったり、事故が発生する可能性があります。正しいパーツを選択して使用してください。

 

3.5 ソースコード

 プログラムの全文を掲載します。

  プログラム

<注意>
本サイトの注意事項を確認してください。
ソースコードや回路図などを使用する場合、上記注意とともに、自己責任でお願いします。

    

 

4.動作確認

 PICとPICkit3を外します。壊れる可能性があるので、必ず取り外してください。電源を入れて下さい。するとDCモータが回転を始めます。少し経つと回転速度が速くなりその後停止します。停止後、逆回転します。
 以下の動画が実際の動きです。プローブが1つしかないため、反転時のオシロスコープは変化しません。

 

<更新履歴>

新規作成:2015年5月10日
第2版:2016年10月3日:フォーマット変更と章番号間違いを修正

 

 

DCモータを動かす(PWM)」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)