らいふぷろせす

たまーに、できごときろく

9月29日(土)のつぶやき

2018-09-30 04:56:20 | 備忘録
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Arduino でステッピングモーターを回す #2 A4988

2018-09-29 14:46:50 | Arduino

最近、ステッピングモーターにはまってます。
前回は、L293Dを使ったシールドでステッピングモーターを回しました。
今回は、A4988 を使ったモジュールを使用してみます。

A4988モジュール、Arduino UNO、ステッピングモーターの接続は以下のとおり。

DIR は Arduino D4 へ。
STEP は Arduino D5 へ。
ENABLE は Ardino D6 へ。
RESET と SLEEP は短絡。
MS1、MS2、MS3は GND でモードは[フルステップ]です。
モーター電圧は8V~10Vで実験してみました。

実際に動作させてみた様子。

Arduino でステッピングモータを回す #2

可変抵抗でモーター回転数を簡単に変更できるようにしてみました。
スケッチは以下のとおり。

int x;

void setup() {
Serial.begin(9600);
pinMode(6,OUTPUT); //ピンモードの設定
pinMode(5,OUTPUT); //ピンモードの設定
pinMode(4,OUTPUT); //ピンモードの設定

digitalWrite(6,LOW); //動作ENABLE 
digitalWrite(4,HIGH); //回転方向

void loop() {

int Value = analogRead(A0);//アナログ値取得
Value = map(Value,0,1023,50,1000);取得したアナログ値を50~1000の間でマッピング
Serial.println(Value);
for(x = 0; x < 500; x++) //500パルスごとに区切る
{
digitalWrite(5,HIGH);
delayMicroseconds(Value);
digitalWrite(5,LOW);
delayMicroseconds(Value);
}

}

 

スケッチの delayMicroseconds(Value) の値が180位で脱調して急停止(^^;)
モーター電圧をあげることで停止する回転数を上げられることを確認できました。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

田んぼの様子

2018-09-28 16:32:21 | 水稲
明日、稲刈り予定...けど、天気の方が...


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

9月24日(月)のつぶやき

2018-09-25 04:48:04 | 備忘録
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Arduino でステッピングモータを回す L293D

2018-09-23 21:54:50 | Arduino

Adafruiteのパチもんモーターシールドを使ってステッピングモーターをまわしてみました。
本家はこちらで、同じlibraryが使用できます。
driver ic は L293D を使っています。
ステッピングモーターは秋月電子で購入したこれです。
モーター電圧やら、icの発熱やら、信号周波数によるモーターの脱調やらで結構、条件はシビアな印象でした。
スケッチはド素人ですが、なんとか自分のイメージした回転をさせることができました。
もしよろしければどなたかダメ出しをお願いします(^^;)

 

--- Arduino スケッチ ---

#include <AFMotor.h>
AF_Stepper motor(200, 2);

void setup() {

}

float i;
double j=2.5;
void loop() {
for (i=0; i<10; i++) {
int value =i *i;
motor.setSpeed(value*j);
motor.step(value, FORWARD, DOUBLE);
}

for (i=10; i!=0; i--) {
int value =i *i;
//Serial.println(value);
motor.setSpeed(value*j);
motor.step(value, FORWARD, DOUBLE);
}

for (i=0; i<10; i++) {
int value =i *i;
motor.setSpeed(value*j);
motor.step(value, BACKWARD, DOUBLE);
}

for (i=10; i!=0; i--) {
int value =i *i;
motor.setSpeed(value*j);
motor.step(value, BACKWARD, DOUBLE);
}

}

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする