PICによるモーター制御

研究テーマ
PICによるモーター制御
≪目的≫
・ステッピングモーターの制御と特性を知る
・メトロノームの作成
≪作業内容≫
1.ステッピングモーターの特性
スイッチ操作で回して見る
スイッチを左から順に1つずつ押します。
X→Y→X¯→Y¯
これを繰り返すと、
X→Y→X¯→Y¯ →X→Y→X¯→Y¯ ・・・
少しずつ回転しました。
逆から押すと、逆転しました。
このように、1つずつ励磁する方法を1相励磁
といいます。
次に、スイッチを2つずつ押して見ます。
表にすると右のようになります。
1が押す、0が押さない状態です。
このように、2つのコイルを順に励磁する方法を
2相励磁と呼びます。
順番
X
Y
X
Y
1
1
1
0
0
2
0
1
1
0
3
0
0
1
1
4
1
0
0
1
1相励磁よりも、2相励磁のほうがトルクが強いです。
2.PIC で制御
いよいよPICでステッピングモータを制御します。
回路図は以下の通りです。
FETのゲートを、スイッチの代わりにPICのRB4~7に接続します。
PICのRB4~7が今までのスイッチ代わりになると言うことです。
逆に、スイッチは今までとは役割が異なり、PICに指示を与えるために使います。
3.プログラム
メトロノームはテンポを確実に刻む物なので、BPM に応じて PIC へのプログラムを
変えて、BPM を変えます。
具体的には、パルスを送る間に入れる、ディレイ(休み時間)を設定していきます。
例えば、BPM60 の場合
1 秒間に1テンポ刻みます。1 テンポ1秒
4 パルスで 1 ループ。端っこまで 10 ループ必要なので
1/4=0.25 秒 これを 1 秒間に10ループさせたいのでさらに 0.25/10=0.025 秒
μ秒に変えて 25000μ秒 これを設定し PIC に書き込みます。
それに加えて左右に交互に動くため、カウントもプログラムで利用しループをかけます。
実際のプログラムの一部↓
while(1){
while(k<10){
PORTB=0b11001100;
__delay_us(25000);
PORTB=0b01100110;
__delay_us(25000);
PORTB=0b00110011;
__delay_us(25000);
PORTB=0b10011001;
__delay_us(0.025);
k++;
}
while(k<20){
PORTB=0b00110011;
__delay_us(25000);
PORTB=0b01100110;
__delay_us(25000);
PORTB=0b11001100;
__delay_us(25000);
PORTB=0b10011001;
__delay_us(i);
k++;
さらに IF 文などを追加すると、スイッチを押すことで、
BPM を変えたりすることができます。
*感想*
最初は何をするかもあやふやなまま、ひたすら実験を繰り返す事から始まった
課題研究でした。
メトロノームを作ると決まった(決めれた?)のも 2 学期の最後で、
時間が迫られながらも、無事メトロノームを完成できてよかったと思います。
計画することの大切さ、モノづくりの大変さ、失敗したときの対処、など
たくさんのことが学べる事ができた課題研究でした。
この課題研究が将来の自分に活かしていければいいな、と考えます。