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