1.了解直流電機 PWM 的工作原理
2.基礎要求:編程并實現直流電機的調速,LED 顯示電機的轉速,即電位器輸出(開環)
3.擴展要求:編程并實現直流電機的調速,以 SPEED 口輸出的信號為反饋顯示電機的實 際轉速(閉環)
實驗原理
1.PWM 的調速原理
PWM 調速是通過改變輸出脈沖的占空比,從而改變電機轉速的一種調速方法。PWM 調速 分為單極性和雙極性兩種。在單極性方式下,電機的轉動方向不變,改變的只是轉速;而在 雙極性方式下,電機的轉動方向和轉速都是可變的。以下以單極性為 例說明 PWM 調速 的基本原理。
假設一個脈沖周期內,高電平電壓為 Us,持續時間為 t1;低電平為 0V,持續時間為 t2。 則脈沖周期 T=t1+t2,該周期內平均電壓 U0=t1*Us/T。令α=t1/T,則 U0=α*Us,α表示占 空比。當高電平電壓不變的情況下,電機兩端電壓的平均值 U0 取決于占空比α的大小。改 變α值就可以改變端電壓的平均值,從而達到調速的目的,這就是 PWM 調速原理。
在雙極性方式下,如果 U0 為負,意味著電機將反轉,轉速由 U0 的絕對值控制。
2.對象模塊(PWM 電機調速模塊)工作原理
直流電機 PWM 調速模塊由測速電路和 PWM 調速電路兩部分組成。模塊的電源由接口總線 引入。本模塊中使用的電機為 5V 的直流電機。
? 電機測速部分
(1)直流電機測速原理介紹 電機測速部分由一個霍爾開關和信號放大電路組成。與電機同軸的轉盤上裝有兩塊的強
力磁鋼,它們的磁極性相反,以保持轉盤的平衡并保證轉盤每轉一周霍爾開關只導通一次。 霍爾開關平時輸出為正電壓,當轉盤上的磁鋼與霍爾開關正對時,霍爾開關輸出負電壓,經 整形、放大輸出。單片機通過對負脈沖計數,可計算出電機的轉速。
(2)電機測速部分電路原理及說明
3144 為霍爾開關,整形、放大由 LM358 完成。第一級 358 作為比較器使用,第二級作 為電壓跟隨器。SPEED 為負脈沖輸出接口,對應于模塊上的 SPEED 插孔。
(3)電機測速部分電路測試方法 將模塊插在接口掛箱或對象掛箱上并接通電源,電機應轉動。用示波器在 SPEED 插孔處
可以看到連續的負脈沖。
PWM 調速部分
(1)PWM 調速電路原理及說明
JUMP 跳線為極性選擇。2、3 腳短接(模塊上選擇 D 端)為雙極性;1、2 腳短接(模 塊上選擇 S 端)為單極性。單極性時,PWM IN 為高,電機兩端無電壓;PWM IN 為低,電 機兩端為正電壓。
雙極性時,PWM IN 為高,電機兩端為負電壓;PWM IN 為低,電機兩端為正電壓。
(2)PWM 調速電路基本測試方法
將 CPU 模塊的 P1.0~P1.1 分別接至 CPU 掛箱的 K1~K3,T0 接 PWM 調速模塊的 PWM IN, 模塊的跳線 1、2 腳短接。運行測試程序,改變 K1~K3 的值,電機轉速應隨之變化。
3.電位器模塊
電位器模塊為一個 10K 的可調電阻,通過調節電位器上的旋鈕可以改變電位器的電壓輸 出。此電位器的電壓輸出為 0~5V 模擬電壓。通過連接 ADC0809 可將電位器的模擬電壓轉換 為數字量,提供給單片機使用。
4.ADC0809 模塊
ADC0809 是一種逐次比較式 8 路模擬輸入、8 位數字量輸出的 A/D 轉換器。
ADC0809 START 端為 A/D 轉換啟動信號,ALE 端為通道選擇地址的鎖存信號。實驗電路 中將其相連,以便同時鎖存通道地址并開始 A/D 采樣轉換,故啟動 A/D 轉換只需如下兩條指 令:
MOV DPTR,#PORT MOVX @DPTR,A
A 中為何內容并不重要,這是一次虛擬寫。
在中斷方式下,A/D 轉換結束后會自動產生 EOC 信號,將其與 8031CPU 板上的 INT0 相 連接。在中斷處理程序中,使用如下指令即可讀取 A/D 轉換的結果:
MOV DPTR,#PORT MOVX A,@DPTR
5.8279 顯示模塊
(1)、電路原理
8279 顯示電路由 6 位共陰極數碼管顯示,74LS244 為段驅動器,75451 為位驅動器,可 編程鍵盤電路由1片 74LS138 組成,8279 的數據口,地址,讀寫線,復位,時鐘,片選都 已經接好,鍵盤行列掃描線均有插孔輸出。鍵盤行掃描線插孔號為 KA0~KA3;列掃描線插孔 號為 RL0~RL7;8279 還引出 CTRL、SHIFT 插孔。六位數碼管的位選、段選信號可以從 8279 引入,也可以有外部的其他電路引入,原理圖如下:
(2)、電路測試見整機測試
六位數碼管電路的測試:除去電路板上數碼管右側的跳線,系統加點,用導線將插孔 LED1 接低電平(GND),再將插孔 LED-A,LED-B,LED-C,LED-D,LED-E,LED-F,LED-G,LED-DP 依次接高電平(VCC),則數碼管 SLED1 的相應段應點亮,如果所有的段都不亮,則檢查相應 的芯片 75451,如果個別段不亮,則檢查該段的連線、及數碼管是否損壞。
用同樣的方法依次檢查其它數碼管。
8259 顯示、鍵盤控制芯片電路的測試:加上數碼管右邊的所有短路線,復位系統,應 能正常顯示。否則檢查 8279 芯片、244 芯片、138 芯片是否正常。
軟件設計
1.思路描述
本實驗要實現的功能分別為電機調速和 LED 顯示。
直流電機調速部分:由于電位器輸出為模擬電壓,而單片機所能處理的僅為數字信號, 所以要經過 ADC0809 將電位器的輸出裝換為數字信號。因此編程時要啟動 IN0,啟動 A/D 轉 換,并用軟件延時一段時間等待轉換結束,然后讀取轉換結果并將其存入指定的寄存器供調 用。
直流電機轉速的調節需要改變輸出脈沖的占空比,因此需要編寫一個能輸出方波的子程 序。如先讓 PWM 為 0,延時一段時間后,再將 PWM 取反,即為 1,在延時取反,如此反復就 能達到輸出方波的目的。通過調節電位器的電壓輸出改變輸出方波的占空比,達到調速的目 的。
LED 顯示部分:本部分的主要功能是將 ADC0809 的輸出顯示在 LED 上。首先將轉換結果 存入寄存器 R1,然后寫顯示 RAM 命令字,數據端口地址送 R0,并將初值送 R0。寫 8279 數 據口地址,讀取轉換結果,語句“ACALL TABLE”通過查表將 ADC0809 的轉換結果轉換為 顯示碼,寫入 8279 顯示 RAM 指針 R0 加 1,顯示碼送 DPTR 輸出。計數器 R7 減 1,不為零則 跳轉顯示下一個數據,減為零則從子程序返回。
3.程序清單
(1)PWM 電機調速程序 PWM 模塊調試接線說明
模塊的 PWM 插口與系統板上的 P1.0 插口相連;
外擴 a/d 模塊 0809 的片選信號與系統板上的 CS3 相連(箱式的片選地址為 CFB8H) PWM 模塊的跳線:在 S 端短路時,單脈沖;
在 D 段短路時,雙脈沖
0809 的 CLK 接 CPU 掛箱的 CLK3,ADIN0 接模擬輸入。
CSEG AT 4000H PORT EQU 0CFB8H PWM EQU P1.0
LJMP START CSEG AT 4030H
START: MOV R3,#1H
MOV DPTR,#PORT ;啟動通道 0
MOVX @DPTR,A MOV R0,#30H
LOOP1: DJNZ R0,LOOP1
MOVX A,@DPTR SWAP A
ANL A,#0FH CJNE A,#0H,LP JMP LP2
LP: CJNE A,#0FH,LP1
JMP LP2
LP1: MOV R0,A MOV R4,A MOV A,#0FH CLR C
SUBB A,R0
MOV R5,A LP2: CPL PWM
MOV A,R4
MOV R0,A CALL DELAY CPL PWM MOV A,R5
MOV R0,A CALL DELAY DJNZ R3,LP2
MOV R3,#1H JMP START
DELAY: MOV R1,#8FH DELAY1:NOP
DJNZ R1,DELAY1
DJNZ R0,DELAY RET
END (2)LED 顯示程序 CSEG AT 0000H
LJMP START
CSEG AT 4100H
PORT EQU 0CFB8H START: SETB P1.0
MOV DPTR,#PORT ;啟動通道 0
MOVX @DPTR,A WAIT: JNB P1.0 WAIT
MOVX A, @DPTR MOV R0, A
DISP: MOV DPTR,#0CFE9H ; MOV A,#08H
MOVX @DPTR,A
MOV DPTR,#0CFE9H ;寫顯示 RAM 命令字 MOV A,#90H
MOVX @DPTR,A
MOV A, R0 ;轉換結果
ANL A,#0F0H
SWAP A
ACALL TABLE ;轉換為顯碼
MOV DPTR,#0CFE8H ;8279 數據口地址
MOVX @DPTR,A
;送顯碼輸出
MOV A, R0 ;轉換結果
ANL A,#0FH
ACALL TABLE ;轉換為顯碼
MOV DPTR,#0CFE8H ;8279 數據口地址 MOVX @DPTR,A ;送顯碼輸出
CALL DELAY
LJMP START
DELAY: MOV R6,#255 ;延時 DEL2: MOV R5,#255
DEL3: NOP NOP
DJNZ R5,DEL3
DJNZ R6,DEL2
RET
TABLE: INC A
MOVC A,@A+PC RET
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
(3)總程序
CSEG AT 4000H
PORT EQU 0CFB8H ;端口地址
PWM EQU P1.0
LJMP START
CSEG AT 4030H
START: MOV R3,#1H ;設置模擬輸出通道個數為 1,PWM 調速程序部分 MOV DPTR,#PORT ;啟動通道 IN0,端口地址送 DPTR
MOVX @DPTR,A ;啟動 A/D 轉換
MOV R0,#30H ;軟件延時,等待轉換結束
LOOP1: DJNZ R0,LOOP1 ;R0 寄存器減 1,不為零則轉移 MOVX A,@DPTR ;讀取轉換結果
SWAP A ;高低半字節交換
ANL A,#0FH ;屏蔽高四位,取低四位
CJNE A,#0H,LP ;比較電壓是否為 0V,不相等則跳轉至子程序 LP JMP LP2 ;等于 0V 則跳轉至方波輸出子程序 LP2
LP: CJNE A,#0FH,LP1 ;不等于 5V 則跳轉至子程序 LP1
JMP LP2 ;等于 5V 則跳轉至方波輸出子程序 LP2
LP1: MOV R0,A ;轉換值存入 R0
MOV R4,A ;轉換值存入 R4
MOV A,#0FH ;最大值送入累加器 CLR C ;進位位清零
SUBB A,R0
MOV R5,A
LP2: CPL PWM ;PWM 求反,為 0,方波輸出子程序 MOV A,R4
MOV R0,A
CALL DELAY ;延時
CPL PWM ;PWM 求反,P1.0=1
MOV A,R5
MOV R0,A CALL DELAY
DJNZ R3,LP2 ;R3 減 1,不等于零則轉移,循環 MOV R3,#1H ;重新置值
JMP START ;跳轉至 START 程序
START1: MOV DPTR,#0CFB8H ;顯示部分程序 MOV DPTR,#PORT
MOVX @DPTR,A
WAIT: JNB P1.0 WAIT ;等待中斷 MOVX A, @DPTR
MOV R0, A
DISP: MOV A,R1 ;轉換結果存入 R1
SWAP A ;分離高四位和低四位 ANL A,#0FH
MOV 50H,A ;存入 50H 中 MOV A,R1
ANL A,#0FH
MOV 51H,A ;存入 51H 中 MOVX @DPTR,A
LPPO: MOV MOV MOVX MOV MOV DPTR,#0CFE9H A,#90H
@DPTR,A R0,50H R2,#02H ;寫顯示 RAM 命令字
;存放轉換結果地址,初值送 R0
MOV DPTR,#0CFE8H ;8279 數據口地址
DL0:
MOV ACALL A,@R0
TABLE
;絕對調用,轉換為顯碼
MOVX
INC DJNZ SJMP CALL LJMP @DPTR,A
R0
R2,DL0
DEL1
DELAY START ;送顯碼輸出
;短轉移
DELAY: MOV R6,#8FH ;延時程序
DELAY1: NOP
DJNZ R6,DELAY1
DJNZ R0,DELAY
DEL1: MOV R6,#15H DEL2: MOV R7,#25H DEL3: NOP
NOP
DJNZ R7,DEL3
DJNZ R6,DEL2
CJMP START ;循環 RET
IT0P: SETB TR1 ;開定時器 1 ;中斷程序 SETB ET1
RETI ;中斷返回 IT1P:
CLR TR0
CLR TR1
MOV A,TL0
MOV TH0,#0H; 置零 MOV TL0,#0H;
MOV TH1, #3CH ;重置初值 MOV TL1 ,#0B0H
MOV R2, A
ACALL DISP ;調用顯示函數 ACALL COMPARE
RETI
TABLE: INC A
MOVC A,@A+PC RET
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
調試說明
1.實驗現象
當電位器旋到最小電壓輸出時,電機停止轉動,LED 模塊顯示為“00”;逐步增大電位 器的電壓輸出,直流電機的轉速逐步加快,LED 顯示增大;當電位器旋到最大電壓輸出時, 電機轉速最大,LED 顯示為“FF”。
2.列舉問題
LED 顯示由“00”逐漸增大到“FF”過程中顯示正常,但是過一段時間后顯示變為“00”, 并不再改變。
3.原因分析
經分析為計數器計數溢出。計數器記錄的是方波脈沖,在從“00”增大到“FF”過程是 可以正常計數,但當計數超過“FF”時,計數器發生溢出,所以顯示變成“00”。可以通過 添加中斷程序,當計數器發生溢出時,CPU 響應中斷,并將計數器清零,重新計數可以解決 此問題。
IT0P:
SETB TR1 ;開定時器 1
SETB ET1
RETI ;中斷返回 IT1P:
CLR TR0
CLR TR1
MOV A,TL0
MOV TH0,#0H; 置零 MOV TL0,#0H;
MOV TH1, #3CH ;重置初值 MOV TL1 ,#0B0H
MOV R2, A
ACALL DISP ;調用顯示函數 ACALL COMPARE
RETI END
4.實驗總結
(1)實驗實現功能 本實驗實現了通過調節電位器的不同電壓輸出來改變直流調速電機的轉速。當電位器輸
出最小時,電機轉速最慢;電位器輸出最大時,電機達到最大轉速。并且電機的轉速可以通 過 LED 模塊顯示出來,可以通過觀察來發現電機轉速的情況。因此,本實驗即達到了動態調 節電機轉速,又實現了實時監測電機的運轉情況。
(2)實驗不足及改正意見
本實驗雖然實現了直流電機調速和 LED 動態顯示,但 LED 顯示的數值是經過延時后輸出 的,并不是電機現在轉速的實時精確值。不過就現有的實驗條件來看已經是所能達到的最準 確的。
另外,此試驗只利用了單片機的某一些端口,并且也是一些不很復雜的輸出和輸入,數 據轉換功能,并未充分利用單片機的片內資源。就這一點來看,由本實驗出發,單片機所能 實現的功能還有待進一步在后續的試驗中繼續開發。
實驗編程使用的是匯編語言,具有編寫的程序效率高,占用的存儲空間小,運行速度快, 能直接管理和控制硬件設備,直接訪問存儲器及 I/O 接口電路等優點。但其可讀性和可維護 性較差,編寫程序需要對硬件電路及存儲器特別了解,是設計程序時不能把精力全部集中到 程序所能實現的功能上。如果程序很長的話,無論是讀懂還是修改都是一件很麻煩的事。因 此,建議適當學習高級語言,如 C 語言的單片機程序編寫。可以減少在程序設計階段一些不 必要的麻煩。
記錄
1.解釋霍爾器件的工作過程。 答:在電機同軸的轉盤上裝有兩塊的強力磁鋼,它們的磁極性相反,以保持轉盤的平衡
并保證轉盤每轉一周霍爾開關只導通一次。霍爾開關平時輸出為正電壓,當轉盤上的磁鋼與 霍爾開關正對時,霍爾開關輸出負電壓,經整形、放大輸出。單片機通過對負脈沖計數,可 計算出電機的轉速。
2.PWM 模塊上的 IN4002 是什么元件,作用是什么。 答:IN4002 是二極管,作用是整流。
3.PWM 模塊上 JUMP 跳線的 S/D 分別是什么,有什么作用。 答:JUMP 跳線的作用為極性選擇。
2、3 腳短接(即 D 端)為雙極性;1、2 腳短接(即 S 端)為單極性。 單極性時,PWM IN 為高,電機兩端無電壓;PWM IN 為低,電機兩端為正電壓。單
極性是只可以調節電機的轉速;雙極性時可以調節電機的轉速和轉動方向。
以上內容的Word格式文檔51黑下載地址:
單片機綜合實驗-PWM直流電機調速-449985896529647d27285290.doc
(713.5 KB, 下載次數: 12)
2021-6-29 11:48 上傳
點擊文件名下載附件
|