0.png (44.55 KB, 下載次數: 45)
下載附件
2017-7-27 17:33 上傳
0.png (25.73 KB, 下載次數: 69)
下載附件
2017-7-27 17:34 上傳
電氣工程學院 單片機課程設計報告 班 級:電134 姓 名:王*旭 學 號:1312021108 設計題目:直流電機調速系統設計 設計時間:12.22~12.28 評定成績: 評定教師: 摘要: 近年來,隨著科技的進步,電力電子技術得到了迅速的發展,直流電機得到了越來越廣泛的應用。直流它具有優良的調速特性,調速平滑、方便,調速范圍廣;需要能滿足生產過程自動化系統各種不同的特殊運行要求,從而對直流電機的調速提出了較高的要求,改變電樞回路電阻調速,改變電樞電壓調速等技術已遠遠不能滿足要求,這時通過PWM方式控制直流電機調速的放大應運而生。 本課程設計主要是通過按鍵調整PWM信號實現直流電機的調速。并實現電路仿真。設計中,采用了AT89C51單片機作為整個控制系統的控制電路的核心部分,配以各種顯示、驅動模塊,實現對電動機轉速的計算和顯示。 目錄 設計要求 ……………………………………………………… 4 總體方案 ……………………………………………………… 5 硬件設計 ……………………………………………………… 7 軟件設計 ……………………………………………………… 8 調試過程 ……………………………………………………… 11 設計總結 ……………………………………………………… 13 其他 ……………………………………………………… 14 直流電機調速控制 實現具有電機速度設定、控制及顯示的調速系統,功能及指標如下: 要求電機能進行速度設定,速度調控以及正反轉功能 數碼管的顯示要準確,不可出現異常符號 本設計方案中采用鍵盤輸入,要求繪圖連線準確,按鍵無異常響應 程序應盡可能的模塊化,對每個模塊的功能及作用進行標注 繪圖的功能要全面,連線盡量少交叉,整體美觀。 2.1 文獻綜述 直流電機的調速方法 - 電樞回路串電阻調速:調速平滑性差,低速時損耗大、效率低,串入電阻值越大穩定性越差
- 降低電源電壓調速:調速平滑性好,調速前后機械斜率不變穩定性好調速范圍廣,調速損耗小調速經濟性好。
- 改變勵磁磁通調速:調節平滑,勵磁電流小能量損耗小經濟性好,轉速穩定。
芯片選擇:DA芯片、mc1413芯片、uln2003芯片等等 分析:在直流電機調速方法中,從性能上選擇,應選降低電樞電壓調速和改變勵磁磁通調速。但從實行的難易程度上看應選擇降低電源電壓調速。 在芯片的選擇上,DA芯片、mc1413芯片和uln2003芯片。前者為數字模擬量轉換芯片,后兩者功能均為放大電壓和電流。這三個芯片均可以設計直流電機的調速控制。從成本上考慮,DA芯片價格超后者,后兩者功能都較為相似,但ULN2003便宜少許所以選擇ULN2003芯片。 2.2 方案設計 本方案基于性價比高的原則來設計。通過按鍵控制PWM信號占空比控制輸入電壓的幅值來控制直流電機的轉速。使用ULN2003芯片來驅動電機。
按鍵:按鍵分為停止鍵,1~10檔位調節,正轉反轉調節及每個檔位上的轉速微調 數碼管顯示轉速:由占空比計算得轉速并加以顯示在數碼管上 PWM信號:PWM信號占空比控制輸入電壓的幅值 ULN2003驅動電路:ULN2003 放大信號 通過H橋電路來驅動電機可正反轉 直流電機:被控制對象 單片機:用于接收按鍵值處理并發出相應的PWM信號以及顯示轉速在數碼管上 三、硬件設計 3.1 電路原理圖
1.013.jpg (42.65 KB, 下載次數: 69)
下載附件
2017-7-27 17:44 上傳
3.2 器件選擇 考慮單片機無法驅動直流電機所以用了ULN2003這個放大電壓的芯片,因為ULN2003最高輸出電壓為50V完全可以滿足所選擇電機。且在設計中需要正反轉,所以電路選擇了H橋電路通過切換輸出PWM信號的端口可實現電機的正反轉。
F0為輸出高電平還是低電平的標志位 JG為定義的數組 JG與JG+1里面分別存儲了PWM信號高電平與低電平的次數 FLAG 正反轉標志位 IS_BUFF數碼管緩沖顯示單元首地址 鍵盤主要是用線反轉法,先給列線全賦0,行線全賦1.有行按下,對應行為0,。同理再給列線全賦1,行線全賦0。哪一列為0則為該列按下。由此可得是哪一個鍵按下 ULN2003:
1.063.jpg (13.42 KB, 下載次數: 41)
下載附件
2017-7-27 17:44 上傳
ULN2003 的每一對達林頓都串聯一個2.7K 的基極電阻,在5V 的工作電壓下它能與TTL 和CMOS 電路直接相連,可以直接處理原先需要標準邏輯緩沖器來處理的數據。ULN2003 工作電壓高,工作電流大,灌電流可達500mA,并且能夠在關態時承受50V 的電壓,輸出還可以在高負載電流并行運行。ULN2003 采用DIP—16 或SOP—16 塑料封裝。 它是雙列16腳封裝,NPN晶體管矩陣,最大驅動電壓=50V,電流=500mA,輸入電壓=5V,適用于TTL COMS,由達林頓管組成驅動電路。 ULN是集成達林頓管IC,內部還集成了一個消線圈反電動勢的二極管,它的輸出端允許通過電流為200mA,飽和壓降VCE 約1V左右,耐壓BVCEO 約為36V。用戶輸出口的外接負載可根據以上參數估算。采用集電極開路輸出,輸出電流大,故可直接驅動繼電器或固體繼電器,也可直接驅動低壓燈泡。通常單片機驅動ULN2003時,上拉2K的電阻較為合適,同時,COM引腳應該懸空或接電源。 五、調試過程 5.1 軟硬件調試 用Proteus跟Keil聯調。將Proteus跟Keil設置好以后,先運行寫的程序,沒有錯誤后進入DEBUG模式,點擊運行Proteus做出響應。 遇到的問題: 在仿真過程中我發現按鍵電機轉速并未有變化。在進行聯調后,按下按鍵,單步運行發現鍵盤程序始終在按鍵掃描部分跳轉,修改了程序,解決了問題。 5.2 運行效果
1.064.jpg (54.03 KB, 下載次數: 76)
下載附件
2017-7-27 17:44 上傳
電機停轉
1.065.jpg (51.46 KB, 下載次數: 40)
下載附件
2017-7-27 17:44 上傳
電機正60轉
1.066.jpg (54.66 KB, 下載次數: 48)
下載附件
2017-7-27 17:44 上傳
電機反轉150轉 六、設計總結 通過本次設計,加強了我對知識的掌握,使我對設計過程有了全面的了解。為了完成這次設計,我查閱了相關資料,學會了許多知識,培養了我獨立解決問題的能力。同時在對電路設計的過程中,鞏固了我的專業知識,使我受益匪淺。 這次的設計也有不足之處。在測量轉速上,我并未用反饋的方法來顯示轉速,而是通過計算得到轉速。這使得轉速與真實值有一定的偏差。這主要是因為我一開始所做的準備工作不充分。并未注意到這一部分。這是本次設計給我教訓,在以后的工作中一定要對課題做好充分的了解以及準備工作。 參考文獻 【1】張毅剛,單片機原理及其應用,高等教育出版社 【2】張毅剛,基于Proteus的單片機課程的基礎實驗與課程設計,人民郵電出版社 【3】羌予踐,電機與電力拖動基礎教程,電子工業出版社 【4】谷腰欣司,直流電動機實際應用技巧,科學出版社
單片機源程序如下:
- FLAG BIT 00H ;正反轉標志位
- DIS_BUFF EQU 30H ;數碼管緩沖顯示單元首地址
- JG EQU 40H ;PWM信號占空比數值 & 數碼管位選循環次數存儲地址
- ORG 0000H
- LJMP MAIN
- ORG 000BH
- LJMP IT0P
- ORG 0100H
- MAIN:MOV SP,#60H
- MOV TMOD,#02H ;T0 方式2
- MOV TL0,#0FEH
- MOV TH0,#0FEH
- MOV JG,#0 ;占空比為0%
- MOV JG+1,#1
- MOV JG+3,#1 ;數碼管位選循環1次
- MOV R5,JG
- SETB P2.5 ;輸出PWM信號(p2.5為信號輸出,將p2.5給p2.7為正轉,將p2.5給p2.6為反轉)
- SETB F0
- SETB ET0
- SETB EA
- SETB TR0
- LOOP:
- LCALL KEY ;按鍵掃描
- LCALL DISPLAY;數碼管動態顯示
- LJMP LOOP
- IT0P:DJNZ R5,PWM0
- JB F0,S_LOW
- SETB P2.5
- SETB F0
- MOV R5,JG
- PWM0:JB FLAG,PWM1;置1為反轉,置0為正轉
- JB P2.5,S1
- CLR P2.7
- RETI
- S1: SETB P2.7
- RETI
- PWM1:JB P2.5,S2
- CLR P2.6
- RETI
- S2: SETB P2.6
- RETI
-
- S_LOW:CLR P2.5
- CLR F0
- MOV R5,JG+1
-
- EXIT:RETI
- KEY: MOV P1,#0FH ;列線(p1.4~p1.7)為0,行線(p1.0~p1.3)為1
- MOV A,P1
- CJNE A,#0FH,T;檢測是否有行按下
- RET
- T: LCALL DELAY ;延時消抖
- CJNE A,#0FH,H0;是否真的有按鍵按下
- LJMP LOOP
- H0: JB P1.0,H1 ;檢測哪一行按下(為0)
- MOV R3,#0
- LJMP L_SCAN
- H1: JB P1.1,H2
- MOV R3,#4
- LJMP L_SCAN
- H2: JB P1.2,H3
- MOV R3,#8
- LJMP L_SCAN
- H3: JB P1.3,L_SCAN
- MOV R3,#12
- L_SCAN:MOV P1,#0F0H;列線(p1.4~p1.7)為1,行線(p1.0~p1.3)為0
- L0: JB P1.4,L1 ;檢測哪一行按下(為0)
- MOV R2,#0
- LJMP JS
- L1: JB P1.5,L2
- MOV R2,#1
- LJMP JS
- L2: JB P1.6,L3
- MOV R2,#2
- LJMP JS
- L3: JB P1.7,JS
- MOV R2,#3
- JS: MOV A,R3 ;計算行列值
- ADD A,R2
-
- KEY0:CJNE A,#0,KEY1;關閉電機
- CLR TR0
- SETB P2.5
- MOV JG+3,#1
- MOV DIS_BUFF,#0H
- SETB P2.7
- SETB P2.6
- LJMP LOOP
- KEY1:CJNE A,#1,KEY2;一檔30轉
- SETB TR0
- MOV JG,#208 ;PWM占空比
- MOV JG+1,#30
- LJMP SCREEN
- KEY2:CJNE A,#2,KEY3;二擋60轉
- SETB TR0
- MOV JG,#178
- MOV JG+1,#60
- LJMP SCREEN
- KEY3:CJNE A,#3,KEY4;三擋90轉
- SETB TR0
- MOV JG,#148
- MOV JG+1,#90
- LJMP SCREEN
- KEY4:CJNE A,#4,KEY5;四擋110轉
- SETB TR0
- MOV JG,#128
- MOV JG+1,#110
- LJMP SCREEN
- KEY5:CJNE A,#5,KEY6;五檔130轉
- SETB TR0
- MOV JG,#108
- MOV JG+1,#130
- LJMP SCREEN
- KEY6:CJNE A,#6,KEY7;六檔150轉
- SETB TR0
- MOV JG,#88
- MOV JG+1,#150
- LJMP SCREEN
- KEY7:CJNE A,#7,KEY8;七檔170轉
- SETB TR0
- MOV JG,#68
- MOV JG+1,#170
- LJMP SCREEN
- KEY8:CJNE A,#8,KEY9;八檔190轉
- SETB TR0
- MOV JG,#48
- MOV JG+1,#190
- LJMP SCREEN
- KEY9:CJNE A,#9,KEY10;九檔210轉
- SETB TR0
- MOV JG,#28
- MOV JG+1,#210
- LJMP SCREEN
- KEY10:CJNE A,#10,KEY11;滿轉(由于關閉T0,手動裝入數值顯示)
- CLR TR0
- CLR P2.5
- MOV JG+3,#3
- JNB FLAG,MINUS1 ;檢測正反轉
- MOV JG+3,#4
- MOV DIS_BUFF+3,#0AH
- MINUS1:
- MOV DIS_BUFF,#8H
- MOV DIS_BUFF+1,#3H
- MOV DIS_BUFF+2,#2H
- JB FLAG,PWM3
- CLR P2.7
-
- LJMP LOOP
- PWM3: CLR P2.6
- LJMP LOOP
- KEY11:CJNE A,#11,KEY12
-
- CLR FLAG ;標志位置0 正傳
- MOV A,#00H
- LJMP KEY0
- KEY12:CJNE A,#12,KEY13
- SETB FLAG ;標志位置1 反轉
- MOV A,#00H
- LJMP KEY0
- KEY13:CJNE A,#13,KEY14 ;微調占空比 增加轉速
- CLR C
- SETB TR0
- MOV A,JG+1
- SUBB A,#239
- MOV A,#10
- JNC KEY10
- MOV R0,#JG+1
- INC @R0
- MOV R0,#JG
- DEC @R0
-
- LJMP SCREEN
- KEY14:CJNE A,#14,KEY15 ;微調占空比 減少轉速
- CLR C
- SETB TR0
- MOV A,JG+1
- SUBB A,#1
- MOV A,#11
- JC KEY11
- MOV R0,#JG
- INC @R0
- MOV R0,#JG+1
- DEC @R0
-
- LJMP SCREEN
- KEY15:LJMP LOOP
-
- SCREEN:
- MOV A,JG+1 ;計算轉速
- MOV B,#64H
- DIV AB
- MOV DIS_BUFF+2,A
- MOV A,B
- MOV B,#0AH
- DIV AB
- MOV DIS_BUFF+1,A
- MOV DIS_BUFF,B
- MOV R1,#33H
-
- LOOP0: MOV DIS_BUFF+3,#00H;計算位選循環次數
- CJNE @R1,#00H,FZ
- DEC R1
- CJNE R1,#2FH,LOOP0
- FZ: JB FLAG,MINUS
- MOV A,R1
- SUBB A,#2FH
- MOV JG+3,A
- LJMP LOOP
- MINUS: INC R1 ;顯示負號
- MOV @R1,#0AH
- MOV A,R1
- SUBB A,#2FH
-
- MOV JG+3,A
- LJMP LOOP
- DISPLAY:MOV R1,#DIS_BUFF ;動態顯示程序
- MOV R4,JG+3
- MOV B,#10H
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
直流電機.rar
(144.85 KB, 下載次數: 112)
2017-7-27 17:13 上傳
點擊文件名下載附件
直流電機調速 下載積分: 黑幣 -5
|