マイナス37度 发表于 2016-10-9 14:28:09

那位大神有空帮我看看代码呗

本帖最后由 マイナス37度 于 2016-10-9 18:03 编辑

自己找了好久,还是没找到问题
这是段步进电机加减速代码,目前加速不均匀。。。
串口打印也有点奇怪,为什么是1111。。。2222。。。1111。。。1
正确的是1111。。。2222。。。2
总算搞定了,明天加上x轴


int a=0;
int zf=1;//控制正反转方向,1- 2+
int kg=1;//控制电机转停,1转
int xc1=1;//丝杆行程1,单位=400一圈
int xcq=8;//丝杆行程圈,1=一圈
int jsdp=15;//电机加速度频率
int jsd=0;//电机加速度
int jsq=1;//电机加速
int zd=5000;//电机最低转速
int zg=500;//电机最高转速
int jsdd;//电机加速度度
int zpul=12;//z轴电机速度引脚,
int zdir=13;//z轴电机方向引脚,高电平-,低电平+
void setup() {               
pinMode(13, OUTPUT);   
pinMode(12, OUTPUT);
digitalWrite(13, HIGH);
Serial.begin(9600);
}

void loop() {
jsdd=zd-zg;//最低速-最高速=
xcq=3;//行程8圈
if(xc1<jsdd/jsdp && jsd>=jsdp)//加速行程>时时行程时启动加速
{
    jsq=1;//(js+)=1加速
}
if(xc1<xcq*400 && xc1>xcq*400-jsdd/jsdp && jsd>=jsdp)
{
    jsq=2;//(js+)=2减速
}
if(jsq==1 && jsd>=jsdp && zg<zd-jsd)//(js+)=1时加速且
{
    //Serial.println(jsd);
    jsd=jsd+jsdp;//加速度=加速度+频率
}
if(jsq==2 && jsd>=jsdp)//加速度>=频率时减速且
{
    jsd=jsd-jsdp;//加速度=加速度-频率
    //Serial.println(jsd);
}
if(zf==2)//+正转
{
digitalWrite(zdir, LOW);
}
if(zf==1)//-反转
{
digitalWrite(zdir, HIGH);
}
if(xc1>=xcq*400+1)
{
    zf=zf+1;
    xc1=1;
    jsd=jsdp;
}
if(zf>=3)
{
    kg=2;
    zf=1;
    jsd=0;
}
if(kg==1)//kg=1转
{
digitalWrite(zpul, HIGH);
delayMicroseconds(zd-jsd);
digitalWrite(zpul, LOW);
delayMicroseconds(zd-jsd);
xc1=xc1+1;
//a=a+1;
//Serial.println(jsd);
}
}
页: [1]
查看完整版本: 那位大神有空帮我看看代码呗