标题:
直线插补 电机移动位置怎么处理
[打印本页]
作者:
cc0203
时间:
2024-8-18 18:38
标题:
直线插补 电机移动位置怎么处理
代码抄自帖子
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);
}
作者:
chchking
时间:
2024-8-19 05:07
电机抖动机械系数考虑一下
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1