欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)的直流電機(jī)測速系統(tǒng)設(shè)計(jì) [打印本頁]

作者: Saiiy    時(shí)間: 2018-11-29 17:16
標(biāo)題: 單片機(jī)的直流電機(jī)測速系統(tǒng)設(shè)計(jì)
電機(jī)測速系統(tǒng)

隨著科技的飛速發(fā)展,計(jì)算機(jī)應(yīng)用技術(shù)日益滲透到社會生產(chǎn)生活的各個(gè)領(lǐng)域,而單片機(jī)的應(yīng)用則起到了舉足輕重的作用。在工程實(shí)踐中,經(jīng)常會遇到各種需要測量轉(zhuǎn)速的場合,例如在發(fā)動機(jī)、電動機(jī)、機(jī)床主軸等旋轉(zhuǎn)設(shè)備的試驗(yàn)運(yùn)轉(zhuǎn)和控制中,常需要分時(shí)或連續(xù)測量、顯示其轉(zhuǎn)速及瞬時(shí)速度。為了能精確地測量轉(zhuǎn)速,還要保證測量的實(shí)時(shí)性,要求能測得瞬時(shí)轉(zhuǎn)速。因此設(shè)計(jì)一種較為理想的電機(jī)測速控制系統(tǒng)是非常有價(jià)值的。

1.用按鍵控制電機(jī)起停;
2.電機(jī)有兩種速度,通過按鍵來改變速度;
3.通過數(shù)碼管顯示每分鐘或每秒的轉(zhuǎn)速。
三、設(shè)計(jì)器材
         器件名稱
             數(shù)量
STC89C52單片機(jī)
            1
ST151光電傳感器
            1
四位一體數(shù)碼管
            1
電阻
各種阻值若干
電容
10uf  1個(gè)     30pf  2個(gè)
晶振12MHz
            1
按鍵
            1
單排排阻
            2
開關(guān)
1
直流電機(jī)
1
四、設(shè)計(jì)方案及分析(包含設(shè)計(jì)電路圖)
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、時(shí)鐘電路和復(fù)位電路三部分組成。單片機(jī)STC89C52作為核心控制器控制著整個(gè)系統(tǒng)的工作,而時(shí)鐘電路負(fù)責(zé)產(chǎn)生單片機(jī)工作所必需的時(shí)鐘信號,復(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)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,也需按復(fù)位鍵重新啟動。

2. ST151

光電轉(zhuǎn)速傳感器是根據(jù)光敏二極管工作原理制造的一種感應(yīng)接收光強(qiáng)度變化的電子器件,當(dāng)它發(fā)出的光被目標(biāo)反射或阻斷時(shí),則接收器感應(yīng)出相應(yīng)的電信號。它包含調(diào)制光源,由光敏元件等組成的光學(xué)系統(tǒng)、放大器、開關(guān)或模擬量輸出裝置。光電式傳感器由獨(dú)立且相對放置的光發(fā)射器和收光器組成。當(dāng)目標(biāo)通過光發(fā)射器和收光器之間并阻斷光線時(shí),傳感器輸出信號。由于葉輪的旋轉(zhuǎn),當(dāng)葉輪扇葉進(jìn)入凹槽遮擋著發(fā)光二極管時(shí),光敏三極管沒接收光,輸出為零;當(dāng)葉輪扇葉通過光電傳感器時(shí),光敏三極管接收光在ST151電路輸出為頻率信號。

3. 設(shè)計(jì)思路
通過ST151光電傳感器接收電機(jī)扇葉轉(zhuǎn)動切割的次數(shù)獲得脈沖,從而通過單片機(jī)T1口接收高低電平,計(jì)數(shù)器在定時(shí)器的定時(shí)范圍內(nèi)記錄脈沖個(gè)數(shù),通過計(jì)算將轉(zhuǎn)速送給數(shù)碼管并進(jìn)行顯示。
4. 程序框圖


五. 程序
參見附錄一。
六.系統(tǒng)仿真
    參見附錄二。
七、設(shè)計(jì)體會與收獲(小組成員每人一份)
XXX
本次課程設(shè)計(jì)我主要負(fù)責(zé)電路板的焊接,電路板的焊接需要先了解整個(gè)電路的各個(gè)硬件的組成,并清楚它們各自的所在功能區(qū)域,然后要做的就是在電路板上為各硬件做一個(gè)整體的規(guī)劃,合適的規(guī)劃很重要,既要考慮到整體看上去的美觀,還要考慮到對以后的調(diào)試和調(diào)整方便的地方,本人具體是先在電路板上劃分開具體的功能區(qū)域,比如單片機(jī)在左邊占一塊適當(dāng)?shù)奈恢茫淖蠖诉要留有晶振電路和復(fù)位電路,依此做好其他模塊的分配。關(guān)于電路的具體焊接,感覺只要按照電路仿真圖按一定的次序焊接,本人焊接時(shí)速度較慢,但是基本比較順利,沒有出現(xiàn)很大問題。
XX
本次課程設(shè)計(jì)我主要負(fù)責(zé)程序的編寫以及調(diào)試。編寫程序的主要是利用中斷來產(chǎn)生PWM,利用中斷統(tǒng)計(jì)ST151產(chǎn)生的頻率信號。
    才拿到題目時(shí)面臨的一個(gè)問題是如何利用程序來改變點(diǎn)擊的速度,請教同學(xué)后知道一種方法叫 PWM,通過改變一個(gè)周期的電信號的占空比來實(shí)現(xiàn)。當(dāng)然,在寫程序時(shí)還是遇到了不少問題,比方按鍵怎么判斷、改變 PWM 怎么實(shí)現(xiàn)、怎么再繼續(xù)產(chǎn)生等。
    程序的第二重點(diǎn)則是利用中斷來統(tǒng)計(jì)電機(jī)轉(zhuǎn)動后由ST151產(chǎn)生的頻率信號。這個(gè)問題前前后后想了幾種方法,如用計(jì)數(shù)器統(tǒng)計(jì)再讀取計(jì)數(shù)值、通過計(jì)數(shù)定時(shí)時(shí)間的頻率再湊成1秒等。但是由于方法不當(dāng),結(jié)果做出來的效果很差。最終選定,定時(shí)時(shí)間直接1秒再來統(tǒng)計(jì)頻率,這樣的結(jié)果還是可以的。
    程序的第三個(gè)重點(diǎn),是中斷程序的設(shè)計(jì)。這是我第一次編C,所以在中斷方面有很多不懂的地方,參考資料、請教同學(xué)后有了一定的了解,再寫程序就不再那么不順了。


本次實(shí)習(xí)我們組是直流電機(jī)測速系統(tǒng)的設(shè)計(jì),就是要通過轉(zhuǎn)速的改變將其速度顯示在led中,來體現(xiàn)其轉(zhuǎn)速的增大或減小。而如何改變其速率呢,就是通過pwm改變其占空比來實(shí)現(xiàn)的。
    我主要負(fù)責(zé)仿真,即使用軟件Proteus 7 Professional測試仿真調(diào)試。這次實(shí)習(xí)的重點(diǎn)就是如何編寫程序以及仿真中的行騙各個(gè)管腳的連接問題,主要的芯片有89C52、uln2003、led顯示、電機(jī)。首先分清各管腳起什么作用,比如說晶振要與89C 2的XTAL1和XTAL2連接等等。其次還要知道那個(gè)管腳是高電平哪個(gè)是低電平、跟誰連才能達(dá)到選通。通過同組同學(xué)所編程序,就可以清楚的知道這些芯片的連接,再細(xì)心的對照各個(gè)管腳的初始化、定義來連接各個(gè)芯片。在仿真的時(shí),我學(xué)到的就是熟練掌握使用proteus 7 Professional軟件,比如知道在proteus 7 Professional中如何正確的找出單片機(jī)、uln、led顯示、電機(jī)等這些芯片,怎么將keil中運(yùn)行鏈接好的程序燒錄到proteus 7 Professional中,然后正確的運(yùn)行。當(dāng)同組的同學(xué)咁好板子后,接通電源時(shí)發(fā)現(xiàn)led顯示不夠亮,所以就進(jìn)行改進(jìn),通過再接入放大器放大信號就可以使led更好的顯示出來。
總的來說這次實(shí)習(xí),受益匪淺,不僅熟悉了兩個(gè)軟件的使用更進(jìn)一步的將所學(xué)的知識實(shí)踐了出來,以前沒有怎么接觸過這兩個(gè)軟件,現(xiàn)在發(fā)現(xiàn)我索要學(xué)習(xí)的還很多。合作也是我收獲很多的一點(diǎn)。

在本次課程設(shè)計(jì)中,我們做的是“直流電機(jī)的測速系統(tǒng)”。
在實(shí)驗(yàn)中,我們最先遇到的問題是在電機(jī)驅(qū)動中的頻率變化問題,一開始只使用了一個(gè)三極管,結(jié)果造成了電機(jī)轉(zhuǎn)動始終處于一個(gè)較穩(wěn)定狀態(tài),經(jīng)過復(fù)位也沒有變化,后來在原基礎(chǔ)上增加了一個(gè)三極管,放大了頻率信號,使得返回INT0口的信號更明顯,得到了預(yù)想的結(jié)果使直流電機(jī)完成了變速。
在實(shí)驗(yàn)的最后,我們的電機(jī)已經(jīng)按照要求完成了改變轉(zhuǎn)速的功能,但是數(shù)碼管的亮度很暗,得用手擋著才可以看到其具體顯示,這是數(shù)碼管亮度不夠造成的,通過分析添加了第二個(gè)排阻,讓他來控制片選信號,通過這個(gè)排阻使得共陽極數(shù)碼管變得較亮。
這次實(shí)驗(yàn)是對本學(xué)期所學(xué)的單片機(jī)課程的簡單應(yīng)用,在實(shí)驗(yàn)中運(yùn)用了80c52單片機(jī)。通過它完成了電機(jī)的簡單驅(qū)動,調(diào)節(jié)轉(zhuǎn)速使之反饋及讓轉(zhuǎn)速具體的體現(xiàn)在數(shù)碼管上的功能。

附錄二 系統(tǒng)仿真電路圖



單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. unsigned char code TABLE[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  3. void display();
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. #define V_TH1 (65535 - 1000) / 256
  7. #define V_TL1 (65535 - 1000) % 256
  8. sbit output = P2^7; //P2^7接ULN2003
  9. sbit key1 = P3^3; //P3^3接可以改變電機(jī)轉(zhuǎn)速的按鍵

  10. int  frq = 0, frq1, flag;
  11. char pwm;
  12. int div = 0, p = 0;
  13. uchar a;
  14. uint c;
  15. void display();

  16. /*系統(tǒng)初始化*/
  17. void initial(void)
  18. {
  19.               TMOD = 0x10;  //設(shè)置定時(shí)器1在工作方式1下
  20.               EA = 1; //開中斷
  21.               EX0 = 1; //外部中斷0使能
  22.               ET1 = 1; //定時(shí)器1使能
  23.               IT0 = 1; //外部中斷0下降沿觸發(fā)
  24.               IT1 = 1; //外部中斷1下降沿觸發(fā)
  25.               TH1 = V_TH1; //裝載計(jì)數(shù)值
  26.               TL1 = V_TL1;               
  27.               TR1=1; //定時(shí)器1可工作
  28. }

  29. /*延時(shí)程序*/
  30. void delay(unsigned int k)
  31. {
  32.   unsigned int i,j;
  33.   for(i = 0;i < k;i++)
  34.   {
  35.                 for(j = 0;j < 110;j++)
  36.                 {
  37.                               ;
  38.                 }
  39.    }
  40. }

  41. /*顯示子程序*/
  42. void display()
  43. {
  44.               uchar qian,bai,shi,ge;
  45.               qian = 0;
  46.               bai = 0;
  47.               shi = 0;
  48.               ge = 0;
  49.               c = frq1;
  50.               qian = c / 1000;
  51.               bai = c / 100 % 10;
  52.               shi = c / 10 % 10;
  53.               ge = c % 10;
  54.               P2 = 0X01;
  55.               P0 = TABLE[qian];
  56.               delay(5);
  57.               P2 = 0X02;
  58.               P0 = TABLE[bai];
  59.               delay(5);
  60.               P2 = 0X04;
  61.               P0 = TABLE[shi];
  62.               delay(5);
  63.               P2 = 0X08;
  64.               P0 = TABLE[ge];
  65.               delay(5);
  66. }


  67. /*主函數(shù)*/
  68. void main()
  69. {

  70.               initial();
  71.               while(1)
  72.     {
  73.                             if(key1 == 0)
  74.                   delay(100);   //按鍵消抖
  75.                             if(key1 == 0)
  76.                             {
  77.                                           while(key1 == 0) ;                              //松手檢測
  78.                                           div ++;
  79.                             }
  80.                             if(div % 2 == 0)
  81.                             flag = 0;
  82.                             if(div % 2 == 1)
  83.                             flag = 1;
  84.                             if(flag == 0)
  85.                             pwm = 30;
  86.                             if(flag == 1)
  87.                             pwm = 70;

  88.                                 display();
  89.               }
  90. }


  91. /*外部中斷0*/
  92. void int0isr() interrupt 0 //統(tǒng)計(jì)定時(shí)時(shí)間內(nèi)的個(gè)數(shù)
  93. {
  94.               frq ++;
  95. }


  96. /*定時(shí)器1中斷*/
  97. void time1isr() interrupt 3 //定時(shí)器1實(shí)現(xiàn)pwm
  98. {
  99.               TH1 = V_TH1; //裝載計(jì)數(shù)值
  100.               TL1 = V_TL1;
  101.               EA = 0;
  102.               a ++;
  103.               p ++;
  104.               if (a <= pwm)
  105.               output = 1;
  106.               else output = 0;
  107.               if(a > 100)
  108.               a = 0;
  109.               if(p > 1000)
  110.               {
  111.                             frq1 = frq;
  112.                             frq = 0;
  113.                             p = 0;
  114.               }
  115.               EA = 1;
  116. }
復(fù)制代碼

全部資料51hei下載地址:
單片機(jī)的直流電機(jī)測速系統(tǒng).doc (197 KB, 下載次數(shù): 188)



作者: 598300196    時(shí)間: 2019-11-25 11:12
大佬我想問一下這個(gè)測速系統(tǒng)在51單片機(jī)上要怎么連線呢




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1