基于單片機(jī)的智能垃圾桶的設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的智能垃圾桶的設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的智能垃圾桶的設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的智能垃圾桶的設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的智能垃圾桶的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

-PAGEI-上海建橋?qū)W院本科畢業(yè)設(shè)計(jì)(論文)-PAGE1-基于單片機(jī)的智能垃圾桶的設(shè)計(jì)摘要隨著社會(huì)經(jīng)濟(jì)的發(fā)展和科學(xué)的進(jìn)步,人們對(duì)于自身周圍的生活用品都有了一定的需求,而其中將物品賦予智能化的屬性便是近年來(lái)人們的需求之一。所以本次課題是對(duì)智能垃圾桶這一概念進(jìn)行研究和設(shè)計(jì),借助C語(yǔ)言程序代碼的編寫和硬件電路的支持,完成一個(gè)智能垃圾桶的構(gòu)造。本次課題設(shè)計(jì)是設(shè)計(jì)一個(gè)能自動(dòng)開關(guān)桶蓋,并且可以自動(dòng)檢測(cè)桶內(nèi)垃圾存量的智能垃圾桶。其中人體的檢測(cè)使用紅外傳感器進(jìn)行檢測(cè),紅外傳感器偵測(cè)到人體發(fā)出信號(hào),然后通過該傳感器獲得偵測(cè)(數(shù)字信號(hào))信號(hào),將該信號(hào)送入單片機(jī)系統(tǒng),信號(hào)經(jīng)過單片機(jī)內(nèi)的程序代碼處理,運(yùn)行步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)子程序,來(lái)進(jìn)行桶蓋的打開和關(guān)閉。而單片機(jī)內(nèi)程序代碼以及步進(jìn)電機(jī)子函數(shù)程序代碼的編寫均使用Keil5軟件進(jìn)行編寫。最后使用Protues8軟件來(lái)繪制仿真電路圖,并且進(jìn)行仿真測(cè)試。在測(cè)試成功之后,進(jìn)行實(shí)物的制作,制作出的垃圾桶可以根據(jù)桶前有無(wú)人來(lái)自行開關(guān)桶蓋,并且桶內(nèi)垃圾存量過多時(shí)會(huì)亮警示燈。在完成外殼的制作和組裝之后,最終完成了基于單片機(jī)的智能垃圾桶設(shè)計(jì)。關(guān)鍵詞:?jiǎn)纹瑱C(jī),紅外傳感器,步進(jìn)電機(jī)-PAGEIV-DesignofintelligentgarbagecanbasedonMCUAbstractWiththedevelopmentofsocietyandeconomyandtheprogressofscience,peoplehavecertainneedsfortheirsurroundingproducts,andoneoftheneedsinrecentyearsistogiveintelligentpropertiestotheproducts.Therefore,thisprojectistostudyanddesigntheconceptofintelligentgarbagecans,andtocompletetheconstructionofanintelligentgarbagecanwiththehelpofCprogrammingcodeandhardwarecircuitsupport.Thedesignofthisprojectistodesignasmartgarbagecanthatcanautomaticallyopenandclosethelidandautomaticallydetecttheamountofgarbageinthecan.Thehumanbodyisdetectedbyinfraredsensor,theinfraredsensordetectsthesignalfromthehumanbody,andthengetsthedetection(digitalsignal)signalthroughthesensor,andsendsthesignaltothemicrocontrollersystem,andthesignalisprocessedbytheprogramcodeinthemicrocontrollertorunthesteppermotorrotationsubroutinetoopenandclosethebucketlid.Themicrocontrollerprogramcodeandthesteppermotorsub-functionprogramcodearewrittenusingKeil5software.Finally,Protues8softwarewasusedtodrawthesimulationcircuitdiagramandperformthesimulationtest.Afterthesuccessfultest,theactualproductionwascarriedout.Thetrashcancanopenandclosethelidaccordingtothepresenceofnooneinfrontofit,andthewarninglightwillbeonwhenthereistoomuchtrashinit.Aftercompletingthefabricationandassemblyoftheshell,wefinallycompletedthedesignofthemicrocontroller-basedintelligentgarbagecan.KeyWords:MCU,Infraredsensor,Steppermotor目錄1緒論 11.1課題背景 11.2研究意義 11.3研究的主要內(nèi)容 11.4器件的選擇 21.5系統(tǒng)設(shè)計(jì)的總體思路 22智能垃圾桶總體方案 32.1智能垃圾桶設(shè)計(jì)要求 32.2電路設(shè)計(jì)方案對(duì)比 32.2.1設(shè)計(jì)方案1 32.2.2設(shè)計(jì)方案2 32.2.3設(shè)計(jì)方案3 42.3確定電路設(shè)計(jì)方案 53硬件部分設(shè)計(jì) 63.1總體設(shè)計(jì) 63.2傳感器模塊的選擇 63.2.1紅外傳感器模塊的組成 63.2.2紅外傳感器模塊的工作原理 73.3步進(jìn)電機(jī)電路 83.3.1步進(jìn)電機(jī)電路模塊的構(gòu)成 83.3.2步進(jìn)電機(jī)電路工作原理 93.4電路保護(hù)模塊 103.5STC12C5A60S2單片機(jī) 113.5.1晶振電路和復(fù)位電路 113.6電源供電模塊 123.7LED顯示報(bào)警模塊 133.8總電路圖 144軟件部分設(shè)計(jì) 154.1主程序框圖 154.2具體代碼分析 154.2.1單片機(jī)I/O口設(shè)置 154.2.2紅外線檢測(cè)模塊標(biāo)志位和延時(shí)檢測(cè)的編寫 164.2.3引入變量防止單片機(jī)錯(cuò)誤判斷不停調(diào)用正轉(zhuǎn)函數(shù)的代碼編寫 174.2.4步進(jìn)電機(jī)轉(zhuǎn)動(dòng)程序代碼編寫 184.3程序代碼編寫中遇到的問題 205Proteus仿真 225.1Proteus軟件介紹 225.2仿真電路圖 225.3仿真結(jié)果調(diào)試 235.3.1電路連接檢查以及代碼下載 235.3.2模擬實(shí)物調(diào)試 235.3.3仿真中出現(xiàn)的問題 266實(shí)物測(cè)試結(jié)果 276.1實(shí)物圖 276.2焊接過程 286.3調(diào)試過程 306.4調(diào)試中遇到的問題 336.4.1程序代碼問題 336.4.2低壓差線性穩(wěn)壓電路問題 336.4.3PCB走線問題 33結(jié)論 34參考文獻(xiàn) 35附錄1程序代碼 36致謝 46·1··PAGE15·PAGE11緒論1.1課題背景隨著當(dāng)今科技發(fā)展的越來(lái)越好,人們對(duì)于將日常所使用的物件智能化的需求也正在逐步上升。而與此同時(shí),在一些公共場(chǎng)所和家庭環(huán)境中,垃圾的收集和儲(chǔ)存也已經(jīng)變成了一個(gè)不容忽視的問題??v觀近幾年在新聞報(bào)道上的頻頻出現(xiàn)的食品安全問題,多半集中在一些餐廳的后廚房,而后廚房的主要問題集中在垃圾桶內(nèi)的垃圾未及時(shí)清運(yùn)從而滋生蟲蠅從而導(dǎo)致環(huán)境臟亂差。其次,在家庭環(huán)境中,人們希望自己的垃圾桶可以不需要特意去打開蓋子就能知曉垃圾桶內(nèi)的垃圾到底有多少,有沒有多到需要去傾倒。此外,人們還希望能擁有一個(gè)不需要踩踏就可以自動(dòng)開啟和閉合的垃圾桶,干凈、省心且智能。1.2研究意義隨著社會(huì)經(jīng)濟(jì)的發(fā)展和人們對(duì)于垃圾和衛(wèi)生問題的逐漸重視,垃圾桶的智能化是已經(jīng)提上議程的一個(gè)項(xiàng)目。在科技快速發(fā)展的現(xiàn)在,紅外傳感器已經(jīng)從幾年以前的只用于一些比較大型的安防系統(tǒng)或者小區(qū)系統(tǒng)中,轉(zhuǎn)變?yōu)榱爽F(xiàn)在只需要一個(gè)芯片和一個(gè)電阻就可以控制探測(cè)距離的小型紅外模塊了。因此,本次我的課題就是在基于單片機(jī)的基礎(chǔ)上,借助紅外傳感器和步進(jìn)電機(jī)設(shè)計(jì)了一個(gè)智能垃圾桶。在編程代碼的輔助下,當(dāng)一個(gè)人在垃圾桶面前站立一小段時(shí)間后,垃圾桶桶蓋將通過電機(jī)打開。當(dāng)人倒完垃圾之后,無(wú)需任何操作,桶蓋將通過電機(jī)反轉(zhuǎn)自動(dòng)閉合。與此同時(shí),垃圾桶將持續(xù)檢測(cè)桶內(nèi)垃圾存量,當(dāng)垃圾存量到達(dá)一個(gè)閾值時(shí),點(diǎn)亮垃圾桶外的LED燈進(jìn)行提示,從而提醒路過的人或者清潔工將垃圾桶內(nèi)的垃圾進(jìn)行傾倒,達(dá)到不需要開蓋就能知曉桶內(nèi)垃圾量的便捷功能。這個(gè)垃圾桶將解決目前家庭環(huán)境中,用戶對(duì)于垃圾桶的智能化的大部分需求。而對(duì)于公共環(huán)境,它將解決垃圾不能及時(shí)被運(yùn)走從而發(fā)酵散發(fā)出味道和成為果蠅的巢穴的問題,同時(shí),針對(duì)后廚的環(huán)境,它也能解決員工暴力踩踏踏板,導(dǎo)致邊沿的臟水或者廚余附著在桶蓋上,直接飛出垃圾桶,濺在其他地方的問題,從而解決一部分后廚的環(huán)境衛(wèi)生問題。1.3研究的主要內(nèi)容(1)了解單片機(jī)STC12C5A60S2和五線四相步進(jìn)電機(jī)的工作原理;(2)學(xué)習(xí)立創(chuàng)EDA的用法,完成基礎(chǔ)電路圖的繪制(3)選擇合適的傳感器元件,在實(shí)現(xiàn)課題對(duì)應(yīng)功能的同時(shí)兼顧最后電路板的美觀;(4)完成由單片機(jī)、步進(jìn)電機(jī)、紅外傳感器、LED燈所組成的系統(tǒng)(5)學(xué)習(xí)Keil5編程軟件使用方法,完成程序代碼的編寫,達(dá)到預(yù)期效果(6)學(xué)習(xí)Proteus的用法,完成電路圖的繪制和成功進(jìn)行仿真1.4器件的選擇芯片選用STC12C5A60S2,其優(yōu)點(diǎn)是相對(duì)于51單片機(jī)來(lái)說,它的P0.0口到P0.3口不需要上拉電阻就可以進(jìn)行使用。電機(jī)選用ULN2003A步進(jìn)電機(jī)驅(qū)動(dòng)板和五線八相步進(jìn)電機(jī),它是目前市面上應(yīng)用比較廣泛的步進(jìn)電機(jī)驅(qū)動(dòng)板。人體檢測(cè)和垃圾桶內(nèi)垃圾存量檢測(cè)選用LM339四路電路比較器、LM393二路電路比較器和紅外對(duì)管裝置。1.5系統(tǒng)設(shè)計(jì)的總體思路首先垃圾桶外的紅外傳感器一直進(jìn)行檢測(cè),在檢測(cè)到有人之后,會(huì)持續(xù)發(fā)出數(shù)字信號(hào),然后將該持續(xù)數(shù)字信號(hào)送入單片機(jī)電路。單片機(jī)通過內(nèi)部的程序代碼,在初次收到該信號(hào)時(shí),運(yùn)行一個(gè)延時(shí)子程序,而后再次進(jìn)行檢測(cè)該持續(xù)信號(hào)是否還在發(fā)出,此步驟是為了防止有人走動(dòng)經(jīng)過垃圾桶誤觸發(fā)了步進(jìn)電機(jī)轉(zhuǎn)動(dòng)。在二次確認(rèn)該持續(xù)數(shù)字信號(hào)存在后,運(yùn)行步進(jìn)電機(jī)正轉(zhuǎn)程序,同時(shí)單片機(jī)輸出一個(gè)數(shù)字信號(hào)給桶外綠色LED燈,使其發(fā)亮,代表步進(jìn)電機(jī)正轉(zhuǎn)程序運(yùn)行正常。在紅外傳感器檢測(cè)不到人之后,數(shù)字信號(hào)會(huì)暫停輸入給單片機(jī),此時(shí)單片機(jī)在初次檢測(cè)不到數(shù)字信號(hào)輸入時(shí),同樣運(yùn)行一個(gè)延時(shí)子程序,而后再次進(jìn)行檢測(cè),此步驟是為了防止有人在倒垃圾過程中不小心脫離紅外傳感器檢測(cè)區(qū)域,或者在第一個(gè)人倒完垃圾后還有人接著繼續(xù)倒垃圾。如果此時(shí)還是沒有數(shù)字信號(hào)輸入,那么就運(yùn)行步進(jìn)電機(jī)反轉(zhuǎn)程序,同時(shí)單片機(jī)輸出一個(gè)數(shù)字信號(hào)給桶外黃色LED燈,使其發(fā)亮,代表步進(jìn)電機(jī)反轉(zhuǎn)程序運(yùn)行正常。在垃圾桶外紅外傳感器一直進(jìn)行檢測(cè)的同時(shí),桶內(nèi)紅外傳感器也一直進(jìn)行檢測(cè)。在當(dāng)桶內(nèi)紅外傳感器檢測(cè)到垃圾時(shí),發(fā)出一個(gè)持續(xù)的數(shù)字信號(hào)給單片機(jī)。單片機(jī)在接收到此數(shù)字信號(hào)后,通過軟件代碼判斷是否桶內(nèi)所有的紅外傳感器都輸出了數(shù)字信號(hào),如果都輸出了數(shù)字信號(hào),那么運(yùn)行一個(gè)延時(shí)子程序,而后再次檢測(cè)數(shù)字信號(hào)是否還在持續(xù),此步驟是為了防止垃圾桶單邊聚集垃圾導(dǎo)致錯(cuò)誤判斷以及在倒垃圾的過程中誤觸發(fā)存量判斷的情況發(fā)生。

2智能垃圾桶總體方案2.1智能垃圾桶設(shè)計(jì)要求設(shè)計(jì)的智能垃圾桶應(yīng)具有如下特點(diǎn):(1)該設(shè)計(jì)以STC12C5A60S2為控制核心,加上各種外圍電路,如:紅外傳感器、步進(jìn)電機(jī)驅(qū)動(dòng)模塊,燈光報(bào)警等。(2)該方案需要具備成本價(jià)格低,外殼輕便,設(shè)計(jì)簡(jiǎn)單的特點(diǎn)。(3)軟件設(shè)計(jì)代碼簡(jiǎn)單易懂。2.2電路設(shè)計(jì)方案對(duì)比本設(shè)計(jì)的主體是以STC12C5A60S2單片機(jī)為基礎(chǔ),加上紅外傳感器以及電機(jī)等模塊構(gòu)成了了總體,但是在設(shè)計(jì)的初期,總共有三種方案可供選擇:2.2.1設(shè)計(jì)方案1采用STC12C5A60S2單片機(jī)作為核心,選用紅外傳感器模塊、步進(jìn)電機(jī)模塊和限位器裝置搭建完整的智能垃圾桶系統(tǒng)。該方案的好處是代碼編程極其簡(jiǎn)單,無(wú)需用到任何的子函數(shù)和循環(huán)語(yǔ)句,只需要寫出當(dāng)有信號(hào)輸入或者消失時(shí),電機(jī)正轉(zhuǎn)或者反轉(zhuǎn)。步進(jìn)電機(jī)在有人在桶前時(shí),調(diào)用正轉(zhuǎn)函數(shù)進(jìn)行正轉(zhuǎn);在桶前偵測(cè)不到信號(hào)的時(shí)候,調(diào)用反轉(zhuǎn)函數(shù)進(jìn)行反轉(zhuǎn)。而當(dāng)一個(gè)人離開另外一個(gè)人接著倒垃圾的情況發(fā)生時(shí),單片機(jī)雖然會(huì)調(diào)用正轉(zhuǎn)函數(shù)發(fā)出數(shù)字信號(hào)讓步進(jìn)電機(jī)進(jìn)行正轉(zhuǎn),但是步進(jìn)電機(jī)的兩端有限位器的存在。限位器的原理是在器件的上方存在一個(gè)彈性開關(guān),當(dāng)開關(guān)被按下時(shí)就發(fā)出信號(hào),使得正在進(jìn)行的程序直接終止,從而達(dá)到限制器件位置的作用。限位器的存在會(huì)使得正轉(zhuǎn)函數(shù)直接被終止,從而不會(huì)造成電機(jī)重復(fù)轉(zhuǎn)動(dòng)的錯(cuò)誤。而單片機(jī)調(diào)用反轉(zhuǎn)函數(shù)之前,會(huì)先進(jìn)行一個(gè)持續(xù)三秒的判斷,在確認(rèn)了無(wú)信號(hào)之后才會(huì)調(diào)用反轉(zhuǎn)函數(shù)讓步進(jìn)電機(jī)進(jìn)行反轉(zhuǎn),從而避免了要是出現(xiàn)接連倒垃圾的情況時(shí),步進(jìn)電機(jī)轉(zhuǎn)動(dòng)混亂的情況。2.2.2設(shè)計(jì)方案2此方案相比方案1來(lái)說,總體不變,仍是采用STC12C5A60S2單片機(jī)作為核心,選用紅外傳感器模塊,步進(jìn)電機(jī)模塊來(lái)進(jìn)行搭建智能垃圾桶系統(tǒng)。該方案的好處是優(yōu)化了硬件電路部分的器件,通過在代碼中,設(shè)置標(biāo)志位的形式,將步進(jìn)電機(jī)的完成正轉(zhuǎn)和未完成反轉(zhuǎn)的工作狀態(tài)通過不同標(biāo)志位的標(biāo)志置0或者置1的方式來(lái)配合單片機(jī)的代碼進(jìn)行判斷,從而達(dá)到阻止步進(jìn)電機(jī)在未反轉(zhuǎn)前就再次進(jìn)行正轉(zhuǎn)的錯(cuò)誤情況發(fā)生,成功地將限位器這一硬件在電路中的作用變成了通過代碼來(lái)進(jìn)行判斷。在紅外傳感器偵測(cè)到人體之后,向單片機(jī)發(fā)出數(shù)字信號(hào)之后,單片機(jī)通過代碼進(jìn)行持續(xù)三秒的判斷,將電機(jī)正轉(zhuǎn)標(biāo)志位置1的同時(shí),調(diào)用步進(jìn)電機(jī)正轉(zhuǎn)函數(shù),使得步進(jìn)電機(jī)正轉(zhuǎn)。在正轉(zhuǎn)之后,通過代碼進(jìn)行循環(huán)判斷,如果電機(jī)正轉(zhuǎn)標(biāo)志位一直置1,那么單片機(jī)不會(huì)再次調(diào)用正轉(zhuǎn)函數(shù)。在紅外傳感器信號(hào)消失之后,同樣進(jìn)行一個(gè)持續(xù)三秒的循環(huán)判斷,如果信號(hào)仍然沒有,那么單片機(jī)會(huì)調(diào)用反轉(zhuǎn)函數(shù),給步進(jìn)電機(jī)驅(qū)動(dòng)板發(fā)出數(shù)字信號(hào),讓步進(jìn)電機(jī)反轉(zhuǎn),同時(shí)將正轉(zhuǎn)標(biāo)志位置0,使得單片機(jī)可以重新調(diào)用正轉(zhuǎn)函數(shù)使步進(jìn)電機(jī)正轉(zhuǎn)。2.2.3設(shè)計(jì)方案3此方案同樣選用STC12C5A60S2單片機(jī)作為核心,選用紅外傳感器模塊,H橋驅(qū)動(dòng)電路,直流電機(jī)來(lái)搭建完整的智能垃圾桶系統(tǒng)。該方案相比于前一個(gè)方案,程序代碼主體思想不變,唯一變化的就是步進(jìn)電機(jī)的正轉(zhuǎn)和反轉(zhuǎn)程序需要改為H橋控制直流電機(jī)驅(qū)動(dòng)程序。該方案的好處在于使用直流電機(jī)替代了步進(jìn)電機(jī),直流電機(jī)相比于步進(jìn)電機(jī)來(lái)說,雖然精確度沒有步進(jìn)電機(jī)那么精確,但是在變速運(yùn)動(dòng)控制和閉環(huán)伺服控制系統(tǒng)中,直流電機(jī)長(zhǎng)期以來(lái)以其良好的線性特性、優(yōu)異的控制性能等特點(diǎn)一直在其中占據(jù)著統(tǒng)治地位[1],且步進(jìn)電機(jī)需要大電流來(lái)驅(qū)動(dòng)其運(yùn)行,而直流電機(jī)只需要兩個(gè)MOS管導(dǎo)通電流就可以運(yùn)作。H橋驅(qū)動(dòng)電路是由四個(gè)三極管所組成的電路,正中間擺放直流電機(jī),因?yàn)槠渫庑皖愃朴谟⑽淖帜浮癏”所以叫做H橋驅(qū)動(dòng)電路。其電路圖如圖3.1所示,如果要使電機(jī)正轉(zhuǎn),那么只需要電流從電源正極從Q1然后經(jīng)過Q4回到電源負(fù)極,就可以順時(shí)針進(jìn)行轉(zhuǎn)動(dòng);電機(jī)反轉(zhuǎn)則是需要電流從電源正極流經(jīng)Q3然后經(jīng)過Q2回到電源負(fù)極,就可以逆時(shí)針轉(zhuǎn)動(dòng)。程序代碼只要針對(duì)步進(jìn)電機(jī)的部分進(jìn)行改動(dòng),就可以直接套用在此項(xiàng)方案上。圖2.1H橋驅(qū)動(dòng)電路模塊2.3確定電路設(shè)計(jì)方案在綜合了課題設(shè)計(jì)要求之后,我選擇了方案2。因?yàn)榉桨?雖然從代碼層面上來(lái)說是最簡(jiǎn)單的一種設(shè)計(jì),但是限位器的添加增加了總體硬件的成本,且由于代碼的過于簡(jiǎn)單,會(huì)導(dǎo)致步進(jìn)電機(jī)一直處于啟動(dòng)的狀態(tài),雖然有限位器阻止代碼的繼續(xù)運(yùn)行,但是電機(jī)在部分情況下仍會(huì)不停的啟動(dòng),從而導(dǎo)致硬件損壞的幾率相比于其他兩個(gè)方案大幅度上升,雖然符合設(shè)計(jì)要求最開始的代碼簡(jiǎn)單和成本較低,但是長(zhǎng)遠(yuǎn)來(lái)看,其維護(hù)成本遠(yuǎn)遠(yuǎn)不符合設(shè)計(jì)的初衷。而方案3雖然代碼層面上避免了使用限位器和電機(jī)無(wú)故啟動(dòng)的磨損,但是因?yàn)槭褂昧薍橋和直流電機(jī),所以導(dǎo)致了PCB板的體積會(huì)相比于其他兩個(gè)方案增大許多,而相對(duì)應(yīng)的垃圾桶底部的存放單片機(jī)的空間也需要增大,同時(shí)因?yàn)槭褂昧酥绷麟姍C(jī),所以再代碼上需要使用PWM來(lái)控制直流電機(jī)的轉(zhuǎn)速,同時(shí)外殼還需要再搭配一個(gè)簡(jiǎn)易的變速箱來(lái)協(xié)同控制直流電機(jī),而這并不符合課題設(shè)計(jì)要求當(dāng)中的代碼較簡(jiǎn)單,成本價(jià)格較低,外殼較輕便這三個(gè)要求。綜上所述,在三個(gè)方案中,方案2選用了步進(jìn)電機(jī)作為驅(qū)動(dòng),代碼的設(shè)計(jì)較為簡(jiǎn)單,且不需要額外搭配外設(shè)來(lái)協(xié)同控制,滿足了外殼的設(shè)計(jì)簡(jiǎn)單和輕便以及成本低廉。

3硬件部分設(shè)計(jì)3.1總體設(shè)計(jì)本次課題采用閉環(huán)控制系統(tǒng),閉環(huán)控制又稱為反饋控制,指控制器與控制對(duì)象之間既有順向作用又有反向聯(lián)系的控制過程[2]。閉環(huán)控制系統(tǒng)的抗干擾性好,工程上絕大部分的控制系統(tǒng)為閉環(huán)控制系統(tǒng)。在控制垃圾桶桶蓋自動(dòng)開合的過程中,所用到的就是閉環(huán)控制系統(tǒng)的一種。紅外傳感器模塊是這個(gè)系統(tǒng)中的控制裝置,步進(jìn)電機(jī)則是受控對(duì)象,形成了一個(gè)最簡(jiǎn)單的閉環(huán)控制系統(tǒng)。由于考慮到該課題是利用紅外傳感器獲得人體感應(yīng)信號(hào)(數(shù)字信號(hào)),所以直接將數(shù)字信號(hào)送進(jìn)單片機(jī),通過單片機(jī)代碼的處理來(lái)得知是否有人倒垃圾,桶內(nèi)垃圾存量是否到達(dá)預(yù)警值,而后輸出數(shù)字信號(hào)啟動(dòng)步進(jìn)電機(jī)或者啟動(dòng)LED報(bào)警燈??傮w框圖如圖所示:圖3.1系統(tǒng)程序總體框圖3.2傳感器模塊的選擇3.2.1紅外傳感器模塊的組成本實(shí)驗(yàn)需要直接測(cè)量人體是否站在桶外紅外可識(shí)別區(qū)域內(nèi),以及垃圾桶桶內(nèi)垃圾存量是否達(dá)到報(bào)警的閾值,而紅外線不受周圍可見光的影響,可晝夜進(jìn)行測(cè)量不受干擾[3]。所以選擇了紅外傳感器模塊。紅外傳感器模塊如圖3.2所示是由可變電阻,上拉電阻,旁路電容,紅外線發(fā)射管,紅外線接收管,電路比較器芯片構(gòu)成。圖3.2四路紅外傳感器模塊電路圖3.2.2紅外傳感器模塊的工作原理首先圖中向下的LED管代表紅外線發(fā)射管,它持續(xù)發(fā)出信號(hào),當(dāng)前方?jīng)]有物體時(shí),紅外線不會(huì)反射。向上的LED管代表紅外線接收管,它的內(nèi)部是一個(gè)光敏二極管,但是只接收紅外光。沒有紅外光的情況下,光敏二極管不導(dǎo)通;在有紅外光照射的情況下,光敏二極管導(dǎo)通形成光電流,且在一定的范圍內(nèi),它輸出的電流隨著紅外光照射的強(qiáng)度的增大而增大。其次,本次課題中用到的電路比較器芯片有兩種,第一種是LM339,它是一個(gè)四路電壓比較器,總共有14個(gè)引腳,采用DIP14封裝。它的內(nèi)部是四個(gè)獨(dú)立的電壓比較器。第二種是LM393,它是一個(gè)二路電壓比較器,總共有8個(gè)引腳,采用DIP8封裝,內(nèi)部有兩個(gè)獨(dú)立的電壓比較器。每個(gè)電壓比較器有兩個(gè)輸入端和一個(gè)輸出端。當(dāng)同向輸入端電壓高于反向輸入端時(shí),輸出管截止;當(dāng)同向輸入端電壓低于反向輸入端時(shí),輸出管導(dǎo)通,相當(dāng)于接低電位。圖中的可調(diào)電阻在連接VCC后,接在反向輸入端上,作為可調(diào)的參考電壓。在紅外傳感器模塊工作時(shí),因?yàn)椴煌木嚯x的紅外反射得到的光電流不同,從而正向輸入端上存在的電壓也不同。而紅外傳感器模塊的原理就是通過兩端電壓的比較,從而輸出高電平或者低電平的數(shù)字信號(hào)給單片機(jī),單片機(jī)通過代碼來(lái)進(jìn)行下一步的功能的執(zhí)行??梢酝ㄟ^調(diào)節(jié)這個(gè)電阻的阻值來(lái)達(dá)到調(diào)節(jié)人體探測(cè)響應(yīng)距離的功能。這個(gè)電路工作時(shí),首先紅外線發(fā)射管持續(xù)發(fā)出紅外信號(hào),紅外信號(hào)會(huì)隨著距離發(fā)射源的長(zhǎng)度的增加而衰減。如果遇到了障礙物,那么就會(huì)形成紅外反射。在紅外反射形成之后,紅外線接收管接收到紅外線之后,生成光電流。電路比較器的正向輸入端從原來(lái)無(wú)人經(jīng)過時(shí),無(wú)光電流經(jīng)過的0V,變成有人經(jīng)過時(shí),通過紅外反射生成的光電流和電壓。而通過調(diào)節(jié)可變電阻,在最開始偵測(cè)到有人靠近時(shí),正向輸入端的電壓不會(huì)超過提前設(shè)置好的反向輸入端的電壓。而在人體逐漸靠近的過程中,紅外發(fā)射的信號(hào)逐漸增強(qiáng),光電流逐漸增加,從而導(dǎo)致正向輸入端電壓超過反向輸入端電壓,電路比較器輸出高電平信號(hào)給單片機(jī),單片機(jī)就可以根據(jù)此數(shù)字信號(hào)進(jìn)行下一步的代碼運(yùn)行。3.3步進(jìn)電機(jī)電路圖3.3步進(jìn)電機(jī)驅(qū)動(dòng)模塊電路圖3.3.1步進(jìn)電機(jī)電路模塊的構(gòu)成步進(jìn)電機(jī)是根據(jù)電磁原理制作而成,通過脈沖控制的一種執(zhí)行裝置[4],是一種能夠把數(shù)字信號(hào)轉(zhuǎn)變成執(zhí)行機(jī)構(gòu)、線位移或者角位移的電機(jī),本質(zhì)上是一種單相或者多相同步電機(jī)[5],屬于數(shù)控電機(jī)中的一種,不僅結(jié)構(gòu)上比其他電機(jī)簡(jiǎn)單,功能也比較穩(wěn)定,具有反應(yīng)靈敏、精度高、無(wú)積累誤差的特點(diǎn),在追求控制精度高和控制效果好的場(chǎng)合得到廣泛地應(yīng)用[6-8]。其控制的核心中樞是步進(jìn)電機(jī)的電機(jī)控制驅(qū)動(dòng)器[9]。又因?yàn)閱纹瑱C(jī)的輸出電流過小,無(wú)法使步進(jìn)電機(jī)正常運(yùn)轉(zhuǎn),所以需要通過外接一個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)板來(lái)使步進(jìn)電機(jī)正常運(yùn)轉(zhuǎn)。在本次課題中我選擇ULN2003A作為步進(jìn)電機(jī)的驅(qū)動(dòng)板芯片來(lái)使用。ULN2003是一種高耐壓、大電流的達(dá)林頓陳列,由七個(gè)NPN達(dá)林頓管組成,每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻[10]。它擁有16個(gè)引腳,封裝為DIP16。當(dāng)輸入端輸入高電平時(shí),它的輸出端輸出低電平;當(dāng)輸入端輸入低電平時(shí),它的輸出端輸出高電平。而且由于它集電極開路輸出的特性,所以決定了必須將它的COM引腳(Pin9)接在供電電源上,只有這樣做,這個(gè)芯片才會(huì)形成正常的續(xù)流回路。3.3.2步進(jìn)電機(jī)電路工作原理步進(jìn)電機(jī)分為二相步進(jìn)電機(jī),四相步進(jìn)電機(jī),八相步進(jìn)電機(jī)三種。不同相的步進(jìn)電機(jī)的區(qū)別是它們的扭矩和所需要的單片機(jī)輸出信號(hào)的I/O口數(shù)量的不同。給步進(jìn)電機(jī)的各相繞組按照一定時(shí)序通電,步進(jìn)電機(jī)就會(huì)運(yùn)動(dòng)起來(lái)[11],而又因?yàn)椴竭M(jìn)電機(jī)的運(yùn)動(dòng)形式是依靠步進(jìn)方式來(lái)進(jìn)行的[12]。如要驅(qū)動(dòng)二相步進(jìn)電機(jī),則單片機(jī)的代碼需按照a→b→a→b的循環(huán)來(lái)輸出相對(duì)應(yīng)I/O口的低電平編寫正轉(zhuǎn)函數(shù);反轉(zhuǎn)函數(shù)代碼則按照b→a→b→a的循環(huán)來(lái)輸出相對(duì)應(yīng)的I/O口的低電平進(jìn)行編寫。同理,驅(qū)動(dòng)四相步進(jìn)電機(jī)的單片機(jī)的代碼需按照a→b→c→d→a的循環(huán)來(lái)輸出相對(duì)應(yīng)的I/O口的低電平信號(hào)進(jìn)行正轉(zhuǎn)函數(shù)的編寫;反轉(zhuǎn)函數(shù)的代碼則按照d→c→b→a→d的循環(huán)來(lái)輸出相對(duì)應(yīng)的I/O口的低電平進(jìn)行編寫。而驅(qū)動(dòng)八相步進(jìn)電機(jī)的單片機(jī)的代碼則不同于前面兩種,單片機(jī)的代碼需按照a→ab→b→bc→c→cd→d→da的循環(huán)來(lái)輸出相對(duì)應(yīng)的I/O口的低電平進(jìn)行正轉(zhuǎn)函數(shù)的編寫;反轉(zhuǎn)函數(shù)則按照d→dc→c→cb→b→ba→a→ad的循環(huán)來(lái)輸出相對(duì)應(yīng)的I/O口的低電平來(lái)進(jìn)行編寫。在單片機(jī)輸出低電平的數(shù)字信號(hào)之后,數(shù)字信號(hào)會(huì)經(jīng)過ULN20003A芯片進(jìn)行電流的放大,達(dá)到能驅(qū)動(dòng)步進(jìn)電機(jī)的電流。通過循環(huán)For函數(shù)構(gòu)建一個(gè)延時(shí)子程序,來(lái)控制單片機(jī)給每一個(gè)輸出口賦值之后,經(jīng)過一定的毫秒之后再繼續(xù)進(jìn)行下一個(gè)賦值,以及通過循環(huán)函數(shù)本身來(lái)控制這個(gè)單片機(jī)循環(huán)賦值的時(shí)間長(zhǎng)短。如果延時(shí)子程序的延時(shí)過短,則會(huì)出現(xiàn)步進(jìn)電機(jī)無(wú)法響應(yīng)單片機(jī)賦值輸出信號(hào),從而導(dǎo)致流過芯片的電流短時(shí)間增加,芯片燒毀。而如果隨意的設(shè)置循環(huán)函數(shù)讓單片機(jī)輸出數(shù)字信號(hào)驅(qū)動(dòng)步進(jìn)電機(jī),則會(huì)出現(xiàn)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)角度過大不符合預(yù)期,或者無(wú)法達(dá)到驅(qū)動(dòng)其他裝置的位置等等問題,這些問題需要等到軟硬件聯(lián)調(diào)時(shí),進(jìn)行詳細(xì)的檢查和解決。3.4電路保護(hù)模塊圖3.4電路保護(hù)模塊電路圖電路保護(hù)模塊又稱為電流采樣模塊,過流保護(hù)的基礎(chǔ)在于對(duì)輸出電流的實(shí)時(shí)在線精確檢測(cè)[13]。如圖所示,此模塊中用到了SGM8634運(yùn)算放大器芯片,在實(shí)際使用中,上方的SGM8634電路被設(shè)計(jì)為當(dāng)前電路的跟隨電壓,又因?yàn)閱纹瑱C(jī)的工作電壓是5V,所以輸入5V之后,通過上方的分壓電路產(chǎn)生2.5V固定電壓,而下方的SGM8634電路構(gòu)成了一路差分放大電路,放大的倍數(shù)通過計(jì)算R5/(R3+R4)可得到,是16.5倍。當(dāng)電路正常工作時(shí),單片機(jī)的輸入電壓為5V以下,下方運(yùn)放的輸出為5V以下。而在步進(jìn)電機(jī)工作異常時(shí),例如桶蓋上有重物無(wú)法打開,或者齒輪有異物無(wú)法正常轉(zhuǎn)動(dòng)時(shí),經(jīng)過ULN2003A的電流短時(shí)間會(huì)瞬間增加,則差分放大電路的輸出會(huì)大于5V,單片機(jī)檢測(cè)到5V以上電壓進(jìn)行斷電保護(hù),如不及時(shí)斷電將會(huì)造成芯片燒毀的不良后果。3.5STC12C5A60S2單片機(jī)傳統(tǒng)的51系列單片機(jī)只有8位,優(yōu)點(diǎn)是控制簡(jiǎn)單,價(jià)格低廉,但存在運(yùn)算速度偏慢、資源少、容量小等缺點(diǎn),導(dǎo)致傳統(tǒng)51單片機(jī)只能存儲(chǔ)小體積程序,反應(yīng)控制不夠精準(zhǔn)快速[14]。STC12C5A60S2單片機(jī)是高速、低功耗、超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。3.5.1晶振電路和復(fù)位電路單片機(jī)最小系統(tǒng)由復(fù)位電路和晶振電路組成,是單片機(jī)整個(gè)系統(tǒng)的核心部分。晶振電路圖3.5晶振電路復(fù)位電路圖3.6復(fù)位電路3.6電源供電模塊圖3.7LDO電路圖電源供電采用三節(jié)鋰電池進(jìn)行供電,而單片機(jī)的最大輸入電壓無(wú)法承受三節(jié)鋰電池的所輸出的電流和電壓,所以設(shè)計(jì)了一個(gè)LDO降壓電路進(jìn)行電源供電。電路中78M05和78L05芯片均為電壓差線性穩(wěn)壓芯片。78M05芯片它的最大輸出電流值為500mA,輸入電壓最大值是35V。78L05芯片它的最大輸出電流值為100mA,輸入電壓最大值是5V。而電路下方的電容則是作為旁路電容,起到高頻濾波和穩(wěn)定電路的作用。左邊的大容量極性電容在起到高頻濾波和和穩(wěn)定電路作用的同時(shí),還起到了儲(chǔ)能的作用,當(dāng)電路中電流有波動(dòng)時(shí),它可以保護(hù)電路不被波動(dòng)干擾。P1口作為三節(jié)鋰電池供電的接口,而DC1作為直流電源的接口,此項(xiàng)設(shè)計(jì)是為了根據(jù)不同環(huán)境所使用而做出的設(shè)計(jì)。例如在進(jìn)行軟硬件聯(lián)調(diào)時(shí),使用三節(jié)鋰電池供電就并不是最好的選擇,可以通過選擇連接直流電源適配器來(lái)直接進(jìn)行測(cè)試。在測(cè)試調(diào)試完畢之后,需要將單片機(jī)板放入垃圾桶底部,此時(shí)連接直流電源的則需要在垃圾桶底部另外開孔布線,比較繁瑣,此時(shí)選擇使用三節(jié)鋰電池供電進(jìn)行替換,這樣垃圾桶就可以正常進(jìn)行工作。3.7LED顯示報(bào)警模塊由于本次的課題為垃圾桶,考慮到其放置地點(diǎn)和客戶的需求,放棄聲音報(bào)警電路,改為使用不同顏色的LED燈來(lái)顯示垃圾桶的工作狀態(tài)和內(nèi)部垃圾存量的警示。其電路圖如下圖所示圖3.8LED報(bào)警電路圖其工作具體電路如下:紅外傳感器的數(shù)字信號(hào)在輸入單片機(jī)的時(shí)候,單片機(jī)同時(shí)間通過P0.4口輸出低電平信號(hào)給紅燈,控制藍(lán)燈亮起,代表紅外傳感器偵測(cè)到了人體。單片機(jī)在調(diào)用步進(jìn)電機(jī)正轉(zhuǎn)函數(shù)的同時(shí),向P0.5口輸出低電平信號(hào)給綠燈,控制綠燈亮起,代表桶蓋正在打開。同理,單片機(jī)在調(diào)用步進(jìn)電機(jī)反轉(zhuǎn)函數(shù)的同時(shí),向P0.6口輸出低電平信號(hào)給黃燈,控制黃燈亮起,代表桶蓋正在關(guān)上。而當(dāng)桶內(nèi)垃圾存量子程序判斷成功后,桶內(nèi)紅外傳感器模塊會(huì)通過P2.0口和P2.1口輸出數(shù)字信號(hào)給單片機(jī),單片機(jī)收到信號(hào)之后,向P0.7口輸出低電平,控制紅燈亮起,代表桶內(nèi)垃圾已經(jīng)到達(dá)警戒線,提醒周圍人及時(shí)傾倒。而又因?yàn)榘l(fā)光二極管的驅(qū)動(dòng)電壓比較小,所以在使用時(shí),需要在其前面,串聯(lián)一個(gè)電阻分壓后才可以使用。3.8總電路圖

4軟件部分設(shè)計(jì)4.1主程序框圖圖4.1主程序框圖4.2具體代碼分析4.2.1單片機(jī)I/O口設(shè)置在進(jìn)行正式的程序代碼編寫之前。需要在定義代碼頭文件之后,對(duì)所需要用到的單片機(jī)的I/O口進(jìn)行管腳的聲明,即告訴單片機(jī)每個(gè)管腳所控制的資源是什么,具體代碼如圖所示:圖4.2定義管腳4.2.2紅外線檢測(cè)模塊標(biāo)志位和延時(shí)檢測(cè)的編寫圖4.3設(shè)置標(biāo)志位此段代碼的意義是在程序的最開始設(shè)置一個(gè)標(biāo)志位,通過此標(biāo)志位的0和1的狀態(tài)來(lái)判斷紅外傳感器識(shí)別人體的過程。在紅外傳感器識(shí)別到人體之后,輸出數(shù)字信號(hào)給單片機(jī),標(biāo)志位置1,在置1之后,通過先前已經(jīng)設(shè)置完成的延時(shí)函數(shù),進(jìn)行一個(gè)四秒的延時(shí)子程序,而后運(yùn)行計(jì)數(shù)器再次確認(rèn)信號(hào)仍然存在。如果四秒之后的第二次判斷時(shí),標(biāo)志位仍然置1,那么代表人體檢測(cè)成功,運(yùn)行后續(xù)子程序,同時(shí)將計(jì)數(shù)器清零。如果在三秒中人體離開偵測(cè)區(qū)域,那么紅外傳感器輸入給單片機(jī)的數(shù)字信號(hào)消失,則運(yùn)行else里面的內(nèi)容,將標(biāo)志位重新置0,計(jì)數(shù)器直接清零,程序直接終止,回到最開始的紅外傳感器偵測(cè)階段。4.2.3引入變量防止單片機(jī)錯(cuò)誤判斷不停調(diào)用正轉(zhuǎn)函數(shù)的代碼編寫圖4.4引入變量定義zz和zzz這兩個(gè)向量為步進(jìn)電機(jī)狀態(tài)的標(biāo)志,當(dāng)單片機(jī)調(diào)用正轉(zhuǎn)函數(shù)時(shí),在將紅外傳感標(biāo)志位置0的同時(shí),也賦值給zz和zzz這兩個(gè)向量數(shù)字1。而上圖中,如果需要再次調(diào)用步進(jìn)電機(jī)的正轉(zhuǎn)函數(shù),需要同時(shí)滿足紅外傳感子程序的判斷成功和zzz向量為0。所以在步進(jìn)電機(jī)沒有反轉(zhuǎn)前,正轉(zhuǎn)的條件永遠(yuǎn)無(wú)法達(dá)成,不會(huì)進(jìn)行電機(jī)的正轉(zhuǎn)。而在代碼的最開始定義了一個(gè)while(zzz),即只有zzz=1的時(shí)候,單片機(jī)才可以調(diào)用步進(jìn)電機(jī)反轉(zhuǎn)函數(shù),這樣也防止了在特定情況下,單片機(jī)判斷錯(cuò)誤導(dǎo)致桶蓋已經(jīng)反轉(zhuǎn)閉合的情況下,仍調(diào)用反轉(zhuǎn)函數(shù)讓步進(jìn)電機(jī)反轉(zhuǎn)。在zzz=1的情況下,如果紅外傳感模塊的子程序判斷完成,確定偵測(cè)范圍內(nèi)無(wú)人之后,按照?qǐng)D中所寫,還需判斷zzz的值是否等于1,如果zzz的值等于1的同時(shí)加上紅外傳感器子程序判斷成功,單片機(jī)才可以調(diào)用步進(jìn)電機(jī)的反轉(zhuǎn)函數(shù)來(lái)讓其反轉(zhuǎn),如果zzz=1,而紅外判斷子程序在第一次未偵測(cè)到人體發(fā)出信號(hào)之后三秒內(nèi),再次判斷時(shí)有人站在桶前,即紅外傳感子程序判斷失敗,那么運(yùn)行else內(nèi)的內(nèi)容,zzz仍然賦值為1,其他程序立即中斷執(zhí)行,等待紅外傳感子程序的下一次判定。而單片機(jī)在調(diào)用完反轉(zhuǎn)函數(shù)之后,會(huì)將所有的向量?jī)?nèi)的數(shù)據(jù)全部清零,以進(jìn)行下一次整體的判定和函數(shù)的選用。4.2.4步進(jìn)電機(jī)轉(zhuǎn)動(dòng)程序代碼編寫本次課題選用的是五線八相步進(jìn)電機(jī),相對(duì)應(yīng)的正轉(zhuǎn)函數(shù)的編寫就是前文中所提到的a→ab→b→bc→c→cd→d→da的循環(huán),在單片機(jī)判斷紅外模塊的數(shù)字信號(hào)之前,會(huì)先進(jìn)行步進(jìn)電機(jī)驅(qū)動(dòng)模塊的初始化,也就是將步進(jìn)電機(jī)的四個(gè)輸入端口全部輸入高電平,這樣的話通過ULN2003A內(nèi)部的反向器之后,步進(jìn)電機(jī)的四個(gè)端口就全部輸入了低電平,此時(shí)步進(jìn)電機(jī)不做任何轉(zhuǎn)動(dòng)。圖4.5步進(jìn)電機(jī)初始化代碼在單片機(jī)接收到紅外傳感模塊的數(shù)字信號(hào),并且判斷前方有人站立之后,單片機(jī)按照先前編寫的正轉(zhuǎn)函數(shù)代碼,先將P1.4口輸出低電平,其他I/O口的賦值均為高電平,此時(shí)步進(jìn)電機(jī)的a口變?yōu)楦唠娖?,則步進(jìn)電機(jī)旋轉(zhuǎn)一定角度。圖4.6步進(jìn)電機(jī)正轉(zhuǎn)代碼1之后將P1.4、P1.5口輸出低電平,其他I/O口的賦值均為高電平,此時(shí)步進(jìn)電機(jī)的a和b口變?yōu)楦唠娖?,步進(jìn)電機(jī)繼續(xù)旋轉(zhuǎn)一定角度。圖4.7步進(jìn)電機(jī)正轉(zhuǎn)代碼2之后將P1.5口輸出低電平,其他I/O口的賦值均為高電平,此時(shí)步進(jìn)電機(jī)的b口變?yōu)楦唠娖?,則步進(jìn)電機(jī)旋轉(zhuǎn)一定角度。圖4.8步進(jìn)電機(jī)正轉(zhuǎn)代碼3之后將P1.5、P1.6口輸出低電平,其他I/O口的賦值均為高電平,此時(shí)步進(jìn)電機(jī)的b和c口變?yōu)楦唠娖?,則步進(jìn)電機(jī)旋轉(zhuǎn)一定角度。圖4.9步進(jìn)電機(jī)正轉(zhuǎn)代碼4之后將P1.6口輸出低電平,其他I/O口的賦值均為高電平,此時(shí)步進(jìn)電機(jī)的c口變?yōu)楦唠娖?,則步進(jìn)電機(jī)旋轉(zhuǎn)一定角度。圖4.10步進(jìn)電機(jī)正轉(zhuǎn)代碼5之后將P1.6、P1.7口輸出低電平,其他I/O口的賦值均為高電平,此時(shí)步進(jìn)電機(jī)的c和d口變?yōu)楦唠娖?,則步進(jìn)電機(jī)旋轉(zhuǎn)一定角度。圖4.11步進(jìn)電機(jī)正轉(zhuǎn)代碼6之后將P1.7口輸出低電平,其他I/O口的賦值均為高電平,此時(shí)步進(jìn)電機(jī)的d口變?yōu)楦唠娖?,則步進(jìn)電機(jī)旋轉(zhuǎn)一定角度。圖4.12步進(jìn)電機(jī)正轉(zhuǎn)代碼7之后將P1.7、P1.4口輸出低電平,其他I/O口的賦值不變,此時(shí)步進(jìn)電機(jī)的d和a口變?yōu)楦唠娖?,則步進(jìn)電機(jī)旋轉(zhuǎn)一定角度。圖4.13步進(jìn)電機(jī)正轉(zhuǎn)代碼8相對(duì)應(yīng)的,步進(jìn)電機(jī)的反轉(zhuǎn)代碼的編寫就是將上述正轉(zhuǎn)代碼的管腳的賦值順序顛倒之后,進(jìn)行賦值,即按照ad→d→dc→c→cb→b→ba→a進(jìn)行編程,步進(jìn)電機(jī)就可以完成反轉(zhuǎn)。4.3程序代碼編寫中遇到的問題(1)在代碼設(shè)計(jì)的初期,因?yàn)閷?duì)單片機(jī)標(biāo)志位的使用并不是很了解,所以采用單片機(jī)內(nèi)部定時(shí)器和計(jì)數(shù)器來(lái)進(jìn)行判斷人是否站在桶外可識(shí)別區(qū)域內(nèi)一定時(shí)間,而這些實(shí)驗(yàn)代碼因在編寫開始時(shí)就存在的邏輯問題而出錯(cuò)。后來(lái)引進(jìn)了標(biāo)志位的使用,成功地解決了這個(gè)問題。(2)在步進(jìn)電機(jī)的函數(shù)編寫過程中,步進(jìn)電機(jī)的代碼分為給abcd口賦值的形式和將abcd口的狀態(tài)作為一個(gè)四位二進(jìn)制數(shù)組成一個(gè)數(shù)組,使用數(shù)據(jù)讀取函數(shù)直接進(jìn)行讀取轉(zhuǎn)動(dòng)的形式。在編碼的最開始,由于覺得分別賦值的形式太過繁瑣,所以選擇讀取數(shù)組數(shù)據(jù)的代碼進(jìn)行模仿和改進(jìn),但因?qū)Σ竭M(jìn)電機(jī)不熟悉,導(dǎo)致設(shè)置的延時(shí)子函數(shù)時(shí)間過短,直接將ULN2003A芯片燒毀了。之后通過分別賦值的形式編寫了函數(shù),步進(jìn)電機(jī)也調(diào)試成功,在此基礎(chǔ)上,需要繼續(xù)學(xué)習(xí)數(shù)據(jù)讀取函數(shù)的使用,以進(jìn)一步優(yōu)化步進(jìn)電機(jī)轉(zhuǎn)動(dòng)函數(shù)?!?6··PAGE35·PAGE15Proteus仿真5.1Proteus軟件介紹Proteus是一個(gè)可以進(jìn)行對(duì)單片機(jī),以及它的外圍電路仿真模擬的一個(gè)軟件,同時(shí)在Proteus中也可以進(jìn)行電路的初步設(shè)計(jì),無(wú)論是先在立創(chuàng)EDA上進(jìn)行電路圖的繪制然后重新繪制在Proteus中進(jìn)行仿真,還是現(xiàn)在Proteus中進(jìn)行電路圖繪制,而后在立創(chuàng)EDA中根據(jù)Proteus中的電路圖進(jìn)行繪制和細(xì)節(jié)的添加,都是可行的。且Proteus支持Keil在內(nèi)的許多主流程序代碼編輯器。5.2仿真電路圖下圖為我的電路的仿真設(shè)計(jì)電路圖,我先在立創(chuàng)EDA中繪制完了電路圖,而后參照其作為原型,在Proteus8軟件中繪制模擬實(shí)物圖進(jìn)行仿真實(shí)驗(yàn)。圖5.1Proteus仿真電路圖5.3仿真結(jié)果調(diào)試5.3.1電路連接檢查以及代碼下載首先需要進(jìn)行的是電路的連接檢查,檢查每一個(gè)網(wǎng)絡(luò)標(biāo)號(hào)所對(duì)應(yīng)的線和單片機(jī)的端口是否和代碼上定義的一致,在檢查的同時(shí),也需要注意電路的布局,盡量使用網(wǎng)絡(luò)標(biāo)號(hào)來(lái)進(jìn)行器件和器件的連接,不然會(huì)顯得自己的電路圖非常的雜亂,很不美觀。在完成電路連接的檢查之后就進(jìn)行程序的下載,雙擊上圖中的單片機(jī)后,會(huì)跳出如下界面,點(diǎn)擊ProgramFile欄右邊的文件夾圖標(biāo),尋找到自己編寫代碼編譯成功之后,生成的Hex文件,雙擊之后,點(diǎn)擊右上角的OK完成程序的下載。圖5.2下載程序界面5.3.2模擬實(shí)物調(diào)試下載完程序之后,開始運(yùn)行。由于在Proteus8軟件中,無(wú)法真正做到紅外傳感器模塊偵測(cè)判定這一系列功能,所以針對(duì)此項(xiàng),我使用8個(gè)單刀雙擲開關(guān)來(lái)代替總計(jì)8個(gè)紅外傳感器的信號(hào)輸入,當(dāng)單刀雙擲開關(guān)閉合時(shí),即代表對(duì)應(yīng)的紅外傳感器模塊偵測(cè)到有人或者偵測(cè)到垃圾到達(dá)警戒線。如圖5.3、圖5.4所示圖5.3用四個(gè)開關(guān)代替四路紅外傳感器圖5.4用四個(gè)開關(guān)代替兩個(gè)二路紅外傳感器圖5.5所示為當(dāng)P0.0、P0.1、P0.2、P0.3口一起閉合,即代表桶內(nèi)垃圾存量到達(dá)閾值時(shí),提前設(shè)置好的燈就會(huì)被點(diǎn)亮,起到告知相關(guān)人員的作用。圖5.5四個(gè)開關(guān)全部閉合,用于警示的LED燈被點(diǎn)亮圖5.6、5.7、5.8為在垃圾桶正常運(yùn)轉(zhuǎn)時(shí)的三個(gè)階段,即首先偵測(cè)到人體,指示燈亮起,而后如果人停留在區(qū)域內(nèi),則打開桶蓋,同時(shí)點(diǎn)亮對(duì)應(yīng)顏色的燈代表程序正常運(yùn)行。在人離開后無(wú)法偵測(cè)到信號(hào),則紅外傳感器指示燈熄滅,無(wú)人判定子程序運(yùn)行成功后關(guān)閉桶蓋,同時(shí)點(diǎn)亮對(duì)應(yīng)顏色的燈代表程序正常運(yùn)行圖5.6任一開關(guān)閉合時(shí),代表檢測(cè)到人體的LED燈被點(diǎn)亮圖5.7開關(guān)閉合超過3秒,步進(jìn)電機(jī)進(jìn)行正轉(zhuǎn),同時(shí)點(diǎn)亮對(duì)應(yīng)指示燈圖5.8開關(guān)斷開超過3秒,步進(jìn)電機(jī)進(jìn)行反轉(zhuǎn),同時(shí)點(diǎn)亮對(duì)應(yīng)指示燈5.3.3仿真中出現(xiàn)的問題在仿真的初期,出現(xiàn)了試圖采用一些錯(cuò)誤的器件來(lái)代替紅外傳感器進(jìn)行仿真;找不到需要用到的元器件的分類;找到了器件的大類,但是不知道自己用的元器件的具體參數(shù)是什么;器件參數(shù)和型號(hào)全部設(shè)置正確,忽略了器件本身是device還是active的屬性,導(dǎo)致電路無(wú)法正常工作等等錯(cuò)誤。

6實(shí)物測(cè)試結(jié)果6.1實(shí)物圖圖6.1智能垃圾桶主控板圖6.2四路紅外傳感器板6.2焊接過程在焊接過程中,首先進(jìn)行LDO電路的焊接,因?yàn)長(zhǎng)DO電路承擔(dān)著為單片機(jī)進(jìn)行供電的任務(wù),所以只有它正常工作了,后續(xù)的焊接才可以繼續(xù)進(jìn)行。圖6.3LDO電路焊接在LDO電路焊接完成且所焊的降壓芯片,在通電成功測(cè)試運(yùn)行之后,進(jìn)行單片機(jī)最小系統(tǒng)的焊接,即單片機(jī)芯片、晶振電路和復(fù)位電路的焊接。最小系統(tǒng)焊接完成后,進(jìn)行單片機(jī)程序的燒錄測(cè)試,只有當(dāng)單片機(jī)能成功被燒錄進(jìn)程序時(shí),才代表這個(gè)電路板可用,同時(shí)這樣做也可以避免在焊接完其他器件后,單片機(jī)無(wú)法正常工作,從而帶來(lái)的器件損失。圖6.4單片機(jī)最小系統(tǒng)焊接在通過單片機(jī)最小系統(tǒng)的測(cè)試成功后,進(jìn)行其他外圍電路的焊接,需要注意的是電烙鐵不能在焊接的電路板表面停留太久,不然會(huì)造成焊盤的脫落,其次是在焊接器件時(shí),其兩端的焊錫形狀應(yīng)為一個(gè)球形,這樣可以防止器件虛焊以及使得電路板更加美觀。圖6.5主控板外圍電路焊接6.3調(diào)試過程按照編寫程序的設(shè)想,首先進(jìn)行的是四路紅外傳感器的人體檢測(cè),如下圖所示,當(dāng)有人體靠近時(shí),主控板上對(duì)應(yīng)的燈亮起,代表檢測(cè)到人體靠近。圖6.7四路紅外傳感器檢測(cè)成功圖6.8主控板LED燈亮起在成功檢測(cè)到人體之后,進(jìn)行1.5秒的延時(shí)判斷,在判斷成功之后,進(jìn)行步進(jìn)電機(jī)的正轉(zhuǎn),同時(shí)點(diǎn)亮對(duì)應(yīng)的LED燈,代表程序正常運(yùn)行。圖6.9步進(jìn)電機(jī)正轉(zhuǎn)并點(diǎn)亮對(duì)應(yīng)LED燈在人體離開紅外偵測(cè)區(qū)域后,對(duì)應(yīng)的LED燈熄滅,同時(shí)進(jìn)行判斷,當(dāng)判斷成功之后,運(yùn)行步進(jìn)電機(jī)的反轉(zhuǎn)程序,同時(shí)點(diǎn)亮對(duì)應(yīng)的LED燈,代表程序正常運(yùn)行。圖6.10紅外傳感器對(duì)應(yīng)的LED燈熄滅,同時(shí)步進(jìn)電機(jī)反轉(zhuǎn)并點(diǎn)亮對(duì)應(yīng)LED燈在四路紅外傳感器和步進(jìn)電機(jī)程序正常運(yùn)行的同時(shí),桶內(nèi)的兩個(gè)二路紅外傳感器模塊也同時(shí)在運(yùn)行,當(dāng)兩個(gè)二路傳感器一同受到反射信號(hào)后,將點(diǎn)亮主控板上對(duì)應(yīng)的LED燈,從而表示桶內(nèi)垃圾已經(jīng)到達(dá)閾值。圖6.11兩個(gè)二路傳感器收到信號(hào)后,點(diǎn)亮對(duì)應(yīng)LED燈6.4調(diào)試中遇到的問題6.4.1程序代碼問題在程序代碼成功燒錄之后,步進(jìn)電機(jī)并不能成功的像仿真時(shí)一樣,轉(zhuǎn)動(dòng)一圈半,但是其他器件均正常運(yùn)作,在經(jīng)過排錯(cuò)之后,確認(rèn)是控制步進(jìn)電機(jī)正反轉(zhuǎn)的循環(huán)函數(shù)時(shí)間設(shè)置過短,雖然在Proteus8軟件中仿真成功,但是在實(shí)際運(yùn)行中,時(shí)間過短,導(dǎo)致了電機(jī)只運(yùn)轉(zhuǎn)了極短的時(shí)間就停止了工作,從肉眼上無(wú)法觀察到轉(zhuǎn)動(dòng),從而導(dǎo)致了此項(xiàng)調(diào)試錯(cuò)誤。6.4.2低壓差線性穩(wěn)壓電路問題在測(cè)試LDO電路是否有效的過程中,因?yàn)閯傞_始給的電壓過小,未達(dá)到芯片的工作要求,所以在測(cè)試最開始芯片的輸出管腳并沒有電流輸出,導(dǎo)致錯(cuò)誤的以為芯片是損壞的,在測(cè)試第二塊芯片的時(shí)候,發(fā)現(xiàn)了此問題,在將輸入的測(cè)試電壓調(diào)高到芯片能正常工作之后,第一塊芯片的輸出管腳輸出5V,代表芯片正常工作,此項(xiàng)錯(cuò)誤被解決。6.4.3PCB走線問題(1)在焊接完單片機(jī)的外圍電路后,在進(jìn)行單片機(jī)最小系統(tǒng)檢測(cè)時(shí),發(fā)現(xiàn)程序并不能成功的燒錄進(jìn)單片機(jī)中,在經(jīng)過更換電路板和芯片后,得出結(jié)論:在制板時(shí),在單片機(jī)晶振電路的下方走了許多的高頻信號(hào)線,導(dǎo)致晶振電路不能正常進(jìn)行工作,從而單片機(jī)無(wú)法正常下載程序。在重新布線和制板之后,大幅減少了晶振電路周圍的信號(hào)線,在重新焊接之后,單片機(jī)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論