非載波下的紅外光限位,檢測在民用以及工業(yè)應(yīng)用特別廣泛,但是當(dāng)自然光較強(qiáng),或者室外效果非常差勁,博主也遇到這個問題。
博主使用紅外對光管做把手檢測,當(dāng)手握住把手后輸出高電平,撒開把手后輸出低電平。下面是電路圖:
電路的幾點(diǎn)說明:
J3和J1是對插接口,紅外對光管使用的型號是ST178。
當(dāng)對光管被遮擋后,OUT端電壓降低,如果比較器A-端電壓低于A+端,OUTA就會輸出高電平,此時Q1會導(dǎo)通,輸出高電平。
電路使用R5和R6調(diào)節(jié)基準(zhǔn)電壓。
當(dāng)兩個對光管都被遮擋后A-端電壓大約在1V左右,A+的電壓基準(zhǔn)大概為3.33V。
結(jié)果:
最后在現(xiàn)場,我是懵逼的!??! 雖然現(xiàn)場在室內(nèi),但是,窗戶的自然采光量已經(jīng)導(dǎo)致A-端電壓在1V左右,當(dāng)時大約在中午,下午把手都恢復(fù)正常了。但是這肯定不合格。因此為了和環(huán)境光區(qū)分設(shè)計(jì)了調(diào)制信號版本的紅外對光。
紅外調(diào)制版本電路圖:
方案說明:
該方案使用紅外發(fā)射管調(diào)制38KHZ發(fā)射,使用HS1838接收,HS1838收到38KHZ紅外信號后,會輸出低電平(但是不會持續(xù)輸出),因此38KHZ也得編碼,這里使用30HZ左右的方波信號進(jìn)行編碼。和紅外通信原理類似。
第一種版本:
NE555調(diào)制版本
電路說明:
上面是發(fā)射電路,其中D1是紅外發(fā)射管,左邊用三極管構(gòu)成一個多諧振蕩器產(chǎn)生30HZ開漏輸出信號,右邊是NE555產(chǎn)生38KHZ 60%占空比推挽輸出信號,因此最終30HZ信號載波38KHZ發(fā)射出去,接收端會輸出30HZ的方波信號,然后處理器檢測這個30HZ方波信號就可以確定有沒有信號了,如果擋住了發(fā)射管,接收管不會有輸出,擋住了接收管也是一個道理啦。
缺點(diǎn)就是元件數(shù)量太多了。
因?yàn)檫@個電路要裝進(jìn)把手里,所以一定要小。原件太多就尷尬了。
第二版本電路
這就簡單多了,J3是HX1838,D2是發(fā)射管。單片機(jī)是STM8S103F3。
TIM2作為38KHZ 60%占空比輸出。 TIM4產(chǎn)生30HZ編碼信號。
TIM1_CH3輸入捕獲脈沖寬度。
最后完美解決干擾問題。
下面是具體片段代碼:
定時器2產(chǎn)生38KHZ載波信號
TIM2_DeInit(); //定時器2 默認(rèn)值TIM2_TimeBaseInit(TIM2_PRESCALER_4, 103);// 配置定時器2 主時基TIM2_OC2Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_DISABLE,60, TIM2_OCPOLARITY_HIGH);//輸出PWM配置TIM2_ARRPreloadConfig(ENABLE); //打開自動裝載TIM2_CCxCmd(TIM2_CHANNEL_2, ENABLE);TIM2_Cmd(ENABLE);//使能
定時器4產(chǎn)生編碼信號
TIM4_TimeBaseInit(TIM4_PRESCALER_128, 125);//1000HZ觸發(fā)頻率TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);//中斷觸發(fā)TIM4_ARRPreloadConfig(ENABLE);TIM4_SetCounter(0x00);TIM4_Cmd(ENABLE);
定時器4中斷進(jìn)行載波處理
INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)//定時器4編碼信號 {static bool flot=0; /* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ TIM4_ClearFlag(TIM4_FLAG_UPDATE);numb++;//清除標(biāo)致 if(numb>15){//做一個延時使用 if(flot) {TIM2_Cmd(ENABLE);flot=0;}//打開及關(guān)閉定時器2來控制38KHZ的輸出和關(guān)閉 else{ TIM2_Cmd(DISABLE);flot=1;} numb=0;
定時器1進(jìn)行輸入捕獲
TIM1_TimeBaseInit(1600, TIM1_COUNTERMODE_UP, 10000, 0x00);//定時器一些設(shè)定TIM1_ICInit(TIM1_CHANNEL_3, TIM1_ICPOLARITY_FALLING, TIM1_ICSELECTION_DIRECTTI, TIM1_ICPSC_DIV1, 0x00);//輸入捕獲設(shè)定TIM1_ARRPreloadConfig(ENABLE);//自動重裝載定時器TIM1_CCxCmd(TIM1_CHANNEL_3, ENABLE);//使能第三通道TIM1_ITConfig(TIM1_IT_UPDATE, DISABLE);//無更新中斷TIM1_ITConfig(TIM1_IT_CC3, DISABLE);//不打開第三通道捕獲中斷 TIM1_Cmd(DISABLE);//關(guān)閉定時器
主函數(shù)處理
while(1){if(!GPIO_ReadInputPin(GPIOC, GPIO_PIN_3)){ //先檢測到低電平 TIM1_SetCounter(0x0000);//然后清空計(jì)數(shù)器 TIM1_Cmd(ENABLE);//打開定時器1 while(!TIM1_GetFlagStatus(TIM1_FLAG_CC3));//等待高脈沖 PWMdata= TIM1_GetCapture3();//獲取到脈沖寬度 TIM1_ClearFlag(TIM1_FLAG_CC3);//清除標(biāo)志位 TIM1_Cmd(DISABLE);//關(guān)閉定時器1 等待下次處理 }if((PWMdata>310)&&(PWMdata<330)){ //判斷頻率是否在預(yù)設(shè)的30HZ左右 如果連續(xù)5次都是那就沒問題啦??! a++;if(a>5)LED_ON;}else {LED_OFF;a=0;}}
實(shí)物圖
這是發(fā)射接收傳感器部分
處理器部分
效果說明:
非常穩(wěn)定,使用安防監(jiān)控紅外燈照射,依然波形不亂。明天試試太陽底下效果。
-
電路
+關(guān)注
關(guān)注
171文章
5747瀏覽量
171204 -
電路圖
+關(guān)注
關(guān)注
10289文章
10707瀏覽量
523887 -
紅外光
+關(guān)注
關(guān)注
0文章
58瀏覽量
13015
原文標(biāo)題:紅外對光管載波方案
文章出處:【微信號:cirmall,微信公眾號:電路設(shè)計(jì)技能】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論