×

らずらいと姫の挑戦日記(第56回)~モータを動かそう②~

2019-05-22

前回はボリュームの変化を読み取ることを行いました。

前回に引き続きモータを動かすのに

1.ボリュームの変化を読み取る
2.ボリュームの値をモータの角度に使用する
3.2.で使用したプログラムに複数の仕事をさせるとおかしくなる…

という3回の流れで行っていきます。前回はボリュームの変化を読み取りましたが、その変化の値を使用して今回はモータの角度を調整したいと思います。

 

ボリュームの値をモータの角度に使用する

サーボモータは角度を維持するモータですが、角度を維持するのにパルス幅を使用しています。今回使用するサーボモータは900μsから2100μsまでのパルス幅で120°ほどの角度を調整できるみたいです。これをもとにボリュームの変化を読み取った値で実際に動かしてみたいと思います。

 

その前に前回組み立てを行ったものにモータを加えたいと思います。

写真

Lazurite SubGHz サーボモータ
5V
GND
8

 

上の表の通りに組み立てると下の写真のようになります。

 

 

モータを動かすためのプログラムの作成

モータをLazurit Sub-Ghzにつけ加えたところでモータを動かすためのプログラムを書いてみます。

プログラムを書くにあたり最初にLazurit Sub-Ghz の8を出力に設定し、出力の初期設定を行います。動作はA0で読んだ電圧値を900から2100までの数値に変換し、変換した数値分の時間 HIGHを出力するというプログラムを作りました。

ここで書いたプログラムは以下になります。


#include "volim_read_ide.h" // Additional Header

void setup() {
// put your setup code here, to run once:

pinMode(8,OUTPUT); //8を出力に設定
digitalWrite(8,LOW);   //出力の初期設定

}
void loop() {
int volt;
int servo;
volt = analogRead(A0);

servo = map(volt,0,1023,900,2100);

//A0で読み込んだ電圧値0から1023の値の範囲を900から2100の値の範囲に変更

digitalWrite(8,HIGH);//パルス波
delayMicroseconds(servo);//パルス幅
digitalWrite(8,LOW);//電源off

delay(10);
// put your main code here, to run repeatedly:

}

このプログラムをマイコンに書き込みます。

私が動かしてみると…ボリュームを使用してサーボモータを動かすことができましたが、使用には120°と書いてあるのですが90°くらいしか動いていないように見えます。

モータの可動域の確認

120°まで動くなら動かしてみたいと思ったので,A0で読み込んだ電圧値0から1023の値の範囲を0μsから4000μsの値の範囲に大幅に変更してみました。ボリュームで動かすと下の写真のようになりました。

動く角度が200°ぐらいまで広くなりました。しかし、520μs以下と2700μs以上にすると嫌な音が聞こえそれ以上動かなくなるようです。

私の感覚では550μsから2700μsの範囲が180°ぐらい回転してくれてよさそうですが、動作速度や角度を維持するための力(トルク)は仕様外になると思いますのでご自身の責任でご使用ください。

 

無事、今回はボリュームの変化でサーボモータを連動させることができました。最後まで読んで頂きありがとうございました〜☆