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

技術熱線: 4007-888-234

8051單片機:如何用單片機控制直流電動機

更新時間: 2021-10-28
閱讀量:7249

如何將直流電機連接到8051單片機?在本文中,主要有8051單片機+DC電機系統兩個部分。首先是帶有控制電機所需程序的8051單片機,其次是合適的驅動電路。

大多數直流電機的功率要求遠遠超出了單片機的范圍,而且在反轉旋轉方向時產生的電壓尖峰更容易損壞單片機。因此將直流電機直接連接到單片機是不明智的,完美的解決方案是在單片機和直流電機之間使用電機驅動電路。

一、L293電機驅動芯片

L293是一款專用的H橋電機驅動器IC,采用16引腳封裝。L293的電流容量為600mA/通道,電源電壓范圍為4.5至36VDC。它們配有內部高速鉗位二極管,用于電感尖峰保護。L293的其他優點包括高抗噪性、內部ESD保護、熱關斷、每個通道的獨立輸入電源等。L293電機驅動器的引腳排列和真值表如下圖所示:

L293-pinout.png

二、使用8051單片機控制雙向直流電機

這里的雙向直流電機,它在預設時間(約1秒)后自動改變方向。AT89S51是這里使用的單片機,L293構成電機驅動器。電路圖如下所示:

interfacing-dc-motor-8051.png

在電路元件R1、S1和C3中形成去抖動復位電路。C1、C2和X1與振蕩器有關。端口引腳P1.0和P1.1連接到L293電機驅動器的相應輸入引腳。電機連接在L293的輸出引腳3和6之間。軟件是這樣寫的,P1.0和P1.1的邏輯組合控制電機的方向。最初接通電源時,P1.0為高電平,P1.1為低電平。該狀態保持預設時間(約1S),此時電機將沿順時針方向運行(參見L293的功能表)。然后P1.0和P1.1的邏輯被交換并且這個條件也保持相同的持續時間。

控制程序1:

ORG 00H
MAIN: MOV P1,#00000001B
ACALL DELAY
MOV P1,#00000010B
ACALL DELAY
SJMP MAIN
DELAY: MOV R4,#0FH
WAIT1: MOV R3,#00H
WAIT2: MOV R2,#00H
WAIT3: DJNZ R2,WAIT3
DJNZ R3,WAIT2
DJNZ R4,WAIT1
RET
END

三、帶按鈕控制的雙向電機

下面顯示的電路是基于8051單片機的雙向電機,其方向可以使用2個按鈕開關控制。除了兩個按鈕開關之外,該電路與前一個電路非常相似。這些按鈕開關連接到單片機的P0rt3。電阻R2和R3分別是P3.0和3.1的下拉電阻。

interfacing-dc-motor-8051-push-button.png

上述項目的代碼是這樣編寫的,最初當電源打開時,電機保持關閉。當按下按鈕開關S2時,P1.0變為高電平,而P1.1保持低電平。電機按順時針方向運行,此狀態一直保持到按下S3。當按下按鈕開關S3時,P1.0和P1.1的邏輯切換,使電機以相反方向運行,這種狀態一直保持到下一次按下S2。

控制程序2:

ORG 00H
MOV P3,#00000000B
MOV P1,#00000000B
MAIN:MOV A,P3
CJNE A,#00000001B,LABEL1
MOV P1,#00000001B
LABEL1:CJNE A,#00000010B,LABEL2
MOV P1,#00000010B
LABEL2:SJMP MAIN
END

檢查特定按鈕是否被按下是使用CJNE(如果不相等則比較并跳轉)指令完成的。簡而言之,CJNE指令比較兩個操作數,如果操作數不相等,則跳轉到預定義的LABEL。如果兩個操作數相等,則不會發生任何事情并執行下一條指令。每當按下按鈕S2時,P3的狀態將是00000001B。該狀態被移動到累加器A并使用CJNE指令與00000001B進行比較。兩個操作數相等表示按下S2,執行下一條使電機順時針轉動的指令(MOV P1,#00000001B)。如果操作數不相等,則表示沒有按下S2,控制器跳轉到LABEL1以檢查S3。要檢查S3,P3的狀態再次移動到A,并使用CJNE指令與00000010B進行比較。兩個操作數相等表示按下S3,執行下一條使電機逆時針運行的指令(MOV P1,#00000010B)。兩個操作數不相等意味著S3未被按下,控制器再次檢查S2并重復此循環。

以上就是英銳恩單片機開發工程師分享的“8051單片機:如何用單片機控制直流電動機”。英銳恩專注單片機應用方案設計與開發,提供8位單片機、16位單片機、32位單片機。

联系我们: 三门峡市| 万宁市| 江津市| 广平县| 什邡市| 娄烦县| 松桃| 凤凰县| 乐都县| 西华县| 濉溪县| 灵武市| 故城县| 德惠市| 巴南区| 夏邑县| 琼中| 罗定市| 通化市| 正镶白旗| 金阳县| 绍兴市| 湄潭县| 邵东县| 历史| 乳源| 嘉兴市| 武夷山市| 漯河市| 大竹县| 连南| 九龙城区| 土默特左旗| 镇江市| 尚志市| 镇雄县| 大英县| 玛纳斯县| 江安县| 无棣县| 大同县|