代码抄自帖子 http://www.51hei.com/bbs/dpj-127428-1.html
请大牛帮忙一下我的电机是42步进电机 1.8度 16细分
这是直线插补算法 比如a=countx;b=county; a=6 b=4
一u共循环10次 每次计算得到x轴加6次 y轴加4次 每次分别调用stepx();stepy();发送1个脉冲,
一共才发送10个脉冲 也走不到x=6 Y=4 我的步进电机驱动设置16细分
希望好心人解答 给出16细分的代码 本人谢谢 解决了我可以发给红包 本人学生经济有限给不了太多发个红包意思意思
- if(Fm[k]>=0)
- {
- x++;
- m--;
- stepx();
- k++;
- Fm[k]=Fm[k-1]-b;
- }
- if(Fm[k]<0)
- {
- y++;
- m--;
- stepy();
- k++;
- Fm[k]=Fm[k-1]+a;
- }
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
- uint countx=0;
- uint county=0;
- uint count,flag=0;
- uint x=0;
- uint y=0;
- uint a=0,b=0,k=0,m=0;
- uint st=0;
- char Fm[20];
- uchar code bux[]={0xf0,0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
- uchar code buy[]={0x00,0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};
- void star()
- {
- a=countx;
- b=county;
- m=a+b;
- Fm[k]=0;
- while(m>0)
- {
- if(Fm[k]>=0)
- {
- x++;
- m--;
- stepx();
- k++;
- Fm[k]=Fm[k-1]-b;
- }
- if(Fm[k]<0)
- {
- y++;
- m--;
- stepy();
- k++;
- Fm[k]=Fm[k-1]+a;
- }
- }
- }
- void stepx()
- {
- P3=bux[x];
- delayms(1000);
- }
- void stepy()
- {
- P1=bux[y];
- delayms(1000);
- }
|