光電傳感器——基于紅外反射式的測速機
引言 在工程實踐中,經常會遇到各種需要測量轉速的場合。轉速是電動機極為重要的一個狀態參數,在很多運動系統的測控中,都需要對電機的轉速進行測量,不論是直流調速系統還是交流調速系統,只有轉速的高精度檢測才能得到高精度的控制系統。迄今為止,測速可分為兩類:模擬電路測速和數字電路測速。隨著微電子技術的發展,計算機技術的廣泛應用,出現了以計算機為核心的數字測速裝置。這樣的速度測量裝置測量范圍寬、工作方式靈活多變、適應面廣,具有普通數字測速裝置不可比擬的快速性、精確性和優越性。 一:設計思路 用一個紅外發光二極管和一個接受紅外光的二極管組成一套光電管。當檢測到物表面為黑色時,反射光很弱,接收端檢測到的光線可以忽略,使接收端呈現一種狀態,例如開關管截止;當被檢測物表面為白色時,反射光強烈,發射端發射的紅外線被接收端全部接收,使接收端呈現另一種相反的狀態,例如開關管開通。這兩種相反的狀態表現在電路中,就是高低電平組成的脈沖信號。由此,我想到用一個比較器來比較兩種接受到的信號,從而輸出“0”“1”兩種高低電平,并把兩種信號傳給單片機進行統計,然后利用設定算法進行計算,最后通過數碼顯示管顯示計算結果。 二:所需模塊 本測速系統共有兩個模塊構成,一個為光電傳感器部分,用于接收光信號并轉換為電信號,即高低電平信號;另一個為單片機部分,用于接收高低電平信號并通過內部計算,然后再通過數碼顯示管顯示測出的結果。 (1)LM339工作原理及管腳圖: LM339類似于增益不可調的運算放大器。每個比較器有兩個輸入端和一個輸出端。 兩個輸入端中的一個稱為同相輸入端,用“+”表示,另一個稱為反相輸入端,用“-”表示。當用作比較兩個電壓時,任意一個輸入端加一個固定電壓做參考電壓(也稱為門限電平,它可選擇LM339輸入共模范圍的任何一點),另一端加一個待比較的信號電壓,當“+”端電壓高于“-”端時,輸出管截止,相當于輸出端開路。當“-”端電壓高于“+”端時,輸出管飽和,相當于輸出端接高電位。兩個輸入端電壓差別大于10mV就能確保輸出能從一種狀態可靠地轉換到另一種狀態,因此,把LM339用在弱信號檢測等場合是比較理想的。 LM339的輸出端相當于一只不接集電極電阻的晶體三極管,在使用時輸出端到正電源一般須接一只電阻(稱為上拉電阻,選3-15K)。選不同阻值的上拉電阻會影響輸出端高電位的值。因為當輸出晶體三極管截止時,它的集電極電壓基本上取決于上拉電阻與負載的值。 下圖(1a)給出了一個LM399的基本單限比較器。輸入信號Uin為待比較電壓,把它加到同相輸入端,在反相輸入端接一個參考電壓(門限電平)Ur。當輸入電壓Uin>Ur時,輸出為高電平UOH。圖(1b)為其傳輸特性。圖(1c)為LM339的管腳圖。
(c) 圖(1)LM339工作原理圖及管腳圖 (2)整體連線圖:如下圖(2)所示:
圖(2) 比較型光電傳感器整體電路圖 在上圖中, LED燈相當于一個紅外線發射管,JP1是紅外線接收管,接收光強在上面轉換成電流,在R上成為電壓信號。當光線照射到白色面上時,光線反射強烈,光線照射到黑色面上時,光線反射較弱。因此當光照在不同顏色面上時,阻值會發生明顯的變化。將阻值的變化值與RA1的標準值進行比較,就可以從LM339輸出邏輯電平給單片機。 (1)單片機外部連線圖:如下圖(3)所示
圖(3)單片機連線圖 在上接線圖中,可在數碼管與單片機之間接上一個分壓電阻,起到保護作用。單片機型號選89C51或89C52都行。在試驗板上把圖(1)中的2管腳(邏輯電平輸出管腳)和圖(2)中的12管腳(中斷輸入管腳)連接,即可構成整個測速系統。 (2)單片機內部主程序流程圖 主程序是控制單片機系統按照預定的操作方式運轉,它完成人機對話和各種控制功能,是單片機系統程序的框架。主程序的主要任務是完成系統自檢、初始化、處理鍵盤命令等功能。在本實驗中,未涉及到鍵盤命令。 本系統的主程序流程如下圖(4)所示。
圖(4)主程序流程圖 圖(5)外部中斷0 中斷程序流程圖 在該測速系統的程序中,主程序執行的過程中共執行了3 個中斷程序,即外部中斷0 中斷、外部脈沖計數0 中斷和定時器1 中斷。圖(5)所示為外部中斷0 中斷程序流程圖。外部中斷0 中斷程序主要用于測速起始。當測速開始時,執行外部中斷0 中斷,外部脈沖計數加1,并判斷T0、T1 是否開啟,若沒有開啟則開啟,再判斷1S 定時到了沒有,若1S 定時到計算轉速,并關INT0、T0、T1 軟件清零。 圖(6)為T0 中斷程序流程圖。T0 對內部時鐘脈沖計數, T0 為8 位定時器,1S 定時的內部時鐘脈沖超過了T0 上限,故采用軟件延時計數。圖(7)為T1 中斷程序流程圖,T1 定時1S, 當一秒定時到,則置位標志位。
圖(6)T0 中斷程序流程圖 圖(7)T1 中斷程序流程圖 三:測速原理 首先,選一小型直流電機,在其軸上固定一張圓形硬紙片,以此來代替被測物。其次把此圓形紙片平均分成6等分,并把其中的三塊涂黑(具體見實物)。再次,用光電管正對圓形紙片。最后,啟動整個系統就可以進行測速了。 因為當紅外線照到面黑色時,反射光很弱,接收端檢測到的光線可以忽略,當照到白色面時,反射光強烈,發射端發射的紅外線幾乎被接收端全部接收,因此,檢測到的信號經過比較電路輸出后,會給單片機輸入高低兩種電平。所以,在編程中,假定在1S時間內共檢測到n個低電平信號,那么此電機的轉速為
。 四:整體電路圖及實物圖 見附一圖所示。 五:所需器件 六:總結 本設計的光電傳感器測速機能夠快速檢測到電機橫截面上的黑白相間的面,并通過單片機編寫測速程序,用數碼管顯示。但本設計的測速系統的整體性能只能滿足一般小型電機和一些要求不高的測速,并且在其測速時,還需要在被測物上安裝一個黑白相間的圓盤,這對某些被測物體來說是不太好實現的,即其是存在一定的局限性的。除此之外,其精確度也不盡完美。 但整體來說,此測速系統還是具有可行性的。當我們需要知道某電機的轉速而又缺少測速裝置時,就可以用此套系統來進行測速。它的簡單性,方便性和快捷性也是某些測速裝置不可比擬的。至于其缺點,由于設計者水平目前有限,暫不能完美解決,只待以后對此方面有較多理解后在解決,同時也希望對此精通的師生給予指點,從而進行改進測速方法,提高整個系統的測速性能。 附一:整體電路圖
附二:程序源代碼 - #include
- #define uint unsigned int
- uint temp,qian,bai,shi,ge,aa,n;
- sbit dula=P0;
- sbit wela=P1;
- sbit zd=P3^2;
- uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
-
- void display(uint qian,uint bai,uint shi,uint ge);
- void delay (uint z);
- void init();
-
- void main()
- {
- EA=1;//開總中斷
- EX0=1;//開外部中斷0
- init();//初始化子程序
- while(1)
- {
- display(qian,bai,shi,ge);
- }
- }
-
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
-
- void display(uint qian,uint bai,uint shi,uint ge)
- {
- P0=table[qian];
- P1=0xf7;
- delay(1);
-
- P0=table[bai];
- P1=0xfb;
- delay(1);
-
- P0=table[shi];
- P1=0xfd;
- delay(1);
-
- P0=table[ge];
- P1=0xfe;
- delay(1);
- }
-
- void exter0() interrupt 0
- {
- n++;
- while(zd==0);
- }
-
- void init()
- {
- wela=0;
- dula=0;
- temp=0;
- TMOD=0x01;
- TCON|=0X04;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- }
-
- timer0() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- aa++;
- if(aa==20)
- {
- aa=0;
- temp=20*n;
- n = 0;
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
完整論文下載(word格式 可編輯):
基于51單片機的紅外反射式光電傳感器測速機的簡易設計.doc
(9.44 MB, 下載次數: 656)
2017-7-1 21:14 上傳
點擊文件名下載附件
|