• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

だれす@ずら。のブログ一覧

2016年01月25日 イイね!

モーターを回そう

モーターを回そう昨日から3連休です。

連休だけど特に予定もありません。
昨日は映画行っただけです・・・外出すると余計な金使うから引篭もってます(ぉ

そんな感じで、今日は自宅にこもってArduinoを使った研究&実験な感じです。
今回はステッピングモーターを動作させる回路に挑戦。

最終目標はホップアップモニターの作成なので、モーター駆動の原理をある程度把握しておけば、実機にするときに参考になるだろうということです。

で、今回使うのが「28BJY-48」ってステッピングモーター。

大体、「ULN2003AN」ってトランジスタアレイってICを使ったドライブ回路基盤がついてます。

Arduinoをつかった28BYJの動作回路をググったら、こちらのサイトにありました。

ステッピングモーターの動作原理とかは、こちらを参照しました。2-2相励磁ってパルス駆動をつかってみました。消費電力は上がるけど、トルクが増大するらしい。

Fritzingって基盤イラストを作成できるツールを使ってみました。

ただ、うちの環境だと、最新のバージョン0.9.2bが動作しなかったので、0.8.7bのバージョンを使用してます。なぜだろう?・・・VisualStudioのライブラリがコンフリクトしてんだっぺか?

とりあえず、Fritzingってこういう図をスケッチするのに便利。


回路図で言うとこんな感じ。
スイッチに抵抗を使ってデジタル入力をするのですが、これはプルアップ抵抗って呼ばれる方式で、
スイッチがOFFの場合、入力に5V(HIGH)が入力されています。
スイッチがONの場合、入力に0V(LOW)が入力されます。
抵抗を入れていないで単純にスイッチでON/OFFさせると、ショートする事になるので、デジタル回路には良く使われます。



実際はこんな状態ですけどね(ぉ


動作が判り易いように、ステッピングモーターにチノちゃんを乗せてみました(ぇ


2ボタンで、ボタンを押すと、正転・逆転をする単純な仕組みです。
ステッピングモーターだから、本当は角度指定で回したりが出来るはずだけど、今回は練習って事で、単純に回すだけのプログラム(スケッチ)です。



===サンプルスケッチ=================================================
int motorPin1 = 8; // Blue - 28BYJ48 pin 1
int motorPin2 = 9; // Pink - 28BYJ48 pin 2
int motorPin3 = 10; // Yellow - 28BYJ48 pin 3
int motorPin4 = 11; // Orange - 28BYJ48 pin 4
// Red - 28BYJ48 pin 5 (VCC)

int motorSpeed = 800; //速度。数値が小さいほど速くなる。800以下は脱調して動かない
int lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};
// 2-2相励磁のデジタル出力アドレス。

void setup() {
//declare the motor pins as outputs
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
Serial.begin(9600);
}

void loop(){
if(digitalRead(2)==LOW){   //入力スイッチ(2番ピン)が押される
clockwise();          //時計回り関数へ
}
else if (digitalRead(3)==LOW){ //入力スイッチ(3番ピン)が押される
anticlockwise();         //反時計回り関数へ
}

}

//////////////////////////////////////////////////////////////////////////////

void anticlockwise() //反時計回り関数
{
for(int i = 0; i < 8; i++) //加算ループ
{
setOutput(i);      //数値を関数に渡す
delayMicroseconds(motorSpeed);
}
}

void clockwise() //時計回り関数
{
for(int i = 7; i >= 0; i--) //減算ループ
{
setOutput(i);   //数値を関数に渡す
delayMicroseconds(motorSpeed);
}
}

void setOutput(int out)  //2-2相励磁出力関数
{
digitalWrite(motorPin1, bitRead(lookup[out], 0));  
digitalWrite(motorPin2, bitRead(lookup[out], 1));
digitalWrite(motorPin3, bitRead(lookup[out], 2));
digitalWrite(motorPin4, bitRead(lookup[out], 3));

// int lookup[8]で設定したアドレス出力を選択

}

=============================================================

まぁ、こんな感じです。
・・・いまいち参考にならないなぁ・・・

C言語自体、久しぶりだから、関数とかメソッドとか色々悩みつつ、解読しつつソースを書いてみましたが、 まだまだ詰められそうな感じ。

ただ、実際にはステッピングモーターを使うか、普通の単相モーターの、ウォームギヤを使ってトルクを稼ぐかは今のところ未定ですが、サーボモーターはちょっと違う気がする。
ウォームギヤってのはこんなやつです。

田宮さんから工作キットで出てます。
速度とトルクを得るにはこれが最適のような気がします。
そうなると、モータードライバICとか使って勉強する必要があるかなぁ?
TA7291Pとか・・・
これ使うと、正転・逆転・ストップ・ブレーキの制御が3chで出来るようになる。
DCモーターを使うなら、やっぱりこれかなぁ・・・

Arduinoで色々電子工作の幅が広がる感じが楽しいです♪
車いじり+マイコンはDIYの可能性が広がります・・・たぶん(ぇ

エーモン工業で満足できないって人向けですけどねw



Posted at 2016/01/25 21:21:10 | トラックバック(0) | Arduino | 日記

プロフィール

「禁断の果実(りんご)の誘惑 http://cvw.jp/b/2036390/44515607/
何シテル?   10/28 00:21
放置プレイ実施中 ぼちぼち復帰します。 改名しました。
みんカラ新規会員登録

ユーザー内検索

<< 2016/1 >>

     12
345 678 9
10111213 141516
17181920212223
24 25 26272829 30
31      

リンク・クリップ

プッシュスタートスイッチ 
カテゴリ:その他(カテゴリ未設定)
2021/02/06 22:50:27
オートパーラー上尾 コンビーフサンドはここだけ 
カテゴリ:その他(カテゴリ未設定)
2017/12/17 20:49:21
オートレストラン 鉄剣タロー レトロ自販機の牙城@サイタマー 
カテゴリ:その他(カテゴリ未設定)
2017/12/17 20:49:16

愛車一覧

スズキ スペーシアカスタムハイブリッド スズキ スペーシアカスタムハイブリッド
パレットがポンコツ過ぎて買い替える予定でしたが、事故って直すのも勿体ないと、前倒しで買い ...
スズキ パレット スズキ パレット
パレットに乗り換えました。 憧れだった軽です(ぇ ・乗り降りがしやすい ・頭がぶつから ...
日産 シルビア 苺たん (日産 シルビア)
S15シルビアを新車で乗って19年・・・ 当時周りが180SXやらS14やらに乗って ...
ヘルプ利用規約サイトマップ
© LY Corporation