智能平衡電動(dòng)小車設(shè)計(jì)報(bào)告
《智能平衡電動(dòng)小車設(shè)計(jì)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《智能平衡電動(dòng)小車設(shè)計(jì)報(bào)告(30頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、2014年廣西大學(xué)生電子設(shè)計(jì)大賽 2014年廣西大學(xué)生電子設(shè)計(jì)大賽 【本科組E題】 智能平衡電動(dòng)小車設(shè)計(jì)報(bào)告 學(xué)校:桂林電子科技大學(xué) 院系:計(jì)算機(jī)科學(xué)與工程學(xué)院 隊(duì)員姓名:黎遠(yuǎn)明,孫翔,安聰穎 實(shí)驗(yàn)地點(diǎn):創(chuàng)新學(xué)院B106 負(fù)責(zé)人:管芳 時(shí)間:2014年8月29日 設(shè)計(jì)摘要: 隨著人
2、工智能技術(shù)、計(jì)算機(jī)技術(shù)、自動(dòng)控制技術(shù)的迅速發(fā)展,智能控制必將迎來它的發(fā)展新時(shí)代。整個(gè)智能小車設(shè)計(jì)主要以STC89C52單片機(jī)為控制核心,使用超聲波模塊檢測距離,采用紅外傳感器控制躲避障礙。小車驅(qū)動(dòng)采用減速直流電機(jī),執(zhí)行采用脈寬調(diào)制(PWM)技術(shù)實(shí)現(xiàn)對(duì)縣級(jí)的精確控制。通過不斷對(duì)單片機(jī)I/O口進(jìn)行掃描來監(jiān)測傳感器的狀態(tài),控制小車循線、轉(zhuǎn)彎、避障等動(dòng)作,使得小車按預(yù)定軌道行駛,并在遇到障礙時(shí)發(fā)出指示并停車的功能。同時(shí),運(yùn)用顯示屏和數(shù)碼管,顯示時(shí)間,路程和電壓。 關(guān)鍵詞: 智能小車,超聲波測距,循線模塊,PWM,聲光指示 Abstract: With the r
3、apid development of artificial intelligence technology, computer technology, automatic control technology, intelligent control will usher in a new era of itsdevelopment.This dissertation discusses mainly on the design of the intelligent car in&
4、#160;STC89C52single-chip processor as the control core.Detection distance using ultrasonic module, using an infrared sensor control to avoid obstacles. Car driven by a DC motor reducer, execution using pulse width modulation (PWM) technology to achieve precise control of the
5、 county's. By constantly on the MCU I / O port for scanning to monitor the state of the sensor, control the car through the line, turning, obstacle avoidance and other actions, making the car traveling at a predetermined orbit, and give directions in the face of obstacles and park features. K
6、ey Word: Intelligence Balancing Electric Car, Ultrasonic Ranging, PWM,Sound and Light Indication 目錄 1 系統(tǒng)方案 1 1.1總體方案設(shè)計(jì)與比較 1 1.2電機(jī)的比較與選擇 2 1.3循跡模塊的選擇與比較 2 1.31循跡模塊選擇 2 1.32尋跡傳感器布局 3 1.4避障測距模塊 3 2 理論分析與計(jì)算 4 2.1信號(hào)檢測與控制 4 2.2節(jié)能 4 2.3直流電機(jī)調(diào)速原理 4 2.4 PWM基本原理
7、; 5 2.5循跡模塊算法分析(5路) 6 3電路與程序設(shè)計(jì) 7 3.1單片機(jī)控制系統(tǒng) 7 3.2電源模塊設(shè)計(jì) 8 3.3驅(qū)動(dòng)模塊設(shè)計(jì) 9 3.4循跡模塊設(shè)計(jì)及程序流程 9 3.5超聲波測距模塊 10 3.6程序大致流程 11 4結(jié)果分析 12 4.1調(diào)試儀器儀表 12 4.2系統(tǒng)測試 12 4.3調(diào)試過程及分析 12 4.4調(diào)整與改正 13 附錄1;程序源代碼 14 附錄2:元件清單 26 1 系統(tǒng)方案 整個(gè)電路系統(tǒng)采用模塊化的設(shè)計(jì)方案,有尋跡檢測、避障檢測、超聲波距離檢測、驅(qū)動(dòng)模塊等多個(gè)模塊。首先利用檢測模塊對(duì)路面信
8、號(hào)進(jìn)行檢測,經(jīng)過比較器處理之后,送給軟件控制模塊進(jìn)行實(shí)時(shí)控制,輸出相應(yīng)的信號(hào)給驅(qū)動(dòng)芯片驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),從而控制小車沿著引導(dǎo)黑線行駛,同時(shí),超聲波模塊進(jìn)行測距, 小車用數(shù)碼管,檢測運(yùn)作時(shí)的小車電壓。在遇到硬幣時(shí),通過避障模塊進(jìn)行檢測,并發(fā)出聲光指示,控制小車停車5秒,后繼續(xù)按照引導(dǎo)黑線走完全程。 1.1總體方案設(shè)計(jì)與比較 方案一:采用STC89C52單片機(jī)作為整機(jī)的控制單元。 以STC89C52單片機(jī)為核心的控制電路,運(yùn)用循跡模塊、避障檢測、超聲波距離檢測、驅(qū)動(dòng)模塊等多個(gè)模塊,實(shí)現(xiàn)小車在行駛中轉(zhuǎn)彎、蔽障、測距等問題。同時(shí)利用1620和數(shù)碼管,顯示時(shí)間,路程,以及電壓。并將測量數(shù)據(jù)傳送至單
9、片機(jī)進(jìn)行處理,然后由單片機(jī)根據(jù)所檢測的各種數(shù)據(jù)實(shí)現(xiàn)尋線,停車,聲光指示等智能化控制,以及各種數(shù)據(jù)顯示。 方案二:選用一片CPLD作為系統(tǒng)的核心部件,實(shí)現(xiàn)控制與處理的功能。 CPLD復(fù)雜可編程邏輯器件,是從PAL和GAL器件發(fā)展出來的器件,相對(duì)而言規(guī)模大,結(jié)構(gòu)復(fù)雜,屬于大規(guī)模集成電路范圍,是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。具有速度快、編程容易、資源豐富、開發(fā)周期短等優(yōu)點(diǎn),可利用VHDL語言進(jìn)行編寫開發(fā)。但CPLD在控制上較單片機(jī)有較大的劣勢。同時(shí),CPLD的處理速度非??欤≤嚨男羞M(jìn)速度不可能太高,若采用該方案,必將在控制上遇到很多不必要增加的難題。
10、 綜合考慮了傳感器、電機(jī)的驅(qū)動(dòng)等諸多因素,方案一簡潔、靈活、可擴(kuò)展性好,并且我們對(duì)單片機(jī)掌握的比較好,且能達(dá)到題目的設(shè)計(jì)要求,因此本設(shè)計(jì)采用方案一來實(shí)現(xiàn),充分利用STC89C52的單片機(jī)資源。 1.2電機(jī)的比較與選擇 方案一:采用步進(jìn)電機(jī) 步進(jìn)電機(jī)的一個(gè)顯著特點(diǎn)就是具有快速啟停能力,如果負(fù)荷不超過步進(jìn)電機(jī)所能提供的動(dòng)態(tài)轉(zhuǎn)矩值,就能夠立即使步進(jìn)電機(jī)啟動(dòng)或反轉(zhuǎn)。另一個(gè)顯著特點(diǎn)是轉(zhuǎn)換精度高,正轉(zhuǎn)反轉(zhuǎn)控制靈活。 方案二:采用直流伺服電機(jī) 直流伺服電機(jī)具有優(yōu)良的速度控制性能,它輸出較 大的轉(zhuǎn)矩,直接拖動(dòng)負(fù)載運(yùn)行,同時(shí)他又受控制信號(hào)的直接控制進(jìn)行轉(zhuǎn)速調(diào)節(jié),在很多方面具有優(yōu)越性,但是直
11、流伺機(jī)電機(jī)價(jià)格昂貴,且不易購買 方案三:采用減速直流電機(jī)。 直流電動(dòng)機(jī)具有優(yōu)良的調(diào)速特性,調(diào)速平滑、方便,調(diào)整范圍廣;過載能力強(qiáng),能承受頻繁的沖擊負(fù)載,可實(shí)現(xiàn)頻繁的無級(jí)快速啟動(dòng)、制動(dòng)和反轉(zhuǎn);能滿足生產(chǎn)過程自動(dòng)化系統(tǒng)各種不同的特殊運(yùn)行要求。 由于減速直流電機(jī)更易于購買,并且電路相對(duì)簡單,并能完成所需的功能,故采用減速直流電機(jī)作為動(dòng)力源。 1.3循跡模塊的選擇與比較 1.31循跡模塊選擇 方案一:采用發(fā)光二極管+光敏電阻 易受到外界光源的干擾,有時(shí)甚至檢測不到黑線,主要是因?yàn)榭梢姽獾姆瓷湫Ч乇淼钠教钩潭取⒌乇聿牧系姆瓷淝闆r均對(duì)檢測效果產(chǎn)生直接影響??朔巳秉c(diǎn)的方法:
12、采用超高亮度的發(fā)光二極管能降低一定的干擾,但這又會(huì)增加檢測系統(tǒng)的功耗。 方案二:脈沖調(diào)制的反射式紅外發(fā)射接收器。 由于采用帶有交流分量的調(diào)制信號(hào),則可大幅度減少外界的干擾;此外紅外發(fā)射接收管的工作電流取決于平均電流,如果采用占空比小的調(diào)制信號(hào),在平均電流不變的情況下,瞬時(shí)電流很大(50~100mA)(ST-188允許的最大輸入電流為50mA),則大大提高了信噪比。此種測試方案反應(yīng)速度大約在5us。 通過比較,方案二更加有優(yōu)勢,故選擇紅外發(fā)射接收器制作循跡模塊。 1.32尋跡傳感器布局
13、 方案一:一字形布局 反射式光電傳感器在小車前方一字形簡單排布。在一字形中傳感器的間隔有均勻布局和非均勻布局兩種方式,均勻布局不利于彎道信息的準(zhǔn)確采集,通常采取的是非均勻布局??紤]到弧度信息采集的連貫性,非均勻布局的理論依據(jù)是等角度分布原則,即先確定一合適的定點(diǎn),從頂點(diǎn)依次等角度畫射線,射線與傳感器水平線相交的位置即為傳感器的位置。這種方案信息檢測相對(duì)連貫,準(zhǔn)確,使控制程序算法簡單,小車運(yùn)行連貫,穩(wěn)定。 方案二:M形布局。傳感器呈M形排布。這種方案的優(yōu)點(diǎn)在于拓寬了邊沿傳感器的檢測范圍,更適合于小車快速行進(jìn)中的彎道檢測,但相對(duì)一字形布局來說,M形布局不利于信息檢
14、測的穩(wěn)定,易于產(chǎn)生振蕩,不利于小車行駛的穩(wěn)定。 由于本次尋跡實(shí)驗(yàn)要求比較簡單,考慮到方案的可行性并且保持小車運(yùn)行穩(wěn)定,故此次采用方案一來進(jìn)行傳感器的布局。 1.4避障測距模塊 方案一: 超聲波測距。超聲波傳感器是利用超聲波的特性研制而成的傳感器。超聲波是一種振動(dòng)頻率高于聲波的機(jī)械波,由換能晶片在電壓的激勵(lì)下發(fā)生振動(dòng)產(chǎn)生的,它具有頻率高、波長短、繞射現(xiàn)象小,特別是方向性好、能夠成為射線而定向傳播等特點(diǎn)。 方案二:視覺測距。視覺傳感器具有從一整幅圖像捕獲光線的數(shù)以千計(jì)的像素。在捕獲圖像之后,視覺傳感器將其與內(nèi)存中存儲(chǔ)的基準(zhǔn)圖像進(jìn)行比較,以做出分析。視覺
15、傳感器的優(yōu)點(diǎn)是易于多目標(biāo)測量和分類,分辨率好。但它不能直接測量距離,算法復(fù)雜,處理速度慢。 由于超聲波傳感器價(jià)格合理,功能齊全。而視覺傳感器價(jià)格昂貴,且算法復(fù)雜,不易于控制,故選擇超聲波模塊。 2 理論分析與計(jì)算 2.1信號(hào)檢測與控制 本系統(tǒng)采用紅外檢測電路,當(dāng)系統(tǒng)檢測到外側(cè)的黑線時(shí),系統(tǒng)通過單片機(jī)向電機(jī)發(fā)送控制指令,從而使小車左側(cè)輪子停轉(zhuǎn),右側(cè)輪子正常運(yùn)轉(zhuǎn),以實(shí)現(xiàn)小車左轉(zhuǎn)的目的。同理,當(dāng)系統(tǒng)檢測到內(nèi)測黑線時(shí),小車相應(yīng)會(huì)右轉(zhuǎn),這樣就能實(shí)現(xiàn)小車沿著黑線行駛。同時(shí)紅外對(duì)管檢測路面信息,能控制小車轉(zhuǎn)彎和防止小車出界。
16、并且用超聲波檢測前方障礙,可防止與障礙物相撞。 2.2節(jié)能 本車采用可充電電池驅(qū)動(dòng)小車行駛,比一次性電池更加節(jié)能環(huán)保。開關(guān)電源調(diào)節(jié)器件以完全導(dǎo)通或關(guān)斷方式工作。因此,開關(guān)電源功耗極低,比線性電源更加節(jié)能。 2.3直流電機(jī)調(diào)速原理 依據(jù)直流電動(dòng)機(jī)轉(zhuǎn)速公式:n=(U-IR)/Kφ 。其中U為電樞端電壓,I為電樞電流,R為電樞電路總電阻,φ為磁通量,K為電動(dòng)機(jī)結(jié)構(gòu)參數(shù)。 由公式可以看出,可以通過改變勵(lì)磁磁通量φ、電樞電路總電阻R、電樞端電壓U三種方法來調(diào)節(jié)轉(zhuǎn)速。 (1)改變勵(lì)磁磁通量主要是針對(duì)勵(lì)磁式直
17、流電機(jī)(定子上也為繞組,通電產(chǎn)生磁場,相當(dāng)于電磁鐵),改變勵(lì)磁電流進(jìn)而改勵(lì)磁磁通量,而我們用的直流電極是永磁式直流電機(jī)(定子為永久磁鐵),所以不能通過改變勵(lì)磁磁通量的方法改變速度。 (2)通過改變電樞電路的總電阻R來調(diào)速,由n=(U-IR)/Kφ可知,當(dāng)R變大時(shí),n變小。 (3)通過改變電樞端電壓U來調(diào)速,調(diào)節(jié)電樞端電壓可以實(shí)現(xiàn)無級(jí)調(diào)速,是應(yīng)用范圍最為廣泛的調(diào)速方法。 2.4 PWM基本原理 采樣控制理論中有一個(gè)重要結(jié)論:沖量相等而形狀不同的窄脈沖加在具有慣性的環(huán)節(jié)上時(shí),其效果基本相同。PWM 控制技術(shù)就是以該結(jié)論為
18、理論基礎(chǔ),對(duì)半導(dǎo)體開關(guān)器件的導(dǎo)通和關(guān)斷進(jìn)行控制,使輸出端得到一系列幅值相等而寬度不相等的脈沖,用這些脈沖來代替正弦波或其他所需要的波形。按一定的規(guī)則對(duì)各脈沖的寬度進(jìn)行調(diào)制,既可改變逆變電路輸出電壓的大小,也可改變輸出頻率。通俗的說PWM 是采用數(shù)字量對(duì)模擬量進(jìn)行合成的方法。 由于電壓UAB的正、負(fù)變化,使電流波形存在兩種情況: (1)電動(dòng)機(jī)負(fù)載較重(如id1 ),這時(shí)平均負(fù)載電流大,在續(xù)流階段電流仍維持正方向,電機(jī)始終工作在第Ⅰ象限的電動(dòng)狀態(tài); (2)電動(dòng)機(jī)負(fù)載較輕(如id2 ),平均電流小,在續(xù)
19、流階段電流很快衰減到零,于是VT2和VT3集一射極兩端失去反壓,在負(fù)的電源電壓(-Us)和電樞反電動(dòng)勢的共同作用下導(dǎo)通,電樞電流反向,沿回路3流通,電動(dòng)機(jī)處于制動(dòng)狀態(tài)。與此相仿,在0≤t<ton期間,當(dāng)負(fù)載輕時(shí),電流也有一次倒向。 雙極式可逆PWM變換器電樞平均端電壓用公式表示為: 仍以ρ=Ud/Us來定義PWM電壓的占空比,則ρ與ton的關(guān)系為 : 調(diào)速時(shí),ρ的變化范圍為—l≤ρ≤1 ; 當(dāng)ρ為正值時(shí),電動(dòng)機(jī)正轉(zhuǎn); ρ為負(fù)值時(shí),電動(dòng)機(jī)反轉(zhuǎn);ρ=0時(shí),電
20、動(dòng)機(jī)停止。 直流脈寬調(diào)速系統(tǒng)中包括一個(gè)具有繼電特性的脈寬調(diào)制變換器,它在本質(zhì)上是一個(gè)開關(guān)控制系統(tǒng)。 P1^0 P1^1 P1^2 P1^3 P1^4 2.5循跡模塊算法分析(5路) 左電機(jī) 右電機(jī) P2^0 P2^1 1轉(zhuǎn) 1轉(zhuǎn) 0不轉(zhuǎn) 0不轉(zhuǎn) P1^0 P1^1 P1^2 P1^3 P1^4 方向 0 0 0 0 0 前進(jìn) — 0 1 1 — 左轉(zhuǎn) — 1 0 1 — 前進(jìn) — 0 0 1 — 左轉(zhuǎn) —
21、 1 1 0 — 右轉(zhuǎn) — 1 0 0 — 右轉(zhuǎn) — — — — 左轉(zhuǎn) — — — — 0 右轉(zhuǎn) 3電路與程序設(shè)計(jì) 3.1單片機(jī)控制系統(tǒng) 89S52是一種低功耗、高性能CMOS 8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。 采用此芯片與復(fù)位電路,晶振回路即可構(gòu)成單片機(jī)控制系統(tǒng),電路圖如圖所示: 程序流程圖如下: 3.2電源模塊設(shè)計(jì) 電源模模塊,由3部分組成,升壓模塊,穩(wěn)壓模塊,和降壓模塊,利用LM2587,LM2596以及LM2576芯片,
22、達(dá)到三合一,節(jié)約了成本,同時(shí)提高了模塊的性能。 3.3驅(qū)動(dòng)模塊設(shè)計(jì) 采用內(nèi)部集成H橋式芯片每一組PWM波用來控制一個(gè)電機(jī)的速度,而另外兩個(gè)I/O口可以控制電機(jī)的正反轉(zhuǎn),控制比較簡單,電路也很簡單,一個(gè)芯片內(nèi)包含有8個(gè)功率管,這樣簡化了電路的復(fù)雜性。 3.4循跡模塊設(shè)計(jì)及程序流程 循跡模塊是智能車系統(tǒng)的關(guān)鍵模塊之一,其主要功能是準(zhǔn)確,快速,超前地采集路面信息,把它轉(zhuǎn)變成電信號(hào),傳送到單片機(jī)中處理。 原理: 紅外探測法,即利用紅外線在不同顏色的物體表面具有不同的反射強(qiáng)度的特點(diǎn),在小車行駛過程中不斷地向地面發(fā)射紅外光,當(dāng)紅外光遇到白色紙質(zhì)地板時(shí)發(fā)
23、生漫反 射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,小車上的接收管接收不到紅外光。單片機(jī)就是否收到反射回來的紅外光為依據(jù)來確定黑線的 位置和小車的行走路線。 程序設(shè)計(jì)流程圖: 循跡避障程序入口 讀紅外傳感器狀態(tài) 左轉(zhuǎn) 右轉(zhuǎn) 前進(jìn) 依據(jù)狀態(tài)選擇小車運(yùn)行方式 3.5超聲波測距模塊 車測距上我們選擇了HC-SR04超聲波模塊傳感,HC-SR04可提供2cm-400cm的非接觸式距離感測功能,模塊包括超聲波發(fā)射器、接收器與控制電路。超聲波是指頻率高于20KHz的機(jī)械波。超聲波從發(fā)射
24、到遇到障礙物返回所經(jīng)歷的時(shí)間,再乘以超聲波的速度就得到二倍的聲源與障礙物之間的距離。 此超聲波測距模塊的工作原理:接收回路為諧振回路,將收到的微弱回波信號(hào)檢出,送信號(hào)放大電路放大,收到產(chǎn)生脈沖輸出送單片機(jī)中斷端,單片機(jī)收到中斷信號(hào)后停止計(jì)時(shí),計(jì)算出距離值,保存等待讀出或直接經(jīng)UART 送出。接收過程中,單片機(jī)定時(shí)控制放大電路的增益,逐漸提高,以適應(yīng)距離越來越弱的回波信號(hào)。 超聲測距傳感器的核心功能是測量距離,通過發(fā)射器發(fā)射超聲波,超聲波遇到物體反射回來被接收器接收。傳感器將所測量的量轉(zhuǎn)換成數(shù)字信息,即將非電量轉(zhuǎn)換為便于測量的電量,這樣單片機(jī)就能計(jì)算出超聲波從發(fā)射到接受用
25、的時(shí)間,測量時(shí)間*聲速/2=距離。車測距上我們選擇了HC-SR04超聲波模塊傳感,HC-SR04可提供2cm-400cm的非接觸式距離感測功能,模塊包括超聲波發(fā)射器、接收器與控制電路。超聲波是指頻率高于20KHz的機(jī)械波。超聲波從發(fā)射到遇到障礙物返回所經(jīng)歷的時(shí)間,再乘以超聲波的速度就得到二倍的聲源與障礙物之間的距離。 3.6程序大致流程 此設(shè)計(jì)由尋跡檢測、避障檢測、超聲波距離檢測、驅(qū)動(dòng)模塊等多個(gè)模塊組合而成。 89S52 循跡程序 硬幣檢測 聲光控制 顯示路程時(shí)間 停車程序 4結(jié)果分析 4.1調(diào)試儀器儀
26、表 設(shè)計(jì)及測試中所用的儀器及工具主要有:秒表、數(shù)字萬用表、信號(hào)發(fā)生器、示波器、MCS51仿真機(jī)、直流穩(wěn)壓電源等 電源:可充電電池。 常用儀表:數(shù)字萬用表、AVR Studio。 4.2系統(tǒng)測試 對(duì)小車的整體的調(diào)試按照模塊來進(jìn)行,分為以下幾個(gè)步驟: ①首先測試電源的工作情況,各個(gè)模塊能否得到良好供電。 ②然后檢查單片機(jī)能否正常的燒寫程序和工作。 ③紅外對(duì)管安裝完成后根據(jù)測試數(shù)據(jù)調(diào)試程序。 ④測試兩前輪電機(jī)的工作情況,并試驗(yàn)電機(jī)的驅(qū)動(dòng)能力。 ⑤讓小車
27、在黑色軌道上初步循跡運(yùn)行。 ⑥反復(fù)測試各參數(shù)變化對(duì)小車的影響,找出最有效的配置。 ⑦對(duì)小車運(yùn)行過程中各種可能出現(xiàn)的情況測試,發(fā)現(xiàn)問題,找出解決方法。 ⑧整理數(shù)據(jù),優(yōu)化程序設(shè)計(jì)。 經(jīng)過多次調(diào)試,本系統(tǒng)能夠基本滿足設(shè)計(jì)要求,能夠較快較平穩(wěn)的沿路面行駛。 4.3調(diào)試過程及分析 由于各模塊往單片機(jī)發(fā)送的數(shù)據(jù)都是數(shù)字信號(hào),在對(duì)各模塊進(jìn)行檢測的時(shí)候,用萬用表對(duì)輸出信號(hào)進(jìn)行檢測,觀測是否輸出相應(yīng)的電壓變化即檢測出各模塊的工作狀態(tài)。 在小車調(diào)試完成后我們用萬用表對(duì)小車的整體完成情況進(jìn)行測試,根據(jù)程序設(shè)計(jì)流程圖可以看出本系統(tǒng)用一套程序就可以完成基本部分和
28、發(fā)揮部分的各項(xiàng)任務(wù),在測試時(shí),我們對(duì)小車分別行使一圈用時(shí)情況和和小車上坡時(shí)的狀態(tài)進(jìn)行記錄。 測試次數(shù) 小車行駛一圈的秒數(shù)(S) 是否超出跑道 遇到硬幣時(shí),是否聲光指示,并停車 是否能 爬上坡 1 35 是 是 否 2 33 是 否 否 3 32 否 否 是 4 30 否 是 是 4.4調(diào)整與改正 在設(shè)計(jì)的過程中發(fā)現(xiàn)了自身知識(shí)的不足,也發(fā)現(xiàn)我們必須具備專業(yè)基礎(chǔ)知識(shí)才能成功的設(shè)計(jì)出一件合格的東西。這次課程設(shè)計(jì)收獲很多,體會(huì)也很深刻,并且對(duì)我們所學(xué)的東西也產(chǎn)生了濃厚的興趣。在設(shè)計(jì)過程中,也學(xué)會(huì)了很多新的東西,如對(duì)一些初
29、次使用的模塊的認(rèn)識(shí)與掌握。當(dāng)然最重要的是學(xué)到了關(guān)于基本電子設(shè)計(jì)的一些方法,同時(shí)也加深了對(duì)一些常用的電子元件的理解以及其基本用法的掌握。 通過多次調(diào)試,發(fā)現(xiàn)小車有以下幾方面的問題及因素影響: (1) 程序邏輯方面不夠嚴(yán)謹(jǐn),導(dǎo)致在行駛過程中不按預(yù)期的路線去行駛。究其原因,一方面由于電路自身缺陷導(dǎo)致程序有誤,另一方面由于C語言掌握不夠,需要加強(qiáng)。 (2) 小車車身前重后輕難以上坡 針對(duì)以上問題,改進(jìn)方案如下: (1) 解決方案:先對(duì)程序進(jìn)行軟件調(diào)試,進(jìn)行單步運(yùn)行,軟件調(diào)試成功在進(jìn)行硬件調(diào)試,最終實(shí)現(xiàn)預(yù)期要求 (2)
30、加重小車前身的重量,及利用軟件控制電機(jī)有足夠的速度沖上上坡。 附錄1;程序源代碼 #include<reg52.h> #include"delay.h" #define uint unsigned int #define uchar unsigned char sbit beef=P1^5;//蜂鳴器和燈 sbit ena=P2^0; //左使能端 sbit enb=P2^1; //右使能端 sbit tan1=P1^0; //探頭1 sbit tan2=P1^1; //探頭2 sbit tan3=P1^2; //探頭3 sbi
31、t tan4=P1^3; //探頭4 sbit tan5=P1^4; //探頭5 sbit LCD_RST=P2^2 ;//復(fù)位,0復(fù)位; sbit LCD_CE=P2^3; // 片選,芯片使能, (片選為零時(shí),開使能端) sbit LCD_DC=P2^4; // 1寫數(shù)據(jù),0寫命令; sbit SDIN=P2^5; //串行數(shù)據(jù)傳輸端; sbit SCLK=P2^6; //串行時(shí)鐘輸入端; sbit Trig=P0^0; uint secondsg=0,secondss=0,secondsb=0; //時(shí)間顯示 uint dis=0,count3=0
32、; //距離 uchar tt=0; //定時(shí)器里面的 uint us=0;//10us uint ms=0;//1ms uint s;//100ms uchar count1=0,count2=0; //計(jì)數(shù)次數(shù) uchar lspeed=0,rspeed=0; //左右輪速度 uchar j=0; //全部檢測到黑線的次數(shù) void stop(); void HC_init() { TMOD=0x09; TR0=1; TH0=0;TL0=0; }
33、 uint HC_jisuan() { uint dist,timer; timer=TH0; timer<<=8; timer=timer|TL0; dist=timer/53; //晶振11.0592MHz //距離cm=微秒us/58 return dist; //1個(gè)機(jī)器周期是12個(gè)時(shí)鐘周期 timer*12/(58*11.0592)=timer/53 } void HC_run() { uint tempH=0x00,tempL=0x00; TH0=0;TL0=0;
34、 Trig=0; Trig=1; delay_1ms(1); Trig=0; while((TH0-tempH!=0||TL0-tempL!=0)||(TH0==0&&TL0==0)) { tempH=TH0; tempL=TL0; } delay_1ms(1); } code unsigned char font6x8[][6] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x
35、00 }, // ! { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // " { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // % { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // & { 0x00, 0x00,
36、 0x05, 0x03, 0x00, 0x00 }, // ' { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // * { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // + { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // ,
37、 { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // - { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // . { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // / { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1 { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46
38、}, // 2 { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3 { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4 { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6 { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 { 0x00, 0x36, 0x49, 0x49,
39、 0x49, 0x36 }, // 8 { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9 { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // : { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // < { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // = { 0x00, 0x
40、00, 0x41, 0x22, 0x14, 0x08 }, // > { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @ { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
41、 { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H { 0x00, 0x00, 0x4
42、1, 0x7F, 0x41, 0x00 }, // I { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N { 0x0
43、0, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, //
44、T { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y { 0x00, 0x61, 0x51, 0x49, 0x45, 0
45、x43 }, // Z { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [ { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55 { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ] { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ { 0x00, 0x00, 0x01,
46、0x02, 0x04, 0x00 }, // ' { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e { 0x
47、00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, //
48、 k { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p { 0x00, 0x18, 0x24, 0x24, 0x18,
49、0xFC }, // q { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v { 0x00, 0x3C, 0x40,
50、0x30, 0x40, 0x3C }, // w { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 } // horiz lines }; /*************************************************
51、********** 函數(shù)名稱:LCD_write_byte 函數(shù)功能:模擬SPI接口時(shí)序?qū)憯?shù)據(jù)/命令LCD 入口參數(shù):data :寫入的數(shù)據(jù); command :寫數(shù)據(jù)/命令選擇; 出口參數(shù):無 備 注: ***********************************************************/ void LCD_write_byte(unsigned char dat, unsigned char command) { unsigned char i; LCD_CE = 0;
52、 //5110片選有效,允許輸入數(shù)據(jù) if (command == 0) //寫命令 LCD_DC = 0; else LCD_DC = 1; //寫數(shù)據(jù) for(i=0;i<8;i++) //傳送8bit數(shù)據(jù) { if(dat&0x80) SDIN = 1; else SDIN = 0; SCLK = 0; dat = dat << 1; SCLK = 1; }
53、 LCD_CE = 1; //禁止5110 } /********************** 清屏函數(shù) ***********************/ void LCD_clear() { unsigned int i; LCD_write_byte(0x0c, 0); LCD_write_byte(0x80, 0); for (i=0; i<504; i++) LCD_write_byte(0x00, 1); } /******************
54、***************************************** 函數(shù)名稱:LCD_init 函數(shù)功能:5110初始化 入口參數(shù):無 出口參數(shù):無 備 注: ***********************************************************/ void LCD_init(void) { LCD_RST=0; delay_1ms(10); LCD_RST=1; LCD_write_byte(0x21, 0); // 使用擴(kuò)展命令設(shè)置LCD模式 LCD_write_byte
55、(0xc6, 0); // 設(shè)置液晶偏置電壓 LCD_write_byte(0x06, 0); // 溫度校正 LCD_write_byte(0x13, 0); // 1:48 LCD_write_byte(0x20, 0); // 使用基本命令,V=0,水平尋址 LCD_clear(); // 清屏 LCD_write_byte(0x0c, 0); // 設(shè)定顯示模式,正常顯示 LCD_CE = 0; // 關(guān)閉LCD } /*********************************
56、************************** 函數(shù)名稱:LCD_set_XY 函數(shù)功能:設(shè)置LCD坐標(biāo)函數(shù) 入口參數(shù):X :0-83 Y :0-5 出口參數(shù):無 備 注: ***********************************************************/ void LCD_set_XY(unsigned char X, unsigned char Y) { LCD_write_byte(0x40 | Y, 0); // column LCD_write
57、_byte(0x80 | X, 0); // row } /*********************************************************** 函數(shù)名稱:LCD_write_char 函數(shù)功能:顯示英文字符 入口參數(shù):c : 顯示的字符 出口參數(shù):無 備 注: ***********************************************************/ void LCD_write_char(unsigned char c) { unsigned char line;
58、 c -= 32; //數(shù)組的行號(hào) for (line=0; line<6; line++) LCD_write_byte(font6x8[c][line], 1); } /********************************************************** 函數(shù)名稱:LCD_write_english_string 函數(shù)功能:顯示英文字符串 入口參數(shù):*s: 顯示的字符串 出口參數(shù):無 備 注: ***************************
59、********************************/ void LCD_write_english_string(unsigned char X,unsigned char Y,char *s ) { LCD_set_XY(X,Y); while (*s) { LCD_write_char(*s); s++; } } void LCD_write_number(unsigned char X,unsigned char Y,unsigned char c) { unsigned char line
60、; LCD_set_XY(X,Y); c -= 32; //數(shù)組的行號(hào) for (line=0; line<6; line++) LCD_write_byte(font6x8[c][line], 1); } void timeshow() { LCD_write_english_string(0,1,"Time"); LCD_write_number(42,1,secondsg+0x30); //時(shí)間個(gè)位秒鐘 LCD_write_n
61、umber(36,1,secondss+0x30); //時(shí)間十位秒鐘 LCD_write_number(30,1,secondsb+0x30); //時(shí)間十位秒鐘 } void disshow() { int disq,disb,diss,disg; dis=(count1/35)*15; disq=dis/1000; disb=(dis/100)%10; diss=(dis/10)%10; disg=(dis%10); LCD_write_english_string(0,2,"Distance"); LCD_w
62、rite_number(54,2,disq+0x30); LCD_write_number(60,2,disb+0x30); LCD_write_number(66,2,diss+0x30); LCD_write_number(72,2,disg+0x30); } /*使能端初始化函數(shù)*/ void initen() { ena=1; enb=1; } /*定時(shí)器0初始化函數(shù)*/ void init_time0() { TMOD=0x01;//GATE=0,定時(shí)模式,方式1 TH0=(65536-10)/256;//裝初值 TL0=(655
63、36-10)%256; EA=1;//打開外部中斷總開關(guān) ET0=1;//選擇定時(shí)器0 TR0=1;//打開定時(shí)器0的開關(guān) } /*定時(shí)器0中斷服務(wù)函數(shù)*/ void time0() interrupt 1 { TR0=0;//關(guān)閉定時(shí)器 us++; TH0=(65536-10)/256;//裝初值 TL0=(65536-10)%256; TR0=1;//打開定時(shí)器 count1++; count2++; if(count1<=lspeed) ena=1; else ena=0; if(count2<=rspe
64、ed) enb=1; else enb=0; if(count1==100) count1=0; if(count2==100) count2=0; } void sum() { if(us==100) { us=0; ms++; } if(ms==100) { ms=0; s++; } if(s==10) { s=0; tt++; } if(tt==20) { tt=0; secondsg++; if(secondsg>9)
65、 { secondss++; secondsg=0; if(secondss>9) { secondsb++; secondss=0; } } } } /*外部中斷0初始化函數(shù)*/ void init_zd0() { EA=1;//打開中斷總開關(guān) EX0=1;//選擇外部中斷0 IT0=1;//下降沿觸發(fā) } void int0() interrupt 0 { stop(); beef=0; delay_1ms(1500); delay_1ms(25
66、00); delay_1ms(2500); beef=1; delay_1ms(2500); delay_1ms(2500); delay_1ms(2500); } /*前進(jìn)函數(shù)*/ void go(uchar l,uchar r) //左右輪速度 { lspeed=l; rspeed=r; ena=1; enb=1; } /*停車函數(shù)*/ void stop() { ena=0; enb=0; } /*紅外檢測函數(shù)*/ uchar hongwai() { uchar i=0; if(tan1==0&&
67、tan2==0&&tan3==0&&tan4==0&&tan5==0) { i=0; j++; } if(tan2==0&&tan3==1&&tan4==1) i=1; if(tan2==1&&tan3==0&&tan4==1) i=2; if(tan2==0&&tan3==0&&tan4==1) i=3; if(tan2==1&&tan3==1&&t
68、an4==0) i=4; if(tan2==0&&tan3==1&&tan4==0) i=5; if(tan2==1&&tan3==0&&tan4==0) i=6; if(tan1==0) i=7; if(tan5==0) i=8; return i; } /*尋線函數(shù)*/ void xunxian(uchar i) { if(i==0) go(40,40); if(i==1) go(20,40); if(i==2) go(40,40);
69、 if(i==3) go(30,40); if(i==4) go(40,20); if(i==5) go(40,40); if(i==6) go(40,30); if(i==7) go(10,60); if(i==8) go(60,10); } void main() { uchar a=0,b=0;//循環(huán)次數(shù) 與傳值變量 initen(); init_time0(); init_zd0(); LCD_init(); //5110初始化 LCD_clear(); //5110清屏 beef=1; while(1) {
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案