標(biāo)題: 單片機(jī)控制直流電機(jī)實現(xiàn)電機(jī)的正反轉(zhuǎn)以及調(diào)速程序 [打印本頁]
作者: xlb 時間: 2020-6-28 20:53
標(biāo)題: 單片機(jī)控制直流電機(jī)實現(xiàn)電機(jī)的正反轉(zhuǎn)以及調(diào)速程序
設(shè)計方案方案一:單片機(jī)的四組并行口(P0、P1、P2、P3)在復(fù)位時是高電平,那么在設(shè)計按鍵接口時可以設(shè)計為低電平有效。當(dāng)?shù)碗娖綍r判斷按鍵被按下去,執(zhí)行相關(guān)的操作。
按鍵按下去會存在抖動現(xiàn)象。如果對按鍵進(jìn)行計數(shù),會發(fā)現(xiàn)雖然只按下去一次,所計的數(shù)卻不一致。這樣會導(dǎo)致錯誤的操作。因此需要對按鍵進(jìn)行消抖,按鍵接口只是執(zhí)行單純的被檢測功能,需要特殊的功能寄存器,所以使用P1口。
顯示模塊采用LCD1602液晶屏,使用單片機(jī)的P0口。P0比較特殊,需要外接上拉電阻才能正常進(jìn)行輸出?紤]到簡化仿真圖的設(shè)計,故使用P0口作為LCD1602液晶屏是數(shù)據(jù)端口。
由于需要對電機(jī)進(jìn)行測速和狀態(tài)測,P3存在一些特殊寄存器可以使用,故保留P3口。其它接口均接在除P3口以外的接口。
直流電機(jī)的轉(zhuǎn)速與正向電流持續(xù)時間成正比,使用PWM方式產(chǎn)生脈沖,電機(jī)轉(zhuǎn)速進(jìn)行調(diào)節(jié)。具體如何產(chǎn)生則使用定時器T0產(chǎn)生中斷。
測速則使用T1定時器、外中斷INT1組合測量。通過外中斷INT1的負(fù)跳變來開啟T1計時器,通過測量兩次負(fù)脈沖的時間間隔即可得到轉(zhuǎn)速(電機(jī)轉(zhuǎn)動一圈發(fā)出一定時長的高電平)。
狀態(tài)的測量則在再次使用外中斷0、1來完成。狀態(tài)測量采用這樣的測量方式只需要測量一次即可,占用時間很短,并且準(zhǔn)確。
方案二:對方案一的部分進(jìn)行修改。按鍵部分為了響應(yīng)準(zhǔn)確,采用外接高電平的方法。
電機(jī)測速模塊:仍然不變。
狀態(tài)測量改成通過內(nèi)部編程完成測量,不需要外中斷0、1的參與。
方案三:仍然對方案一進(jìn)行修改。按鍵部分為確保準(zhǔn)確性,按鍵外部接上高電平。
PWM波形產(chǎn)生模塊使用數(shù)據(jù)選擇器對電機(jī)的正反轉(zhuǎn)進(jìn)行控制,降低編程難度。
2.2 方案選擇方案一過于追求準(zhǔn)確性,編程復(fù)雜,過多的開啟中斷實現(xiàn)功能與其它方案是一樣的,但是大量標(biāo)志位的開啟需要特別注意,同時要小心時序問題。對編程能力、協(xié)調(diào)有比較高的要求。
方案二準(zhǔn)確的提高了按鍵的準(zhǔn)確性部分,通過仔細(xì)考慮,與開外中斷測量比較,編程變簡單。全部實現(xiàn)比較容易,但為保證準(zhǔn)確性、需要通過編程進(jìn)行調(diào)整。
方案三經(jīng)過仔細(xì)考慮,使用數(shù)據(jù)選擇器雖然降低了變成難度,在選擇芯片、了解芯片可能需要多花時間。
最終認(rèn)為方案二比較可行。
2.3 系統(tǒng)框圖整個系統(tǒng)以單片機(jī)為核心,處理信息。
- 鍵盤:有7個鍵盤,每個鍵盤有不同的功能。鍵盤的輸入信號流入單片機(jī)需要進(jìn)行消抖,避免產(chǎn)生預(yù)期外的結(jié)果。
- STC89C51:負(fù)責(zé)整個系統(tǒng)的信息處理。包括鍵盤的輸入信號處理、根據(jù)鍵盤的信號發(fā)出電機(jī)驅(qū)動信號、對電機(jī)的速度和轉(zhuǎn)向進(jìn)行測量、測量完成將信息送給顯示。
- 電機(jī)驅(qū)動芯片:電機(jī)所需要的驅(qū)動電流相對于STC89C51直接輸出的電流要打的多,對電機(jī)的控制不理想。反過來同樣會影響到單片機(jī)的正常工作。所以需要通過驅(qū)動芯片來驅(qū)動直流電機(jī)。
- 電機(jī):電機(jī)為MOTOR-ENCODER,有五條線。其中的兩條用來輸入電流驅(qū)動電機(jī),剩余的三條為電機(jī)的編碼輸出。中間的線輸出特征為電機(jī)轉(zhuǎn)動一圈輸出一個正脈沖。邊上兩個根線輸出的脈沖可調(diào),脈沖的相位相差90度,反應(yīng)了電機(jī)的正反轉(zhuǎn)。
- 顯示:顯示所用器件為LCD1602顯示器,顯示電機(jī)轉(zhuǎn)速,正反轉(zhuǎn)狀態(tài)。
3.1 總體硬件設(shè)計總體硬件分為:晶體振蕩器電路、復(fù)位電路、按鍵輸入模塊、顯示電路、電機(jī)驅(qū)動電路、電機(jī)模塊。如下圖 3.1?1所示
圖 3.1?1
3.2 晶體振蕩器電路晶振X1采用11.0592MHZ,電容C1、C2采用典型值22pF。如圖 3.2?1。該電路的功能是為單片機(jī)提供11.0529MHZ的時鐘。
圖 3.2?1
3.3 復(fù)位電路電路圖 3.3?1如所示。復(fù)位電路電源為+5V、電容(極性電容)C3采用典型值10uF、電阻R7為820歐姆、按鍵。該電路為單片機(jī)復(fù)位端口提供一定時間的高電平,當(dāng)單片機(jī)發(fā)生異常時可以通過按鍵使單片機(jī)復(fù)位。然后正常運(yùn)行。其中EA/引腳在此電路中不需要使用,只是接上去了而已。
圖 3.3?1
3.4 按鍵輸入電路電路圖如圖 3.4?1所示。按鍵共有6個,分別有不同的功能。按鍵的功能在圖上已經(jīng)標(biāo)出。圖中的六個電阻阻值為1K歐姆,為限流電阻、還有降壓的作用。電壓沒有標(biāo)出統(tǒng)一為+5V。只有按下按鍵1才能啟動其他按鍵。
圖 3.4?1
3.5 顯示電路電路圖如圖 3.5?1所示。液晶顯示模塊數(shù)據(jù)口與單片機(jī)的P0口連接,其它端口通過標(biāo)號與P2.0、P2.1連接。P0口與液晶顯示模塊交換信息、P2.0、P2.1口對液晶進(jìn)行讀寫、使能控制。
圖 3.5?1
3.6 電機(jī)驅(qū)動電路電路圖如圖 3.6?1所示。驅(qū)動芯片型號為L298其驅(qū)動能力很強(qiáng)。VCC為芯片的電源+5V、VS為電機(jī)驅(qū)動電壓,最高為45V。IN1、IN2接TTL電平、與單片機(jī)標(biāo)號為ON、OFF的端口(電機(jī)控制流的輸出端口)連接,ON、OFF端口如圖 3.4?1所示。ENA、ENB為芯片的使能端,高電平時芯片工作。ENA控制端口IN1、IN2、OUT1、OUT2。低電平時端口無法工作,無法控制電機(jī)。OUT1、OUT2接直流電機(jī)輸入端。圖中接地的端口在圖中用不到。
圖 3.6?1
3.7 電機(jī)模塊電路圖如圖 3.7?1所示。電機(jī)的輸入端口為1、2。1為高電平時,電機(jī)正轉(zhuǎn)2為高電平時,電機(jī)反轉(zhuǎn)。1、2同為高或者低電平則不轉(zhuǎn),ENA低電平也不轉(zhuǎn)。電機(jī)的A、B與單片機(jī)的A、B連接,用于電機(jī)狀態(tài)的測量。IN1與單片機(jī)的IN1相連,用于測速。具體連接與標(biāo)號在圖中已標(biāo)注。
圖 3.7?1
4.1 圖形界面設(shè)計4.1.1 按鍵界面設(shè)計如圖 4.1?1所示
按鍵掃描模塊中有6個按鍵,每個按鍵會調(diào)動相應(yīng)的模塊。并對數(shù)據(jù)處理。
4.1.2 LCD1602模塊界面界面設(shè)計如圖 4.1?2所示:
顯示模塊會顯示電機(jī)的相關(guān)信息(正轉(zhuǎn)、反轉(zhuǎn)、速度、可以加上電機(jī)是否加速的、減速的測試、以及顯示),顯示前將依據(jù)按鍵輸入的信號進(jìn)行運(yùn)算,處理后送入液晶中。
5.1 程序流程圖主程序流程圖如圖 5.1?1所示。
6.1 硬件調(diào)試在確定方案后,便開始搭建硬件。從難易程度來看,該課題是比較簡單的所以硬件部分搭建容易,搭建完成即可。開始方案是選擇方案一,需要使用多個中斷,需要修改的僅僅是電路的連接。后面發(fā)現(xiàn)方案一過于復(fù)雜,改用方案二,對需要修改的連接電路增加標(biāo)號即可。
6.2 程序調(diào)試由于是自己寫程序,經(jīng)驗不足、速度慢,容易出現(xiàn)問題。為了保證每一個環(huán)節(jié)到位,采用邊寫程序、邊調(diào)試的方法。
最先開始的模塊是顯示模塊。顯示模塊使用器件為LCD1602,在單片機(jī)的中學(xué)過做過關(guān)于這個器件的實驗,對器件了解有一些,但不是很熟悉。對原來的程序沒有進(jìn)行封裝,最開始出現(xiàn)數(shù)據(jù)送入位置錯誤,造成預(yù)期之外的結(jié)果。而后通過仔細(xì)查看課本上的資料,通過位置對照,修改后,液晶顯示模塊初步?jīng)]有問題。
電機(jī)控制模塊:對電機(jī)控制需要使用中斷、在中斷里面產(chǎn)生方波信號,并且方波的占空比可調(diào),電機(jī)控制流輸出通道選擇也在這個模塊。在這個模塊完成前需要完成一部分鍵盤掃描函數(shù)的設(shè)計。當(dāng)以上程序完成并運(yùn)行后,通道選擇和占空比都出現(xiàn)了問題。最開始是無論按什么鍵電機(jī)都不轉(zhuǎn),于是乎調(diào)整程序,首先發(fā)現(xiàn)單片機(jī)四組端口復(fù)位后輸出為高電平,即表示電機(jī)停轉(zhuǎn),需要對電機(jī)輸出端口初始化,都為低電平。然后進(jìn)行控制。脈沖波形的占空比的調(diào)節(jié),設(shè)立多個全局變量,設(shè)置上下限,這樣波形占空比調(diào)節(jié)沒有問題。電機(jī)輸出信號通道選擇,由于寫程序經(jīng)驗不足,邏輯上出現(xiàn)了錯誤,導(dǎo)致想要外接數(shù)據(jù)選擇器來調(diào)節(jié)信號輸出,進(jìn)而控制電機(jī)正反轉(zhuǎn)。最后經(jīng)過實驗發(fā)現(xiàn)這個方法實現(xiàn)起來比較困難,思路沒有。還是從中斷里面進(jìn)行調(diào)節(jié)好一些。最終實現(xiàn)了電機(jī)的調(diào)節(jié)。
電機(jī)轉(zhuǎn)向測量模塊:此模塊完成后在多次的調(diào)試過程中發(fā)現(xiàn)使用while語句莫名奇妙對電極控制模塊產(chǎn)生了影響。為了保證電機(jī)控制模塊沒有問題,對轉(zhuǎn)向模塊重新進(jìn)行了設(shè)計,理論分析。但是由于時間問題,沒能完成。
測速模塊的調(diào)節(jié):測速模塊需要定時器1和外中斷1完成。測速模塊完成后需要與顯示模塊共同完成。由于此前在選擇方案的時候,過分依賴中斷和定時器,進(jìn)行了較長時間的論證,電機(jī)控制模塊的調(diào)試由于是個人編程思想和能力問題導(dǎo)致花費(fèi)了大量的時間。測速模塊雖然完成,但是沒有時間調(diào)試。
51hei.png (10.23 KB, 下載次數(shù): 89)
下載附件
2020-7-1 03:02 上傳
全部資料51hei下載地址:
作者: petaraca 時間: 2021-4-19 15:13
您好,如果要控制兩個直流電機(jī)的話應(yīng)該怎么設(shè)置呢?
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |