質問です。
Arduinoにて、
現状;
////モーターの回転回数を測定するのに、近接センサーを用いてデジタル2ピンに入力している。
シリアルモニターで回転回数を確認している。
一応必要電圧出るのでHIGHにはなり外部入力割り込みとして検知できているが、アナログ信号なので読み込みカウントが正しくできず、 500prm 以上でカウントが早くなってしまう。(prmは外部装置で計測しているので信頼と仮定しています)
やりたいこと;
//モーターの回転回数を測定するのに、近接センサーを用いてアナログ0ピンに入力します。
//その信号をコンパレートして、1回転毎にデジタル2ピンをHIGHにしたいです。
//正確にカウントしたい。
質問;
A/Dコンバータを使うか、コンパレータを使うかで、今回はモーターの速度を1000prmまで上げたいので、コンパレータを使いたいのですが、調べてもいまいちやり方がわかりません。
有効なライブラリと理解が簡単なスケッチがありますでしょうか。
#include<LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2);//LCD情報 #include <Stepper.h> Stepper myStepper(200, 8, 9, 10, 11);//X軸モーター #include<Wire.h> volatile unsigned int count=0;//割り込み初期値 void setup(){//一度だけ実行 Serial.begin(9600); pinMode(2, INPUT); //割り込みピン attachInterrupt(0, count_pulse, RISING);//外部入力割り込み(2ピン、関数、HIGHでオン) lcd.init(); // LCDの初期化 lcd.backlight(); // LCDバックライトの点灯 lcd.setCursor(0, 0); // LCD1行目指定 lcd.print("turn 8000"); // 文字の表示 lcd.setCursor(0, 1); // LCD2行目指定 lcd.print("Moveing..."); // 文字の表示 rot1(); myStepper.setSpeed(150);//X軸動作速度 MAX150 //DCモーター pinMode(3, OUTPUT);//速度 pinMode(4, OUTPUT);//DC out pinMode(5, OUTPUT);//DC out myStepper.step(-150);//最初に右に動く delay(20); } void rot1(){//DCモーター制御 正転(反転させる場合はHIGH/LOWを逆に) analogWrite(3,80); //DCパワー 70/prm1170 digitalWrite(4, HIGH); digitalWrite(5, LOW); } void rot2(){//X軸制御 myStepper.step(300);//最初に右に動く delay(20); myStepper.step(-300); delay(20); } void loop(){ rot2(); while(count > 8000){//規定countでDCモーターを動作ストップさせループエンド analogWrite(3, 0); digitalWrite(4, LOW); digitalWrite(5, LOW); lcd.setCursor(0, 1); // LCD2行目指定 lcd.print("Finished !!"); // 文字の表示 exit(0); } } void count_pulse(){ count=count+1; Serial.print("Count___"); Serial.println(count); }
回答2件
あなたの回答
tips
プレビュー