极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11398|回复: 0

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

[复制链接]
发表于 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);
  }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-4 11:33 , Processed in 0.035671 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表