如何區(qū)別接收管的c引腳和e引腳
發(fā)布時間:2013/11/18 20:21:02 訪問次數:1076
在確保發(fā)射管正常發(fā)射且用手遮擋酌情況下,DF30FC-60DS-0.4V(81)一端接高電平,另一端的平也接近高電平,那么接近高電平的就是e引腳了。除去發(fā)射信號,此時已經判斷出的e引腳應該就接近低電平了。原理是這樣的:當有紅外光照射到光電三極管時,c與e之間就會導通,導通電壓在0.4V左右。
經過這樣的判斷與測試過程,大家是否自己也能編寫相應的程序,來判斷是否有物體接近傳感器了呢?不過在這次應用中,我并沒有讓c引腳接高電平,從而判斷e引腳的狀態(tài)。因為這樣的話,傳感器的e引腳耍接一個下拉電阻。而M8單片機的引腳僅僅能設置上拉電阻。因此,為了簡化制作,我通過程序設置傳感器的e引腳輸出低電平,傳感器的c引腳通過M8單片機的PC5上拉。這樣,當手靠近傳感器時,就會因為手反射回的紅外光,而使得c引腳接近低電平。同樣,紅外遙控器對著它照射也會拉低c引腳。因此,在單片機的程序中,我們不能僅僅通過讀取c引腳的電壓值是否接近0來判斷手是否靠近收納桶。
程序可以說相當簡單,舵機僅僅用了1 0次循環(huán)來實現1 0次50Hz(其實舵機可以接收50—333Hz不等的頻率)的PWM這兩個函數可以控制舵機轉到兩個極限的角度,起到拉升蓋子的作用。-00()這個函數的實際作用效果是打開蓋子,而一90()這個函數則是用于關閉蓋子。大家可以調整PORTB.1=1話句后面的延時時間參數(延時時間就是高電平的時間),來微調該舵機的兩個相對位置。
看這個函數的名字,大家就能想到它的作用了吧?這是讀紅外傳感器的狀態(tài)函數,當全局變量state=l時,表示沒有物體遮擋、蓋子關閉。當全局變量state=2時,表示有物體遮擋、蓋子打開。PORTC.2控制著傳感器發(fā)射的狀態(tài),當PORTC.2=1時,關閉紅外的發(fā)射,等于O時開啟紅外發(fā)射。由于我們是要判斷手是否靠近傳感器,如果簡單地判斷ADC的數值是否接近O的話,那是不行的,因為在陽光下,ADC的數值就接近O。所以,我們實際要判斷的是:物體靠近而引起的變化,即程序中的H-L的差值。
由于開啟和關閉傳感器需要時間,ADC轉換也同樣需要時間,這段時間完全有可能因為你看電視時換頻道而錯誤觸發(fā)(遙控器發(fā)射紅外光嘛),因此程序采樣了20次。如果20次總計100ms左右的時間內,差值一致的話,則判斷有人手靠近,否則從頭再檢測20次。這樣就保證了穩(wěn)定而可靠的感應。
大家可以通過修改H-L的差值,來改變感應的實際距離。當H-L≥6時,感應的距離約為20cm。H-L的差值并非和距離成線性關系,差值在接近1時感皮的距離最遠,約30cm左右。但是你也不希望當在30cm時,蓋子連續(xù)不斷地抖動開關吧。所以,在程序中我就設置H-L≤6(≤20cm距離)時就關閉蓋子。當H-L≥12(≤15cm距離)時就打開蓋子。
制作好的效果圖如圖7所示,本制作的單片機程序可以從《無線電》雜志網站www.radio.com.cn上下載,使用GVAVR編譯,點擊工程文件即可直接打開修改。當然你不想修改完善的話,可以直接燒錄編譯好的HB汶件
經過這樣的判斷與測試過程,大家是否自己也能編寫相應的程序,來判斷是否有物體接近傳感器了呢?不過在這次應用中,我并沒有讓c引腳接高電平,從而判斷e引腳的狀態(tài)。因為這樣的話,傳感器的e引腳耍接一個下拉電阻。而M8單片機的引腳僅僅能設置上拉電阻。因此,為了簡化制作,我通過程序設置傳感器的e引腳輸出低電平,傳感器的c引腳通過M8單片機的PC5上拉。這樣,當手靠近傳感器時,就會因為手反射回的紅外光,而使得c引腳接近低電平。同樣,紅外遙控器對著它照射也會拉低c引腳。因此,在單片機的程序中,我們不能僅僅通過讀取c引腳的電壓值是否接近0來判斷手是否靠近收納桶。
程序可以說相當簡單,舵機僅僅用了1 0次循環(huán)來實現1 0次50Hz(其實舵機可以接收50—333Hz不等的頻率)的PWM這兩個函數可以控制舵機轉到兩個極限的角度,起到拉升蓋子的作用。-00()這個函數的實際作用效果是打開蓋子,而一90()這個函數則是用于關閉蓋子。大家可以調整PORTB.1=1話句后面的延時時間參數(延時時間就是高電平的時間),來微調該舵機的兩個相對位置。
看這個函數的名字,大家就能想到它的作用了吧?這是讀紅外傳感器的狀態(tài)函數,當全局變量state=l時,表示沒有物體遮擋、蓋子關閉。當全局變量state=2時,表示有物體遮擋、蓋子打開。PORTC.2控制著傳感器發(fā)射的狀態(tài),當PORTC.2=1時,關閉紅外的發(fā)射,等于O時開啟紅外發(fā)射。由于我們是要判斷手是否靠近傳感器,如果簡單地判斷ADC的數值是否接近O的話,那是不行的,因為在陽光下,ADC的數值就接近O。所以,我們實際要判斷的是:物體靠近而引起的變化,即程序中的H-L的差值。
由于開啟和關閉傳感器需要時間,ADC轉換也同樣需要時間,這段時間完全有可能因為你看電視時換頻道而錯誤觸發(fā)(遙控器發(fā)射紅外光嘛),因此程序采樣了20次。如果20次總計100ms左右的時間內,差值一致的話,則判斷有人手靠近,否則從頭再檢測20次。這樣就保證了穩(wěn)定而可靠的感應。
大家可以通過修改H-L的差值,來改變感應的實際距離。當H-L≥6時,感應的距離約為20cm。H-L的差值并非和距離成線性關系,差值在接近1時感皮的距離最遠,約30cm左右。但是你也不希望當在30cm時,蓋子連續(xù)不斷地抖動開關吧。所以,在程序中我就設置H-L≤6(≤20cm距離)時就關閉蓋子。當H-L≥12(≤15cm距離)時就打開蓋子。
制作好的效果圖如圖7所示,本制作的單片機程序可以從《無線電》雜志網站www.radio.com.cn上下載,使用GVAVR編譯,點擊工程文件即可直接打開修改。當然你不想修改完善的話,可以直接燒錄編譯好的HB汶件
在確保發(fā)射管正常發(fā)射且用手遮擋酌情況下,DF30FC-60DS-0.4V(81)一端接高電平,另一端的平也接近高電平,那么接近高電平的就是e引腳了。除去發(fā)射信號,此時已經判斷出的e引腳應該就接近低電平了。原理是這樣的:當有紅外光照射到光電三極管時,c與e之間就會導通,導通電壓在0.4V左右。
經過這樣的判斷與測試過程,大家是否自己也能編寫相應的程序,來判斷是否有物體接近傳感器了呢?不過在這次應用中,我并沒有讓c引腳接高電平,從而判斷e引腳的狀態(tài)。因為這樣的話,傳感器的e引腳耍接一個下拉電阻。而M8單片機的引腳僅僅能設置上拉電阻。因此,為了簡化制作,我通過程序設置傳感器的e引腳輸出低電平,傳感器的c引腳通過M8單片機的PC5上拉。這樣,當手靠近傳感器時,就會因為手反射回的紅外光,而使得c引腳接近低電平。同樣,紅外遙控器對著它照射也會拉低c引腳。因此,在單片機的程序中,我們不能僅僅通過讀取c引腳的電壓值是否接近0來判斷手是否靠近收納桶。
程序可以說相當簡單,舵機僅僅用了1 0次循環(huán)來實現1 0次50Hz(其實舵機可以接收50—333Hz不等的頻率)的PWM這兩個函數可以控制舵機轉到兩個極限的角度,起到拉升蓋子的作用。-00()這個函數的實際作用效果是打開蓋子,而一90()這個函數則是用于關閉蓋子。大家可以調整PORTB.1=1話句后面的延時時間參數(延時時間就是高電平的時間),來微調該舵機的兩個相對位置。
看這個函數的名字,大家就能想到它的作用了吧?這是讀紅外傳感器的狀態(tài)函數,當全局變量state=l時,表示沒有物體遮擋、蓋子關閉。當全局變量state=2時,表示有物體遮擋、蓋子打開。PORTC.2控制著傳感器發(fā)射的狀態(tài),當PORTC.2=1時,關閉紅外的發(fā)射,等于O時開啟紅外發(fā)射。由于我們是要判斷手是否靠近傳感器,如果簡單地判斷ADC的數值是否接近O的話,那是不行的,因為在陽光下,ADC的數值就接近O。所以,我們實際要判斷的是:物體靠近而引起的變化,即程序中的H-L的差值。
由于開啟和關閉傳感器需要時間,ADC轉換也同樣需要時間,這段時間完全有可能因為你看電視時換頻道而錯誤觸發(fā)(遙控器發(fā)射紅外光嘛),因此程序采樣了20次。如果20次總計100ms左右的時間內,差值一致的話,則判斷有人手靠近,否則從頭再檢測20次。這樣就保證了穩(wěn)定而可靠的感應。
大家可以通過修改H-L的差值,來改變感應的實際距離。當H-L≥6時,感應的距離約為20cm。H-L的差值并非和距離成線性關系,差值在接近1時感皮的距離最遠,約30cm左右。但是你也不希望當在30cm時,蓋子連續(xù)不斷地抖動開關吧。所以,在程序中我就設置H-L≤6(≤20cm距離)時就關閉蓋子。當H-L≥12(≤15cm距離)時就打開蓋子。
制作好的效果圖如圖7所示,本制作的單片機程序可以從《無線電》雜志網站www.radio.com.cn上下載,使用GVAVR編譯,點擊工程文件即可直接打開修改。當然你不想修改完善的話,可以直接燒錄編譯好的HB汶件
經過這樣的判斷與測試過程,大家是否自己也能編寫相應的程序,來判斷是否有物體接近傳感器了呢?不過在這次應用中,我并沒有讓c引腳接高電平,從而判斷e引腳的狀態(tài)。因為這樣的話,傳感器的e引腳耍接一個下拉電阻。而M8單片機的引腳僅僅能設置上拉電阻。因此,為了簡化制作,我通過程序設置傳感器的e引腳輸出低電平,傳感器的c引腳通過M8單片機的PC5上拉。這樣,當手靠近傳感器時,就會因為手反射回的紅外光,而使得c引腳接近低電平。同樣,紅外遙控器對著它照射也會拉低c引腳。因此,在單片機的程序中,我們不能僅僅通過讀取c引腳的電壓值是否接近0來判斷手是否靠近收納桶。
程序可以說相當簡單,舵機僅僅用了1 0次循環(huán)來實現1 0次50Hz(其實舵機可以接收50—333Hz不等的頻率)的PWM這兩個函數可以控制舵機轉到兩個極限的角度,起到拉升蓋子的作用。-00()這個函數的實際作用效果是打開蓋子,而一90()這個函數則是用于關閉蓋子。大家可以調整PORTB.1=1話句后面的延時時間參數(延時時間就是高電平的時間),來微調該舵機的兩個相對位置。
看這個函數的名字,大家就能想到它的作用了吧?這是讀紅外傳感器的狀態(tài)函數,當全局變量state=l時,表示沒有物體遮擋、蓋子關閉。當全局變量state=2時,表示有物體遮擋、蓋子打開。PORTC.2控制著傳感器發(fā)射的狀態(tài),當PORTC.2=1時,關閉紅外的發(fā)射,等于O時開啟紅外發(fā)射。由于我們是要判斷手是否靠近傳感器,如果簡單地判斷ADC的數值是否接近O的話,那是不行的,因為在陽光下,ADC的數值就接近O。所以,我們實際要判斷的是:物體靠近而引起的變化,即程序中的H-L的差值。
由于開啟和關閉傳感器需要時間,ADC轉換也同樣需要時間,這段時間完全有可能因為你看電視時換頻道而錯誤觸發(fā)(遙控器發(fā)射紅外光嘛),因此程序采樣了20次。如果20次總計100ms左右的時間內,差值一致的話,則判斷有人手靠近,否則從頭再檢測20次。這樣就保證了穩(wěn)定而可靠的感應。
大家可以通過修改H-L的差值,來改變感應的實際距離。當H-L≥6時,感應的距離約為20cm。H-L的差值并非和距離成線性關系,差值在接近1時感皮的距離最遠,約30cm左右。但是你也不希望當在30cm時,蓋子連續(xù)不斷地抖動開關吧。所以,在程序中我就設置H-L≤6(≤20cm距離)時就關閉蓋子。當H-L≥12(≤15cm距離)時就打開蓋子。
制作好的效果圖如圖7所示,本制作的單片機程序可以從《無線電》雜志網站www.radio.com.cn上下載,使用GVAVR編譯,點擊工程文件即可直接打開修改。當然你不想修改完善的話,可以直接燒錄編譯好的HB汶件
上一篇:感應式收納桶制作的電路原理
上一篇:51單片機控制的骨牌時鐘