目 錄
摘 要 I
Abstract II
引 言 1
1 系統(tǒng)方案設(shè)計(jì) 4
1.1 方案論證 4
1.2 滅火機(jī)器人系統(tǒng)工作原理 4
2 系統(tǒng)硬件設(shè)計(jì) 6
2.1 單片機(jī) 6
2.2 火焰探測系統(tǒng)設(shè)計(jì) 8
2.3 滅火系統(tǒng)設(shè)計(jì) 8
2.4 循跡模塊設(shè)計(jì) 9
2.5 電機(jī)驅(qū)動模塊 10
3 系統(tǒng)軟件設(shè)計(jì) 12
3.1 系統(tǒng)軟件開發(fā)環(huán)境 12
3.2 系統(tǒng)總程序設(shè)計(jì) 12
3.3 各模塊程序設(shè)計(jì) 13
4 項(xiàng)目調(diào)試 17
4.1 硬件調(diào)試 17
4.2 軟件調(diào)試 17
4.3 實(shí)物調(diào)試 18
結(jié) 論 20
參考文獻(xiàn) 21
附 錄 23
致 謝 34
摘 要
由于火災(zāi)的頻繁發(fā)生,人們不僅在物質(zhì)上有巨大的損失,同時在精神上也飽受折磨,最讓人痛心惋惜的還是那些為了國家無私奉獻(xiàn)生命的消防人員。為了解決火災(zāi)給人們帶來的巨大損害,本項(xiàng)目設(shè)計(jì)了一款基于單片機(jī)的滅火機(jī)器人。
本次設(shè)計(jì)利用STC89C52RC單片機(jī)為核心控制器;采用紅外循跡傳感器控制滅火機(jī)器人的行走軌跡,通過接收管接收到紅外線的數(shù)量判定路況信息;采用火焰?zhèn)鞲衅魈綔y火焰,通過檢測的火焰判定其火焰的位置;采用L293D電機(jī)驅(qū)動芯片,通過一個芯片控制兩個電機(jī)的轉(zhuǎn)動;滅火主要是通過馬達(dá)提供動力驅(qū)動四葉風(fēng)扇旋轉(zhuǎn)。
結(jié)果表明,本項(xiàng)目設(shè)計(jì)的成本較低、性能較好,整體設(shè)計(jì)較為合理且易于操作。同時對滅火機(jī)器人軟件與硬件方面進(jìn)行了調(diào)試,實(shí)現(xiàn)了全部預(yù)期的功能。人們可以使用滅火機(jī)器人來滅火,這樣能夠減少一些火災(zāi)帶來的損失。滅火機(jī)器人還可以代替人員闖入火場進(jìn)行滅火作業(yè),滅火人員的人身安全得到更大保證,同時滅火也可達(dá)到預(yù)期效果。
關(guān)鍵詞:機(jī)器人; 滅火模塊; 單片機(jī)控制
Abstract
Because of the frequent occurrence of fire, people not only have huge losses in material, but also suffer from mental suffering. The most lamentable ones are the firefighters who sacrifice their lives selflessly for the country. In order to solve the great fire damage to people, the design of a fire-fighting robot based on single-chip microcomputer.
This design uses the STC89C52RC single-chip microcomputer as the core controller, infrared track sensor is used to control the walking track of the fire-fighting robot, and the number of infrared rays received by the receiving tube is used to judge the road information, and flame sensor is used to detect the flame, the position of the flame is determined by the detected flame, the L293d motor-driven chip is used to control the rotation of the two motors by one chip, and the motor-driven four-blade fan is used to put out the fire.
The results show that this project has low cost, good performance, reasonable overall design and easy operation. At the same time, the software and hardware of the fire-fighting robot are debugged, and all the expected functions are realized. People can use fire-fighting robots to put out fires, which can reduce some of the damage caused by fire. The fire-fighting robot can also replace the personnel to enter the fire site to carry out the fire-fighting operation, so that the personal safety of the fire-fighting personnel can be more guaranteed and the fire-fighting can achieve the expected effect.
Keywords: robot; fire-extinguishing module; single chip microcomputer control
引 言
火災(zāi)在我們現(xiàn)實(shí)生活中是經(jīng)常發(fā)生的,而且不定期、不定因,是很難去估測的。每當(dāng)火災(zāi)發(fā)生時,英勇的消防人員永遠(yuǎn)是第一個沖在火災(zāi)前線,與此同時他們的生命也會一直處于危險(xiǎn)的邊緣。在這種背景下,滅火機(jī)器人系統(tǒng)因此而誕生,該系統(tǒng)極大程度的降低了人員的危險(xiǎn)系數(shù)[1]。在滅火系統(tǒng)中單片機(jī)充當(dāng)于人腦進(jìn)行判斷,及時處理火災(zāi),防止錯失最好的滅火時機(jī)。
自1961年喬治?查爾斯?德沃爾申請工業(yè)機(jī)器人專利成功后,機(jī)器人行業(yè)一直處于全速發(fā)展的模式,世界各國越來越重視機(jī)器人相關(guān)的研究及應(yīng)用。其中,美國研制的機(jī)器人具有全面性、精確性、適應(yīng)性等特點(diǎn),并且其語言研究水平較突出,超越了其他國家;日本研制的機(jī)器人以數(shù)量和密度著稱;德國研制的機(jī)器人銷量較高并以用途廣泛而聞名。目前已有多種不同類型的消防機(jī)器人用于火災(zāi)現(xiàn)場。
滅火機(jī)器人的實(shí)用性強(qiáng)、利用價值高,世界各國都開始對滅火機(jī)器人進(jìn)行研究。研究滅火機(jī)器人行業(yè)的先行者是美國和前蘇聯(lián),之后英國、日本、德國也開始研究,現(xiàn)在世界各國都已經(jīng)開始對滅火機(jī)器人進(jìn)行研究了,有很多滅火機(jī)器人是可以應(yīng)用在實(shí)際中,幫助人員闖入火場完成滅火作業(yè)的。
現(xiàn)如今滅火機(jī)器人一共有三代,第一代是程序控制,第二代是具有感覺功能,第三代則是智能化?,F(xiàn)在機(jī)器人在我們生活中已經(jīng)越來越常見并且較為流行,一個叫巨人的滅火機(jī)器人在巴黎圣母院的那場火災(zāi)中參與了滅火救援的工作[2]。國內(nèi)的滅火機(jī)器人主要存在于消防部隊(duì),消防部隊(duì)裝備的滅火機(jī)器人已經(jīng)達(dá)到了世界先進(jìn)水平,但是很少有火災(zāi)現(xiàn)場應(yīng)用此機(jī)器人。滅火機(jī)器人在中國還沒有普遍的應(yīng)用起來,但我們的技術(shù)已經(jīng)達(dá)到先進(jìn)的水平了,未來滅火機(jī)器人將被廣泛的使用。
經(jīng)過對相關(guān)火災(zāi)事故實(shí)際情況的分析,了解到大多數(shù)火災(zāi)是由于人們疏忽大意,錯過了撲滅火災(zāi)的有利時機(jī),沒有能夠在起火初期火勢較小的時候,將火苗撲滅,從而導(dǎo)致火災(zāi)范圍迅速擴(kuò)大,造成了嚴(yán)重的生命財(cái)產(chǎn)損失。而且,在許多需要重點(diǎn)防范火災(zāi)的場合目前仍然使用的是人工巡檢的方式。由于人員的精力有限,無法做到完全杜絕隱患,并且一些潛伏的火災(zāi)隱患通過人工巡檢方式是發(fā)現(xiàn)不了的。因而,需要借助先進(jìn)的科技手段,來面對日益增多的火災(zāi)隱患,避免人工巡檢的弊端。
隨著人工智能和傳感器技術(shù)的不斷發(fā)展與創(chuàng)新,智能機(jī)器人可代替人工實(shí)現(xiàn)24小時不間斷的工作。采用多傳感器融合技術(shù),能夠有效檢測火災(zāi)隱患,提高了抵御火災(zāi)的能力。同時,可以因地制宜,針對不同的場合滅火機(jī)器人可以運(yùn)用不同的工作模式,這樣的工作方式會大大提高滅火效率[3]。
在倉庫等封閉環(huán)境中應(yīng)使用自動監(jiān)測模式。在自動監(jiān)測模式下,消防小車可以實(shí)現(xiàn)一定范圍內(nèi)根據(jù)所規(guī)定的路線行走[4],并實(shí)施自動火情監(jiān)測功能,可以即時發(fā)現(xiàn)火源,并將其火源撲滅,防止火災(zāi)意外發(fā)生造成更大的損失。
在設(shè)計(jì)滅火機(jī)器人系統(tǒng)的過程中要充分考慮到系統(tǒng)的穩(wěn)定性和抗干擾能力,在面對多種復(fù)雜的火情場景時,要能夠承受強(qiáng)電磁的干擾以及適應(yīng)一定的高溫、高壓、高污染的環(huán)境,保證滅火機(jī)器人按照預(yù)定的工作模式穩(wěn)定的運(yùn)行。不僅要適應(yīng)不同復(fù)雜環(huán)境和功能多樣化,而且還要考慮到系統(tǒng)的易用性,能夠滿足操作人員的需求和習(xí)慣,做到上手容易,操作使用時簡單、方便。在滿足實(shí)際需求的前提下,也要充分考慮系統(tǒng)的經(jīng)濟(jì)性,使其具有廣泛的應(yīng)用前景。
本文基于STC89C52RC單片機(jī)設(shè)計(jì)的自動化滅火系統(tǒng),本篇論文共分為四章,主要內(nèi)容如下:
第一章:項(xiàng)目方案設(shè)計(jì)。著重系統(tǒng)設(shè)計(jì)目標(biāo)和設(shè)計(jì)原則,選擇合適的處理器和各個模塊所需的元件。
第二章:項(xiàng)目硬件設(shè)計(jì)。根據(jù)系統(tǒng)的總體方案設(shè)計(jì),搭建焊接單片機(jī)模塊、電機(jī)驅(qū)動模塊、火焰探測模塊、循跡模塊和滅火模塊,電源模塊并對這六大模塊進(jìn)行原理的介紹。
第三章:項(xiàng)目軟件設(shè)計(jì)。程序軟件的設(shè)計(jì)原理及總體介紹。介紹了系統(tǒng)的設(shè)計(jì)原理以及系統(tǒng)流程圖。
第四章:系統(tǒng)調(diào)試。編寫程序以及系統(tǒng)硬件連接的調(diào)試。完成本系統(tǒng)所需要識別小車滅火程序的編寫的準(zhǔn)備工作,同時對程序進(jìn)行調(diào)試并總結(jié)調(diào)試時遇到主要的問題。
1 系統(tǒng)方案設(shè)計(jì)
1.1 方案論證
本設(shè)計(jì)對于實(shí)現(xiàn)滅火機(jī)器人循跡實(shí)現(xiàn)滅火的目的提出如下兩套設(shè)計(jì)方案。
方案一:
滅火機(jī)器人處理器采用STC89C52RC芯片+按鍵啟動小車+紅外線循跡傳感器+L293D的雙H—橋驅(qū)動+火焰探測器+風(fēng)扇滅火。此方案主要通過按鍵啟動滅火機(jī)器人的運(yùn)行,再由單片機(jī)控制整體運(yùn)行,紅外循跡傳感器探測路徑并將探測信息傳出,L293D驅(qū)動根據(jù)紅外傳感器的信息控制滅火機(jī)器人輪子的轉(zhuǎn)動,共同確定其行走路線,最后將啟動風(fēng)扇將火源撲滅。
方案二:
滅火機(jī)器人采用STM32處理器+聲音啟動小車+光敏探測器循跡+分立元件構(gòu)成驅(qū)動+火焰探測器+水泵滅火。其方案主要是通過STM32控制滅火機(jī)器人的整體運(yùn)行[5],通過一定頻率的聲音啟動滅火機(jī)器人使其運(yùn)行,光敏探測器和直流電機(jī)用分立元件構(gòu)成驅(qū)動,確定其行走路線,探測到火焰,將開啟風(fēng)扇滅火。
兩種方案的對比,方案一采用按鍵啟動,而方案二采用聲音控制,聲音控制是不穩(wěn)定的,容易被其他噪音干擾。處理器的選擇,方案一選用52單片機(jī),價格低廉,操作方便,方案二選用的是STM32,與比方案一相比較為復(fù)雜;循跡模塊的選擇,方案一選用紅外線傳感器循跡,方案二選用光敏探測器循跡,光照影響很大,不能夠穩(wěn)定的工作;驅(qū)動模塊的選擇,方案一選用L293D的雙H-橋驅(qū)動,一個芯片控制兩個直流電機(jī),操作方便,穩(wěn)定性好,性能優(yōu)良,方案二選用分立元件構(gòu)成驅(qū)動,價格便宜但性能不穩(wěn)定。因此本項(xiàng)目采用方案一滅火機(jī)器人的設(shè)計(jì)方案,這種方案硬件簡單,軟件實(shí)現(xiàn)起來思路也比較清晰,符合我們的實(shí)際需求,易于操作、便于維護(hù)、實(shí)用性強(qiáng)。
1.2 滅火機(jī)器人系統(tǒng)工作原理
在滅火機(jī)器人開始運(yùn)行,尋找并發(fā)現(xiàn)火源過程中,首先需要提前調(diào)節(jié)電位器,讓火源與滅火機(jī)器人保持安全距離,然后單片機(jī)通過火焰探測模塊發(fā)現(xiàn)火源,并快速、準(zhǔn)確的識別火源的具體位置,為準(zhǔn)確撲滅火源做好準(zhǔn)備;單片機(jī)接收到火源信號反饋后,滅火模塊控制風(fēng)扇轉(zhuǎn)動完成滅火處理,當(dāng)檢測到無火焰的時候風(fēng)扇會繼續(xù)轉(zhuǎn)動一段時間,然后停下,并開始繼續(xù)探測下處火焰位置。本系統(tǒng)大體上分為6個基本模塊,分別為控制模、循跡模塊、火焰探測模塊、電源模塊、小車驅(qū)動模塊和滅火模塊[6]。系統(tǒng)模塊總設(shè)計(jì)如圖1.1所示。
圖1.1系統(tǒng)模塊總設(shè)計(jì)圖
2 系統(tǒng)硬件設(shè)計(jì)
2.1 單片機(jī)
單片機(jī)是一種微處理器,同時它也是一個系統(tǒng)的核心,有超大規(guī)模的集成電路技術(shù),主要將中央處理器CPU、隨機(jī)存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計(jì)時器等功能集成到一起構(gòu)成一個完整的計(jì)算機(jī)系統(tǒng)[7]。
本項(xiàng)目選用的STC89C52RC單片機(jī),該單片機(jī)價格低廉,易于操作,使用較為廣泛,同時,它是STC89C51的增強(qiáng)型,綜合考慮本設(shè)計(jì)的實(shí)際需求,選擇STC89C52RC作為主控芯片。
STC89C52RC是雙列直插式40管腳的芯片,其外部有32個端口可供用戶使用,其引腳如圖2.1所示。
圖2.1 STC89C52RC引腳圖
STC89C52RC單片機(jī)外部有32個端口可供用戶使用,其端口主要作用分別是:
P0(P0.0P0.7)口與P1(P1.0P1.7)口為通用I/O口;P2(P2.0P2.7)口與比P1口多了一個功能,訪問外部存儲器時輸出外部存儲器的高八位地址。P3(P3.0P3.7)口與P0、P1和P2口功能相同,此外它還具有第二功能。P3口的特殊功能圖如表2.1所示。
表2.1 P3口的特殊功能圖
引腳 功能 符號 第二功能
P3.1 通用I/0口 TXD 串行通信接收口
P3.2 通用I/0口 INT0 外部中斷0
P3.3 通用I/0口 INT1 外部中斷1
P3.4 通用I/0口 T0 計(jì)數(shù)器0輸入端口
P3.5 通用I/0口 T1 計(jì)數(shù)器1輸入端口
P3.6 通用I/0口 WR 外部存儲器寫功能
P3.7 通用I/0口 RD 外部存儲器讀功能
單片機(jī)的最小系統(tǒng)就是最簡單的系統(tǒng)。對52系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:電源電路、晶振電路、復(fù)位電路[8]。最小系統(tǒng)電路圖如圖2.2所示。
圖2.2 STC89C52RC最小系統(tǒng)
供電電路:40引腳接+5V電源,20腳接地,這樣便于完成單片機(jī)的供電。
復(fù)位電路:復(fù)位電路是由電阻和電容共同組成。復(fù)位電路主要是將系統(tǒng)進(jìn)行電路初始化。在單片機(jī)還沒有運(yùn)行前將全部數(shù)據(jù)都要復(fù)位到初始化默認(rèn)值的狀態(tài)。
時鐘電路:時鐘電路由C22、C23和12MHz晶振組成。電路中晶振用于輸出振蕩頻率,2個負(fù)載電容在電路中起到了微調(diào)頻率的作用,它們可以確保晶振輸出的頻率更接近真實(shí)頻率。時鐘電路的作用是給單片機(jī)提供時鐘脈沖,只有給單片機(jī)提供時鐘脈沖單片機(jī)才會執(zhí)行程序。
2.2 火焰探測系統(tǒng)設(shè)計(jì)
火焰探測模塊主要是找到火源。根據(jù)所規(guī)定的路徑去探索火源,發(fā)現(xiàn)火源并探測火源的具體位置,再將其火源信息傳遞出去。本項(xiàng)目的火焰?zhèn)鞲衅鬟B接單片機(jī)P1.7口,以便于單片機(jī)火焰獲取信息。
紅紫外復(fù)合火焰探測器采用一個對太陽光不敏感的紫外線傳感器和一個高信噪比的窄頻帶的紅外線傳感器,它視角范圍紫外視角120°,紅外視角90°,與紅外傳感器相比受外界光影響較小,減少了錯誤信息的傳達(dá),實(shí)際使用較為穩(wěn)妥;同時紅紫外復(fù)合型火焰探測器的探測距離在30-40米,三波段紅外火焰探測器的最遠(yuǎn)探測距離可以達(dá)到50-70米,距離較遠(yuǎn),可確保提前發(fā)現(xiàn)火源,及時將火撲滅,而紅外傳感器探測距離只有1-60厘米,無法快速發(fā)現(xiàn)火源位置;紅紫外復(fù)合型火焰探測器還可探測碳?xì)浠衔锶紵鹧妫鶕?jù)燃燒物火源大小來決定探測距離,如酒精0.3m×0.3m檢測距離為35米,紙張0.3m×0.3m檢測距離為25米,氫氣0.3米的火焰檢測距離為20米,而紅外傳感器并無此功能。紅紫外復(fù)合型火焰探測器主要應(yīng)用于火災(zāi)的探測中,在火災(zāi)剛剛發(fā)生時,它可以引發(fā)報(bào)警,給人類提供及時有效的信息,同時它還可探測到火源的位置,并將其火源撲滅[9]。同時探測器能夠在一些惡劣的環(huán)境下工作,拓展了小車的工作的更多可能性。
2.3 滅火系統(tǒng)設(shè)計(jì)
本人曾考慮了各種滅火方式,有放置小型滅火器、使用噴水裝置滅火等,但都比較復(fù)雜,且滅火裝置對智能滅火機(jī)器人的穩(wěn)定性要求很高,所以最后選擇用風(fēng)扇滅火的方式。
用風(fēng)扇能達(dá)到要求,并且各方面的實(shí)現(xiàn)都比較容易,工作也比較穩(wěn)定,便于調(diào)試,其工作電壓為5V,可輕松吹動20cm之內(nèi)的火源。滅火模塊與單片機(jī)的P1.6口相連,當(dāng)滅火小車檢測到火源的位置并且其位置在可吹的范圍內(nèi)時,單片機(jī)通過P1.6口將指令發(fā)送給控制其風(fēng)扇轉(zhuǎn)動的電機(jī),使風(fēng)扇轉(zhuǎn)動將火源撲滅,滅火完成后風(fēng)扇會繼續(xù)轉(zhuǎn)動一陣,確保安全。風(fēng)扇電路控制原理圖如圖2.3所示。
圖2.3 風(fēng)扇電路控制原理圖
2.4 循跡模塊設(shè)計(jì)
本項(xiàng)目設(shè)計(jì)采用巡線監(jiān)測模式來實(shí)現(xiàn)自主滅火巡檢,預(yù)設(shè)的路線上來回巡檢,發(fā)現(xiàn)火源并及時滅火。因此,本系統(tǒng)采用紅外循跡模塊來實(shí)現(xiàn)消防小車的自主巡檢功能[11]。
本項(xiàng)目的循跡模塊采用的是紅外傳感器來根據(jù)已規(guī)定的路徑行走。但與地面檢測距離為23cm較為適用,同時其工作電壓為3.3V5V,不可超過其范圍否則不能運(yùn)行。紅外循跡主要是根據(jù)黑、白色對紅外線吸收能力的不同,設(shè)計(jì)黑色路徑為滅火機(jī)器人的行走路線。傳感器的左側(cè)為紅外光發(fā)射管,右側(cè)部分是紅外光接收管。在使用前要將接收管用黑色膠帶包裹起來,只留接收管底部的探頭,主要防止外界光和發(fā)射光帶來的干擾。發(fā)射管通電后,它能產(chǎn)生人眼不可見的紅外光,又因?yàn)楹谏軌蛭占t光線,所以反射回來紅外線的數(shù)量較少,接收管接收到的紅外線較少,致使電阻的阻值就會較大。同理白色對紅外線吸收能力較弱,接收管電阻比較小。兩個紅外循跡傳感器分別與單片機(jī)的P3.5和P3.6口相連,單片機(jī)就可根據(jù)接收端電平變化來判斷小車是否偏離預(yù)設(shè)的路線[10]。紅外循跡原理圖如圖2.4所示。
圖2.4 紅外循跡原理圖
紅外循跡傳感器主要就是針對一些固定區(qū)域,并設(shè)計(jì)固定路線來巡邏的一個傳感器[12]。本項(xiàng)目主要針對那些固定區(qū)域需要巡查并缺乏人手的企業(yè),為其提供滅火機(jī)器人來代替人力,完成巡邏工作。同時在火災(zāi)來臨時可快速幫助人們進(jìn)行滅火作業(yè),即可省去多余的勞動力,又可提高火災(zāi)發(fā)生處理速度。
2.5 電機(jī)驅(qū)動模塊
電機(jī)驅(qū)動模塊主要是用于控制機(jī)器人的運(yùn)動,本系統(tǒng)主要是控制滅火機(jī)器人車輪的轉(zhuǎn)動。同時此系統(tǒng)沒有傳感器的控制,其位置主要依據(jù)軟件來實(shí)現(xiàn),這就要求電機(jī)的控制精度必須要高。
L293D采用16引腳DIP封裝,半橋式驅(qū)動,電壓4.5-36V,單通道輸出電流,但高峰輸出的電流可達(dá)到1.2A,其內(nèi)部集成了雙極型H-橋電路。它的工作電壓為4.5~36V,L293D具有很多優(yōu)點(diǎn),例如價格與其他驅(qū)動器相比較為便宜、易于控制、無需保護(hù)電路和二極管和電機(jī)停止時微振電流可消除正反向時的靜摩擦等[13]。本項(xiàng)目主要需要控制兩個電機(jī)的轉(zhuǎn)動,所以本設(shè)計(jì)使用2個H-橋電路集成到1片芯片上,由一個芯片同時可控制2個電機(jī)的轉(zhuǎn)動。本項(xiàng)目電機(jī)控制是當(dāng)IN1=0,IN2=1時,左電機(jī)向前走,反之IN1=1,IN2=0時左邊電機(jī)向后轉(zhuǎn),要想讓左邊電機(jī)停轉(zhuǎn)則EN2=0;同理當(dāng)IN3=0,IN4=1時右邊電機(jī)向前走,IN3=1,IN4=0右邊電機(jī)向后走,EN1=0右邊電機(jī)停轉(zhuǎn)。電機(jī)驅(qū)動模塊原理圖如圖2.5所示。
圖2.5 電機(jī)驅(qū)動模塊原理圖
3 系統(tǒng)軟件設(shè)計(jì)
3.1 系統(tǒng)軟件開發(fā)環(huán)境
本項(xiàng)目軟件方面設(shè)計(jì)主要是使用Keil μVision4實(shí)現(xiàn)的,其系統(tǒng)是由C語言來進(jìn)行編程的,最后生成.hex文件。項(xiàng)目下載到單片機(jī)前編譯要顯示成功,才可以進(jìn)行軟件和單片機(jī)串口連接將所編寫的程序下載到單片機(jī)里。Keil C51軟件可提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具。使用C語言編程時,Keil是最實(shí)用的軟件[14],程序編譯界面如圖3.1所示。
圖3.1 Keil的程序編譯界面
3.2 系統(tǒng)總程序設(shè)計(jì)
主程序?yàn)橐粋€系統(tǒng)的設(shè)計(jì)主干,它可決定滅火機(jī)器人的主要工作內(nèi)容。每個功能的實(shí)現(xiàn)還需要調(diào)用具體的子程序來運(yùn)行[15]。智能滅火機(jī)器人主要工作過程為:電源給電系統(tǒng)初始化,滅火機(jī)器人開始根據(jù)黑色軌跡線路進(jìn)行行走,火焰?zhèn)鞲衅鞲袘?yīng)到火焰的位置,一定距離開始后,風(fēng)扇開始旋轉(zhuǎn),直到將火焰撲滅,火焰撲滅后,風(fēng)扇將持續(xù)一段時間轉(zhuǎn)動后再停止,然后小車再開始繼續(xù)前進(jìn)尋找下一處火焰。系統(tǒng)主程序流程圖如圖3.2所示。
圖3.2 系統(tǒng)主程序流程圖
3.3 各模塊程序設(shè)計(jì)
(1)火焰探測模塊
主要是通過火焰?zhèn)鞲衅鱽硖剿骰鹧娴奈恢?。?dāng)火焰?zhèn)鞲衅鞲袦y到有火焰后,它會繼續(xù)讓小車運(yùn)行,運(yùn)行到一定的距離后再開始進(jìn)行風(fēng)扇轉(zhuǎn)動[16]。火焰消失后,火焰?zhèn)鞲衅鲿^續(xù)尋找下一個火焰的位置?;鹧嫣綔y模塊流程圖如圖3.3所示。
圖3.3 火焰探測模塊流程圖
(2)循跡程序流程圖
本設(shè)計(jì)滅火機(jī)器人在行走的過程中,兩個傳感器規(guī)劃路線,若是向左偏就向右調(diào)整方向,向右偏就向左調(diào)整方向,循環(huán)運(yùn)行使小車在規(guī)定的軌跡行走[17]。其尋跡模塊程序流程圖如圖3.4所示。
圖3.4 循跡程序流程圖
(3)驅(qū)動電機(jī)模塊程序流程圖
在開啟程序運(yùn)行前,首先單片機(jī)初始化,P1口全部置0。當(dāng)傳感器檢測到與地面距離為2~3cm后,電機(jī)開始啟動,然后就循環(huán)判斷循跡系統(tǒng)送來的信號,電機(jī)進(jìn)行相應(yīng)的功能驅(qū)動。具體如下圖3.5和表3.1所示。
圖3.5 驅(qū)動電機(jī)模塊程序流程圖
表3.1 驅(qū)動電機(jī)模塊程序功能對照表
接收真值表(前左,后右) 對應(yīng)功能
1-1 前進(jìn)
0-0 停車
1-0 左轉(zhuǎn)
0-1 右轉(zhuǎn)
4 項(xiàng)目調(diào)試
4.1 硬件調(diào)試
硬件調(diào)試前我們需要焊接電路板,按照硬件高矮進(jìn)行統(tǒng)一焊接,焊接時盡量使用焊錫進(jìn)行連線,為了避免焊接錯誤,要對每一條焊接線路進(jìn)行檢查,最后進(jìn)行接線處理,注意正負(fù)極接線。硬件調(diào)試主要分為五部分,分別為電路的檢查、通電觀察、靜態(tài)調(diào)試、動態(tài)調(diào)試和指標(biāo)測試[18]。
在動手操作過程中有很多問題一直阻礙小車正常的滅火運(yùn)行,主要遇到的問題是:
1.傳感器不工作,或者時好時壞,主要是傳感器正負(fù)極連線問題,接反則不會轉(zhuǎn)動,還有連接線是否接觸正常,還有傳感器內(nèi)部是否發(fā)生短路、斷路等問題,導(dǎo)致不導(dǎo)通;
2.單片機(jī)下載程序時,一定要進(jìn)行冷啟動,否則程序下載不成功,冷啟動后,如果軟件一直顯示正在檢測單片機(jī),主要原因是沒有選擇對應(yīng)的COM口或者電量不充足;
3.傳感器靈敏度的調(diào)節(jié),主要調(diào)節(jié)傳感器電位器,或者調(diào)節(jié)電阻,反復(fù)實(shí)驗(yàn)根據(jù)LED燈的亮度來找到傳感器最合適的狀態(tài),便于小車更好的運(yùn)行。
4.2 軟件調(diào)試
本項(xiàng)目使用的單片機(jī)型號為STC89C52RC系列,這個系列的單片機(jī)應(yīng)用非常廣泛,編譯語言以C語言為主。Keil μVision4軟件如圖4.1所示。
圖4.1 Keil μVision4
Keil μVision4使用的基本步驟,首先建立一個新的項(xiàng)目,選擇使用的單片機(jī)類型(STC89C52RC),可以編寫一個新的文件,編寫完程序后進(jìn)行編譯,編譯就是檢測程序是否有錯誤和警告,警告不會影響程序的運(yùn)行。在編譯程序之后,生成.hex文件[19]。
STC-ISP是將程序下載到單片機(jī)的軟件,首先選擇單片機(jī)信號為STC98C52RC,同時將單片機(jī)按照方向置于燒寫器中,安裝好驅(qū)動程序連接好計(jì)算機(jī),啟動軟件前,需要選擇對應(yīng)的COM口。選中事先編輯好的.hex文件,確定后點(diǎn)擊下載,然后進(jìn)行冷啟動先斷電再上電,單片機(jī)進(jìn)行重啟,最后會顯示下載成果[20]。這樣單片機(jī)程序就燒寫成功了。STC-ISP軟件如圖4.2所示。
圖4.2 STC-ISP
4.3 實(shí)物調(diào)試
本項(xiàng)目主要通過硬件與軟件的結(jié)合,實(shí)現(xiàn)小車循跡滅火。首先我們要測試小車循跡行走,在無火焰時,小車可一直按照所設(shè)定軌跡行走,如圖4.3所示。其次還要測試滅火小車的主要功能——滅火,在火焰出現(xiàn)時小車停下,風(fēng)扇轉(zhuǎn)動,撲滅火源,如圖4.4所示。
圖4.3 循跡運(yùn)動
圖4.4 風(fēng)扇滅火
結(jié) 論
本次項(xiàng)目設(shè)計(jì)為“基于單片機(jī)的滅火機(jī)器人”,根據(jù)應(yīng)實(shí)現(xiàn)的功能設(shè)計(jì)了所需的硬件電路,以STC89C52RC為主控中心、L293D驅(qū)動芯片等共同組成了本系統(tǒng)的硬件電路。其硬件電路主要有單片機(jī)模塊提供的核心電路、電機(jī)驅(qū)動模塊的雙H—橋電路和多個傳感器的檢測模塊。并根據(jù)硬件電路的需求和設(shè)計(jì)者的理念編寫出相應(yīng)的軟件程序。
首先,可利用按鍵控制滅火機(jī)器人的工作狀態(tài),按鍵可控制電源的開啟,或者將滅火機(jī)器人與地面保持一定的距離,滅火機(jī)器人檢測不到路面,這兩種方法都可以控制滅火機(jī)器人的運(yùn)行。滅火機(jī)器人運(yùn)動時可根據(jù)設(shè)置的路徑行走,要是偏離了路線,紅外循跡傳感器會發(fā)射出滅火機(jī)器人偏離軌道的信息,并將此信息直接傳給單片機(jī),單片機(jī)會根據(jù)所設(shè)定的程序,對控制滅火機(jī)器人兩個車輪的電機(jī)發(fā)出指令,調(diào)整兩個輪子的轉(zhuǎn)速,以達(dá)到滅火機(jī)器人向左偏移路線要向右移動,向右偏移路線要向左移動的效果,使滅火機(jī)器人可以在所規(guī)定的路線進(jìn)行行走,檢測火源是否存在。若火源存在滅火機(jī)器人火焰?zhèn)鞲衅鞯闹甘緹魰l(fā)出亮光,火焰?zhèn)鞲衅鲿⒂谢鹧娴男畔l(fā)送給單片機(jī),單片機(jī)會立刻給風(fēng)扇發(fā)出指令,電動機(jī)給風(fēng)扇提供動力將火焰撲滅,火焰消失,火焰?zhèn)鞲衅鞯闹甘緹魰?,但風(fēng)扇會繼續(xù)轉(zhuǎn)動,轉(zhuǎn)動一陣后,風(fēng)扇就會停止轉(zhuǎn)動,滅火機(jī)器人又會開始運(yùn)行沿著路徑行走。
本設(shè)計(jì)經(jīng)過了硬件以及軟件的測試,各部分均實(shí)現(xiàn)預(yù)期功能。實(shí)現(xiàn)了小車循跡功能,可根據(jù)規(guī)定的路線,進(jìn)行一步步沿線行走;實(shí)現(xiàn)了小車探索火焰的功能,發(fā)現(xiàn)火焰,LED指示燈就會發(fā)出亮光;實(shí)現(xiàn)了滅火的功能,根據(jù)單片機(jī)接收到有火焰的信息后,風(fēng)扇開始轉(zhuǎn)動,實(shí)現(xiàn)滅火的功能。該滅火系統(tǒng)操作簡單,可靠性高,抗干擾能力較強(qiáng),適用范圍廣。應(yīng)用本設(shè)計(jì)產(chǎn)品,可以減少不必要的損害,降低不必要的風(fēng)險(xiǎn),同時還可以促進(jìn)社會科技的進(jìn)一步發(fā)展。
參考文獻(xiàn)
[1] 程麗娜, 陳楊陽. 基于C51單片機(jī)的智能滅火機(jī)器人的設(shè)計(jì)與研究[J].機(jī)器人技術(shù)與應(yīng)用, 2012(03) :38-41
[2] 常松. 巴黎圣母院火災(zāi)撲救的裝備作戰(zhàn)效能評估[N]. 中國應(yīng)急管理報(bào), 2019-05-04(003)
[3] 倪銀堂, 呂迪洋, 王振豪. 消防機(jī)器人的研究現(xiàn)狀綜述與展望[J]. 自動化應(yīng)用, 2017(02) :28-29
[4] 肖明俊, 祝玲, 劉雨, 李繼超. 基于51單片機(jī)居家智能滅火機(jī)器人循跡系統(tǒng)的設(shè)計(jì)[J]. 電子世界, 2013(13) :156-157
[5] 姚蘊(yùn). 基于STM32的滅火機(jī)器人設(shè)計(jì)[J]. 中國新通信, 2017,19(17) :43-44
[6] 志勇. 智能巡檢滅火機(jī)器人的設(shè)計(jì)[D]. 大連工業(yè)大學(xué), 2017
[7] 王哲, 孫洪超, 張皖軍. 基于單片機(jī)滅火機(jī)器人的設(shè)計(jì)[J]. 農(nóng)機(jī)使用與維修, 2017(10) :7
[8] 馮世鑫, 鄭闖. 基于單片機(jī)的輪式滅火機(jī)器人設(shè)計(jì)[J]. 中國設(shè)備工程, 2018(06) :160-162
[9] 馮國文, 王彬, 王籽涵, 劉世運(yùn), 黃健俊, 徐天如, 郭海港. 基于STC15W4K32S4滅火智能車的設(shè)計(jì)[J]. 信息記錄材料, 2018,19(10) :83-84
[10] 陳帥華, 湯勇. 可控自動滅火機(jī)器人設(shè)計(jì)[J]. 伺服控制, 2015(07) :54-56+45
[11] 溫衛(wèi)敏. 一種最優(yōu)路徑規(guī)劃的滅火機(jī)器人系統(tǒng)設(shè)計(jì)[J]. 四川理工學(xué)院學(xué)報(bào)(自然科學(xué)版), 2018,31(03) :21-28
[12] 盧彪, 陳宇, 邱慧麗. 基于多傳感器信息采集技術(shù)的滅火機(jī)器人系統(tǒng)設(shè)計(jì)[J]. 廊坊師范學(xué)院學(xué)報(bào)(自然科學(xué)版), 2019,19(03) :36-38+41
[13] 孟祥荔. 基于智能滅火機(jī)器人硬件電路的設(shè)計(jì)探討[J]. 科技經(jīng)濟(jì)導(dǎo)刊, 2018,26(14) :11-12+15
[14] 孫寧, 裴文良, 閔桂元, 王永軍. 消防滅火機(jī)器人設(shè)計(jì)及應(yīng)用[J]. 消防科學(xué)與技術(shù), 2018,37(07) :942-944
[15] 胡傳平. 消防機(jī)器人的開發(fā)與應(yīng)用[J]. 機(jī)器人技術(shù)與應(yīng)用, 2003(05) :37-41
[16] 劉鍇圣, 黃民. 基于STM32的消防滅火機(jī)器人控制系統(tǒng)設(shè)計(jì)與研究[J].輕工科技, 2018,34(01) :70-71+109
[17] 崔清宇, 時澤宇. 基于單片機(jī)AT89S52的智能滅火小車設(shè)計(jì)[J]. 科技展望, 2016,26(04) :148
[18] 張佐權(quán). 競賽用滅火機(jī)器人智能優(yōu)化技術(shù)的研究與實(shí)現(xiàn)[D]. 電子科技大學(xué), 2012
[19] 俞凡. 基于單片機(jī)的廠區(qū)智能循跡滅火車模型的設(shè)計(jì)和實(shí)現(xiàn)[D]. 安徽農(nóng)業(yè)大學(xué), 2016
[20] 吳冉, 黃奇瑞. 基于單片機(jī)的智能滅火小車設(shè)計(jì)與實(shí)現(xiàn)[J]. 南陽理工學(xué)院學(xué)報(bào), 2017,9(06) :61-64
附 錄
#include<AT89X52.H> //包含51單片機(jī)頭文件,內(nèi)部有各種寄存器定義
#include<HJ-2WD_PWM_FK.H> //HJ-2WD智能車專用頭文件
#define uchar unsigned char
#define uint unsigned int
unsigned char n,count,angle;//距離標(biāo)志位,0.5ms次數(shù),角度標(biāo)識
uchar i;
void DelayUs2x(uchar t)
{
while(–t);
}
void DelayMs(uchar t)
{
while(t–)
{
//大致延時1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/------------------------------------------------
定時器01初始化
//定時器1工作方式1 (舵機(jī) ),定時器0 電機(jī)PWM調(diào)速控制信號
------------------------------------------------/
void Time1_Int() interrupt 3//舵機(jī)
{
TH1=0xff;
TL1=0xa3;
if(count<angle)//判斷0.5ms次數(shù)是否小于角度標(biāo)識
pwm=1;//確實(shí)小于,pwm輸出高電平
else
pwm=0;//大于則輸出低電平
count=(count+1);//0.5ms次數(shù)加1
count=count%40;//次數(shù)始終保持為40即保持周期為20ms
}
//主函數(shù)
void main(void)
{
count=0;
P0=0XF0; //關(guān)電機(jī)
TMOD=0X11;
TH0= 0XFc; //1ms定時
TL0= 0X18;
TR0= 1;
ET0= 1;
EA = 1; //開總中斷
TH1=0xff;
TL1=0xa3;
ET1=1;
TR1= 1;
while(1) //無限循環(huán)
{
//有火焰信號S=0 沒有火焰信號S=1
if(S==0) //檢測到有火焰時
{
stop(); //調(diào)用電機(jī)停止函數(shù)
F=0; //打開風(fēng)扇滅火
delay(200); //
F=1; //關(guān)掉滅火風(fēng)扇
stop(); //調(diào)用電機(jī)停止函數(shù)
delay(100); //??毫秒
}
//巡黑線 有信號為0 白線 沒有信號為1 黑線
if(Left_1_led==0&&Right_1_led==0&&S==1)
{
F=1; //關(guān)風(fēng)扇
run(); //調(diào)用前進(jìn)函數(shù)
}
if(Left_1_led==1&&Right_1_led==1)
{
stop(); //調(diào)用停止函數(shù)
}
if(Left_1_led==1&&Right_1_led==0) //左邊檢測到黑線
{
leftrun(); //調(diào)用小車左轉(zhuǎn) 函數(shù)
}
if(Right_1_led==1&&Left_1_led==0) //右邊檢測到黑線
{
rightrun(); //調(diào)用小車右轉(zhuǎn) 函數(shù)
}
}
}
//循跡
#ifndef LED_H
#define LED_H
//定義小車驅(qū)動模塊輸入IO口
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit EN1=P1^4;
sbit EN2=P1^5;
#define Left_1_led P3_6 // 左傳感器
#define M_0_led P1_7 // 火焰?zhèn)鞲衅?
#define Right_1_led P3_5 //右傳感器
#define Left_moto_pwm P1_5 //PWM信號端
#define Right_moto_pwm P1_4 //PWM信號端
#define Left_moto_go {IN1=0,IN2=1;} //左電機(jī)向前走
#define Left_moto_back {IN1=1,IN2=0;} //左邊電機(jī)向后轉(zhuǎn)
#define Left_moto_Stop {EN2=0;} //左邊電機(jī)停轉(zhuǎn)
#define Right_moto_go {IN3=0,IN4=1;} //右邊電機(jī)向前走
#define Right_moto_back {IN3=1,IN4=0;} //右邊電機(jī)向后走
#define Right_moto_Stop {EN1=0;} //右邊電機(jī)停轉(zhuǎn)
unsigned char pwm_val_left =0;//變量定義
unsigned char push_val_left =0;// 左電機(jī)占空比N/20
unsigned char pwm_val_right =0;
unsigned char push_val_right=0;// 右電機(jī)占空比N/20
bit Right_moto_stop=1;
bit Left_moto_stop =1;
unsigned int time=0;
//
//延時函數(shù)
void delay(unsigned int k)
{
unsigned int x,y;
for(x=0;x<k;x++)
for(y=0;y<2000;y++);
}
//
//前速前進(jìn)
void run(void)
{
push_val_left=5; //速度調(diào)節(jié)變量 0-20。。。0最小,20最大
push_val_right=5;
Left_moto_go ; //左電機(jī)往前走
Right_moto_go ; //右電機(jī)往前走
}
//后退函數(shù)
void backrun(void)
{
push_val_left=5; //速度調(diào)節(jié)變量 0-20。。。0最小,20最大
push_val_right=5;
Left_moto_back; //左電機(jī)往前走
Right_moto_back; //右電機(jī)往前走
}
//左轉(zhuǎn)函數(shù)
void leftrun(void)
{
push_val_left=8;
push_val_right=8;
Right_moto_go ; //右電機(jī)往前走
Left_moto_back ; //左電機(jī)后走
}
//右轉(zhuǎn)函數(shù)
void rightrun(void)
{
push_val_left=8;
push_val_right=8;
Left_moto_go ; //左電機(jī)往前走
Right_moto_back ; //右電機(jī)往后走
}
//停止函數(shù)
void stop(void)
{
push_val_left=0;
push_val_right=0;
Right_moto_Stop ; //右電機(jī)
Left_moto_Stop ; //左電機(jī)停止
}
//
/ PWM調(diào)制電機(jī)轉(zhuǎn)速 /
//
/* 左電機(jī)調(diào)速 /
/調(diào)節(jié)push_val_left的值改變電機(jī)轉(zhuǎn)速,占空比 /
void pwm_out_left_moto(void)
{
if(Left_moto_stop)
{
if(pwm_val_left<=push_val_left)
{
Left_moto_pwm=1;
// Left_moto_pwm1=1;
}
else
{
Left_moto_pwm=0;
// Left_moto_pwm1=0;
}
if(pwm_val_left>=20)
pwm_val_left=0;
}
else
{
Left_moto_pwm=0;
// Left_moto_pwm1=0;
}
}
/**************************************************************/
/ 右電機(jī)調(diào)速 */
void pwm_out_right_moto(void)
{
if(Right_moto_stop)
{
if(pwm_val_right<=push_val_right)
{
Right_moto_pwm=1;
// Right_moto_pwm1=1;
}
else
{
Right_moto_pwm=0;
// Right_moto_pwm1=0;
}
if(pwm_val_right>=20)
pwm_val_right=0;
}
else
{
Right_moto_pwm=0;
// Right_moto_pwm1=0;
}
}
/***************************************************/
///TIMER0中斷服務(wù)子函數(shù)產(chǎn)生PWM信號/
void timer0()interrupt 1 using 2
{
TH0=0XFc; //1Ms定時
TL0=0X18;
time++;
pwm_val_left++;
pwm_val_right++;
pwm_out_left_moto();
pwm_out_right_moto();
}
/*********************************************************************/
#endif
//滅火
#ifndef LED_H
#define LED_H
//定義小車驅(qū)動模塊輸入IO口
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit EN1=P1^4;
sbit EN2=P1^5;
//定義火焰?zhèn)鞲衅鱅O口
sbit S=P1^7;
//定義風(fēng)扇驅(qū)動IO口
sbit F=P1^6;
//定義轉(zhuǎn)向舵機(jī)IO口
sbit pwm=P2^7;//PWM信號輸出口 舵機(jī)信號輸出口
sbit TRIG=P2^5;
sbit ECHO=P2^4;
#define Left_1_led P3_6 // 左傳感器
#define Right_1_led P3_5 //右傳感器
#define PWMSD 10 速度調(diào)節(jié)變量 0-20。。。0最小,20最大 如果小于8電機(jī)可能不動
#define Left_moto_pwm P1_4 //PWM信號端
#define Right_moto_pwm P1_5 //PWM信號端
#define Left_moto_go {P1_0=0,P1_1=1;} //左電機(jī)向前走
#define Left_moto_back {P1_0=1,P1_1=0;} //左邊電機(jī)向后轉(zhuǎn)
#define Left_moto_Stop {P1_4=0;} //左邊電機(jī)停轉(zhuǎn)
#define Right_moto_go {P1_2=1,P1_3=0;} //右邊電機(jī)向前走
#define Right_moto_back {P1_2=0,P1_3=1;} //右邊電機(jī)向后走
#define Right_moto_Stop {P1_5=0;} //右邊電機(jī)停轉(zhuǎn)
unsigned char pwm_val_left =0;//變量定義
unsigned char push_val_left =0;// 左電機(jī)占空比N/20
unsigned char pwm_val_right =0;
unsigned char push_val_right=0;// 右電機(jī)占空比N/20
bit Right_moto_stop=1;
bit Left_moto_stop =1;
unsigned int time=0;
//
//延時函數(shù)
void delay(unsigned int k)
{
unsigned int x,y;
for(x=0;x<k;x++)
for(y=0;y<2000;y++);
}
//
//前速前進(jìn)
void run(void)
{
push_val_left=8; //速度調(diào)節(jié)變量 0-20。。。0最小,20最大
push_val_right=8;
Left_moto_go ; //左電機(jī)往前走
Right_moto_go ; //右電機(jī)往前走
}
//后退
void Rearrun(void)
{
push_val_left=PWMSD;
push_val_right=PWMSD;
Left_moto_back ; //左電機(jī)后退
Right_moto_back ; //右電機(jī)后退
}
//左轉(zhuǎn)函數(shù)
void leftrun(void)
{
push_val_left=8;
push_val_right=8;
Right_moto_go ; //右電機(jī)往前走
Left_moto_back ; //左電機(jī)后走
}
//右轉(zhuǎn)函數(shù)
void rightrun(void)
{
push_val_left=8;
push_val_right=8;
Left_moto_go ; //左電機(jī)往前走
Right_moto_back ; //右電機(jī)往后走
}
//停止函數(shù)
void stop(void)
{
push_val_left=0;
push_val_right=0;
Left_moto_Stop ; //
Right_moto_Stop ; //
}
//
/ PWM調(diào)制電機(jī)轉(zhuǎn)速 /
//
/* 左電機(jī)調(diào)速 */
/*調(diào)節(jié)push_val_left的值改變電機(jī)轉(zhuǎn)速,占空比 */
void pwm_out_left_moto(void)
{
if(Left_moto_stop)
{
if(pwm_val_left<=push_val_left)
{
Left_moto_pwm=1;
}
else
{
Left_moto_pwm=0;
}
if(pwm_val_left>=20)
pwm_val_left=0;
}
else
{
Left_moto_pwm=0;
}
}
/*****************************************************************/
/ 右電機(jī)調(diào)速 */
void pwm_out_right_moto(void)
{
if(Right_moto_stop)
{
if(pwm_val_right<=push_val_right)
{
Right_moto_pwm=1;
}
else
{
Right_moto_pwm=0;
}
if(pwm_val_right>=20)
pwm_val_right=0;
}
else
{
Right_moto_pwm=0;
}
}
/***************************************************/
///TIMER0中斷服務(wù)子函數(shù)產(chǎn)生PWM信號/
void timer0()interrupt 1 using 2
{
TH0=0XFc; //1Ms定時
TL0=0X18;
time++;
pwm_val_left++;
pwm_val_right++;
pwm_out_left_moto();
pwm_out_right_moto();
}
/*********************************************************************/
#endif文章來源:http://www.zghlxwxcb.cn/news/detail-842408.html
致 謝
時間悄無聲息的帶我走完了在沈陽城市學(xué)院的四年大學(xué)時光,迎來了最后的時刻,完成最終的考核。我經(jīng)過幾個月堅(jiān)持不懈的努力,完成了這個基于單片機(jī)的滅火機(jī)器人設(shè)計(jì),非常感謝胡海龍老師和于宏波老師對我細(xì)心的指導(dǎo),同時感謝在校期間各位授課老師的教導(dǎo),以及給我的很多實(shí)踐的機(jī)會。在設(shè)計(jì)中遇到過很多的問題,但在老師的幫助下都得到了解決,最困難的不是問題有多難,而是你是否能拼盡全力解決它。
在學(xué)校所學(xué)單片機(jī)、電路及相關(guān)傳感器等知識都可應(yīng)用到實(shí)踐中,幫助解決生活中的諸多相關(guān)問題。它主要采用STC89C52RC單片機(jī)為核心控制,多個傳感器共同組成硬件電路,最后將硬件電路與軟件相結(jié)合,達(dá)到滅火效果,并且可應(yīng)用到實(shí)踐中。人員無法進(jìn)入的高溫、有毒和濃煙等危害環(huán)境中,可以利用滅火機(jī)器人代替人員進(jìn)入火災(zāi)現(xiàn)場完成滅火作業(yè)。它的應(yīng)用將提高撲滅惡性火災(zāi)的實(shí)戰(zhàn)能力,同時可以減少國家財(cái)產(chǎn)損失和滅火救援人員的傷亡。
這個設(shè)計(jì)不僅僅是為了畢業(yè)而完成的一個作品,它真正價值在于給我們生活帶來益處。再次感謝胡海龍老師和于宏波老師對我提供的指導(dǎo),感謝這個階段每個對我提供幫助的人。文章來源地址http://www.zghlxwxcb.cn/news/detail-842408.html
到了這里,關(guān)于基于單片機(jī)的滅火機(jī)器人設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!