康小印
級(jí)別: 探索解密
|
下面是我寫(xiě)的步進(jìn)電機(jī)程序。我細(xì)分裝置設(shè)置的是4000,下面應(yīng)該會(huì)有3200個(gè)脈沖,也就是會(huì)旋轉(zhuǎn)0.8周,實(shí)際運(yùn)行后并沒(méi)有0.8周這么多;后來(lái)我將程序兩個(gè)循環(huán)a>=0,和i>=0;發(fā)現(xiàn)電機(jī)運(yùn)動(dòng)停不下來(lái),我想知道是怎么回事?謝謝 #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit zmc=P1^0; sbit fmc=P1^1; sbit zfx=P1^2; sbit ffx=P1^3; void delay5ws(uchar); void main() { uint i,a; i=0; a=0; zmc=0; fmc=0; zfx=0; ffx=0; delay5ws(5); zfx=1; for(a=80;a>0;a--) { for(i=40;i>0;i--) { // delay5ws(5); zmc=1; // delay5ws(2); zmc=0; } } while(1) { zmc=0; fmc=0; zfx=0; ffx=0; } } void delay5ws(uchar n) { uint l,m; for(l=n;l>0;l--) for(m=2;m>0;m--); } |
---|---|
|
testfish
9554665@qq.com
級(jí)別: 工控俠客
|
步進(jìn)不是按角度計(jì)算的嗎? |
---|---|
|
康小印
級(jí)別: 探索解密
|
對(duì)啊,你看我程序應(yīng)該是3200個(gè)脈沖吧?一周是4000個(gè)細(xì)分,那就應(yīng)該轉(zhuǎn)0.8周,但是實(shí)際上比0.8小得多。將for循環(huán)中a和i的判定條件變一變,就會(huì)轉(zhuǎn)很長(zhǎng)時(shí)間,我想知道原因 |
---|---|
|
testfish
9554665@qq.com
級(jí)別: 工控俠客
|
勵(lì)磁方式呢? |
---|---|
|
liuliangdt
liuliangdt
級(jí)別: 家園?
|
雖然我不會(huì),但感覺(jué)步進(jìn)電機(jī)驅(qū)動(dòng)不正確。 |
---|---|
|
康小印
級(jí)別: 探索解密
|
我使用驅(qū)動(dòng)器驅(qū)動(dòng)的,不涉及由于勵(lì)磁方式方式帶來(lái)的影響吧?設(shè)置好了就是4000個(gè)脈沖步進(jìn)電機(jī)轉(zhuǎn)一周 |
---|---|
|
康小印
級(jí)別: 探索解密
|
不就是給脈沖么? |
---|---|
|
wwusq
級(jí)別: 略有小成
|
細(xì)分4000,轉(zhuǎn)一圈應(yīng)該脈沖數(shù)該是80000,0.8全就是64000個(gè)脈沖 |
---|---|
|
康小印
級(jí)別: 探索解密
|
1、這個(gè)是怎么算的? 2、為什么如果我將for循環(huán)中a和i的判定條件按一樓的情況修改后他就會(huì)轉(zhuǎn)好多圈呢?遠(yuǎn)遠(yuǎn)多于1圈 |
---|---|
|
康小印
級(jí)別: 探索解密
|
我剛剛確認(rèn)一下,細(xì)分4000就是一周4000份,步進(jìn)角度是0.09°。而且我這個(gè)就是低速運(yùn)行,每次只讓他轉(zhuǎn)十幾度就行。不涉及速度控制問(wèn)題。 |
---|---|
|