如圖1所示,此方案是以STC89C52RC單片機(jī)作為主控芯片,采用霍爾測速傳感器磁場頻率測速法測量電機(jī)轉(zhuǎn)速、采集電機(jī)參數(shù),向單片機(jī)輸入脈沖信號。選取LCD1602液晶顯示屏顯示電機(jī)每分鐘轉(zhuǎn)速及占空比。采取獨(dú)立按鍵作為按鍵模塊,為單片機(jī)提供按鍵信息,實現(xiàn)電機(jī)啟動/停止、正轉(zhuǎn)、反轉(zhuǎn)、加速、減速功能。選擇雙極PWM控制配合H型橋式驅(qū)動電路實現(xiàn)電機(jī)驅(qū)動,利用USB-TTL轉(zhuǎn)串口模塊完成系統(tǒng)供電以及燒錄程序。整體硬件需求較小,硬件成本較低。
3.8總體方案框圖
 
四、電路設(shè)計 4.1總體電路設(shè)計原理圖     
     
圖2 系統(tǒng)電路設(shè)計原理圖
系統(tǒng)電路構(gòu)成:由STC89C52RC單片機(jī)最小系統(tǒng)作為運(yùn)算處理和控制的核心,采用USB-TTL轉(zhuǎn)串口實現(xiàn)電路5V供電,選擇3144測速傳感器(P3.3)作為輸入模塊,LCD1602液晶顯示模塊(P0.0—P0.7,P2.7:RS,P2.6:RW,P2.7:EN)作為顯示電路,并配合按鍵電路控制直流電機(jī)、設(shè)定占空比,最后通過由三級管及開關(guān)二極管組成的H橋電路(P3.4,P3.7)驅(qū)動5V直流電機(jī),共六個部分組成,如圖2所示。 4.2供電電路 
圖3 供電模塊接線電路圖 在PCB板子的一側(cè)焊上四個排針,外接USB-TTL轉(zhuǎn)串口的5V,RXD,TXD,GND端口,實現(xiàn)對電路的5V供電以及對STC89C52RC單片機(jī)程序的燒錄,具體電路如圖3所示。 4.3直流電機(jī)驅(qū)動電路 
圖4 電機(jī)驅(qū)動模塊電路圖 直流電機(jī)驅(qū)動電路由四個三極管組成H橋驅(qū)動電路,H橋的輸入受STC89C52RC單片機(jī)輸出的PWM信號控制,在實現(xiàn)轉(zhuǎn)速控制的同時,也可以實現(xiàn)正反轉(zhuǎn)控制,具體電路如圖4所示。 4.4霍爾傳感器測速模塊電路 
圖5 霍爾傳感器測速模塊實物圖 霍爾傳感器測速模塊電路應(yīng)用霍爾效應(yīng)原理,是由電壓調(diào)整器、霍爾電壓發(fā)生器、差分放大器、施密特觸發(fā)器,溫度補(bǔ)償電路和集電極開路的輸出級組成的磁敏傳感電路。使用3144E開關(guān)型霍爾傳感器,其輸入為磁感應(yīng)強(qiáng)度,輸出是一個數(shù)字電壓信號。當(dāng)傳感器感應(yīng)到磁場時,數(shù)字輸出低電平,信號燈亮;如果沒有感應(yīng)到磁場,則數(shù)字輸出高電平,信號燈不亮,準(zhǔn)確度、可靠性高。 
圖6 霍爾傳感器測速模塊接線電路圖 霍爾傳感器測速模塊的數(shù)字信號輸出端口通過10K的上拉電阻與STC89C52RC的P3.3端口相連,使其輸出信號更穩(wěn)定,如圖6所示。 4.5按鍵電路 
圖7 按鍵電路圖 按鍵電路由5個普通的自復(fù)位式四腳按鍵組成,將它們同一側(cè)的引腳縱向連在一起接到GND,另一端分別接入STC89C52RC單片機(jī)的P1.0—P1.4引腳,主要實現(xiàn)電機(jī)啟動/停止、正轉(zhuǎn)、反轉(zhuǎn)、加速、減速,如圖7所示。 4.6單片機(jī)及顯示電路 
圖8 單片機(jī)最小系統(tǒng)圖 
圖9 LCD1602液晶顯示圖 單片機(jī)及顯示電路包括單片機(jī)最小系統(tǒng)、LCD1602液晶顯示,如圖8、圖9所示,LCD1602液晶顯示通過并行通信接口(D0—D7,P2.7:RS,P2.6:RW,P2.7:EN)與單片機(jī)相連,在電路中主要實現(xiàn)電機(jī)轉(zhuǎn)速及占空比的顯示。 單片機(jī)通過P3.4、P3.7端口向直流電機(jī)驅(qū)動電路輸出PWM信號,控制電機(jī)轉(zhuǎn)速;魻杺鞲衅鳒y速模塊電路輸出的方波信號送入單片機(jī)的P3.3端口。 4.7元器件清單 表1 元器件清單表
元器件的選擇,根據(jù)可靠性、可行性、穩(wěn)定性、價格以及最終方案,選擇元器件均為直插式,選擇STC89C52RC單片機(jī)為主控芯片,使用IC插座集成塊,方便單片機(jī)的更換,利用排母使LCD1206實現(xiàn)外接模式,方便顯示屏安裝與拆卸。 五、軟件設(shè)計 程序設(shè)計部分主要包括主程序、初始化子程序、鍵盤掃描子程序、LCD1602顯示子程序、中斷子程序、信息處理子程序及PWM生成程序七個部分組成,大致通過LCD1602顯示信息,通過按鍵輸入信息,對LCD1602顯示的轉(zhuǎn)速和占空比等信息進(jìn)行操作。 5.1主程序
主程序中主程序中包含了初始化程序,鍵盤掃描程序,主程序代碼如下: void main() { flag_1=0; m=100; zhuansu=0; flag=0; zheng=1; fan=0; init(); while(1) { keyscan(); } }

5.2中斷子程序 1.外部中斷 (1)工作過程:每來一個電機(jī)脈沖信號,產(chǎn)生中斷計數(shù)。 (2)流程圖:如圖11所示。 (3)程序: void int1()interrupt 2 { zhuansu++; } 2.定時器中斷 (1)工作過程:TT0 定時器每2秒定時中斷一次,讀取記錄的脈沖個數(shù),顯示轉(zhuǎn)速。 (2)流程圖:如圖12所示。 (3)程序: void int2()interrupt 3 {
TH0=0xdc; TL0=0x00; flag++; if(flag==200) { display(); zhuansu=0; flag=0; } } 
5.3鍵盤掃描子程序
(1)工作過程:按鍵1按下時占空比加一,按鍵2按下時占空比減一,按鍵3按下時電機(jī)正轉(zhuǎn),按鍵4按下時電機(jī)反轉(zhuǎn),按鍵5按下時電機(jī)啟動/停止。 (2)流程圖:如圖13所示。 (3)程序: void keyscan() { if(num1==0) { delay(20); if(num1==0) { if(m<=199) m++; displaym(); } } if(num2==0) { delay(20); if(num2==0) { if(m>=1) m--; displaym();
} } if(num3==0) { delay(20); if(num3==0) { zheng=1; fan=0; } } if(num4==0) { delay(20); if(num4==0) { zheng=0; fan=1; } } if(num5==0) { delay(20); if(num5==0) { while(num5==0); kai=1-kai; } } }
5.4信息處理子程序
 1.占空比顯示 (1)工作過程:在LCD1602上顯示占空比,若轉(zhuǎn)速百位為零則百位顯示空格、其余正常顯示,反之百位也正常顯示;若轉(zhuǎn)速十位為零則只顯示個位,反之十位也正常顯示、百位顯示空格。 (2)流程圖:如圖14所示。 (3)程序: void displaym() { write_com(0xcb); if(m/200%10!=0) write_data(m/200%10+0x30); else write_data(' ');
if(m/200%10==0&&m/20%10==0) write_data(' '); else write_data(m/20%10+0x30); write_data(m/2%10+0x30); }
2.轉(zhuǎn)速顯示: (1)工作過程:在LCD1602上顯示轉(zhuǎn)速,若轉(zhuǎn)速萬位為零則萬位顯示空格、其余正常顯示,反之都正常顯示;若轉(zhuǎn)速千位為零則萬位、千位顯示空格、其余正常顯示,反之千位也正常顯示;若轉(zhuǎn)速百位為零則萬位、千位、百位顯示空格、其余正常顯示,反之百位也正常顯示;若轉(zhuǎn)速十位為零則只顯示個位,反之十位也正常顯示、其余顯示空格。 (2)流程圖:如圖15所示。 (3)程序: void display() { write_com(0x82); zhuansu=zhuansu*30;
if(zhuansu/10000!=0) write_data(zhuansu/10000+0x30); else write_data(' ');
if(zhuansu/1000==0) write_data(' '); else write_data(zhuansu%10000/1000+0x30);
if(zhuansu/100==0) write_data(' '); else write_data(zhuansu%10000%1000/100+0x30);
if(zhuansu/10==0) write_data(' '); else write_data(zhuansu%10000%1000%100/10+0x30); write_data(zhuansu%10000%1000%100%10+0x30); write_com(0xd0);} 
5.5PWM生成子程序 
(1)工作過程:電機(jī)正轉(zhuǎn)時,若0<flag_1<m,向電機(jī)輸出高電平;若m<flag_1<199,向電機(jī)輸出低電平。電機(jī)反轉(zhuǎn)時,若0<flag_1<m,向電機(jī)輸出低電平;若m<flag_1<199,向電機(jī)輸出高電平。 (2)流程圖:如圖15所示。 (3)程序: void int3()interrupt 1 { TH1=0xff; TL1=0x00; flag_1++; if(flag_1>199) flag_1=1; if(kai==1) { if(zheng==1) { if(flag_1<m) { out=0; out1=1; } else { out=1; out1=1; } } if(fan==1) { if(flag_1<m) { out=1; out1=0; } else { out=1; out1=1; } } } if(kai==0) { out=1; out1=1; } }
六、制作、調(diào)試過程。 6.1制作 
圖17 萬用板元件分布圖 將電路原理圖繪制完成,然后根據(jù)原理圖準(zhǔn)備相應(yīng)的元件,再根據(jù)要求改變各元件的屬性并把各個元件按原理圖焊接于萬用板之上。焊接完成后,用萬用表檢測電路的通斷情況,檢查無誤后,向IC插座集成塊中插入芯片,下載測試程序,觀察LCD1602顯示模塊、電機(jī)、霍爾傳感器測速模塊以及按鍵是否按程序正常運(yùn)行。 
圖18 PCB照片預(yù)覽及3D仿真 
圖19 PCB實物圖 
圖20 萬用板實物圖 6.2調(diào)試 利用制作的實物進(jìn)行運(yùn)行調(diào)試,通過按不同的按鍵,觀察LCD1602顯示情況,判斷是否存在邏輯錯誤的情況。調(diào)試過程中,肯定會出現(xiàn)因邏輯錯誤而顯示不正常,需要配合仿真調(diào)試進(jìn)行排查。發(fā)現(xiàn)出錯原因后,及時想辦法解決問題。 
圖21 實物調(diào)試圖
九、附錄 
圖 22 系統(tǒng)電路原理圖
圖 2 實物正面電路 
圖 3 實物反面電路走線

圖 4 實物調(diào)試 單片機(jī)系統(tǒng)程序:
完整的Word格式文檔51黑下載地址:
基于霍爾元件電機(jī)轉(zhuǎn)速測量系統(tǒng)設(shè)計.docx
(5.7 MB, 下載次數(shù): 85)
2020-12-2 21:02 上傳
點(diǎn)擊文件名下載附件
|