設(shè)計(jì)一個(gè)直流伺服電機(jī)控制系統(tǒng),控制功能要求實(shí)現(xiàn)電機(jī)的啟動(dòng)、停止控制、正轉(zhuǎn)、反轉(zhuǎn)、加速、減速共六種功能,為了能實(shí)現(xiàn)人機(jī)交互,需要用到按鍵和數(shù)碼管。
具體要求如下:K0為啟動(dòng)/停止控制、K1正轉(zhuǎn)、K2反轉(zhuǎn);K3加速,K4減速,用3個(gè)發(fā)光二極管顯示狀態(tài):正轉(zhuǎn)時(shí)紅燈亮,反轉(zhuǎn)時(shí)黃燈亮,不轉(zhuǎn)時(shí)綠燈亮。并利用4位LED數(shù)碼管顯示電機(jī)轉(zhuǎn)速。
要求分析:
按鍵K1用來控制電機(jī)反轉(zhuǎn),若電機(jī)正在停止或正轉(zhuǎn)狀態(tài),當(dāng)按下k1時(shí),電機(jī)開始反轉(zhuǎn);若電機(jī)處于反轉(zhuǎn)狀態(tài),電機(jī)不響應(yīng)按鍵命令。
按鍵K2用來控制電機(jī)正轉(zhuǎn),若電機(jī)正在停止或反轉(zhuǎn)狀態(tài),當(dāng)按下k2時(shí),電機(jī)開始正轉(zhuǎn);若電機(jī)處于正轉(zhuǎn)狀態(tài),電機(jī)不響應(yīng)按鍵命令。
按鍵K3用來控制電機(jī)加速,當(dāng)電機(jī)處于運(yùn)行狀態(tài)時(shí),如果電機(jī)尚未達(dá)到最大轉(zhuǎn)速,當(dāng)按下按鍵K3時(shí),電機(jī)會(huì)加速,每按一次,電機(jī)加速一個(gè)節(jié)拍,若需要一直加速,則需要多次按下按鍵K3,當(dāng)電機(jī)到達(dá)最大速度時(shí),電機(jī)將保持在最大速度運(yùn)行,不再響應(yīng)按鍵命令。
按鍵K4用來控制電機(jī)減速,當(dāng)電機(jī)處于運(yùn)行狀態(tài)時(shí),如果電機(jī)尚未達(dá)到最小轉(zhuǎn)速,即停止?fàn)顟B(tài),當(dāng)按下按鍵K4時(shí),電機(jī)會(huì)減速,每按一次,電機(jī)減速一個(gè)節(jié)拍,若需要一直減速,則需要多次按下按鍵K4,當(dāng)電機(jī)到達(dá)最小速度時(shí),即電機(jī)處于停止?fàn)顟B(tài),電機(jī)將保持停止,不再響應(yīng)按鍵命令。
為了知道電機(jī)是否按控制要求工作,需要知道電機(jī)的轉(zhuǎn)速,這里用到了4位數(shù)碼管來顯示,最高位顯示轉(zhuǎn)動(dòng)方向,正轉(zhuǎn)顯示“0”,反轉(zhuǎn)顯示“-”。后3位用來顯示轉(zhuǎn)速的數(shù)值大小。
此外,設(shè)置三個(gè)發(fā)光二極管,來顯示電機(jī)的運(yùn)行狀態(tài)。當(dāng)電機(jī)停止時(shí),綠燈亮,當(dāng)電機(jī)正轉(zhuǎn)時(shí),紅燈亮,當(dāng)電機(jī)反轉(zhuǎn)時(shí),黃燈亮。
2.控制方案設(shè)計(jì)
因?yàn)橹绷麟姍C(jī)的工作電壓和電流與控制電路的電壓和電流不匹配,所以需要設(shè)計(jì)接口電路,用來把控制電路的指令轉(zhuǎn)化為電機(jī)的工作信號(hào),這種接口電路稱為直流電機(jī)的驅(qū)動(dòng)電路。直流電機(jī)的驅(qū)動(dòng)電路有多種不同的設(shè)計(jì)方案,這里著重介紹了用分立元件構(gòu)成的驅(qū)動(dòng)電路和用集成芯片構(gòu)成的驅(qū)動(dòng)電路。
2.1用分立元件構(gòu)成直流電機(jī)的驅(qū)動(dòng)電路
利用晶體管,電阻等分立元件,來組成直流電機(jī)的全橋驅(qū)動(dòng)電路。因?yàn)殡姍C(jī)的工作電流較大,而一個(gè)三極管的電流放大能力有限,所以采用達(dá)林頓組成全橋(H橋)驅(qū)動(dòng)電路控制電機(jī),以滿足電機(jī)工作的需要。如圖1所示。圖中的Q1~Q4是功率三極管,其中Q1和Q2組成一個(gè)橋臂,其中Q3和Q4組成一個(gè)橋臂。每個(gè)功率三極管旁邊有一個(gè)續(xù)流二極管。當(dāng)Q1和Q4打開時(shí),直流電機(jī)的控制電流從A流向B,此時(shí)直流電機(jī)正轉(zhuǎn);當(dāng)Q2和Q3打開時(shí),直流電機(jī)的控制電流從B流向A,此時(shí)直流電機(jī)反轉(zhuǎn)。這樣,通過Q1~Q4的控制就可以控制直流電機(jī)的轉(zhuǎn)向了。
圖1直流電機(jī)全橋控制原理圖
2.2用電機(jī)驅(qū)動(dòng)芯片來構(gòu)成直流電機(jī)的驅(qū)動(dòng)電路
這里所用的驅(qū)動(dòng)芯片是L298,L298起到方大電流的作用。L298有4路輸入,4路輸出,2個(gè)使能端。用L298構(gòu)成的驅(qū)動(dòng)電路如圖2所示。
其工作原理為:L298芯片中,IN1對(duì)應(yīng)OU1,IN2對(duì)應(yīng)OUT2,IN3對(duì)應(yīng)OU3,IN4對(duì)應(yīng)OUT4,使能端ENA對(duì)應(yīng)IN1和IN2,使能端ENB對(duì)應(yīng)IN3和IN4。在使能端為高電平的狀態(tài)下,當(dāng)IN1輸入高電平IN2輸入低電平時(shí),電機(jī)正轉(zhuǎn),當(dāng)IN1輸入低電平IN2輸入高電平時(shí),電機(jī)反轉(zhuǎn),當(dāng)IN1和IN2輸入電平相等時(shí),電機(jī)不轉(zhuǎn)。如果使能端為低電平,那么電機(jī)不受控制,而處于停止?fàn)顟B(tài)。
圖2直流電機(jī)驅(qū)動(dòng)電路圖
L298的工作電壓范圍在7V~50V之間,輸出電流可達(dá)2A,能夠滿足直流電機(jī)的控制需要。
2.3.方案選擇
以上所給的兩種直流電機(jī)的驅(qū)動(dòng)方案都能滿足要求,現(xiàn)在來對(duì)它們進(jìn)行分析比較,選出合適的方案。
用分立元件構(gòu)成的直流電機(jī)驅(qū)動(dòng)電路,其優(yōu)點(diǎn)是:電路由分立元件組成,通過分析電路,能直觀的了解驅(qū)動(dòng)電路的工作原理,對(duì)于理論學(xué)習(xí)是非常有幫助的。其缺點(diǎn)是:電路過于復(fù)雜,在制作實(shí)物時(shí)容易出錯(cuò),另一方面,分立元件過多,其可靠性很難保證。
用集成芯片構(gòu)成的直流電機(jī)驅(qū)動(dòng)電路,其優(yōu)點(diǎn)是,電路簡(jiǎn)單,元件減少,電路的可靠性高,制作實(shí)物時(shí)相對(duì)較容易。其缺點(diǎn)是,對(duì)于初學(xué)者很難知道期內(nèi)的工作原理,只能簡(jiǎn)單的用。
通過上面的分析,我決定選用集成芯片L298來構(gòu)成直流電機(jī)的驅(qū)動(dòng)電路,這樣實(shí)現(xiàn)起來較為容易。
2.4.總體方案設(shè)計(jì)
控制系統(tǒng)的核心控制芯片是AT89C51單片機(jī),單片機(jī)作為整個(gè)系統(tǒng)的大腦,協(xié)調(diào)各個(gè)部件的工作。首先,當(dāng)按鍵發(fā)出的控制指令時(shí),單片機(jī)利用外部中斷采集控制指令,并對(duì)控制指令進(jìn)行處理,之后輸出信號(hào)控制直流電機(jī)的驅(qū)動(dòng)電路。與此同時(shí),單片機(jī)要計(jì)算直流電機(jī)的轉(zhuǎn)速,并且要把電機(jī)的轉(zhuǎn)速在數(shù)碼管上顯示出來。直流電機(jī)的調(diào)速是通過單片機(jī)控制輸出PWM的占空比實(shí)現(xiàn)的,為了提高單片機(jī)的工作效率,對(duì)按鍵的掃描采用中斷方式。其原理框圖如圖3:
圖3控制系統(tǒng)原理框圖
3.1單片機(jī)最小工作系統(tǒng)
單片機(jī)最小工作系統(tǒng)指單片機(jī)能正常工作的最少配置,包括電源、時(shí)鐘電路、復(fù)位電路和一塊51單片機(jī)。
(1)89C51
AT89C51是一種帶4K字節(jié)FLASH字節(jié)存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。如圖4所示。
圖4AT89C51
(2)時(shí)鐘電路
MCS-51單片機(jī)的時(shí)鐘有兩種工作方式:一種是內(nèi)部振蕩方式,它是利用單片機(jī)內(nèi)部的振蕩電路,產(chǎn)生時(shí)鐘信號(hào),這種方式單片機(jī)的時(shí)鐘引腳上接石英晶體和振蕩電容;另外一種是外部振蕩方式,它是把外部已有的時(shí)鐘引入單片機(jī)。下面來介紹較為常用的內(nèi)部振蕩方式:
如圖5,單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,它的輸入端為XTAL1引腳,輸出端為XTAL2引腳,分別是8051單片機(jī)的19腳和18腳,其頻率范圍為fOSC=0~12MHZ。
圖5內(nèi)部振蕩方式時(shí)鐘電路圖
(3)復(fù)位電路
往單片機(jī)的復(fù)位引腳上輸入24個(gè)時(shí)鐘周期以上的高電平,即執(zhí)行復(fù)位操作。在此次課設(shè)中我用的是按鍵復(fù)位,電路如圖6所示,系統(tǒng)在運(yùn)行時(shí),按下復(fù)位按鍵,就能在RST引腳產(chǎn)生一段時(shí)間的高電平,使系統(tǒng)復(fù)位。此處,取12MHZ的晶振,電容取30pF。
圖6按鍵復(fù)位電路
3.2數(shù)碼管顯示電路
LED數(shù)碼管是由a、b、c、d、e、f、g、h這8段發(fā)光二極管組成的“8”字形顯示器件。LED數(shù)碼管分為共陽極和共陰極兩種,如圖7所示,如果每段的陽極接在一起則為共陽極LED,如果每段的陰極接在一起則為共陰極LED。此次課設(shè)中,我所用的數(shù)碼管為共陰極的。
圖7LED數(shù)碼管
這里用到了4位數(shù)碼管,如圖8所示,段選端接單片機(jī)的P0口,因?yàn)镻0口內(nèi)部沒有上拉電阻,為高阻態(tài),不能正常的輸出高/低電平,所以這里需要上拉電阻。為了電路的簡(jiǎn)化,這里使用了排阻。數(shù)碼管的位選端接單片機(jī)的P1.0~P1.3,當(dāng)輸出低電平時(shí),表示該位數(shù)碼管被選中。
圖8數(shù)碼管電路
3.3直流電機(jī)驅(qū)動(dòng)電路
L298是一款高電壓、高電流型的全橋驅(qū)動(dòng)電路,輸入為TTL電平,用來驅(qū)動(dòng)如繼電器、直流電機(jī)或步進(jìn)電機(jī)等感性負(fù)載。兩個(gè)獨(dú)立的使能端,可以獨(dú)立的控制兩組四個(gè)輸入。
直流電機(jī)的驅(qū)動(dòng)電路由L298構(gòu)成,51單片機(jī)通過P1.5~P1.7口控制L298的使能端口和輸入端口,而驅(qū)動(dòng)芯片則輸出被放大的控制信號(hào),用以控制電機(jī)運(yùn)行。驅(qū)動(dòng)電路如圖9所示,圖中所加4個(gè)二極管是起到保護(hù)作用。
圖9直流電機(jī)驅(qū)動(dòng)電路
3.4按鍵控制電路
單片機(jī)檢測(cè)按鍵的原理是:?jiǎn)纹瑱C(jī)的I/O口既可作為輸出也可以作為輸入使用,當(dāng)檢測(cè)按鍵時(shí)用的是它的輸入功能,我們把按鍵的一端接地,另一端與單片機(jī)的某個(gè)I/O口相連,開始時(shí)先給該I/O口賦一個(gè)高電平,然后讓單片機(jī)不斷的檢測(cè)該I/O口是否變?yōu)榈碗娖?,?dāng)按鍵閉合時(shí),即相當(dāng)于該I/O口通過按鍵與地相連,變成低電平,程序一旦檢測(cè)到I/O變?yōu)榈碗娖絼t說明按鍵被按下,然后執(zhí)行相應(yīng)的指令。
這種按鍵在按下和松開時(shí)都會(huì)有抖動(dòng)現(xiàn)象,可以采用硬件或者軟件的方式來消除抖動(dòng),為了節(jié)約成本,采用軟件延時(shí)的方式來消除抖動(dòng)的影響。
為了提高單片機(jī)的工作效率,本次設(shè)計(jì)將5個(gè)按鍵通過一個(gè)與門連至單片機(jī)的外部中斷輸入口。當(dāng)有按鍵按下時(shí),單片機(jī)停下正在做的工作,轉(zhuǎn)而執(zhí)行按鍵掃描程序,然后執(zhí)行相應(yīng)指令。按鍵控制電路如圖10所示:
圖10按鍵控制電路
4.軟件設(shè)計(jì)
4.1主程序設(shè)計(jì)
當(dāng)程序開始運(yùn)行時(shí),不斷采集直流電機(jī)的轉(zhuǎn)速并顯示。其流程圖如圖11所示:
圖11主程序流程圖
4.2定時(shí)器0控制產(chǎn)生PWM波形
直流電機(jī)調(diào)速一般運(yùn)用PWM原理來進(jìn)行。對(duì)于直流電機(jī)來說,如果加在電樞兩端的電壓為脈動(dòng)電壓,可以看出,在T不變的情況下,改變t1和t2的寬度,電壓將發(fā)生變化。
則
式中,是常數(shù)。
利用PWM調(diào)速的原理,也就是通過改變占空比來改變加在電機(jī)兩端的電壓,從而改變電機(jī)的轉(zhuǎn)速,其流程圖如圖12所示。
圖12PWM波形控制流程圖
直流電機(jī)在進(jìn)行調(diào)速時(shí),通過改變變量num的值實(shí)現(xiàn)。加速時(shí),num的值增加,而TH0的初值則相應(yīng)的減小,也就是一個(gè)周期中,高電平相應(yīng)的時(shí)間延長(zhǎng),低電平的時(shí)間相應(yīng)減小速度增加。減速時(shí)num的值減小,也就是TH0的初值增加,一個(gè)周期中,高電平的時(shí)間減小,低電平的時(shí)間增加,速度降低。
4.3按鍵掃描程序
當(dāng)發(fā)生外部中斷時(shí),單片機(jī)進(jìn)入外部中斷程序,開始掃描按鍵,先掃描KEY0按鍵,看是否按下了起/停鍵,如果按下了該鍵,則執(zhí)行起/停程序;如果沒有則判斷KEY1鍵,看是否按下了該鍵,若果按下了,則執(zhí)行正轉(zhuǎn)程序;若果沒有判斷KEY2鍵,若該鍵按下,則執(zhí)行反轉(zhuǎn)程序;若沒有則檢測(cè)KEY3鍵是否按下,若按下,則執(zhí)行加速程序;若沒有則檢測(cè)KEY4鍵,若該鍵按下,則執(zhí)行減速程序,否則退出中斷程序。按鍵顯示程序流程圖如圖13所示。在這段中斷程序中,掃描按鍵,并執(zhí)行相應(yīng)的指令。因?yàn)榘寻存I掃描程序放到外部中斷程序中,單片機(jī)只有在接收到外部中斷的申請(qǐng)時(shí),才去掃描按鍵,在無按鍵按下時(shí),不必浪費(fèi)時(shí)間去掃描按鍵,提高了CPU的效率。
圖13外部中斷按鍵掃描程序
5.仿真分析
5.1Proteus簡(jiǎn)介
Proteus開發(fā)平臺(tái)不僅能夠勝任PCB電路板設(shè)計(jì)制作的工作,同時(shí)還擁有進(jìn)行交互式的仿真測(cè)試的功能。Proteus軟件是目前用戶最為青睞的仿真軟件,它不僅能夠完成單一電路以及混合電路的仿真與設(shè)計(jì),同時(shí)能夠很好的和市面上常見的微型控制器系統(tǒng)兼容匹配。它完美的完成了從設(shè)計(jì)原理圖→仿真分析→代碼調(diào)試→功能測(cè)試→形成PCB的完整過程。經(jīng)過多年的發(fā)展與完善,如今無論是在性能上還是功能上都越來越值得廣大用戶的信賴。
5.2軟件仿真
這部分仿真主要是解決程序中的語法錯(cuò)誤。由于程序代碼較長(zhǎng),在書寫過程中難免出現(xiàn)語法錯(cuò)誤和函數(shù)參數(shù)類型方面的錯(cuò)誤,我選擇使用keil4軟件編寫程序,通過這道程序的仿真,能基本解決這方面的錯(cuò)誤,為下一步應(yīng)用proteus軟件仿真做好準(zhǔn)備。其仿真結(jié)果見圖14:
圖14源程序仿真結(jié)果
由圖可知,程序已無語法錯(cuò)誤,編譯成功,并且生成hex文件,利用該文件可以與proteus軟件聯(lián)合仿真,進(jìn)一步檢查程序的語法錯(cuò)誤。
5.3運(yùn)用proteus軟件聯(lián)合仿真
首先在proteus軟件中畫好硬件電路,并檢查硬件電路是否滿足要求。在確定硬件功能正常后,載入編譯源程序生成的hex文件,在proteus軟件中仿真運(yùn)行,通過電路中各元件引腳顯示的電平狀態(tài),檢查軟件邏輯上是否存在問題。再確認(rèn)沒有問題之后,開始進(jìn)入仿真的環(huán)節(jié)。
點(diǎn)擊左下角運(yùn)行之后,電機(jī)顯示0轉(zhuǎn)速,數(shù)碼管也顯示速度為0000,右下角顯示電機(jī)狀態(tài)的LED燈全滅。如圖15:
圖15開始運(yùn)行
點(diǎn)擊啟動(dòng)停止按鈕,電機(jī)開始正轉(zhuǎn),并維持一定的速度,速度顯示在數(shù)碼管上為0209,右下角紅燈亮,表示電機(jī)處在正轉(zhuǎn)狀態(tài),如圖16:
圖16點(diǎn)擊啟動(dòng)停止按鈕后畫面
點(diǎn)擊反轉(zhuǎn)按鈕,電機(jī)開始反轉(zhuǎn),并維持一定的速度,速度顯示在數(shù)碼管上為-209,右下角黃燈亮,表示電機(jī)處在反轉(zhuǎn)狀態(tài),如圖17:
圖17點(diǎn)擊反轉(zhuǎn)按鈕后畫面
點(diǎn)擊正轉(zhuǎn)按鈕,電機(jī)開始正轉(zhuǎn),并維持一定的速度,速度顯示在數(shù)碼管上為0209,右下角紅燈亮,表示電機(jī)處在正轉(zhuǎn)狀態(tài),如圖18:
圖18點(diǎn)擊正轉(zhuǎn)按鈕后畫面
點(diǎn)擊加速按鈕,電機(jī)開始正轉(zhuǎn)加速,速度顯示在數(shù)碼管上為0220,右下角紅燈亮,表示電
機(jī)處在正轉(zhuǎn)狀態(tài),如圖19:
圖19點(diǎn)擊加速后畫面
點(diǎn)擊兩次減速按鈕,電機(jī)開始正轉(zhuǎn)減速,速度顯示在數(shù)碼管上為0199,右下角紅燈亮,表示電機(jī)處在正轉(zhuǎn)狀態(tài),如圖20:
圖20點(diǎn)擊兩次減速按鈕后畫面
點(diǎn)擊啟動(dòng)停止按鈕,電機(jī)停止轉(zhuǎn)動(dòng),速度顯示在數(shù)碼管上為0000,右下角綠燈亮,表示電機(jī)處在停止?fàn)顟B(tài),如圖21:
圖21點(diǎn)擊啟動(dòng)停止按鈕后畫面
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44491瀏覽量
632042 -
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6511瀏覽量
110385 -
直流電機(jī)
+關(guān)注
關(guān)注
36文章
1707瀏覽量
70023 -
PWM
+關(guān)注
關(guān)注
114文章
5119瀏覽量
213188 -
伺服電機(jī)
+關(guān)注
關(guān)注
85文章
2020瀏覽量
57633
原文標(biāo)題:?jiǎn)纹瑱C(jī)直流電機(jī)的pwm調(diào)速
文章出處:【微信號(hào):旺材伺服與運(yùn)動(dòng)控制,微信公眾號(hào):旺材伺服與運(yùn)動(dòng)控制】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論