電機(jī)測速系統(tǒng) 隨著科技的飛速發(fā)展,計算機(jī)應(yīng)用技術(shù)日益滲透到社會生產(chǎn)生活的各個領(lǐng)域,而單片機(jī)的應(yīng)用則起到了舉足輕重的作用。在工程實踐中,經(jīng)常會遇到各種需要測量轉(zhuǎn)速的場合,例如在發(fā)動機(jī)、電動機(jī)、機(jī)床主軸等旋轉(zhuǎn)設(shè)備的試驗運(yùn)轉(zhuǎn)和控制中,常需要分時或連續(xù)測量、顯示其轉(zhuǎn)速及瞬時速度。為了能精確地測量轉(zhuǎn)速,還要保證測量的實時性,要求能測得瞬時轉(zhuǎn)速。因此設(shè)計一種較為理想的電機(jī)測速控制系統(tǒng)是非常有價值的。 1.用按鍵控制電機(jī)起停; 2.電機(jī)有兩種速度,通過按鍵來改變速度; 3.通過數(shù)碼管顯示每分鐘或每秒的轉(zhuǎn)速。 三、設(shè)計器材 四、設(shè)計方案及分析(包含設(shè)計電路圖) 1. STC89C52單片機(jī)介紹 STC89C52是一種帶8K字節(jié)閃爍可編程可檫除只讀存儲器(FPEROM-Flash Programmable and Erasable Read Only Memory )的低電壓,高性能COMOS8的微處理器,俗稱單片機(jī)。該器件采用ATMEL搞密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。 (1)單片機(jī)最小系統(tǒng) 單片機(jī)最小系統(tǒng)電路如圖所示,由主控器STC89C52、時鐘電路和復(fù)位電路三部分組成。單片機(jī)STC89C52作為核心控制器控制著整個系統(tǒng)的工作,而時鐘電路負(fù)責(zé)產(chǎn)生單片機(jī)工作所必需的時鐘信號,復(fù)位電路使得單片機(jī)能夠正常、有序、穩(wěn)定地工作。 圖 單片機(jī)最小系統(tǒng) (2)晶振電路 
(3)復(fù)位電路 復(fù)位是單片機(jī)的初始化操作。其主要功能是把PC初始化為0000H,使單片機(jī)從0000H單元開始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復(fù)位鍵重新啟動。 2. ST151 光電轉(zhuǎn)速傳感器是根據(jù)光敏二極管工作原理制造的一種感應(yīng)接收光強(qiáng)度變化的電子器件,當(dāng)它發(fā)出的光被目標(biāo)反射或阻斷時,則接收器感應(yīng)出相應(yīng)的電信號。它包含調(diào)制光源,由光敏元件等組成的光學(xué)系統(tǒng)、放大器、開關(guān)或模擬量輸出裝置。光電式傳感器由獨(dú)立且相對放置的光發(fā)射器和收光器組成。當(dāng)目標(biāo)通過光發(fā)射器和收光器之間并阻斷光線時,傳感器輸出信號。由于葉輪的旋轉(zhuǎn),當(dāng)葉輪扇葉進(jìn)入凹槽遮擋著發(fā)光二極管時,光敏三極管沒接收光,輸出為零;當(dāng)葉輪扇葉通過光電傳感器時,光敏三極管接收光在ST151電路輸出為頻率信號。 3. 設(shè)計思路 通過ST151光電傳感器接收電機(jī)扇葉轉(zhuǎn)動切割的次數(shù)獲得脈沖,從而通過單片機(jī)T1口接收高低電平,計數(shù)器在定時器的定時范圍內(nèi)記錄脈沖個數(shù),通過計算將轉(zhuǎn)速送給數(shù)碼管并進(jìn)行顯示。 4. 程序框圖 五. 程序 參見附錄一。 六.系統(tǒng)仿真 參見附錄二。 七、設(shè)計體會與收獲(小組成員每人一份) XXX 本次課程設(shè)計我主要負(fù)責(zé)電路板的焊接,電路板的焊接需要先了解整個電路的各個硬件的組成,并清楚它們各自的所在功能區(qū)域,然后要做的就是在電路板上為各硬件做一個整體的規(guī)劃,合適的規(guī)劃很重要,既要考慮到整體看上去的美觀,還要考慮到對以后的調(diào)試和調(diào)整方便的地方,本人具體是先在電路板上劃分開具體的功能區(qū)域,比如單片機(jī)在左邊占一塊適當(dāng)?shù)奈恢茫淖蠖诉要留有晶振電路和復(fù)位電路,依此做好其他模塊的分配。關(guān)于電路的具體焊接,感覺只要按照電路仿真圖按一定的次序焊接,本人焊接時速度較慢,但是基本比較順利,沒有出現(xiàn)很大問題。 XX 本次課程設(shè)計我主要負(fù)責(zé)程序的編寫以及調(diào)試。編寫程序的主要是利用中斷來產(chǎn)生PWM,利用中斷統(tǒng)計ST151產(chǎn)生的頻率信號。 才拿到題目時面臨的一個問題是如何利用程序來改變點(diǎn)擊的速度,請教同學(xué)后知道一種方法叫 PWM,通過改變一個周期的電信號的占空比來實現(xiàn)。當(dāng)然,在寫程序時還是遇到了不少問題,比方按鍵怎么判斷、改變 PWM 怎么實現(xiàn)、怎么再繼續(xù)產(chǎn)生等。 程序的第二重點(diǎn)則是利用中斷來統(tǒng)計電機(jī)轉(zhuǎn)動后由ST151產(chǎn)生的頻率信號。這個問題前前后后想了幾種方法,如用計數(shù)器統(tǒng)計再讀取計數(shù)值、通過計數(shù)定時時間的頻率再湊成1秒等。但是由于方法不當(dāng),結(jié)果做出來的效果很差。最終選定,定時時間直接1秒再來統(tǒng)計頻率,這樣的結(jié)果還是可以的。 程序的第三個重點(diǎn),是中斷程序的設(shè)計。這是我第一次編C,所以在中斷方面有很多不懂的地方,參考資料、請教同學(xué)后有了一定的了解,再寫程序就不再那么不順了。
本次實習(xí)我們組是直流電機(jī)測速系統(tǒng)的設(shè)計,就是要通過轉(zhuǎn)速的改變將其速度顯示在led中,來體現(xiàn)其轉(zhuǎn)速的增大或減小。而如何改變其速率呢,就是通過pwm改變其占空比來實現(xiàn)的。 我主要負(fù)責(zé)仿真,即使用軟件Proteus 7 Professional測試仿真調(diào)試。這次實習(xí)的重點(diǎn)就是如何編寫程序以及仿真中的行騙各個管腳的連接問題,主要的芯片有89C52、uln2003、led顯示、電機(jī)。首先分清各管腳起什么作用,比如說晶振要與89C 2的XTAL1和XTAL2連接等等。其次還要知道那個管腳是高電平哪個是低電平、跟誰連才能達(dá)到選通。通過同組同學(xué)所編程序,就可以清楚的知道這些芯片的連接,再細(xì)心的對照各個管腳的初始化、定義來連接各個芯片。在仿真的時,我學(xué)到的就是熟練掌握使用proteus 7 Professional軟件,比如知道在proteus 7 Professional中如何正確的找出單片機(jī)、uln、led顯示、電機(jī)等這些芯片,怎么將keil中運(yùn)行鏈接好的程序燒錄到proteus 7 Professional中,然后正確的運(yùn)行。當(dāng)同組的同學(xué)咁好板子后,接通電源時發(fā)現(xiàn)led顯示不夠亮,所以就進(jìn)行改進(jìn),通過再接入放大器放大信號就可以使led更好的顯示出來。 總的來說這次實習(xí),受益匪淺,不僅熟悉了兩個軟件的使用更進(jìn)一步的將所學(xué)的知識實踐了出來,以前沒有怎么接觸過這兩個軟件,現(xiàn)在發(fā)現(xiàn)我索要學(xué)習(xí)的還很多。合作也是我收獲很多的一點(diǎn)。
在本次課程設(shè)計中,我們做的是“直流電機(jī)的測速系統(tǒng)”。 在實驗中,我們最先遇到的問題是在電機(jī)驅(qū)動中的頻率變化問題,一開始只使用了一個三極管,結(jié)果造成了電機(jī)轉(zhuǎn)動始終處于一個較穩(wěn)定狀態(tài),經(jīng)過復(fù)位也沒有變化,后來在原基礎(chǔ)上增加了一個三極管,放大了頻率信號,使得返回INT0口的信號更明顯,得到了預(yù)想的結(jié)果使直流電機(jī)完成了變速。 在實驗的最后,我們的電機(jī)已經(jīng)按照要求完成了改變轉(zhuǎn)速的功能,但是數(shù)碼管的亮度很暗,得用手擋著才可以看到其具體顯示,這是數(shù)碼管亮度不夠造成的,通過分析添加了第二個排阻,讓他來控制片選信號,通過這個排阻使得共陽極數(shù)碼管變得較亮。 這次實驗是對本學(xué)期所學(xué)的單片機(jī)課程的簡單應(yīng)用,在實驗中運(yùn)用了80c52單片機(jī)。通過它完成了電機(jī)的簡單驅(qū)動,調(diào)節(jié)轉(zhuǎn)速使之反饋及讓轉(zhuǎn)速具體的體現(xiàn)在數(shù)碼管上的功能。
附錄二 系統(tǒng)仿真電路圖 
單片機(jī)源程序如下:
- #include <reg52.h>
- unsigned char code TABLE[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- void display();
- #define uint unsigned int
- #define uchar unsigned char
- #define V_TH1 (65535 - 1000) / 256
- #define V_TL1 (65535 - 1000) % 256
- sbit output = P2^7; //P2^7接ULN2003
- sbit key1 = P3^3; //P3^3接可以改變電機(jī)轉(zhuǎn)速的按鍵
-
- int frq = 0, frq1, flag;
- char pwm;
- int div = 0, p = 0;
- uchar a;
- uint c;
- void display();
-
- /*系統(tǒng)初始化*/
- void initial(void)
- {
- TMOD = 0x10; //設(shè)置定時器1在工作方式1下
- EA = 1; //開中斷
- EX0 = 1; //外部中斷0使能
- ET1 = 1; //定時器1使能
- IT0 = 1; //外部中斷0下降沿觸發(fā)
- IT1 = 1; //外部中斷1下降沿觸發(fā)
- TH1 = V_TH1; //裝載計數(shù)值
- TL1 = V_TL1;
- TR1=1; //定時器1可工作
- }
-
- /*延時程序*/
- void delay(unsigned int k)
- {
- unsigned int i,j;
- for(i = 0;i < k;i++)
- {
- for(j = 0;j < 110;j++)
- {
- ;
- }
- }
- }
-
- /*顯示子程序*/
- void display()
- {
- uchar qian,bai,shi,ge;
- qian = 0;
- bai = 0;
- shi = 0;
- ge = 0;
- c = frq1;
- qian = c / 1000;
- bai = c / 100 % 10;
- shi = c / 10 % 10;
- ge = c % 10;
- P2 = 0X01;
- P0 = TABLE[qian];
- delay(5);
- P2 = 0X02;
- P0 = TABLE[bai];
- delay(5);
- P2 = 0X04;
- P0 = TABLE[shi];
- delay(5);
- P2 = 0X08;
- P0 = TABLE[ge];
- delay(5);
- }
-
-
- /*主函數(shù)*/
- void main()
- {
-
- initial();
- while(1)
- {
- if(key1 == 0)
- delay(100); //按鍵消抖
- if(key1 == 0)
- {
- while(key1 == 0) ; //松手檢測
- div ++;
- }
- if(div % 2 == 0)
- flag = 0;
- if(div % 2 == 1)
- flag = 1;
- if(flag == 0)
- pwm = 30;
- if(flag == 1)
- pwm = 70;
-
- display();
- }
- }
-
-
- /*外部中斷0*/
- void int0isr() interrupt 0 //統(tǒng)計定時時間內(nèi)的個數(shù)
- {
- frq ++;
- }
-
-
- /*定時器1中斷*/
- void time1isr() interrupt 3 //定時器1實現(xiàn)pwm
- {
- TH1 = V_TH1; //裝載計數(shù)值
- TL1 = V_TL1;
- EA = 0;
- a ++;
- p ++;
- if (a <= pwm)
- output = 1;
- else output = 0;
- if(a > 100)
- a = 0;
- if(p > 1000)
- {
- frq1 = frq;
- frq = 0;
- p = 0;
- }
- EA = 1;
- }
復(fù)制代碼
全部資料51hei下載地址:
單片機(jī)的直流電機(jī)測速系統(tǒng).doc
(197 KB, 下載次數(shù): 188)
2018-11-29 17:16 上傳
點(diǎn)擊文件名下載附件
|