跑出來的結果如下:
PWM : 1250 spin : 1050
PWM : 1300 spin : 1194
PWM : 1350 spin : 1304
PWM : 1400 spin : 1387
PWM : 1450 spin : 1451
PWM : 1500 spin : 1503
PWM : 1550 spin : 1544
PWM : 1600 spin : 1579
PWM : 1650 spin : 1607
PWM : 1700 spin : 1634
PWM : 1750 spin : 1654
PWM : 1800 spin : 1682
PWM : 1850 spin : 1764
PWM : 1900 spin : 1763
PWM : 1950 spin : 1764
arduino 的code 如下:
我四根馬達接在 pin 6,7,8,9....
然後光電開關接在 A3 (analog pin 3....別懷疑...它也可以當digital pin 使用)
自己選一個馬達測試或是你也可以一次測四個...這樣比較快...但是 arduino 的code要改一下
=================================================================
#include <PinChangeInt.h>
#include <Servo.h>
int Pin = A3;
int val;
#define SERVO_NUM 4
Servo MOTOR[SERVO_NUM];
#define FL_MOTOR_OUT_PIN 6
#define FR_MOTOR_OUT_PIN 7
#define BL_MOTOR_OUT_PIN 8
#define BR_MOTOR_OUT_PIN 9
unsigned int total_cnt=0;
unsigned int older_cnt=0;
void setup()
{
Serial.begin(9600); //for debugging...
pinMode(Pin, INPUT);
PCintPort::attachInterrupt(Pin, calc,RISING);
total_cnt =0;
older_cnt =0;
MOTOR[0].attach(FL_MOTOR_OUT_PIN);
MOTOR[1].attach(FR_MOTOR_OUT_PIN);
MOTOR[2].attach(BL_MOTOR_OUT_PIN);
MOTOR[3].attach(BR_MOTOR_OUT_PIN);
MOTOR[0].writeMicroseconds(1000);
MOTOR[1].writeMicroseconds(1000);
MOTOR[2].writeMicroseconds(1000);
MOTOR[3].writeMicroseconds(1000);
}
void loop()
{
int i,j,k,rpm;
k=3;
// val = digitalRead(Pin);
//Serial.println(val); // debug value
for(i=1100;i<2000;i+=50)
{
for(j=0;j<4;j++)
{
MOTOR[k].writeMicroseconds(i);
delay(500);
// Serial.println(end_time);
if((total_cnt > older_cnt) & (j==3))
{
rpm = total_cnt - older_cnt;
older_cnt = total_cnt;
Serial.print("PWM : ");
Serial.print(i);
Serial.print(" spin : ");
Serial.println(rpm);
}else
older_cnt = total_cnt;
}
}
MOTOR[k].writeMicroseconds(1000);
while(1)
{}
}
void calc()
{
total_cnt++ ;
}
想問一下馬達是哪種馬達??
回覆刪除