天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234
設計開發

專注差異化嵌入式產品解決方案 給智能產品定制注入靈魂給予生命

開發工具

提供開發工具、應用測試 完善的開發代碼案例庫分享

技術支持

從全面的產品導入到強大技術支援服務 全程貼心伴隨服務,創造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產品競爭力

新聞中心

提供最新的單片機資訊,行業消息以及公司新聞動態

如何使用89C51單片機控制步進電機?

更新時間: 2019-11-07
閱讀量:5962

在本文中,英銳恩單片機開發工程師們將講解如何使用89C51單片機控制步進電機。步進電機是當前自動化控制系統中應用最為廣泛的電子原件之一,它的應用涉及到了電子、機械、電機、計算機等多個領域知識。下面是有關如何將步進電機與89C51單片機連接控制的簡單教程。

QQ截圖20191107164922.png

 
一、步進電機的運行

我將在該方案中使用四相的步進電機。通常,從四個線路的步進電機中引出5或6條導線。在5根線中,一根是我們的vcc(外部電壓),四根重命名是階梯線。在6線中,2是我們的vcc(外部電壓),而重命名中的4是階梯線。

步進電機工作在5伏到12伏。我在本文中使用的步進電機是NEMA17。它是雙極步進電機。NEMA 17步進電機采取的每一步計數都增加了1.8度。因此,NEMA 17以200步完成一圈360(200 * 1.8 = 360)度的旋轉。在本文中,我們只關注旋轉步進電動機。

二、步進電機的功耗

在帶負載的步進旋轉過程中,步進電機消耗0.1到1安培的電流。單片機無法輸出此電量。因此,我們無法將步進電機直接與89C51單片機之類的單片機接口,該單片機的引腳可以輸出最大0.045安培的電流。
 
三、ULN2003驅動器用于步進電機

為了克服上述步進電動機的功率限制,我們需要一個外部電源,該電源可以驅動重負載并為步進電動機的運行提供足夠的功率。ULN2003是一種包含達林頓晶體管對的集成電路。ULN2003接受低功率輸入并輸出更大功率的信號。我決定使用此驅動程序IC驅動步進電機。

uln2003-driver.jpg


四、如何使用8051單片機驅動步進電機


將8051(89C51)單片機端口1的低四位連接到ULN2003驅動程序IC。89C51單片機無法輸出足夠的電壓或電流來驅動電動機,因此需要驅動器IC來滿足電動機的電壓和電流的要求。 ULN2003的輸出連接到我們的步進電機。將ULN2003的引腳8接地。在ULN2003引腳9上施加與電動機相同的電壓。

步進電機與89C51單片機的接口電路圖如下。在下面的GIF圖像中注意步進電機采取的步驟。對于每個步驟,我們都必須將每個步驟引腳設為高電平,并遵循GIF圖像中顯示的模式。步進電機的步進銷/電線的顏色分別為黃色,棕色,黑色和綠色等。我們首先必須確認一下步進電線的圖,NEMA 17步進電機模式如下GIF圖中所示。

五、基于8051單片機的步進電機接口


5779890.gif

代碼的編寫很簡單,使用ceil ide作為軟件工具用c++語言編寫,用于編寫和編譯代碼。首先,包含必要的文件reg51.h。然后創建一個延遲函數,以逐步提供一些延遲。此延遲非常重要,可以避免電動機產生的反電動勢,否則步進電動機產生的反電動勢會損壞控制器。你還可以通過減少延遲時間來加快電機旋轉速度。在主要功能中,我使用了一些命令來旋轉步進電機。命令說明如下,這些命令采用十六進制格式。

P1 = 0x01第一步使端口1的位0高。二進制等效值 = 00000001
P1 = 0x00使端口1的所有位均為0,以進行下一步。二進制等效值 = 00000000
P1 = 0x02使端口1的位1高為第二步。二進制等效值 = 00000010
P1 = 0x00將端口1的所有位設置為0,以進行下一步。二進制等效值 = 00000000
P1 = 0x04第三步使端口1的位2高。二進制等效值 = 00000100
P1 = 0x00使端口1的所有位均為0,以進行下一步。二進制等效值 = 00000000
P1 = 0x08第四步將端口1的位3高電平。等效二值 = 00001000

你也可以單獨聲明這些位,并使它們的高電平和低電平足夠長。while(1)循環一直沿順時針方向運行電動機。你還可以通過僅反轉命令來逆時針反轉方向,將最后一個命令(0x08)放在第一位,然后以相同的方式反轉其余命令的順序。


五、基于8051單片機控制步進電機代碼


#include<reg51.h>

void delay(){     //產生可變延遲的函數
unsigned int i,j;

for( i=0;i<=30;i++)
for(j=0;j<1000;j++);
}

void main() //項目主函數
{

while(1){

P1=0x01; delay(); //Take first step
P1=0x00; delay();
P1=0x02; delay(); //Take second step
P1=0x00; delay();
P1=0x04; delay(); //Take third step
P1=0x00; delay();
P1=0x08; delay(); //Take fourth step
P1=0x00; delay();
 }
}

以上就是英銳恩單片機開發工程師分享的使用89C51單片機控制步進電機方法。英銳恩專注單片機應用方案設計與開發,提供8位單片機、16位單片機、32位單片機

联系我们: 靖远县| 垣曲县| 浏阳市| 西乌| 石台县| 怀宁县| 色达县| 那坡县| 五莲县| 岳池县| 阿勒泰市| 吉水县| 康定县| 贵州省| 隆回县| 黄浦区| 措勤县| 禹城市| 渭南市| 汨罗市| 通化市| 武城县| 手游| 哈密市| 布拖县| 凤翔县| 休宁县| 昌都县| 寻乌县| 呼玛县| 徐汇区| 承德县| 筠连县| 将乐县| 仲巴县| 三江| 松滋市| 温宿县| 咸宁市| 轮台县| 马边|