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