代碼抄自帖子 http://www.zg4o1577.cn/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);
- }
|