話說試驗(yàn)用的電機(jī)和單片機(jī)買回來也快兩個(gè)星期了,到現(xiàn)在才達(dá)到這個(gè)進(jìn)度,真的是相當(dāng)慢了。
試驗(yàn)過程中程序上倒沒遇到什么問題,也就是for、while語句。主要還是在單片機(jī)和電機(jī)上,幾乎是從頭開始,以前上課壓根就沒好好學(xué),又丟了這么長(zhǎng)時(shí)間。
試驗(yàn)用的單片機(jī)是最簡(jiǎn)單的51單片機(jī),80C52,一共有4個(gè)I/O口,每個(gè)口8個(gè)針腳,每個(gè)I/O口一次傳輸8位2進(jìn)制數(shù),每一位對(duì)應(yīng)I/O口的一個(gè)針腳。電機(jī)是四相步進(jìn)電機(jī)(工作方式有四拍、八拍,四拍可以簡(jiǎn)單理解為每項(xiàng)通電完成四分之一個(gè)工作周期,八拍即八分之一個(gè)工作周期),步進(jìn)角度5.625度(一個(gè)工作周期走5.625度)。電機(jī)通過一個(gè)ULN驅(qū)動(dòng)芯片與單片機(jī)的I/O口連接。
單片機(jī)的驅(qū)動(dòng)程序主要是通過一個(gè)數(shù)組來驅(qū)動(dòng)電機(jī),如果是四拍工作方式,數(shù)組里需要4個(gè)數(shù),八拍即8個(gè)數(shù)。我主要就是卡在這里。為什么呢?舉例說明,{0x01,0x02,0x04,0x08},這是一個(gè)含有四個(gè)元素用16進(jìn)制表示的數(shù)組,因?yàn)橹R(shí)的貧乏,我始終鬧不明白這個(gè)數(shù)組是通過怎樣的方式來驅(qū)動(dòng)電機(jī),F(xiàn)在鬧明白就簡(jiǎn)單了
{0x01,0x02,0x04,0x08}
寫成8位二進(jìn)制數(shù)就是
0000 0001
0000 0010
0000 0100
0000 1000
從右往左,每一位表示I/O口的一個(gè)針腳,而這里每一個(gè)針腳則對(duì)應(yīng)電機(jī)的一相,四拍工作方式只要用到8位2進(jìn)制數(shù)中4位就夠了,0x01的2進(jìn)制數(shù)右數(shù)第一位為1,就是第一個(gè)針腳輸出高電平,第二位為0即輸出低電平,依次類推,0x01作用在電機(jī)上的意思就是電機(jī)的第一相通電,電機(jī)運(yùn)行四分之一周期(就是5.625度/4)。當(dāng)程序讀取第二個(gè)數(shù)組元素0x02時(shí),則是電機(jī)的第二項(xiàng)通電,再運(yùn)行四分之一周期。這樣通過讀取數(shù)組,就完成了對(duì)電機(jī)的控制,如果是采用八拍控制,可以精確到5.625度/8。
至此,想要實(shí)現(xiàn)其他控制,只要通過程序的變化就可以完成,電機(jī)控制的學(xué)習(xí)就此完結(jié)。目前計(jì)劃,因電液伺服的學(xué)習(xí)才斷續(xù)的開了個(gè)頭,繼續(xù)跟進(jìn)學(xué)習(xí),單片機(jī)學(xué)習(xí)再繼續(xù)深入。
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |