模擬路燈控制系統(2組LED)_第1頁
模擬路燈控制系統(2組LED)_第2頁
模擬路燈控制系統(2組LED)_第3頁
模擬路燈控制系統(2組LED)_第4頁
模擬路燈控制系統(2組LED)_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

精選優質文檔傾情為你奉上精選優質文檔傾情為你奉上專心專注專業專心專注專業精選優質文檔傾情為你奉上專心專注專業【高職高專組】2009年9月目錄TOC\o"1-3"\u摘要 11方案設計與比較 11.1LED恒流源設計方案 11.2移動物體通過檢測方案 11.3整體方案 12理論分析與計算 22.1功率數據采集原理分析 22.2功率調節原理分析 22.3調節誤差分析 23電路設計 23.1系統框圖 23.2顯示器模塊電路 33.3光傳感器模塊 33.4時鐘電路 43.5紅外對管檢測電路 43.6聲光報警電路 43.7A/D電路 43.8D/A轉換電路 53.9串口電路 54程序設計 54.1物體通過檢測實現 54.2功率調節的實現 54.3程序流程圖 65系統測試 75.1測試儀器 75.2測試方案 75.3測試結果 75.4結果分析 76總結 8參考文獻 8附件1:支路控制器系統電路圖 9附件2:單元控制器系統電路圖 10附件3:恒流源電路圖 11附件4:主要PCB圖 12附件5:主要元器件清單 14附件6:部分程序清單 15模擬路燈控制系統摘要:本系統采用3片Atmel公司的AT89S51單片機作為系統的控制器件,其中支路控制器為主控制器,兩個單元控制器作為從控制器。支路控制器接顯示器和鍵盤組成人機界面,可通過外部時鐘模塊進行開關燈定時控制,可通過光敏傳感器和電壓比較器檢測環境明暗程度,可通過7對紅外對管檢測交通情況,從而控制LED的亮滅。在單元控制器中,采用OP07集成運放接大功率場效應管設計了LED壓控恒流源,可由單片機通過D/A方便地控制恒流源的輸出電流和功率,并由A/D芯片將功率數據反饋到單片機,形成閉環自動控制系統。支路控制器與單元控制器之間采用485工業串口進行通信,推廣到實際應用中。關鍵詞:路燈89S51單片機恒流源1方案設計與比較1.1LED恒流源設計方案方案一:分立元件設計法。LED恒流源可以采用三極管、穩壓管加電阻等分立元件進行設計,具有電路簡單、成本低等優點,但是性能較差,單片機不好控制。方案二:專用芯片設計法。市面上有不少專用LED恒流源的驅動芯片,如美國安森美公司的CAT4201以及UCT4611,SN3350等。采用專用芯片電路簡單可靠、性能好,通過PWM可控制輸出電流大小,但是功率數據不易采集。方案三:運放設計法。采用OP07集成運放接大功率場效應管等元器件組成壓控恒流源,這種方案具有電路簡單可靠、性能好、單片機容易控制、功率數據易于采集等優點,故采用此種方案。1.2移動物體通過檢測方案方案一:超聲波檢測法。利用超聲波發射接收的時間差不同,可用來檢測是否有物體通過。該方法簡單有效,但由于聲波的發散特性,精度達不到題目要求。方案二:反射式紅外傳感器檢測法。利用紅外線發射接收的時間差不同,也可來檢測是否有物體通過。該方法同樣簡單有效,而且精度較高,但是檢測距離過短,只有10幾cm,而且價格很高。方案三:紅外對管檢測法。采用位于同一直線上面對面放置的一個紅外發射管和一個紅外接收管(即紅外對管),可以用來檢測是否有物體通過其間。只需通過檢測流過紅外接收管的電流大小,可以方便地掌握物體通過情況。該方法簡單易行,檢測距離遠、精度高,成本低,故本系統采用該方案。1.3整體方案方案一:單MCU控制法。單從題目功能的實現,采用單MCU方案是可行的。支路控制器采用單MCU設計,所有外部接口(包括鍵盤、顯示器、時鐘模塊、光電傳感器、紅外對管、AD、DA等)都掛在這個MCU上。兩個單元控制器不帶MCU,只設計恒流源。兩個恒流源的控制及功率數據采集由支路控制器中的MCU通過雙通道的A/D、D/A來完成。這種方案單元控制器電路相當簡單,支路控制器電路較為復雜,MCU工作負荷大,I/O資源緊張。整體方案成本較低,易于實現,但不符合實際情況,不滿足題意。方案二:主從機協同控制法。支路控制器、單元控制器各采用1片MCU進行控制,支路控制器的主MCU與單元控制器的從MCU之間采用串口通信進行數據交換。支路控制器只用于人機界面、開關燈時間設定、自動亮度識別、道路通過檢測及故障報警等,而各個LED恒流源及其控制、數據采集電路均集成到單元控制器電路中,并由其內部的從MCU通過串口接收主MCU的指令進行控制。此方案各MCU分工合理,協同工作,負荷不高,電路、程序都較簡單。同時采用工業串口,傳輸距離遠,可推廣到實際應用中,故本系統采用該方案。2理論分析與計算2.1功率數據采集原理分析單元控制器采集當前LED的輸出功率數據分兩步進行:一、采集通過LED的電流值。由于本系統采用壓控恒流源,故通過LED的電流即為通過采樣電阻的電流,因為采樣電阻阻值為1Ω,所以電流等同于采樣電阻上的電壓。又因為前級運放OP07接成電壓跟隨器,該值即為D/A輸出的電壓值,在單元控制器在設定LED輸出功率時已知。二、采集LED兩端的電壓值。該值由LM358接成減法器直接在LED兩端取得,經A/D轉換送給從機。將這兩個值相乘,即得到當前LED的功率值。2.2功率調節原理分析設定功率時,單元控制器并不能一步到位。必須先通過D/A輸出一個初始的LED電流值,然后通過A/D把LED兩端電壓讀回來,將電流與電壓相乘得到的功率值與需設定值進行比較,如果小于設定值,則增加D/A的輸出;如果大于,則減小D/A的輸出。通過這種閉環系統,使當前輸出功率值逐步逼近設定功率值。2.3調節誤差分析D/A設定恒流源電流值、A/D采集電壓數據都將帶來轉換誤差,這是A/D、D/A器件本身硬件帶來的,不可避免。A/D、D/A位數越高,轉化誤差越小,調節誤差也越小。本系統采用12位的A/D、D/A器件,轉換誤差小于0.1%,而功率誤差由電流轉化誤差與電壓轉換誤差共同決定,由于他們之間是乘積關系,因此誤差的數量級不會上升,總的調節誤差小于0.5%,精度完全符合題目要求。3電路設計3.1系統框圖系統框圖如圖1所示。支路控制器支路控制器(主機)AT89S51單元控制器(從機1)AT89S51單元控制器(從機2)AT89S51恒流源1顯示器時鐘模塊光傳感器紅外對管檢測模塊按鍵A/DD/A恒流源2A/DD/A串口串口串口LED1LED2聲光報警模塊圖1系統框圖3.2顯示器模塊電路該模塊采用2個4位一體共8位共陰數碼管顯示器連接而成,段碼數據線共用,采用138譯碼作為數碼管位選,用于顯示開關燈時間、恒流源輸出功率值及百分比、故障LED編號等數據。數碼管顯示具有亮度高、可視距離遠、直觀、功耗低、使用方便、性價比高等特點。電路如圖2所示。圖2數碼管顯示電路3.3光傳感器模塊采用光敏電阻作為敏感元件,當環境亮度較高時,光敏電阻R1阻值很小,P17為低電平;當環境亮度較低時,光敏電阻R1阻值很大,P17為高電平。電路如圖3所示。圖3光傳感器電路圖4DS1302時鐘電路3.4時鐘電路時鐘模塊用于給MCU提供精確時間數據,從而使支路控制器能夠準確控制LED的開關燈時間。該模塊采用具有SPI接口的DS1302來進行設計,只占用MCU3個I/O,該模塊電路如圖4所示。3.5紅外對管檢測電路系統采用555接成施密特觸發器來對紅外接收管的陽極電壓進行監控,當無物體通過對管其間時,紅外管接收管D2導通,D2陽極電壓為低,CH1輸出高電平;當有物體通過其間時,紅外管D2截止,D2陽極電壓為高,CH1輸出低電平。電路如圖5所示。圖5紅外對管檢測電路圖6聲光報警電路3.6聲光報警電路采用一個普通發光二極管加一個蜂鳴器實現,當LED出現故障時的聲光報警提示功能。如圖6所示為聲光報警電路。3.7A/D電路該模塊采用美國國家半導體公司8位并行ADCADC0809實現,用于采集LED上電壓值到從機。其電路如圖7所示:圖7A/D轉換電路圖8D/A3.8D/A轉換電路該模塊采用Linear公司12位串行DACLTC2622實現,用于設定恒流源的輸出電流及功率。電路如圖8所示。3.9串口電路本系統采用工業串口485進行主機與從機間的通信,其接口電路如圖9所示。圖9串口接口電路4程序設計4.1物體通過檢測實現物體通過的檢測是通過道路兩邊垂直道路方向擺放的7對紅外對管實現的。S、S’兩點分別放置兩對管,B點位置擺放3對管。這樣,通過不同管子檢測物體的時間先后關系,可以方便地判斷出物體的移動位置和移動方向。即不論物體是前進還是后退,管子都可以檢測出來。紅外對管檢測精度很高,識別誤差小于2cm。4.2功率調節的實現當調節功率時,單元控制器并不能一步到位,立即使當前功率值等于設定功率值。必須先通過D/A輸出一個初始的LED電流值,然后通過A/D把LED兩端電壓讀回來,將電流與電壓相乘得到的功率值與需設定值進行比較,如果小于設定值,則增加D/A的輸出;如果大于,則減小D/A的輸出。通過這種閉環系統,使當前輸出功率值逐步逼近設定功率值。4.3程序流程圖主機的主程序流程圖、從機主程序流程圖、從機中斷服務程序流程圖分別如圖10、11、12所示。圖10主機主程序流程圖圖11從機主程序流程圖圖12從機中斷服務程序流程圖5系統測試5.1測試儀器DS-1雙通道直流穩壓源、C31-A型高精度指針式毫安表、C31-V型高精度指針式電壓表5.2測試方案功能逐項測試法:根據題目要求,依次逐項測試系統功能。數據實測計算法:使用精密毫伏表、電壓表,實時測試通過LED的電流及其兩端的電壓,再計算出LED的輸出功率,并將其與控制器設定的功率值進行比較,以計算出調節誤差。5.3測試結果1)功能完成情況經測試,系統可完成題目的基本及發揮部分全部功能。2)指標完成情況本題的指標主要是恒流源輸出功率的調節誤差。經測試,測試數據及計算結果如表1所示:表1恒流源的功率數據及調節誤差表設定功率百分比儀器測量電流值(mA)儀器測量電壓值(V)實際功率計算值(W)調節誤差20%65.822.820.18501.50%48%156.232.980.46561.44%80%248.443.160.78511.49%100%306.023.210.98231.77%5.4結果分析通過測試、計算和分析,系統完成題目的基本及發揮部分全部功能,并在設定調節LED輸出功率的指標上達到題目發揮部分要求,整體性能達到題目發揮部分要求。6總結本系統采用3片Atmel公司的AT89S51單片機作為系統的控制器件,其中支路控制器為主控制器,兩個單元控制器作為從控制器。支路控制器接顯示器和鍵盤組成人機界面,可通過外部時鐘模塊進行開關燈定時控制,可通過光敏傳感器和電壓比較器檢測環境明暗程度,可通過7對紅外對管檢測交通情況,控制LED的亮滅。在單元控制器中,采用OP07集成運放接大功率場效應管設計了LED壓控恒流源,可由單片機通過D/A方便地控制恒流源的輸出電流和功率,并由A/D芯片將功率數據反饋到單片機,形成閉環自動控制系統。支路控制器與單元控制器之間采用485工業串口進行通信,可推廣到實際應用中。所有功能和指標均達到或部分超過題目要求。參考文獻[1]宋文緒,楊帆.自動檢測技術.北京:高等教育出版社,2008.[2]高吉祥.全國大學生電子設計競賽培訓系列教程.北京:電子工業出版社,2007.[3]周堅.單片機C語言輕松入門.北京:北京航空航天出版社,2006.[4]孫傳友等.測控電路及裝置.北京:北京航空航天大學出版社,2002.[5]李朝青著.單片機原理及接口技術.北京航空航天大學出版社,2005.附件1:支路控制器系統電路圖附件2:單元控制器系統電路圖附件3:恒流源電路圖附件4:主要PCB圖1)恒流源與數碼管顯示PCB圖

2)主控電路3)從機電路

附件5:主要元器件清單序號元器件名稱型號、規格數量1單片機AT89S5132路燈LED1W23ADCADC08024DACLTC262225數碼管SMK2674LS13817LM35828OP-0719晶振11.0592M310按鍵411大功率電阻1歐5W212繼電器213場效應管IRFZ44N214三端穩壓器7809215各類電阻若干16各類電容若干

附件6:部分程序清單(1)從機部分程序#include<reg51.h>#include<intrins.h>#include<math.h>typedefunsignedcharUINT8;typedefunsignedintUINT16;#defineADDR0x02UINT8Buf[2];UINT16ADCDat[2],kcw;UINT8Vol;floatTemp;bitRecFlag,clok;sbitST=P2^7;sbitOE=P2^6;sbitEOC=P2^5;sbitIN7=P2^3;sbitDA_CS=P2^2;sbitDA_SCK=P2^0;sbitDA_SDI=P2^1;sbitLED=P1^6;sbitREDE=P3^2;voidSystem(void){ SCON=0xf0; TMOD=0x21; TH1=0xFD; TL1=0xFD; TH0=0xdc; TL0=0x32; TR0=1; ET0=1; TR1=1; EA=1; ES=1;}voidSendChar(UINT8c){ REDE=1; TI=0; TB8=0; SBUF=c; while(TI==0); TI=0; REDE=0;}voidReceiv(void)interrupt4{staticUINT8num=0; UINT8c; if(RI==0) return; RI=0; c=SBUF; if(RB8==1) { if(c==ADDR) SM2=0; else { SM2=1; num=0; } } Buf[num]=SBUF; num++; if(num==2) { RecFlag=1; num=0; }}voidWrite_LTC2622(UINT8Data){ UINT8i,Temp; DA_CS=1; DA_SCK=0; DA_SDI=1; _nop_(); _nop_(); DA_CS=0; Temp=0x21; for(i=0;i<8;i++) { if((Temp&0x80)==0x80) DA_SDI=1; else DA_SDI=0; DA_SCK=1; _nop_(); DA_SCK=0; _nop_(); Temp<<=1; } Data<<=4; for(i=0;i<16;i++) { if((Data&0x8000)==0x8000) DA_SDI=1; else DA_SDI=0; DA_SCK=1; _nop_(); DA_SCK=0; _nop_(); Data<<=1; } _nop_(); _nop_(); DA_CS=1; DA_SCK=0;}UINT16Vcontrol(UINT8v){ Temp=1240; Temp=(1/Temp)*4096*v*3; kcw=floor(Temp); return(kcw);}voidDAC0809(void){ UINT8a; IN7=1; ST=0; OE=0; ST=1; ST=0; while(EOC==0);//查詢轉換結束 OE=1; a=P0; OE=0; Temp=256; Temp=(1/Temp)*5*a; //單位v Vol=floor(Temp); }voidmain(){ UINT8i; System(); while(1) { if(clok) { clok=0; if(Vol>3) { SendChar('o'); } else { SendChar('n'); } } if(RecFlag) { switch(Buf[1]) { case1: LED=0; //亮燈 break; case2: LED=1; break; case4: Write_LTC2622(Vcontrol(i)); i++; break; } Buf[1]=0; } }}voidtimer0()interrupt1{ staticUINT8num; TH0=0xdc; TL0=0x32; num++; if(num==100) { num=0; DAC0809(); clok=1; }}

(2)主機部分程序#include<reg52.h>typedefunsignedcharUINT8;typedefunsignedintUINT16;#defineS10x38#defineS20x34#defineS30x2c#defineS40x1ccodeUINT8SELECT[]={7,6,5,4,3,2,1,0};codeUINT8SEGMENT[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc8/*n*/,0x8e/*F*/,0xff};UINT8Second=0,Minite=30,Hour=12,slave,SDR,Ap,Bp; UINT8Bsecond,Bminite,Bhour,SETVALUE,SETADDR,Sphour,Spminite,Sthour,Stminite,Sphour2,Spminite2,Sthour2,Stminite2;sbitclk=P2^4;sbitio=P2^5;sbitrst=P2^6;sbitREDE=P2^7;sbitACC0=ACC^0;sbitACC7=ACC^7;sbitSpeaker=P3^7;sbitAutochk=P1^7;bitflag,SETBIT,READBIT,flag1,clock,page,FS=1,FS1,FS2;voidmain(){ UINT8c; System(); init1302(); Read1302(); while(1) { led_dsp(); if(Autochk==1) { if(FS) { FS=0; SendChar(1,2); //關燈 SendChar(2,2); //檢測光線 FS2=1; } } else { if(FS2) { FS2=0; SendChar(1,1); //熄燈 SendChar(2,1); //檢測光線 FS=1; } } if(READBIT==1) { READBIT=0; Read1302(); //讀1302時間 } c=Scankey(); if(SETBIT) { switch(c) { caseS2: SETADDR++; if(slave==0) { SETADDR%=2; if(SETADDR==0){SDR=0x82;}//分鐘0x03 elseif(SETADDR==1){SDR=0x84;}//時鐘0x04 if(SDR==0x82) { SETVALUE=((read1302(SDR)&0x70)>>4)*10+(read1302(SDR)&0x0f); } elseif(SDR==0x84) { SETVALUE=((read1302(SDR)&0x30)>>4)*10+(read1302(SDR)&0x0f); } } elseif(slave==4) { SETADDR%=2; } else { SETADDR%=4; if(SETADDR<2){page=1;} else{page=0;} if((slave==1)||(slave==2)) { switch(SETADDR) { case0:SETVALUE=Spminite; case1:SETVALUE=Sphour; case2:SETVALUE=Stminite; case3:SETVALUE=Sthour; } } elseif(slave==3) { switch(SETADDR) { case0:SETVALUE=Spminite2; case1:SETVALUE=Sphour2; case2:SETVALUE=Stminite2; case3:SETVALUE=Sthour2; } } elseif(slave==4) { if(SETADDR==0){SETVALUE=Ap;} elseif(SETADDR==1){SETVALUE=Bp;} } } break; caseS3: { SETVALUE++; switch(SETADDR) { case0: if(slave==3){Spminite2=SETVALUE;} //從機2關機設置 elseif(slave==0){Bminite=SETVALUE;SETVALUE%=60;}//分鐘設置 elseif(slave==4){Ap=SETVALUE;SETVALUE%=100;} else{Spminite=SETVALUE;SETVALUE%=60;} //主機和從機1關機設置 break; case1: if(slave==3){Sphour2=SETVALUE;} //關機// elseif(slave==0){Bhour=SETVALUE;SETVALUE%=24;}//小時設置 elseif(slave==4){Bp=SETVALUE;SETVALUE%=100;} else{Sphour=SETVALUE;SETVALUE%=24;} break; case2: if(slave==3){Stminite2=SETVALUE;} //主機和從機1開機設置 else{Stminite=SETVALUE;} //從機2開機設置 SETVALUE%

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論