找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 21215|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)控制直流電機(jī)實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)以及調(diào)速程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
設(shè)計(jì)方案
方案一:?jiǎn)纹瑱C(jī)的四組并行口(P0、P1、P2、P3)在復(fù)位時(shí)是高電平,那么在設(shè)計(jì)按鍵接口時(shí)可以設(shè)計(jì)為低電平有效。當(dāng)?shù)碗娖綍r(shí)判斷按鍵被按下去,執(zhí)行相關(guān)的操作。
按鍵按下去會(huì)存在抖動(dòng)現(xiàn)象。如果對(duì)按鍵進(jìn)行計(jì)數(shù),會(huì)發(fā)現(xiàn)雖然只按下去一次,所計(jì)的數(shù)卻不一致。這樣會(huì)導(dǎo)致錯(cuò)誤的操作。因此需要對(duì)按鍵進(jìn)行消抖,按鍵接口只是執(zhí)行單純的被檢測(cè)功能,需要特殊的功能寄存器,所以使用P1口。
顯示模塊采用LCD1602液晶屏,使用單片機(jī)的P0口。P0比較特殊,需要外接上拉電阻才能正常進(jìn)行輸出?紤]到簡(jiǎn)化仿真圖的設(shè)計(jì),故使用P0口作為L(zhǎng)CD1602液晶屏是數(shù)據(jù)端口。
由于需要對(duì)電機(jī)進(jìn)行測(cè)速和狀態(tài)測(cè),P3存在一些特殊寄存器可以使用,故保留P3口。其它接口均接在除P3口以外的接口。
直流電機(jī)的轉(zhuǎn)速與正向電流持續(xù)時(shí)間成正比,使用PWM方式產(chǎn)生脈沖,電機(jī)轉(zhuǎn)速進(jìn)行調(diào)節(jié)。具體如何產(chǎn)生則使用定時(shí)器T0產(chǎn)生中斷。
測(cè)速則使用T1定時(shí)器、外中斷INT1組合測(cè)量。通過(guò)外中斷INT1的負(fù)跳變來(lái)開(kāi)啟T1計(jì)時(shí)器,通過(guò)測(cè)量?jī)纱呜?fù)脈沖的時(shí)間間隔即可得到轉(zhuǎn)速(電機(jī)轉(zhuǎn)動(dòng)一圈發(fā)出一定時(shí)長(zhǎng)的高電平)。
狀態(tài)的測(cè)量則在再次使用外中斷0、1來(lái)完成。狀態(tài)測(cè)量采用這樣的測(cè)量方式只需要測(cè)量一次即可,占用時(shí)間很短,并且準(zhǔn)確。
方案二:對(duì)方案一的部分進(jìn)行修改。按鍵部分為了響應(yīng)準(zhǔn)確,采用外接高電平的方法。
電機(jī)測(cè)速模塊:仍然不變。
狀態(tài)測(cè)量改成通過(guò)內(nèi)部編程完成測(cè)量,不需要外中斷0、1的參與。
方案三:仍然對(duì)方案一進(jìn)行修改。按鍵部分為確保準(zhǔn)確性,按鍵外部接上高電平。
PWM波形產(chǎn)生模塊使用數(shù)據(jù)選擇器對(duì)電機(jī)的正反轉(zhuǎn)進(jìn)行控制,降低編程難度。
2.2       方案選擇
方案一過(guò)于追求準(zhǔn)確性,編程復(fù)雜,過(guò)多的開(kāi)啟中斷實(shí)現(xiàn)功能與其它方案是一樣的,但是大量標(biāo)志位的開(kāi)啟需要特別注意,同時(shí)要小心時(shí)序問(wèn)題。對(duì)編程能力、協(xié)調(diào)有比較高的要求。
方案二準(zhǔn)確的提高了按鍵的準(zhǔn)確性部分,通過(guò)仔細(xì)考慮,與開(kāi)外中斷測(cè)量比較,編程變簡(jiǎn)單。全部實(shí)現(xiàn)比較容易,但為保證準(zhǔn)確性、需要通過(guò)編程進(jìn)行調(diào)整。
方案三經(jīng)過(guò)仔細(xì)考慮,使用數(shù)據(jù)選擇器雖然降低了變成難度,在選擇芯片、了解芯片可能需要多花時(shí)間。
最終認(rèn)為方案二比較可行。
2.3       系統(tǒng)框圖
整個(gè)系統(tǒng)以單片機(jī)為核心,處理信息。
  • 鍵盤(pán):有7個(gè)鍵盤(pán),每個(gè)鍵盤(pán)有不同的功能。鍵盤(pán)的輸入信號(hào)流入單片機(jī)需要進(jìn)行消抖,避免產(chǎn)生預(yù)期外的結(jié)果。
  • STC89C51:負(fù)責(zé)整個(gè)系統(tǒng)的信息處理。包括鍵盤(pán)的輸入信號(hào)處理、根據(jù)鍵盤(pán)的信號(hào)發(fā)出電機(jī)驅(qū)動(dòng)信號(hào)、對(duì)電機(jī)的速度和轉(zhuǎn)向進(jìn)行測(cè)量、測(cè)量完成將信息送給顯示。
  • 電機(jī)驅(qū)動(dòng)芯片:電機(jī)所需要的驅(qū)動(dòng)電流相對(duì)于STC89C51直接輸出的電流要打的多,對(duì)電機(jī)的控制不理想。反過(guò)來(lái)同樣會(huì)影響到單片機(jī)的正常工作。所以需要通過(guò)驅(qū)動(dòng)芯片來(lái)驅(qū)動(dòng)直流電機(jī)。
  • 電機(jī):電機(jī)為MOTOR-ENCODER,有五條線。其中的兩條用來(lái)輸入電流驅(qū)動(dòng)電機(jī),剩余的三條為電機(jī)的編碼輸出。中間的線輸出特征為電機(jī)轉(zhuǎn)動(dòng)一圈輸出一個(gè)正脈沖。邊上兩個(gè)根線輸出的脈沖可調(diào),脈沖的相位相差90度,反應(yīng)了電機(jī)的正反轉(zhuǎn)。
  • 顯示:顯示所用器件為LCD1602顯示器,顯示電機(jī)轉(zhuǎn)速,正反轉(zhuǎn)狀態(tài)。
  •       硬件設(shè)計(jì)
3.1       總體硬件設(shè)計(jì)
總體硬件分為:晶體振蕩器電路、復(fù)位電路、按鍵輸入模塊、顯示電路、電機(jī)驅(qū)動(dòng)電路、電機(jī)模塊。如下圖 3.1?1所示
圖 3.1?1
3.2       晶體振蕩器電路
晶振X1采用11.0592MHZ,電容C1、C2采用典型值22pF。如圖 3.2?1。該電路的功能是為單片機(jī)提供11.0529MHZ的時(shí)鐘。
圖 3.2?1
3.3       復(fù)位電路
電路圖 3.3?1如所示。復(fù)位電路電源為+5V、電容(極性電容)C3采用典型值10uF、電阻R7為820歐姆、按鍵。該電路為單片機(jī)復(fù)位端口提供一定時(shí)間的高電平,當(dāng)單片機(jī)發(fā)生異常時(shí)可以通過(guò)按鍵使單片機(jī)復(fù)位。然后正常運(yùn)行。其中EA/引腳在此電路中不需要使用,只是接上去了而已。
圖 3.3?1
3.4       按鍵輸入電路
電路圖如圖 3.4?1所示。按鍵共有6個(gè),分別有不同的功能。按鍵的功能在圖上已經(jīng)標(biāo)出。圖中的六個(gè)電阻阻值為1K歐姆,為限流電阻、還有降壓的作用。電壓沒(méi)有標(biāo)出統(tǒng)一為+5V。只有按下按鍵1才能啟動(dòng)其他按鍵。
圖 3.4?1
3.5       顯示電路
電路圖如圖 3.5?1所示。液晶顯示模塊數(shù)據(jù)口與單片機(jī)的P0口連接,其它端口通過(guò)標(biāo)號(hào)與P2.0、P2.1連接。P0口與液晶顯示模塊交換信息、P2.0、P2.1口對(duì)液晶進(jìn)行讀寫(xiě)、使能控制。
圖 3.5?1
3.6       電機(jī)驅(qū)動(dòng)電路
電路圖如圖 3.6?1所示。驅(qū)動(dòng)芯片型號(hào)為L(zhǎng)298其驅(qū)動(dòng)能力很強(qiáng)。VCC為芯片的電源+5V、VS為電機(jī)驅(qū)動(dòng)電壓,最高為45V。IN1、IN2接TTL電平、與單片機(jī)標(biāo)號(hào)為ON、OFF的端口(電機(jī)控制流的輸出端口)連接,ON、OFF端口如圖 3.4?1所示。ENA、ENB為芯片的使能端,高電平時(shí)芯片工作。ENA控制端口IN1、IN2、OUT1、OUT2。低電平時(shí)端口無(wú)法工作,無(wú)法控制電機(jī)。OUT1、OUT2接直流電機(jī)輸入端。圖中接地的端口在圖中用不到。
圖 3.6?1
3.7       電機(jī)模塊
電路圖如圖 3.7?1所示。電機(jī)的輸入端口為1、2。1為高電平時(shí),電機(jī)正轉(zhuǎn)2為高電平時(shí),電機(jī)反轉(zhuǎn)。1、2同為高或者低電平則不轉(zhuǎn),ENA低電平也不轉(zhuǎn)。電機(jī)的A、B與單片機(jī)的A、B連接,用于電機(jī)狀態(tài)的測(cè)量。IN1與單片機(jī)的IN1相連,用于測(cè)速。具體連接與標(biāo)號(hào)在圖中已標(biāo)注。
圖 3.7?1
  •       圖形界面設(shè)計(jì)
4.1       圖形界面設(shè)計(jì)4.1.1 按鍵界面設(shè)計(jì)
如圖 4.1?1所示

按鍵掃描模塊中有6個(gè)按鍵,每個(gè)按鍵會(huì)調(diào)動(dòng)相應(yīng)的模塊。并對(duì)數(shù)據(jù)處理。
4.1.2 LCD1602模塊界面
界面設(shè)計(jì)如圖 4.1?2所示:
顯示模塊會(huì)顯示電機(jī)的相關(guān)信息(正轉(zhuǎn)、反轉(zhuǎn)、速度、可以加上電機(jī)是否加速的、減速的測(cè)試、以及顯示),顯示前將依據(jù)按鍵輸入的信號(hào)進(jìn)行運(yùn)算,處理后送入液晶中。
  •       軟件設(shè)計(jì)
5.1       程序流程圖
主程序流程圖如圖 5.1?1所示。

  •       制作與調(diào)試
6.1       硬件調(diào)試
在確定方案后,便開(kāi)始搭建硬件。從難易程度來(lái)看,該課題是比較簡(jiǎn)單的所以硬件部分搭建容易,搭建完成即可。開(kāi)始方案是選擇方案一,需要使用多個(gè)中斷,需要修改的僅僅是電路的連接。后面發(fā)現(xiàn)方案一過(guò)于復(fù)雜,改用方案二,對(duì)需要修改的連接電路增加標(biāo)號(hào)即可。
6.2       程序調(diào)試
由于是自己寫(xiě)程序,經(jīng)驗(yàn)不足、速度慢,容易出現(xiàn)問(wèn)題。為了保證每一個(gè)環(huán)節(jié)到位,采用邊寫(xiě)程序、邊調(diào)試的方法。
最先開(kāi)始的模塊是顯示模塊。顯示模塊使用器件為L(zhǎng)CD1602,在單片機(jī)的中學(xué)過(guò)做過(guò)關(guān)于這個(gè)器件的實(shí)驗(yàn),對(duì)器件了解有一些,但不是很熟悉。對(duì)原來(lái)的程序沒(méi)有進(jìn)行封裝,最開(kāi)始出現(xiàn)數(shù)據(jù)送入位置錯(cuò)誤,造成預(yù)期之外的結(jié)果。而后通過(guò)仔細(xì)查看課本上的資料,通過(guò)位置對(duì)照,修改后,液晶顯示模塊初步?jīng)]有問(wèn)題。
電機(jī)控制模塊:對(duì)電機(jī)控制需要使用中斷、在中斷里面產(chǎn)生方波信號(hào),并且方波的占空比可調(diào),電機(jī)控制流輸出通道選擇也在這個(gè)模塊。在這個(gè)模塊完成前需要完成一部分鍵盤(pán)掃描函數(shù)的設(shè)計(jì)。當(dāng)以上程序完成并運(yùn)行后,通道選擇和占空比都出現(xiàn)了問(wèn)題。最開(kāi)始是無(wú)論按什么鍵電機(jī)都不轉(zhuǎn),于是乎調(diào)整程序,首先發(fā)現(xiàn)單片機(jī)四組端口復(fù)位后輸出為高電平,即表示電機(jī)停轉(zhuǎn),需要對(duì)電機(jī)輸出端口初始化,都為低電平。然后進(jìn)行控制。脈沖波形的占空比的調(diào)節(jié),設(shè)立多個(gè)全局變量,設(shè)置上下限,這樣波形占空比調(diào)節(jié)沒(méi)有問(wèn)題。電機(jī)輸出信號(hào)通道選擇,由于寫(xiě)程序經(jīng)驗(yàn)不足,邏輯上出現(xiàn)了錯(cuò)誤,導(dǎo)致想要外接數(shù)據(jù)選擇器來(lái)調(diào)節(jié)信號(hào)輸出,進(jìn)而控制電機(jī)正反轉(zhuǎn)。最后經(jīng)過(guò)實(shí)驗(yàn)發(fā)現(xiàn)這個(gè)方法實(shí)現(xiàn)起來(lái)比較困難,思路沒(méi)有。還是從中斷里面進(jìn)行調(diào)節(jié)好一些。最終實(shí)現(xiàn)了電機(jī)的調(diào)節(jié)。
電機(jī)轉(zhuǎn)向測(cè)量模塊:此模塊完成后在多次的調(diào)試過(guò)程中發(fā)現(xiàn)使用while語(yǔ)句莫名奇妙對(duì)電極控制模塊產(chǎn)生了影響。為了保證電機(jī)控制模塊沒(méi)有問(wèn)題,對(duì)轉(zhuǎn)向模塊重新進(jìn)行了設(shè)計(jì),理論分析。但是由于時(shí)間問(wèn)題,沒(méi)能完成。
測(cè)速模塊的調(diào)節(jié):測(cè)速模塊需要定時(shí)器1和外中斷1完成。測(cè)速模塊完成后需要與顯示模塊共同完成。由于此前在選擇方案的時(shí)候,過(guò)分依賴中斷和定時(shí)器,進(jìn)行了較長(zhǎng)時(shí)間的論證,電機(jī)控制模塊的調(diào)試由于是個(gè)人編程思想和能力問(wèn)題導(dǎo)致花費(fèi)了大量的時(shí)間。測(cè)速模塊雖然完成,但是沒(méi)有時(shí)間調(diào)試。

全部資料51hei下載地址:
直流電機(jī)驅(qū)動(dòng).rar (2.69 MB, 下載次數(shù): 130)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:889504 發(fā)表于 2021-4-19 15:13 | 只看該作者
您好,如果要控制兩個(gè)直流電機(jī)的話應(yīng)該怎么設(shè)置呢?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表