您好,登錄后才能下訂單哦!
再從新看一下下面的步進(jìn)電機(jī)外不雅圖和外部構(gòu)造圖:步進(jìn)電機(jī)一共有 5 根引線,個中白色的是公共端,銜接到 5V 電源,接下來的橙、黃、粉、藍(lán)就對應(yīng)了 A、B、C、D 相;那么假如要導(dǎo)通 A 相繞組,就只需將橙色線接地即可,B 相則×××接地,依此類推;再依據(jù)上述單四拍和八拍任務(wù)進(jìn)程的解說,可以得出下面的繞組掌握次序表,如表 9-1 所示:
表 9-1 八拍形式繞組掌握次序表
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
P1-紅 | VCC | VCC | VCC | VCC | VCC | VCC | VCC | VCC |
P2-橙 | GND | GND | GND | |||||
P3-黃 | GND | GND | GND | |||||
P4-粉 | GND | GND | GND | |||||
P5-藍(lán) | GND | GND | GND |
我們板子上掌握步進(jìn)電機(jī)局部是和板子上的顯示掌握的 74HC138 譯碼器局部復(fù)用的P1.0~P1.3,關(guān)于跳線我們在第 3 章曾經(jīng)講過了,經(jīng)過調(diào)劑跳線帽的地位可以讓 P1.0~P1.3掌握步進(jìn)電機(jī)的四個繞組,如圖 9-5 所示。
圖 9-5 顯示譯碼與步進(jìn)電機(jī)的選擇跳線
假如要運(yùn)用電機(jī)的話,需求把 4 個跳線帽都調(diào)到跳線組的左側(cè)(開辟板上的實踐地位),即左側(cè)針和兩頭針連通(對應(yīng)道理圖中的兩頭和下邊的針),就可以運(yùn)用 P1.0 到 P1.3 掌握步進(jìn)電機(jī)了,如要再運(yùn)用顯示局部的話,就要再換回到右側(cè)了。那假如人人既想讓顯示局部正常任務(wù),又想讓電機(jī)任務(wù)該怎樣辦呢?跳線帽堅持在右側(cè),用杜邦線把步進(jìn)電機(jī)的掌握引腳(即左側(cè)的排針)銜接到其它的暫不運(yùn)用的單片機(jī) IO 上即可。
再來看一下我們步進(jìn)電機(jī)的道理圖,步進(jìn)電機(jī)的掌握電路如圖 9-6 所示。
圖 9-6 步進(jìn)電機(jī)掌握電路
固然,單片機(jī)的 IO 口可以直接輸入 0V 和 5V 的電壓,然則電流驅(qū)動才能,也就是帶載才能十分無限,所以我們在每相的掌握線上都添加一個三極管來進(jìn)步驅(qū)動才能。由圖中可以看出,若要使 A 相導(dǎo)通,則必需是 Q2 導(dǎo)通,此時 A 相也就是橙色線就相當(dāng)于接地了,于是A 相繞組導(dǎo)通,此時單片機(jī) P1 口低 4 位應(yīng)輸入 0b1110,即 0xE;如要 A、B 相反時導(dǎo)通,那么就是 Q2、Q3 導(dǎo)通,P1 口低 4 位應(yīng)輸入 0b1100,即 0xC,依此類推,我們可以失掉下面的八拍節(jié)奏的 IO 掌握代碼數(shù)組:
unsigned char code BeatCode[8] = { 0xE, 0xC, 0xD, 0x9, 0xB, 0x3, 0x7, 0x6 };
到這里,似乎一切的邏輯成績都處理了,輪回將這個數(shù)組內(nèi)的值送到 P1 口就行了。然則,只需再深化想一下就會發(fā)現(xiàn)還有個成績:多長工夫送一次數(shù)據(jù),也就是說一個節(jié)奏要繼續(xù)多長工夫適宜呢?是隨便的嗎?當(dāng)然不是了,這個工夫是由步進(jìn)電機(jī)的啟動頻率決議的。啟動頻率,就是步進(jìn)電機(jī)在空載狀況下可以正常啟動的最高脈沖頻率,假如脈沖頻率高于該值,電機(jī)就不克不及正常啟動。表 9-2 就是由廠家供給的步進(jìn)電機(jī)參數(shù)表,我們來看一下。
表 9-2 28BYJ-48 步進(jìn)電機(jī)參數(shù)表
供電 電壓 | 相數(shù) | 相電阻 Ω | 步進(jìn)角度 | 加速比 | 啟動頻率 P.P.S | 轉(zhuǎn)矩 g.cm | 噪聲 dB | 絕緣介 電強(qiáng)度 |
5V | 4 | 50±10% | 5.625/64 | 1:64 | ≥550 | ≥300 | ≤35 | 600VAC |
表中給出的參數(shù)是≥550,單元是 P.P.S,即每秒脈沖數(shù),這里的意思就是說:電機(jī)包管在你每秒給出 550 個步進(jìn)脈沖的狀況下,可以正常啟動。那么換算成單節(jié)奏繼續(xù)工夫就是1s/550=1.8ms,為了讓電機(jī)可以啟動,我們掌握節(jié)奏刷新工夫大于 1.8ms 就可以了。有了這個參數(shù),我們就可以入手寫出最復(fù)雜的電機(jī)遷移轉(zhuǎn)變程序了,如下:
#include <reg52.h> unsigned char code BeatCode[8] = { //步進(jìn)電機(jī)節(jié)奏對應(yīng)的 IO 掌握代碼 0xE, 0xC, 0xD, 0x9, 0xB, 0x3, 0x7, 0x6 }; void delay(); void main(){ unsigned char tmp; //界說一個暫時變量 unsigned char index = 0; //界說節(jié)奏輸入索引 while (1){ tmp = P1; //用 tmp 把 P1 口以后值暫存 tmp = tmp & 0xF0; //用&操作清零低 4 位 //用|操作把節(jié)奏代碼寫到低 4 位 tmp = tmp | BeatCode[index]; //把低 4 位的節(jié)奏代碼和高 4 位的原值送回 P1 P1 = tmp; index++; //節(jié)奏輸入索引遞增 index = index & 0x07; //用&操作完成到 8 歸零 delay(); //延時 2ms,即 2ms 履行一拍 } } /* 軟件延時函數(shù),延時約 2ms */ void delay(){ unsigned int i = 200; while (i--); }
把程序編譯下載到板子上嘗嘗吧!看看電機(jī)轉(zhuǎn)了沒有?要記得換跳線哦!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。