arduino控制42步进电机(工业级)转向转速
程序一int dirPin = 6;
int stepperPin = 5;
int potpin=0;
int val;
void setup()
{
pinMode(dirPin, OUTPUT);
pinMode(stepperPin, OUTPUT);
Serial.begin(9600);
}
void step(boolean dir,int steps)//Boolean 变量以 16 位(2 个字节)的数值形式存储,但只能是 True 或是 False
{
digitalWrite(dirPin,dir);
for(int i=0; i < steps; i ++)
{
val=analogRead(potpin);//判断语句,用于对电位器模拟值的分类
if(val<512)
{
val=map(val,0,512,200,800);
}
else
{
val=map(val,512,1023,800,200);
}
digitalWrite(stepperPin, HIGH);
delayMicroseconds(50);
digitalWrite(stepperPin, LOW);
delayMicroseconds(50);//生成周期为100的方波
// speed control
delayMicroseconds(val);//(改变这个值可以改变和改变对应的细分,可以变相应的转速)
}
}
void loop()
{
val = analogRead(potpin);
if(val < 512)
{
step(true,200 * 16);//每步趋近1.8度,例如(200*1)也就是指电机走一圈(360度),可以利用(200*n)来走n圈
}
else
{
step(false,200*16);
}
Serial.println(val);
}
程序二
int dirPin = 6;
int stepperPin = 5;
int potpin=0;
int val;
void setup()
{
pinMode(dirPin, OUTPUT);
pinMode(stepperPin, OUTPUT);
Serial.begin(9600);
}
void step(boolean dir,int steps)//Boolean 变量以 16 位(2 个字节)的数值形式存储,但只能是 True 或是 False
{
digitalWrite(dirPin,dir);
for(int i=0; i < steps; i ++)
{
val=analogRead(potpin);
int a=abs(val-512);
a=map(a,0,512,1000,200);
digitalWrite(stepperPin, HIGH);
delayMicroseconds(50);
digitalWrite(stepperPin, LOW);
delayMicroseconds(50);//生成周期为100的方波
// speed control
delayMicroseconds(a);//(改变这个值可以改变和改变对应的细分,可以变相应的转速)
}
}
void loop()
{
val = analogRead(potpin);
if(val < 512)
{
step(true,200 * 16);//每步趋近1.8度,例如(200*1)也就是指电机走一圈(360度),可以利用(200*n)来走n圈
}
else
{
step(false,200*16);
}
Serial.println(val);
}
以上两个程序原理上面一样,只是在数值对比时做了不同的变化。 是用Microstep driver驱动的,12V开关电源+microstep driver驱动器+arduino uno +杜邦线+跳线 俠歌无畏 发表于 2015-8-11 21:12 static/image/common/back.gif
是用Microstep driver驱动的,12V开关电源+microstep driver驱动器+arduino uno +杜邦线+跳线
可以试试 micros() 这个函数来控制时间,或者使用定时器。我以前写过一个帖子就是控制步进电机的。 谢谢分享:):) rick_hou 发表于 2015-8-11 23:15 static/image/common/back.gif
可以试试 micros() 这个函数来控制时间,或者使用定时器。我以前写过一个帖子就是控制步进电机的。
我回去试试 arduino自带电机库,可能更简单 A4988也是这样驱动的,可以直接使用这个代码 不错,谢谢指导,收藏。 请问potpin指的是驱动器上的哪个引脚?驱动器上不是只有PU+ PU- DR+ DR-EN+EN- 这六个引脚吗?并且都是数字量啊!你这个potpin是模拟量,它是驱动器上的那个引脚? 频率多高?能去到1MHz么,或是30-50kHz? 风清王 发表于 2016-4-6 22:10 static/image/common/back.gif
请问potpin指的是驱动器上的哪个引脚?驱动器上不是只有PU+ PU- DR+ DR-EN+EN- 这六个引脚吗?并且都是 ...
这个是模拟输入A0 接的是一个电位器
页:
[1]