目录
采用共阳极极限方式。
如果所示拨码开关S1、S2、S3对应脉冲数设置。S1设置ON、S2和S3设置OFF,对应800。电机转一圈脉冲:800*2=1600。
修改脉冲周期时间,即可改变旋转速度。具体见程序。
控制器上电以后,电机正转一圈、等待一秒,反转一圈、等待一秒。如此一直循环运行。
#define Puls 7 //脉冲位为引脚7
#define Dir 6 //方向位为引脚6(高电平正转、低电平反转)
#define Ena 10 //使能位为引脚10。(低电平电机禁止运动,高电平电机有效)
#define bushu 1600 //脉冲步数 1600个脉冲转一圈()
const int pulsTime=1000; //脉冲高低电平时间(延时大转速降低)
void setup()
{
//
Serial.begin(9600);
//
pinMode(Puls, OUTPUT);
pinMode(Dir, OUTPUT);
pinMode(Ena, OUTPUT);
//
digitalWrite(Ena, HIGH);
}
void loop()
{
//正转
//使电机向特定方向运动
Serial.println("Forward Begins");
digitalWrite(Dir, HIGH);//方向引脚高电位,正转
// 正向转(bushu脉冲)
for (int x = 0; x < bushu; x ++) {
digitalWrite(Puls, HIGH);
delayMicroseconds(pulsTime); //500微秒延时,即0.5毫秒
digitalWrite(Puls, LOW);
delayMicroseconds(pulsTime);
}
Serial.println("Forward Ends");
delay(1000); // Delay for one second
//逆转
//使电机向反方向运动
Serial.println("Backward Begins");
digitalWrite(Dir, LOW);//方向引脚低电位,逆转
// 反向转(bushu脉冲)
for (int x = 0; x < bushu; x ++) {
digitalWrite(Puls, HIGH);
delayMicroseconds(pulsTime);
digitalWrite(Puls, LOW);
delayMicroseconds(pulsTime);
}
Serial.println("Backward Ends");
delay(1000); //Delay for two seconds
}
串口接收到反馈的运行状态
const int pulsTime=500;
0.5ms脉冲电机速度
const int pulsTime=250;
0.25ms脉冲电机转速