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