久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 基于51單片機的人體紅外模塊的自動門設(shè)計原理圖+程序 [打印本頁]

作者: whdsjagdhasg    時間: 2018-12-12 10:22
標(biāo)題: 基于51單片機的人體紅外模塊的自動門設(shè)計原理圖+程序

資料包含:論文 + 程序源代碼 + PCB原理圖 + 芯片資料手冊

目錄

摘 要
一. 方案的選擇與論證
1.驅(qū)動電機
2. 電動機驅(qū)動模塊
3. 微處理器模塊
4. 人體檢測模塊
5. 故障檢測模塊
二. 系統(tǒng)硬件的具體設(shè)計與實現(xiàn)
1. 系統(tǒng)原理和框圖
2. 功能模塊的設(shè)計
2.1 單片機介紹
2.1.1 AT89C51管腳說明
2.1.2 AT89C51主要特性
2.1.3芯片擦除
2.2  熱釋電紅外傳感器介紹
2.3  BISS0001芯片介紹和典型電路
2.3.1 BISS0001的內(nèi)部結(jié)構(gòu)及特點
2.3.2 BISS001管腳圖及管腳說明:
2.3.3 BISS0001工作原理
2.4  步進電機
2.4.1 28BYJ48步進電機參數(shù)
2.4.2 28BYJ48步進電機驅(qū)動方式
2.4.3 步進電機驅(qū)動電路
三. 系統(tǒng)軟件設(shè)計
1. 程序描述與設(shè)計思路
(1)程序描述
(2)程序設(shè)計思路
2. 程序流程圖
(1)自動門控制主程序
(2)LED燈開關(guān)門控制編碼
(3)步進電機正反轉(zhuǎn)編碼
3. 程序
四. 總結(jié)
五. 致謝
六. 參考文獻
七.附錄
1.原理圖
2.主程序

摘 要
本系統(tǒng)以單片機AT89C51為核心,使用人體紅外線傳感器作為感應(yīng)器,檢測到人體輻射的紅外線能量變化,將其轉(zhuǎn)化為電信號,觸發(fā)單片機中斷。再由單片機通過ULN2003驅(qū)動步進電機動作,電機的正反轉(zhuǎn)分別表示自動門的開啟和閉合,通過15個LED燈的逐次亮滅來模擬開關(guān)門狀態(tài)。

一. 方案的選擇與論證
根據(jù)設(shè)計要求目的,本系統(tǒng)可以劃分為若干個基本模塊。為了搭建性能穩(wěn)定的外部電路及實現(xiàn)較高的性價比,使自動門達到真正的智能控制,針對各個模塊的功能要求,分別有以下一些不同的設(shè)計方案:
1.驅(qū)動電機
方案A:選擇步進電機作為自動門的引擎。步進電機最大的優(yōu)點就是在距離上能夠得到較精確控制,在沒有行程開關(guān)作為電機停止的信號時,步進電機是最有選擇。
方案B:采用普通直流電機。該電機轉(zhuǎn)速快,針對本設(shè)計的情況,電機過快運轉(zhuǎn)會造成失去控制甚至出現(xiàn)夾人的缺陷,故此排除。
方案C:利用直流減速電機,該方案雖然能夠限制電機的速度在一定的方位內(nèi),但是由于沒有行程開關(guān),而且電源帶載能力不穩(wěn)定的情況下,電機很難在相同時間內(nèi)走過相同的距離,這將無法達到準(zhǔn)確開關(guān)門的目的。
因此采用第一種方案的步進電機電機來作為自動門的引擎。
2. 電動機驅(qū)動模塊
方案A:采用繼電器對電機的開或關(guān)進行開關(guān)的切換經(jīng)行調(diào)整。這個方案簡單但是相應(yīng)時間慢,機械結(jié)構(gòu)容易損壞并且壽命不長。
方案B:利用電阻分壓原理,采用數(shù)字電位器調(diào)整電機的分壓,從而達到調(diào)速的目的。缺點是無法用大電流驅(qū)動,降低工作效率而且不易實現(xiàn)。
方案C:使用ULN2003驅(qū)動芯片。ULN2003 是高耐壓、大電流復(fù)合晶體管陣列,由七個硅NPN 復(fù)合晶體管組成,最大輸出電流可達500mA,用來驅(qū)動本設(shè)計中用到的四相步進電機非常適合。
因而擬用第三種方案。
3. 微處理器模塊
方案一:采用可編程邏輯器件CPLD。CPLD可以實現(xiàn)各種復(fù)雜的邏輯功能、規(guī)模大、密度高、IO資源豐富,適合作為大規(guī)?刂葡到y(tǒng)的控制核心。但本系統(tǒng)不需要復(fù)雜的邏輯功能,對數(shù)據(jù)的處理速度的要求也不是很高,且從使用及經(jīng)濟的角度考慮,我們放棄了此方案。
方案二:采用51系列單片機。系統(tǒng)的要求不高,程序的編寫也比較簡單,需要用到的I/O口的數(shù)量用該系列的單片機來操作完全能夠?qū)崿F(xiàn),無需再擴展,充分的利用了單片機資源。另外,經(jīng)典的51系列單片機的處理速度也能夠滿足系統(tǒng)要求,性價比相對CPLD器件更高。
綜合以上兩種方案,本系統(tǒng)選擇方案二,以AT89C51作為系統(tǒng)的微控制器。
4. 人體檢測模塊
方案一:微波感應(yīng)器,又稱微波雷達,能對物體的移動進行反應(yīng),因而反應(yīng)迅速比較快,適合用于行走速度正常的人員通過場所,它的缺點是一旦有人不想出門而靜止不動,雷達便不再反應(yīng),這時如果系統(tǒng)給出關(guān)門信號,那么自動門就會關(guān)閉,出現(xiàn)夾人現(xiàn)象。
方案二:人體紅外傳感器,能對物體的存在進行反應(yīng),不管人員是否移動,只要處于感應(yīng)器的掃描范圍,它都會有反應(yīng),就能阻止自動門關(guān)閉,但是紅外感應(yīng)器的反應(yīng)比微波感應(yīng)器略微慢一點。
綜上,出于安全問題的考慮,為了防止自動門出現(xiàn)夾人情況,第二種紅外傳感器比第一種微波傳感器更適合自動門的設(shè)計與使用。
5. 故障檢測模塊
方案一:采用霍爾電流傳感器來檢測流經(jīng)電機的電流,再將采到的電流值轉(zhuǎn)換成電壓,經(jīng)過AD轉(zhuǎn)換,送入單片機。該方案雖然性抗干擾能力強,但是相對于本系統(tǒng)來說,價格太貴,而且步進電機的電流范圍也比較小。
方案二:采用電阻采樣的方式。在電機電源輸入串入一個阻值為1歐姆的合金電阻,由于阻值足夠小,對電機的影響可以忽略不計,再由歐姆定律可知,電阻兩端的電壓為流過該電阻的電流乘以一,最后將該電壓送入電壓比較器的反向輸入端,與預(yù)設(shè)閥值作比較,當(dāng)電流過大時,比較器輸出會產(chǎn)生一個邊沿跳變,此時觸發(fā)中斷,停止自動門動作。
綜合分析,方案二簡單可靠,比較適合應(yīng)用在本系統(tǒng)設(shè)計中。

二. 系統(tǒng)硬件的具體設(shè)計與實現(xiàn)
1. 系統(tǒng)原理和框圖
人體紅外自動門控制系統(tǒng)的硬件組成如圖2-1所示。本系統(tǒng)主要由AT89C51單片機及其外圍電路、人體紅外檢測電路,步進電機控制電路、故障檢測電路、開關(guān)門狀態(tài)顯示電路等五部分組成。單片機循環(huán)檢測人體紅外檢測電路和故障檢測電路,據(jù)此產(chǎn)生步進電機控制信號,同時LED等作對應(yīng)流動。當(dāng)檢測到有人靠近時,步進電機正轉(zhuǎn)一圈,LED燈由中間向左右兩邊逐漸點亮;完全開門后等待三秒鐘,如果沒有人靠近,此時開始關(guān)門,步進電機反轉(zhuǎn)一圈,LED燈由兩邊向中間逐漸熄滅。自動門的開啟可以分為3個階段,首先是單片機在接受到傳感器的信號后給馬達一個快速開啟的信號,使馬達以比較快的速率工作,門迅速打開,然后再慢速工作,緩慢打開,最后保持禁止不動,相反,當(dāng)自動門關(guān)閉時,是先加速后減速,再到停止的過程。

圖2-1 系統(tǒng)設(shè)計框圖


人體紅外模塊探測到有人靠近時,將脈沖信號傳給主控器,主控器判斷后通知步進電機運行,同時監(jiān)控步進電機轉(zhuǎn)動角度,以便通知其在一定時候加力和進入慢行運行。步進電機在ULN2003芯片的下進行開關(guān)門,一個開門完整周期是電機順時針轉(zhuǎn)過360°,反之,關(guān)門則逆時針轉(zhuǎn)360°。若在關(guān)門過程中突然又有人靠近,此時單片機馬上相應(yīng)中斷,停止電機關(guān)門,并在電機停止的位置又重新開門,經(jīng)過3秒后,自動門才開始關(guān)閉,并啟動中斷。

2. 功能模塊的設(shè)計
2.1 單片機介紹
單片機是把微型計算機主要部分都集成在一個芯片上的單芯片微型計算機,即將運算器,控制器,輸入輸出接口,部分存儲器以及其他一些邏輯部件集成在一個芯片上,故可以把單片機看成是一個不帶外部設(shè)備的微型計算機,相當(dāng)于一個沒有顯示器,沒有鍵盤,不帶監(jiān)控程序的單板機。
由于單片計算機具有體積小,重量輕,耗電少,功能強和價格低等特點,又由于數(shù)據(jù)大多是在芯片內(nèi)傳送處理,所以運行速度快,抗干擾能力強。單片機從七十年代問世以來,在二十多年的時間里,發(fā)展異常迅速,并已廣泛應(yīng)用于各種領(lǐng)域。單片機具有通訊接口,用單片機進行接口的控制與管理,單片機與主機可并行工作,大大地提高了系統(tǒng)的運行速度,所以在網(wǎng)絡(luò)通訊領(lǐng)域也得到了越來越多的應(yīng)用。
AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。

AT89C51外形及引腳排列如圖2-1所示。


圖2-1 AT89C51外形及引腳圖

2.1.1 AT89C51管腳說明
VCC:供電電壓。
GND:接地。
P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。在實際應(yīng)用中,大多數(shù)情況下都使用P3口的第二功能。
P3.0 —RXD:串行輸入口
P3.1 —TXD:串行輸出口
P3.2 —/INT0:外部中斷0
P3.3 —/INT1:外部中斷1
P3.4 —T0:記時器0外部輸入
P3.5 —T1:記時器1外部輸入
P3.6 —/WR:外部數(shù)據(jù)存儲器
P3.7 —/RD:外部數(shù)據(jù)存儲器
P3口同時為閃爍編程和編程校驗接收一些控制信號。
RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時
ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。
/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。
EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。
2.1.2 AT89C51主要特性
* 與MCS-51 兼容
* 4K字節(jié)可編程閃爍存儲器
* 壽命:1000寫/擦循環(huán)
* 數(shù)據(jù)保留時間:10年
* 全靜態(tài)工作:0Hz-24Hz
* 三級程序存儲器鎖定
* 128*8位內(nèi)部RAM
* 32可編程I/O線
* 兩個16位定時器/計數(shù)器
* 5個中斷源
* 可編程串行通道
* 低功耗的閑置和掉電模式
* 片內(nèi)振蕩器和時鐘電路
2.1.3芯片擦除
整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦除操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。
此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。
2.2 熱釋電紅外傳感器介紹
熱釋電紅外傳感器是一種能檢測人或動物發(fā)射的紅外線而輸出電信號的傳感器。早在1938年,有人提出過利用熱釋電效應(yīng)探測紅外輻射,但并未受到重視,直到六十年代,隨著激光、紅外技術(shù)的迅速發(fā)展,才又推動了對熱釋電效應(yīng)的研究和對熱釋電晶體的應(yīng)用。熱釋電晶體已廣泛用于紅外光譜儀、紅外遙感以及熱輻射探測器,它可以作為紅外激光的一種較理想的探測器。它目標(biāo)正在被廣泛的應(yīng)用到各種自動化控制裝置中。除了在我們熟知的樓道自動開關(guān)、防盜報警上得到應(yīng)用外,在更多的領(lǐng)域應(yīng)用前景看好。比如:在房間無人時會自動停機的空調(diào)機、飲水機。電視機能判斷無人觀看或觀眾已經(jīng)睡覺后自動關(guān)機的機構(gòu)。開啟監(jiān)視器或自動門鈴上的應(yīng)用。結(jié)合攝影機或數(shù)碼照相機自動記錄動物或人的活動等等。
熱釋電效應(yīng)同壓電效應(yīng)類似,是指由于溫度的變化而引起晶體表面荷電的現(xiàn)象。熱釋電傳感器是對溫度敏感的傳感器。它由陶瓷氧化物或壓電晶體元件組成,在元件兩個表面做成電極,在傳感器監(jiān)測范圍內(nèi)溫度有ΔT的變化時,熱釋電效應(yīng)會在兩個電極上會產(chǎn)生電荷ΔQ,即在兩電極之間產(chǎn)生一微弱的電壓ΔV。由于它的輸出阻抗極高,在傳感器中有一個場效應(yīng)管進行阻抗變換。熱釋電效應(yīng)所產(chǎn)生的電荷ΔQ會被空氣中的離子所結(jié)合而消失,即當(dāng)環(huán)境溫度穩(wěn)定不變時,ΔT=0,則傳感器無輸出。當(dāng)人體進入檢測區(qū),因人體溫度與環(huán)境溫度有差別,產(chǎn)生ΔT,則有ΔT輸出;若人體進入檢測區(qū)后不動,則溫度沒有變化,傳感器也沒有輸出了。所以這種傳感器檢測人體或者動物的活動傳感。 由實驗證明,傳感器不加光學(xué)透鏡(也稱菲涅爾透鏡),其檢測距離小于2m,而加上光學(xué)透鏡后,其檢測距離可大于7m。
2.3 BISS0001芯片介紹和典型電路
BISS0001是一款具有較高性能的傳感信號處理集成電路,它配以熱釋電紅外傳感器和少量外接元器件構(gòu)成被動式的熱釋電紅外開關(guān)。它能自動快速開啟各類白熾燈、熒光燈、蜂鳴器、自動門、電風(fēng)扇、烘干機和自動洗手池等裝置,特別適用于企業(yè)、賓館、商場、庫房及家庭的過道、走廊等敏感區(qū)域,或用于安全區(qū)域的自動燈光、照明和報警系統(tǒng)。它不僅能和熱釋電紅外傳感器的輸出良好地匹配,而且也能和其他多種傳感器進行匹配。它的內(nèi)部是由運算放大器、電壓比較器、與門電路、狀態(tài)控制器、定時控制器、鎖定時間控制器和禁止電路等組成。
BISS0001采用16腳標(biāo)準(zhǔn)型塑料封裝結(jié)構(gòu)。
1腳(A)為觸發(fā)方式控制端,當(dāng)A=1時,電路可重復(fù)觸發(fā);當(dāng)A=0時,電路不可重復(fù)觸發(fā)。
2腳(V0)為控制信號輸出端,當(dāng)有傳感信號輸人時,V0輸出高電平。
3腳(RX)和4腳(CX)為輸出定時控制器T,的外接元件端,定時時間為:TX=50×103RXCX。
5腳(Ri)和6腳Ci)為鎖定時間控制器Υi的外接元件,鎖定時間Ti=24RiCi。
7腳(VSS)為電源正端。
8腳(VRF)為參考電壓及復(fù)位端,使用時一般接VDD,若按ⅤSS,可使定時器復(fù)位。
9腳(Vc)為觸發(fā)禁止端,當(dāng)VC<VR時禁止觸發(fā);當(dāng)VC>VR時,允許觸發(fā),VR=0.2VDD.
10腳(IB)為偏置電流設(shè)置端,由外接電阻RB接ⅤSS端,RB一般取1MΩ的電阻。
11腳(VDD)為電源正、負(fù)端。
12腳(OUT2)為第二級運放的輸出端
13腳(IN2-)為第二級運放的反相輸人端。
14腳(IN1+)第一運放的同相輸入端。
15凈(IN1-)第一運放的反相輸入端。
16腳(OUT1)為第一運放的輸出端。
2.3.1 BISS0001的內(nèi)部結(jié)構(gòu)及特點
如圖2-3-1中,運算放大器OPl將熱釋電紅外傳感器的輸出信號作第一級放大,然后由C3耦合給運算放大器01:'2進行第二級放大,再經(jīng)由電壓比較器COPl和ODP2構(gòu)成的雙向鑒幅器處理后,檢出有效觸發(fā)信號VS去啟動延遲時間定時器,輸出信號VO經(jīng)晶體管T1放大驅(qū)動繼電器去接通負(fù)載。

圖2-3-1 熱釋紅外傳感器處理芯片


BISS0001的特點:
*CMOS工藝,公耗低
*數(shù)模混合
*具有獨立的高輸入阻抗運算放大器
*內(nèi)部的雙向鑒幅器可有效抑制干擾
*內(nèi)設(shè)延遲時間定時器和封鎖時間定時器
*采用16腳DIP封裝
* 內(nèi)置參考電源
    *工作電壓范圍寬(3V~5V)
2.3.2 BISS001管腳圖及管腳說明:

圖2-3-2 BISS001管腳圖

BISS001管腳說明:

表2-3-2  BISS0001管腳說明
引腳
名稱
I/O
功能說明
1
A
I
可重復(fù)觸發(fā)和不可重復(fù)觸發(fā)選擇端。當(dāng)A為“1”時,允許重復(fù)觸發(fā);反之,不可重復(fù)觸。
2

VO

O

控制信號輸出端。由VS的上跳變沿觸發(fā),使Vo輸出從低電平跳變到高電平時視為有效觸發(fā)。在輸出延遲時間Tx之外和無VS的上跳變時,Vo保持低電平狀態(tài)。
3
RR1
--
輸出延遲時間Tx的調(diào)節(jié)端
4
RC1
--
輸出延遲時間Tx的調(diào)節(jié)端
5
RC2
--
觸發(fā)封鎖時間Ti的調(diào)節(jié)端
6
RR2
--
觸發(fā)封鎖時間Ti的調(diào)節(jié)端
7
VSS
--
工作電源負(fù)端
8
VRF
I
參考電壓及復(fù)位輸入端。通常接VDD,當(dāng)接“0”時可使定時器復(fù)位
9
VC
I
觸發(fā)禁止端。當(dāng)Vc<VR時禁止觸發(fā);當(dāng)Vc>VR時允許觸發(fā)
10
IB
--
運算放大器偏置電流設(shè)置端
11
VDD
--
工作電源正端
12
2OUT
O
第二級運算放大器的輸出端
13
2IN-
I
第二級運算放大器的反相輸入端
14
1IN+
I
第一級運算放大器的同相輸入端
15
1IN-
I
第一級運算放大器的反相輸入端
16
1OUT
O
第一級運算放大器的輸出端

2.3.3 BISS0001工作原理
BISS0001是由運算放大器、電壓比較器、狀態(tài)控制器、延遲時間定時器以及封鎖時間定時器等構(gòu)成的數(shù);旌蠈S眉呻娐贰.(dāng)熱釋電紅外傳感器接收到人體紅外輻射后輸出檢測信號,然后由14腳輸入BISS0001,經(jīng)地內(nèi)部電路處理,由2腳輸出探測信號(正向脈沖信號)。輸出脈沖信號的寬度由外接電阻R9和電容C6來決定。當(dāng) 2腳輸出控制脈沖后,電子開關(guān)被接通,數(shù)字編碼電路和無線電發(fā)射電路由于得到電源而開始工作。電源變壓器為5W/15V,E為12V免維護蓄電池,供停電使用。S1為鎖控電源開關(guān),可根據(jù)需要安裝在適當(dāng)處所,用來接通工作電源,無必要時可取消設(shè)置。SCR采用1A的單向可控硅。HFC9301為軟封裝發(fā)聲電路,發(fā)聲為“嘀、嘀”聲。電路的調(diào)試主要是主機與各分機之間的統(tǒng)調(diào)。將發(fā)射電路和接收電路組裝好后,先將發(fā)射機中C10的調(diào)至適當(dāng)位置后固定不動,接著調(diào)整接收機中的C1,使接收機能收到發(fā)射機發(fā)出的信號。若為“一對多”或“多對一”報警系統(tǒng),應(yīng)先將主機“一”(可以是發(fā)射機,也可以是接收機 )調(diào)好固定,然后調(diào)整各分機,使其與主機統(tǒng)調(diào)。BISS0001 應(yīng)用線路圖如圖2-3-3-1所示。
圖2-3-3-1 BISS0001的熱釋電紅外開關(guān)應(yīng)用電路圖

上圖中,R3為光敏電阻,用來檢測環(huán)境照度。當(dāng)作為照明控制時,若環(huán)境較明亮,R3的電阻值會降低,使9腳的輸入保持為低電平,從而封鎖觸發(fā)信號Vs。SW1是工作方式選擇開關(guān),當(dāng)SW1與1端連通時,芯片處于可重復(fù)觸發(fā)工作方式;當(dāng)SW1與2端連通時,芯片則處于不可重復(fù)觸發(fā)工作方式。圖中R6可以調(diào)節(jié)放大器增益的大小,原廠圖紙選10K,實際使用時可以用3K,可以提高電路增益改善電路性能。輸出延遲時間TX由外部的R9和C7的大小調(diào)整,觸發(fā)封鎖時間Ti由外部的R10和C6的大小調(diào)整,R9/R10可以用470歐姆,C6/C7可以選0.1U。在BISS0001的內(nèi)電路中,運放A是一個獨立的放大器,由它放大后輸出的信號電壓通過.
    值得一提的是:本設(shè)計采用已封裝好的人體紅外檢測模塊,其基本原理與以上相同。模塊上有三個引腳,VCC接5V電源,GND接地,OUT接信號輸出,把信號引腳直接接到單片機INT0管腳,這可能會引起單片機的誤判斷,因為無人靠近時,信號輸出低電平,當(dāng)有人靠近時,輸出跳變?yōu)楦,而單片機外部中斷邊沿觸發(fā)的模式只能為下降沿,因此需要加入一個反向電路,即接入一個NPN型三極管,電路圖如2-3-3-2所示。

圖2-3-3-2 信號反向電路

   人體紅外模塊信號為低時,NPN三極管截止,輸出為高,當(dāng)有人靠近時,人體紅外模塊的信號為高,此時三極管導(dǎo)通,輸出被拉低,即輸出低電平。這能保證單片機中斷的及時響應(yīng),保證系統(tǒng)的順暢。
2.4 步進電機2.4.1 28BYJ48步進電機參數(shù)
步進電動機是純粹的數(shù)字控制電動機:它將電脈沖信號轉(zhuǎn)變成角位移。即給一個脈沖信號,步進電動機就轉(zhuǎn)動一個角度.因此作常適合于單片機控制。設(shè)計中所用到的28BYJ48步進電機,電氣性能如下所示:
* 額定電壓:12VDC(另有電壓:5V、6V、24V)
* 相數(shù):4
* 減速比:1/64(另有減速比:1/16、1/32)
* 步距角:5.625°/64
* 驅(qū)動方式:4相8拍
* 直流電阻:200Ω±7%(25℃)(按客戶要求而定:80、130歐姆)
* 空載牽入頻率:≥600Hz
* 空載牽出頻率:≥1000Hz
* 牽入轉(zhuǎn)矩:≥34.3mN.m(120Hz)
* 自定位轉(zhuǎn)矩:≥34.3mN.m
* 絕緣電阻:>10MΩ(500V)
* 絕緣介電強度:600VAC/1mA/1S
* 絕緣等級:A
* 溫升:<50K(120Hz)
* 噪音:<40dB(120Hz)
2.4.2 28BYJ48步進電機驅(qū)動方式
              該步進電機有兩種驅(qū)動方式,一種為一相勵磁,步進順序為:A-B-C-D-A,步距角為最小步距角的兩倍,即5.625°/64*2;另外一種稱為1-2相勵磁,步進順序為:A-AB-B-BC-C-CD-D-DA-A,步距角為5.625°/64。本設(shè)計用到第二種驅(qū)動方式,其分配順序如表2-4-2所示:

表2-4-2 步進電機驅(qū)動方式相序分配情況

只要按照分配順序,依次給該相高電平,電機就可以按照預(yù)定的方式旋轉(zhuǎn)。

2.4.3 步進電機驅(qū)動電路
ULN2003 是高耐壓、大電流復(fù)合晶體管陣列,由七個硅NPN 復(fù)合晶體管組成,最大輸出電流可達500mA,其內(nèi)部結(jié)構(gòu)如圖2-4-3-1所示:
圖2-4-3-1 ULN2003內(nèi)部電路

其中第八腳接地,第九腳接VCC,只要將單片機IO口接入第一至七腳,就可以對應(yīng)從第十至十六腳輸出較大電流的信號。由于本設(shè)計正用到的是四相電機,故只需要用到其中的四對接口即可,對應(yīng)的電路圖如圖2-4-3-2所示:

圖2-4-3-2 步進電機驅(qū)動電路接線方式


三. 系統(tǒng)軟件設(shè)計
1. 程序描述與設(shè)計思路
(1)程序描述
程序中主要用到的知識點有:單片機外部中斷、定時器、步進電機的驅(qū)動方式和角度計算、LED燈的點亮熄滅等。其中,外部中斷尤為重要,如果單純把人體紅外模塊的檢測信號通過普通IO口檢測,這將會產(chǎn)生有人接近自動門反應(yīng)遲鈍或夾人的嚴(yán)重后果。另外,計算步進電機走過的距離也是一個要點,需要精確計算才能確保電機在一個完成的開門或關(guān)門動作中剛好走過360°。  
(2)程序設(shè)計思路
人體紅外模塊一旦檢測到有人靠近,此時中斷觸發(fā),程序進入外部中斷0,執(zhí)行完整地一次開門信號,等待3秒后,程序跳出中斷服務(wù)程序,開始執(zhí)行關(guān)門函數(shù)。若在關(guān)門過程中,又有人靠近的中斷信號出現(xiàn),則關(guān)門程序被清除,再次執(zhí)行中斷服務(wù)程序,并從關(guān)門的位置重新開啟,如此循環(huán)。
2. 程序流程圖
(1)自動門控制主程序



圖3-1 自動門控制主程序流程圖
(2)LED燈開關(guān)門控制編碼
根據(jù)硬件接口,低電平0表示點亮LED燈,高電平1表示熄滅LED燈,15個LED燈的流動方式如表3-2-2所示:

表3-2-2  LED燈的流動方式編碼表

注:燈從中間向左右逐漸點亮表示開門,燈從左右向中間逐漸熄滅表示關(guān)門。

(3)步進電機正反轉(zhuǎn)編碼
根據(jù)硬件電路接法,當(dāng)該相高電平1時,所在線圈得電,電機轉(zhuǎn)動,步進電機轉(zhuǎn)動一個周期的順序編碼如表3-2-3所示:

表3-2-3 步進電機驅(qū)動順序編碼表

第一步
第二步
第三步
第四步
第五步
第六步
第七步
第八步
A相
1
1
0
0
0
0
0
1
B相
0
1
1
1
0
0
0
0
C相
0
0
0
1
1
1
0
0
D相
0
0
0
0
0
1
1
1
P0編碼
0x08
0x0c
0x04
0x06
0x02
0x03
0x01
0x09
    步進電機反轉(zhuǎn)則是將第八步變?yōu)榈谝徊,第七步變(yōu)榈诙,以此類推?/div>
3. 程序
具體程序見附錄。

四. 總結(jié)
在此次有關(guān)自動門的控制系統(tǒng)的設(shè)計,讓我感覺到了單片機的復(fù)雜深度性,它很貼切我們的日常生活,無所不在,應(yīng)用無處不有,它并不是想象中的那么簡單,也并非是無法克服的堡壘。
設(shè)計硬件之前,要首先收集好有關(guān)的基礎(chǔ)性資料,應(yīng)備有良好的應(yīng)用類參考書和專業(yè)類參考書。對于有關(guān)的科技期刊和專利文獻,也要經(jīng)常閱讀以便了解最新的發(fā)展情況,借鑒現(xiàn)成的經(jīng)驗,避免重復(fù)勞動。在設(shè)計中,要充分了解所用芯片的使用條件及輸入輸出的特性,這樣才能避免因使用錯誤而多走彎路。
電路設(shè)計部分應(yīng)該有的精神就是廣集資料。只憑借自己頭腦中的知識是遠遠不夠的。哪里出現(xiàn)了問題,就要翻書本,或上網(wǎng)查資料。當(dāng)然也要開動自己的腦筋怎樣使系統(tǒng)電路更完美。例如我的設(shè)計題目是基于單片機的自動門控制系統(tǒng)設(shè)計。有自動門,自然會用到電動機,每種電機都有不同的特性和功能,你就要進行選擇了。例如對電機的選擇,你就要選擇你所熟悉的,所了解的。
在電路設(shè)計時,應(yīng)充分發(fā)揮單片機的記憶運算、判斷控制能力,避免采用復(fù)雜的、穩(wěn)定性較差的模擬電路。
為了使微機控制系統(tǒng)各種硬件設(shè)備能夠正常運行,有效地實現(xiàn)電機各個控制環(huán)節(jié)的實時控制和管理,除了要設(shè)計合理的硬件電路,還必須要有高質(zhì)量的軟件支持,兩者相輔相成,共同維持系統(tǒng)的正常運作。
最后我非常感謝學(xué)校和老師給我們這么好的學(xué)習(xí)機會,讓我親身去體會一個項目開發(fā)的艱難性,第一次站在一個設(shè)計者的角度去看,體會到了他們的艱辛,同時我也感受到了老師對我們的付出,對我們的精心指導(dǎo),讓我順利完成這次學(xué)習(xí)任務(wù)。


七.附錄
1.原理圖
圖7-1 單片機控制自動門系統(tǒng)原理圖




單片機源程序如下:
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. bit flag;
  5. int j;                                                //控制電機關(guān)門變量
  6. int n;                                                //控制電機開門變量
  7. unsigned code table[]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};   //1-2相勵磁方式 最小步距角
  8. //unsigned code table[]={0x80,0x40,0x20,0x10};                                           //1相勵磁方式         最小步距角*2
  9.                                           //紅線接電源,只要其中一相為高電平,該相導(dǎo)通,動作兩拍,轉(zhuǎn)過兩個步距角
  10. unsigned code OPEN_P0[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01}; //LED燈
  11. unsigned code OPEN_P2[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; //LED燈

  12. void delay(unsigned int t);
  13. void Delay_1s(uint y);
  14. void int0init(void);
  15. void Motor_GO(void);
  16. void Motor_BACK(void);

  17. void delay(unsigned int t)
  18. {
  19.         while(t--);
  20. }

  21. void Delay_1s(uint y)                                 //延時1s
  22. {
  23.         uint a;
  24.         for(a=0;a<200*y;a++)                         //200為1s
  25.         {
  26.                 TH1=(65536-50000)/256;
  27.                 TL1=(65536-50000)%256;
  28.                 TR1=1;
  29.                 while(!TF1);
  30.                 TF1=0;
  31.         }
  32. }
  33. void int0init(void)                                 //外部中斷0初始化
  34. {        
  35.         EA=1;                                                   //打開總中斷
  36.          EX0=1;                                                   //中斷允許位
  37.         IT0=1;                                                   //外部中斷0觸發(fā)方式為下降沿觸發(fā)
  38. }

  39. void Motor_GO(void)                                 //電機正轉(zhuǎn)函數(shù),即開門
  40. {
  41.         uchar m;
  42.         while(n)         
  43.         {
  44.                 for(m=0;m<8;m++)
  45.                 {        
  46.                         n--;                          
  47.                         P1=table[m];
  48.                         if(n>2000)                        
  49.                         delay(280);                        //快速開門半圈
  50.                         if(n<=2000)
  51.                         delay(480);                        //慢速開門半圈
  52.                 }
  53.                 if((n<=4096)&(n>3800))        //LED燈提示
  54.                 {
  55.                         P0=OPEN_P0[0];
  56.                         P2=OPEN_P2[0];
  57.                 }
  58.                 if((n<=3800)&(n>3500))
  59.                 {
  60.                         P0=OPEN_P0[1];
  61.                         P2=OPEN_P2[1];
  62.                 }
  63.                 if((n<=3500)&(n>3200))
  64.                 {
  65.                         P0=OPEN_P0[2];
  66.                         P2=OPEN_P2[2];
  67.                 }
  68.                 if((n<=3200)&(n>2900))
  69.                 {
  70.                         P0=OPEN_P0[3];
  71.                         P2=OPEN_P2[3];
  72.                 }
  73.                 if((n<=2900)&(n>1950))
  74.                 {
  75.                         P0=OPEN_P0[4];
  76.                         P2=OPEN_P2[4];
  77.                 }
  78.                 if((n<=1950)&(n>1000))
  79.                 {
  80.                         P0=OPEN_P0[5];
  81.                         P2=OPEN_P2[5];
  82.                 }
  83.                 if((n<=1000)&(n>50))
  84.                 {
  85.                         P0=OPEN_P0[6];
  86.                         P2=OPEN_P2[6];
  87.                 }
  88.                 if((n<=50)&(n>=0))
  89.                 {
  90.                         P0=OPEN_P0[7];
  91.                         P2=OPEN_P2[7];                        
  92.                 }
  93.                
  94.                 if(n<0)
  95.                 {
  96.                         n=0;                                //跳出死循環(huán)
  97.                 }               
  98.         }
  99. }
  100. void Motor_BACK(void)                        //電機反轉(zhuǎn)函數(shù),即關(guān)門
  101. {
  102.         uchar i;
  103.         while(j)         
  104.         {        
  105.                 for(i=0;i<8;i++)
  106.                 {        
  107.                         j--;                                 
  108.                         P1=table[7-i];
  109.                         if(j>2000)                        
  110.                         delay(280);                        //快速關(guān)門半圈
  111.                         if(j<=2000)
  112.                         delay(480);                        //慢速關(guān)門半圈                        
  113.                 }
  114.                 if((j<=4096)&(j>3800))        //LED燈提示
  115.                 {
  116.                         P0=OPEN_P0[7];
  117.                         P2=OPEN_P2[7];
  118.                 }
  119.                 if((j<=3800)&(j>3500))
  120.                    {
  121.                         P0=OPEN_P0[6];
  122.                         P2=OPEN_P2[6];
  123.                 }
  124.                 if((j<=3500)&(j>3200))
  125.                 {
  126.                         P0=OPEN_P0[5];
  127.                         P2=OPEN_P2[5];
  128.                 }
  129.                 if((j<=3200)&(j>2900))
  130.                 {
  131.                         P0=OPEN_P0[4];
  132.                         P2=OPEN_P2[4];
  133.                 }
  134.                 if((j<=2900)&(j>1950))
  135.                 {
  136.                         P0=OPEN_P0[3];
  137.                         P2=OPEN_P2[3];
  138.                 }
  139.                 if((j<=1950)&(j>1000))
  140.                 {
  141.                         P0=OPEN_P0[2];
  142.                         P2=OPEN_P2[2];
  143.                 }
  144.                 if((j<=1000)&(j>50))
  145.                 {
  146.                         P0=OPEN_P0[1];
  147.                         P2=OPEN_P2[1];
  148.                 }
  149.                 if((j<=50)&(j>=0))
  150.                 {
  151.                         P0=OPEN_P0[0];
  152.                         P2=OPEN_P2[0];                                 
  153.                 }               
  154.                 if(j<0)                                   //跳出死循環(huán)
  155.                 {
  156.                         j=0;
  157.                 }
  158.         }
  159. }

  160. void main()
  161. {        
  162. ……………………

  163. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼


所有資料51hei提供下載:
基于單片機的自動門控制系統(tǒng).rar (549.71 KB, 下載次數(shù): 555)



作者: 十三々    時間: 2019-5-26 19:07
請問樓主可以分享一下詳細的元件清單嗎?方便準(zhǔn)備一下器件,還有可以分享一下實物圖圖片嗎?謝謝樓主

作者: 3119134879    時間: 2019-11-18 20:24
我什么時候才能怎么牛逼
作者: Suhnvv    時間: 2019-11-22 19:36
怎么沒有仿真圖?
作者: strelizia    時間: 2019-11-25 17:08
請問樓主可以分享一下詳細的元件清單嗎?方便準(zhǔn)備器件,實物圖有嗎?
作者: 喔喔喔哇哇哇    時間: 2019-12-11 18:33
有仿真圖嗎?

作者: wobu2y    時間: 2020-4-14 08:55
樓主有零件圖嗎?
作者: 陽雪    時間: 2020-5-16 09:10
謝謝樓主
作者: Cbing901    時間: 2020-6-21 20:36
正想找紅外探測
作者: xieyebao1995    時間: 2020-6-22 08:44
下載來學(xué)習(xí),謝謝
作者: 18834160110    時間: 2020-6-22 23:05
好想找到能記錄進出人數(shù)的自動門控制系統(tǒng)
作者: heyguys    時間: 2020-6-23 11:57
非常感謝 可以發(fā)一下仿真圖碼
作者: hechong233    時間: 2021-5-21 18:46
樓主有實物圖嗎 能發(fā)一下嗎 感謝

作者: 圣誕飛船    時間: 2022-1-1 13:57
我什么時候才能這么牛
作者: lazygoat    時間: 2022-2-12 22:50
這個挺實用的
作者: 朕來了    時間: 2022-3-24 14:02
大佬文檔實在不會寫了,借鑒一下你的程序去寫文檔
作者: 大佬起飛    時間: 2022-4-27 18:03
有完整的電路圖嗎
作者: 小白啊瑞    時間: 2022-5-25 18:38
amazing
作者: zyujun    時間: 2023-5-31 09:52
請問樓主用的是keil嗎?




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 极品一区 | 毛片毛片毛片毛片 | 亚洲精品久久久 | 国产亚洲人成a在线v网站 | 国外激情av | 国产精品久久久久久久久免费 | 日本不卡一区二区三区 | 在线一级片 | 欧美在线成人影院 | 国产精品久久久久久福利一牛影视 | 91污在线 | 久久精品国产免费 | 国产成人麻豆免费观看 | 91免费视频观看 | 天天综合成人网 | 午夜男人视频 | 亚洲美女天堂网 | 97福利在线| 国产综合av | 日韩欧美国产一区二区三区 | 成人在线视频免费播放 | 91麻豆精品国产91久久久久久久久 | 一a一片一级一片啪啪 | 国产精品久久久久久久久久久久 | 亚洲国产成人精品女人久久久 | 国产午夜精品一区二区三区四区 | 国产精品久久久久久一区二区三区 | 国产偷录叫床高潮录音 | 亚洲视频在线一区 | 日韩插插| 综合久久一区 | 久久久蜜臀国产一区二区 | 7777奇米影视 | 黄色操视频| 欧美一级二级三级视频 | 91免费在线看 | 日韩一区二区免费视频 | 精品欧美一区免费观看α√ | 国产美女在线观看 | 久久久久久综合 | 在线观看国产视频 |