標(biāo)題:
直線插補(bǔ) 電機(jī)移動(dòng)位置怎么處理
[打印本頁(yè)]
作者:
cc0203
時(shí)間:
2024-8-18 18:38
標(biāo)題:
直線插補(bǔ) 電機(jī)移動(dòng)位置怎么處理
代碼抄自帖子
http://www.torrancerestoration.com/bbs/dpj-127428-1.html
請(qǐng)大牛幫忙一下我的電機(jī)是42步進(jìn)電機(jī) 1.8度 16細(xì)分
這是直線插補(bǔ)算法 比如
a=countx;
b=county; a=6 b=4
一u共循環(huán)10次 每次計(jì)算得到x軸加6次 y軸加4次 每次分別調(diào)用
stepx();
stepy();發(fā)送1個(gè)脈沖,
一共才發(fā)送10個(gè)脈沖 也走不到x=6 Y=4 我的步進(jìn)電機(jī)驅(qū)動(dòng)設(shè)置16細(xì)分
希望好心
人
解答 給出16細(xì)分的代碼 本人謝謝 解決了我可以發(fā)給紅包 本人學(xué)生經(jīng)濟(jì)有限給不了太多發(fā)個(gè)紅包意思意思
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
時(shí)間:
2024-8-19 05:07
電機(jī)抖動(dòng)機(jī)械系數(shù)考慮一下
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1