型號:17hd40007-22b 步進電機
兩相四拍,步距角為1.8°
最終**:
#include
sbit lefta1 = p1^0;
sbit lefta2 = p1^1;
sbit leftb1 = p1^2;
sbit leftb2 = p1^3;
sbit enleft = p2^3;
sbit righta1 = p1^4;
sbit righta2 = p1^5;
sbit rightb1 = p1^6;
sbit rightb2 = p1^7;
sbit enright = p2^4;
unsigned
char t0rh;
unsigned
char t0rl;
signed
long leftbeats = 0;
signed
long rightbeats = 0;
void configtimer0(unsigned
int ms);
void startleftmotor(signed
long angle);
void startrightmotor(signed
long angle);
unsigned
char code beatcode[8] = ;
void main()
void startrightmotor(signed
long angle)
void startleftmotor(signed
long angle)
void leftmotor()
else
tmp = p1;
tmp = tmp & 0xf0;
tmp = tmp | beatcode[index];
p1 = tmp;
}else
}void rightmotor()
else
tmp = p1;
tmp &= 0x0f;
tmp |= (beatcode[index]<<4);
p1 = tmp;
}else
}void configtimer0(unsigned
int ms)
void interrupttimer0() interrupt 1
注意啟動頻率,不要那麼快,不然會跟不上,出現亂顫的情況。很明顯,在此處我是進行了細分。變成了二相八拍,步距角更加精確變為0.9附一張關於步進引數圖:如果沒有細分,那麼步進電機每接受乙個脈衝,就會轉動乙個步距角。.當我們不細分的時候,假如步進電機是1.8度的話,那就是二百個脈衝每轉360度,二個細分就是四百個,總之就是再次細分的意思,精度更高
驅動陣列書寫原理:
對比教程28byj
常見的5線4相的步進電機 24byj48乙個電機你所採用的勵磁方式不同,你所得到的步進角也是不一樣的,引數上所說的步進角,表示的是用四相八拍這種勵磁方式的所能達到的最大精度。因為24byj48 步進電機是自帶 1/64 減速比的步進電機,也就是內部轉64圈外部齒輪轉一圈,所以步距角相對別的步進電機而言,更加精確
步距角:5.625 / 64 = 0.087度 (也就是說理論上,你給乙個脈衝,電機外部軸轉動0.087度) 減速比 :1/64
步進電機的 扭矩 和 其驅動方式 驅動頻率 輸入電壓 有著直接的關係,以28byj48為例
輸入電壓(v) 頻率(hz) 轉矩(gf.cm) 5 100
= 250 12 100 >=500 驅動方式:四相八拍驅動
28byj有減速比1:64,也就是裡面轉64圈,外面轉一圈。而裡面轉一圈需要64節拍,轉64圈需要4096拍。
而由於製造誤差實際大概為4076拍
2014的一點收穫
1.工具類 emacs,git,gtags。1.1 emacs 比較喜歡快捷鍵,尤其像我這種有 儲存強迫症 的人,比vi方便一些。1.2 git 神奇的東西,對我這種公司svn伺服器不好用,又懶得在本機搭伺服器的人,用起來很方便。1.3 gtags 水木上看到的,一用起來果然神奇,果斷拋棄etags...
讀C Primer 一點收穫
以前總是看別人的部落格,且聽說搞it的應該有總結收穫和分享的習慣,於是乎有了寫的衝動。最近剛看完c primer 4th,感覺收穫還是挺多的,借部落格記錄之。看這本書的動機一大半是問了充實自己便於兩年後的找工作。之前對c 的了解完全 於大 一 大2時的課程。從類之後時,就開始一頭霧水了,最多也是課上...
STL的一點收穫(排序)
今天又學到了一點新東西,拿出來大家分享一下,一下內容部分為摘抄。本來在做一道tx14年的面試題,題中需要用到排序,本來想用自帶的快排函式qsort 突然想起stl應該有自己的排序演算法,於是搜了一下,果然有,但是又不了解兩者之間的好壞,大神知道記得說一聲。加標頭檔案algorithm sort預設是...