怎么让步进电机转90度停下来
int Pin0 = 8;int Pin1 = 9;
int Pin2 = 10;
int Pin3 = 11;
int _step = 0;
boolean dir = false;//正反转
int stepperSpeed = 1;//电机转速,1ms一步
//脉冲总数,或者说步的总数
int stepsum=0;
void setup()
{
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT); }
void loop()
{
//进步机的驱动方式,有八种
switch(_step){
case 0:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
case 1:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
break;
case 2:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 3:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 4:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 5:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 6:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 7:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
default:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
}
//判断是正转还是反转
if(dir)
{
_step++;
}else{
_step--;
}
//每八步一个驱动方式的循环
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delay(stepperSpeed);
//计算脉冲数,每4096个脉冲停1秒
stepsum++;
if(stepsum==4096)
{
Serial.println(stepsum);
stepsum=0;
delay(1000);
}
}
这是我的代码。。。我是UNO R3 L298N来控制28byj-48的。
如何只让它转90度就停下来啊。。。这个代码 他就是每隔一秒 转一次。
一直再转 怎么停啊。 Setup里加个Serial.begin
如果输到某字符则执行所有代码一次,否则不执行。
着一下4096个脉冲走几圈
如果走大致20.5圈,那么200个脉冲1圈
即改成100个脉冲走半圈 用舵机吧,严格和角度相关. 先要知道步距角是多少,假设步距角是3.6,那么转一圈就要100个脉冲,90度是1/4圈,那么所需要的脉冲数就是100*1/4=25pulse;如果步距角是1.8,那就是360/1.8=200;200*1/4=50pulse;如果有细分,再乘以细分数即可。
野鬼{ABO} 发表于 2015-1-23 10:44
先要知道步距角是多少,假设步距角是3.6,那么转一圈就要100个脉冲,90度是1/4圈,那么所需要的脉冲数就是1 ...
正確,還要設置零位和檢測零位。還是建議用舵機 bacon6581 发表于 2015-1-23 06:03 static/image/common/back.gif
Setup里加个Serial.begin
如果输到某字符则执行所有代码一次,否则不执行。
嗯嗯 问题已经解决啦。谢谢 要算的。 林定祥 发表于 2015-1-23 08:27 static/image/common/back.gif
用舵机吧,严格和角度相关.
嗯嗯 问题已经解决啦。谢谢 要算的。 野鬼{ABO} 发表于 2015-1-23 10:44 static/image/common/back.gif
先要知道步距角是多少,假设步距角是3.6,那么转一圈就要100个脉冲,90度是1/4圈,那么所需要的脉冲数就是1 ...
问题已经解决啦。谢谢 philip 发表于 2015-1-23 18:45 static/image/common/back.gif
正確,還要設置零位和檢測零位。還是建議用舵機
嗯嗯 问题已经解决啦。谢谢 要算的。
页:
[1]