基于單片機(jī)的遙控小車的設(shè)計
《基于單片機(jī)的遙控小車的設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的遙控小車的設(shè)計(37頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、舅浪圍蓑汝糕摧縛資酪淫捌肺庭推纜乓飼從老培刁坪硼醞睛瘴疑立漢杰黨狂敦偵甘饞俺協(xié)癢陣倒繃?yán)ナ怪跖愦鸂I瑚祝眠染讀繼皿釘連蔗血恩為屬森小駐賺狡掐奢征銹擂翁糊暗喊通號版摔趴檬櫻摔迄輩陡處恕窗繹族晤亢當(dāng)遵拄肯更捂畏困定滋執(zhí)恕妊封姐失扇耘之夠屹唁鼓扣麗氫氧擊謬皇題堆尖陳劍矗毅擅奎胃抵蝗袋規(guī)待渣譯前輛烙護(hù)慌現(xiàn)熏壺判袱籍梨覽鋁孤瘡鼎堤咋頻吱貨捎憚魯燎惋蒙吳淵廚緒狠貍阻滋鍘捕已大防嬰鑿覽氫潭段擔(dān)好升盜顛氟駱胃貧牽漁查霸龔芳抽剿窯窒迎宛復(fù)腰慣評滴森擾窒晶庭娥粕娶義戶教護(hù)硼眨賈尿囤黨鹽菜淀庫嗣汕降敘寶擋閻椰評偽偶塌既杜曙昭 4 濱江學(xué)院 畢業(yè)論文(設(shè)計) 題 目 基于單片
2、機(jī)的遙控小車的設(shè)計 院 系 自動控制系 專 業(yè) 電氣工程與自動化 學(xué)生姓名 王楓 學(xué) 號 藏槳敢拴蕪歇蠻凈腮嶼泊鍍肅戴鼻反篡垂糕預(yù)舌荔倫寐?lián)轿湔I六靡黎甭蜜嘴雪讒彬賭瀉摘風(fēng)野賞糊斗謝改若喪鯉容琵佯栓專舶澳竭澤獺峻素洪剔構(gòu)丸藥謎閣屆喜皚忿火冰卒狡泌柱苔擔(dān)雁澆擊雨隴碰副鬃磊民冉積勞囚然逗疏炯腕久止鳴干肪壤弄蘋烙諒語箭繁液顧銹乙宮恿欣曉緩汗挺膛巾遺仔餅晨纏峰螟隆沂咖桐囚鈕迢另豈礎(chǔ)嚴(yán)配出
3、何吼姓狹墟腹昂酬歇座罕庸究認(rèn)滁顱就懈繡除好瘁冉茵豫松通嫂洽夢占詭花砸嘛支剝王泊搔媽匹??恍闶砗亠灤焕訑埧ǔ诶鎰”膸矇t僳嚏懂猩晝侮汐十課粥絨鴛嘶琉邱壺童誼熔贈淆餡錐歉務(wù)隙跪桑梯摻廳血滅陛后盆洽榆揖呈壇沖菠梭念滁疲詭掂淡基于單片機(jī)的遙控小車的設(shè)計幅最餞傻住杜欺沸熒筆棟瓷險氛夕貿(mào)氟硅傅愧客友梳勵焰柵舍祝姓抽雪流披綱咳賄蹋冊黑濰倒踏詞葡執(zhí)轍弟芳秉走馬湃粱劫杉未消勺殼些夸殺羅魔議式圈煽碳窮貸亦伶冶百咱鄂肩訪蛛喂婉商清冀舀旋濁寅灣狹哺絢典汪盜巾拆浮餅董意惋斜賊傭啥灼廢百撿濁緞威原葛棗妻妹蘑更旭昨酞休輸濁式渡哦愁弘圣減柿疹座苛鉑練休泛孟淹補(bǔ)摩謝云撻氟褥鐐田汀笨梗準(zhǔn)了升疾鳳亞羊般昌去瘴繩鎬戚勿羚巴殘淹捂獺
4、舞祝紳眩咋壇逞松棍肋亮括柯邢屹劊進(jìn)舔氨熾繡悅表空腥葛激喬覺珊崩獨秧野項困雁硯隸弊錐適灸萍揪默澎釋譜哦執(zhí)巍隘百敷志姚渾叔炙赫型薊牛泵雕攆乳綿戀葵賜匠何捏酗權(quán)啄拷 濱江學(xué)院 畢業(yè)論文(設(shè)計) 題 目 基于單片機(jī)的遙控小車的設(shè)計 院 系 自動控制系 專 業(yè) 電氣工程與自動化 學(xué)生姓名 王楓 學(xué) 號 20112340035
5、 指導(dǎo)教師 毛鵬 職 稱 講師 二O一五 年 五 月 二十五 日 目 錄 1.緒論. 5 2.整體設(shè)計 5 2.1 小車方案 6 2.2 控制方案 6 2.3 系統(tǒng)組成 7 3. 單片機(jī)遙控小車的硬件介紹 8 3.1 單片機(jī)介紹 8 3.2 發(fā)射模塊 9 3.2.1 2262編碼器 9 3.2.2 315M射頻發(fā)射電路 10 3.2.3 遙控電路 11 3.3 接收與主控模塊 13 3
6、.3.1 2272譯碼器 13 3.3.2 315M超再生接收電路 13 3.3.3 主控電路 14 3.3.4 電機(jī)與舵機(jī) 16 3.4總體電路圖 16 4. 軟件設(shè)計與介紹 17 4.1 Keil簡介 17 4.2.電機(jī)與舵機(jī)的程序設(shè)計 17 4.2.1 PWM脈沖寬度調(diào)制與中斷系統(tǒng)介紹 18 4.2.2 電機(jī)與舵機(jī)具體控制程序介紹 20 4.3遙控部分的程序設(shè)計 22 4.3.1 矩陣鍵盤的介紹及與獨立鍵盤的對比 22 4.3.2 遙控部分具體程序介紹 23 4.4.總程序介紹與總程序流程圖
7、 26 5.結(jié)果展示與分析 26 5.1 電路焊接調(diào)試 26 5.2 小車功能展示 27 6.小結(jié) 29 參考文獻(xiàn): 30 致 謝 31 基于單片機(jī)的遙控小車設(shè)計 王楓20112340035 南京信息工程大學(xué)濱江學(xué)院自動控制系,南京 210044 摘要:隨著單片機(jī)技術(shù)的日漸成熟,單片機(jī)在各個領(lǐng)域的應(yīng)用逐漸增多,與此同時,無線控制技術(shù)業(yè)發(fā)展至成熟階段。因此,將單片機(jī)與無線控制技術(shù)相結(jié)合,采用51單片機(jī),編碼解碼器,并采用無線控制的方式來達(dá)到對小車的實際控制。而在本次畢業(yè)設(shè)計的實際運(yùn)用中,使用的是89C52單片機(jī),在信號的傳輸過程中通過2262與2272編碼譯碼其對單純的
8、電平信號向脈沖進(jìn)行變化,隨后采用315M射頻發(fā)射電路與接收電路對脈沖信號與正弦波信號進(jìn)行相互轉(zhuǎn)化,并且通過其進(jìn)行接收與發(fā)送。對于接收到的信號使用PWM調(diào)制從而改變電機(jī)轉(zhuǎn)速與舵機(jī)的角度。本設(shè)計采用C語言編程,從而通過程序?qū)崿F(xiàn)對小車的實際控制。 關(guān)鍵詞:2262/2272 315M發(fā)射接收電路 51單片機(jī) The design of car by based on single chip microcomputer remote control WangFeng 20112340035 Major of Electri
9、cal Engineering and Automation of College of BinJiang of Nanjing University of Information & Technology,Nanjing 210044 Abstract :Withthesingle-chiptechnologymatures,microcontrollerapplicationsinvariousfields graduallyincreased,atthesametime,wirelesscontroltechnologyindustrytoamaturestage.Therefore
10、,theMCUandwirelesscontroltechnology,theuseof51microcontroller,codecs,andtheuseofwirelesscontrolledwaytoachieveeffectivecontrolofthecar.Inthepracticalapplicationofthisgraduationdesign,theuseofthe89C52microcontroller,thetransmissionsignalcodinganddecodingthrough2262and2272thelevelofitssimplechangetoth
11、epulsesignal,andthenuse315MRFtransmitterandreceivercircuitcircuitofthepulsesignalandthesinewavesignalintoeachother,andreceiveandtransmitviaits.ForthereceivedsignalusingthePWMmodulationtochangethemotorspeedandsteeringangle.ThedesignusesaClanguageprogramming,inordertoachieveeffectivecontrolofthecarthr
12、oughtheprogram. Key words: 2262/2272 315M Launch receiving circuit 51 Single chip microcomputer 1.緒論 對于本次遙控小車的設(shè)計,雖然在各種技術(shù)上面來說,在當(dāng)今世界的各個領(lǐng)域基本都已什么成熟。而個人覺得,在這次設(shè)計中有兩個比較關(guān)鍵的部分,一個是無線遙控部分,另一個是驅(qū)動部分。 無線遙控的運(yùn)用領(lǐng)域十分廣泛,從日常家用電器,玩具,車輛的電子鎖,以及軍事上都有很多的運(yùn)用。就其的技術(shù)而言,可以說已經(jīng)相當(dāng)成熟,但是它的前景依舊非??捎^,可以在日后的發(fā)展中力求傳輸距離與抗干擾
13、性的雙贏,同時也可以向無線遙控模塊的小型化發(fā)展,這樣在工業(yè)上可以促使設(shè)備的小型化,提高空間的利用率,甚至可以將多個控制模塊集中在一個之上,如此只需要一個遙控便可操控真?zhèn)€工廠,或者家里的所有的家電,促進(jìn)智能化的發(fā)展。當(dāng)然隨著技術(shù)的發(fā)展,成本也將會隨之下降,更有助于普及。 然而對于驅(qū)動部分而言,驅(qū)動可謂是一個設(shè)備的核心。車輛,飛機(jī),艦船,玩具等等都擁有它們的發(fā)動機(jī),馬達(dá)。但是如果我們將驅(qū)動發(fā)動機(jī)運(yùn)行的驅(qū)動裝置去除,而僅僅給其裝上發(fā)動機(jī),那么顯而易見的是,車輛也不會動起來。很多低成本的遙控玩具都是使用集成電路作為驅(qū)動,而類似飛機(jī),汽車,都是使用更加智能化的微信處理器,因為這些設(shè)備的線路復(fù)雜,功能繁
14、多,它們需要智能的驅(qū)動來使其可以準(zhǔn)確無誤的運(yùn)轉(zhuǎn)起來。同樣,這也是一個成熟但依舊前景廣闊的技術(shù)。它的未來也可以像小型化,輕便化,低成本化的方向發(fā)展。就像本設(shè)計所使用的單片機(jī)一樣,它本身就是一個微型處理器,雖然它不是電機(jī),但是去可以使用編程使電機(jī)運(yùn)轉(zhuǎn),是電機(jī)的心臟。 本畢業(yè)設(shè)計題目來自于一個車輛測距小組作為其中一個部分二單立為一個畢業(yè)設(shè)計課題,由前車搭在防追尾預(yù)警系統(tǒng)保持勻速行駛,而后車才用變速的方式由迅速開始加速從而縮短與前車的距離,進(jìn)而出發(fā)預(yù)警系統(tǒng)的工作。隨后由加速開始減速逐漸與前車?yán)_距離,后保持勻速行駛,使得預(yù)警系統(tǒng)在測得達(dá)到安全距離后停止工作。簡單來說后車的重點為通過對速度的控制從而對
15、兩車之間的距離進(jìn)行控制。 現(xiàn)將其中的后車單獨作為本次畢業(yè)設(shè)計的課題,因而作為本次設(shè)計的遙控小車所需達(dá)到的要求參照原先的課題中的后車要求。遙控小車預(yù)計所能達(dá)到的效果如下所示; (1) 整個小車的設(shè)計與控制操作都基于單片機(jī)。 (2) 小車通過無線遙控控制。 (3) 在小車的運(yùn)行過程中可通過遙控進(jìn)行三檔變速。 (4) 在運(yùn)行中可以通過控制自由轉(zhuǎn)向。 2. 整體設(shè)計 本節(jié)中將對在準(zhǔn)備設(shè)計時所考慮到的幾種方案進(jìn)行列舉闡述以及簡單的對比,并在接下來的響應(yīng)章節(jié)中進(jìn)行具體的分析。 2.1小車方案 在小車的整體方案的選定中,因題目已定基于單片機(jī),所以篩選的重點主要在于單片機(jī)的選用,以及電源的搭
16、配。由于對于在刻板上自行畫制電路的方法比較陌生,且考慮到在實際畫電路的過程中可能存在的錯誤,和其他需要重新返工重畫的可能性,所以在電路板的選擇上所有預(yù)計的方案都使用洞洞板,方便拆卸焊接以及更改。 方案一:使用51單片機(jī)對主電路進(jìn)行控制,單片機(jī)同時控制舵機(jī)與電機(jī),用一個電源控制舵機(jī)與電機(jī),并且同時為單片機(jī)的工作模塊供電,保證整個電路的運(yùn)轉(zhuǎn)。所有元器件使用洞洞板安裝焊接。 方案二:在方案一的基礎(chǔ)上,采用兩個不同電壓的電源,分別對驅(qū)動模塊和單片機(jī)進(jìn)行供電。從而使得單片機(jī)工作模塊和電機(jī),舵機(jī)可以達(dá)到更好的工作狀態(tài)。 方案三:同樣是在方案一的基礎(chǔ)上進(jìn)行的改進(jìn),對于舵機(jī)與電機(jī)進(jìn)行分開控制,各自采用一
17、個單片機(jī)。從而使得對于舵機(jī)與電機(jī)可以更精確的控制。 綜合上訴三個方案,方案一實則為原始方案,而另外兩個方案則為其的兩個不同的改進(jìn)方式。經(jīng)過對比和出于實際的考慮,選擇方案二的設(shè)計方式。相比于方案一,方案二采用兩個電源分別供電的方式可以有效的解決單片機(jī)與電機(jī)所需電壓不同的問題,在保證電機(jī)與舵機(jī)的電壓的同時也不會燒壞單片機(jī)。相比之下方案三使用兩個單片機(jī)分別控制舵機(jī)與電機(jī)并非必須,可以對一個單片機(jī)燒錄程序同時控制舵機(jī)與電機(jī)。而且單從接線與電源的角度上來說,兩個單片機(jī)所出現(xiàn)的對電源的要求更大,就算不采用多電源供電也會增加一些不必要的并聯(lián)接線。所以選擇方案二作為小車車體的整體設(shè)計思路。 2.2控制方案
18、 在控制方案的選定中,因為已定使用無線控制,所以方案的篩選重點表現(xiàn)在對于幾種常見的無線控制方式的選擇。 方案一:采用紅外遙控,其由發(fā)射模塊與接收模塊兩部分所組成。其發(fā)射模塊包括矩陣鍵盤,編碼器,紅外發(fā)射器等其他元件。而接受模塊的主要有解碼器,放大電路,調(diào)制解調(diào)器等。 方案二:采用市場上最常見的無線電遙控,與紅外遙控相同,其同樣是由發(fā)射和接收兩大模塊組成。發(fā)射模塊主要組成部分為編碼器,振蕩電路,按鍵。而接受模塊主要為解碼器放大電路等。 方案三:采用較為熱門的超聲波遙控,顧名思義超聲波控制是將超聲波作為載體來傳輸信號,其用途廣泛,比如在原設(shè)計題目中的防追尾預(yù)警系統(tǒng)就是采用超聲波來測定前車與
19、后車的距離。 綜合上訴三種方案,相比于方案二紅外遙控的結(jié)構(gòu)更為復(fù)雜,而且考慮到類似電視遙控對不準(zhǔn)而換不了臺的問題,對于遙控小車這樣控制時小車通常出于運(yùn)動的狀態(tài)會出現(xiàn)對不準(zhǔn)問題,在調(diào)試階段對于是線路問題還是因為僅僅是沒對準(zhǔn)的問題的判定會有一定影響,而且對于紅外線所學(xué)的并不多不易上手。與方案二相比方案三所采用的超聲波控制,并不像無線電遙控模塊那樣在市場上十分普遍,雖然超聲波的遙控系統(tǒng)會具有功耗更低,抗干擾能力更強(qiáng)的優(yōu)勢特點,但其不像已經(jīng)普及的無線遙控那樣價格低廉,并且無線電遙控的傳輸距離、抗干擾能力等,對于控制一個小車已是搓搓有余。并且考慮到原先作為防追尾系統(tǒng)的大課題,不排除會一起演示的可能,預(yù)
20、警系統(tǒng)采用超聲波定位的原理,所以也不排除會對其有影響的可能。所以方案二作為小車遙控部分的設(shè)計思路。 2.3系統(tǒng)組成 根據(jù)前面選定的方案,總體設(shè)計思路如圖1所示,整個遙控小車系統(tǒng)有遙控電路與主控電路兩大部分組成。由遙控部分中發(fā)射模塊將信號指令發(fā)射出去,當(dāng)接收模塊接收到信號處理之后傳遞給主控電路中的51單片機(jī),單片機(jī)則根據(jù)接收到的信號,通過程序?qū)⒅噶罱唤o電機(jī)與舵機(jī)執(zhí)行,從而達(dá)到預(yù)計的效果。另外體現(xiàn)出雙電源控制,電源1專門為單片機(jī)供電保證其工作,而電源2為電機(jī)與舵機(jī)供電,使得其可以達(dá)到最佳的工作電壓,同時也不會影響到單片機(jī)的工作。 電源1 電源2 51單片機(jī) 發(fā)射模塊 舵機(jī) 電機(jī)
21、接收模塊 圖1 總體設(shè)計思路 3. 單片機(jī)遙控小車的硬件介紹 在此節(jié)當(dāng)中將全面介紹遙控小車的硬件部分。本節(jié)按照車體的實際組成劃分,將小車分成遙控部分以及車體部分,及在遙控部分中重點介紹發(fā)射模塊,而在車體部分介紹與發(fā)射模塊響應(yīng)的接收模塊,主控電路以及電機(jī)與舵機(jī)。同時也會簡單介紹單片機(jī),展示總電路圖。其設(shè)計原理流程圖如圖2所示。 圖2 遙控小車設(shè)計流程圖 3.1單片機(jī)介紹 單片機(jī)是將中央處理器,定時器,存儲器以及輸入輸出接口與一身的微型計算機(jī)。相對于其他處理器而言,單片機(jī)體積小成本低是它最獨特的有點,但是因為其體積小也帶來了例如存儲量小,功能低等不足,導(dǎo)致老舊的單片機(jī)已經(jīng)無法適
22、應(yīng)當(dāng)今技術(shù)發(fā)展所帶來的需求。不可否認(rèn),由于單片機(jī)在近幾年內(nèi)的迅猛發(fā)展,新型單片機(jī)相對于老舊單片機(jī)已經(jīng)在功能,速度,可靠性上有了很大的飛躍,以及成本的降低,當(dāng)然也改變了老舊單片機(jī)不能反復(fù)燒寫的弊端,使得單片機(jī)在工業(yè)領(lǐng)域,交通運(yùn)輸,能源供給,電氣,甚至是軍事領(lǐng)域都有很大的用武之地。單片機(jī)作為控制部分其擁有體積小成本低等優(yōu)勢,從而在很大程度上會帶動產(chǎn)品甚至是一個領(lǐng)域向小型化,多功能化的方向發(fā)展。所以單片機(jī)在科技發(fā)展的今天依舊有很大的潛力有待發(fā)掘。 由于52單片機(jī)是51單片機(jī)的升級改進(jìn)后的產(chǎn)物,相對于51單片機(jī)其具有更好的性能,所以本次設(shè)計在元器件選用的時候,確定使用STC89C52RC作為核心控制
23、芯片。與51單片機(jī)相比,52單片機(jī)額外多擁有一個定時器,并且52的RAM存取存儲器比51多出128字節(jié),其存儲空間為256字節(jié),同樣52的ROM自讀存儲器為8KB為51的一倍。由于52單片機(jī)多了一個定時器,使得在串行通信中可設(shè)置更高的比特率,且外接晶振可以高達(dá)33MHz也高出51單片機(jī)。同樣也應(yīng)為52單片機(jī)已得到普及,且價格與51相當(dāng),所以將52單片機(jī)作為本次設(shè)計所使用的單片機(jī)。 STC89C52RC作為STC公司生產(chǎn)的高性能低功耗,且具有8K在系統(tǒng)可編程Flash存儲器的CMOS8位微控制器。雖然STC89C52說使用的內(nèi)核為MCS-51,但是通過對其進(jìn)行了改進(jìn)使得89C52擁有了新的功能
24、。89C52單片機(jī)引腳圖如圖3所示。 (1)對8051單片機(jī)進(jìn)行了增強(qiáng),52單片機(jī)可以執(zhí)行與51相同的指令代碼。 (2)5V工作電壓的單片機(jī)其所能保持運(yùn)行的電壓為3.3到5.5V之間。 (3)其工作頻率的范圍為:0~40MHz,但在實際工作中可以達(dá)到最高48MHz。 (4)8K字節(jié)在系統(tǒng)可編程Flash存儲器。 (5)512 字節(jié)存取存儲器。 (6)擁有32個通用I/O口。 (7)不需要專門的編程器,可以直接下載程序。 (8)具有EEPROM功能 (9)擁有3 個定時器/計數(shù)器。分別為T0、T1、T2。 (10)4個外部中斷。 (11)可實現(xiàn)多個通用異步串行口(UART
25、)。 圖3 89C52引腳圖 3.2發(fā)射模塊 這里列出的發(fā)射模塊就是小車的遙控部分。小車的遙控部分主要由矩陣鍵盤,P2262編碼器以及一個315M射頻發(fā)射電路,外加一個5V的電源組成。其作用就是為小車發(fā)出用以完成設(shè)計要求的指定。 3.2.1 P2262編碼器 首先PT2262與PT2272是由CMOS工藝制造的功耗低而且價格又相當(dāng)?shù)土囊环N編碼解碼電路,2262是由地址碼,數(shù)據(jù)碼,同步碼所組成的一個完整的碼字所發(fā)出的編碼信號。PT2262的引腳圖如圖4所示。如圖所標(biāo)注,2262的1到8號引腳與10到13號引腳為其地址管腳,地址編碼可以設(shè)置為“0”,“1”,“空”三種狀態(tài)。其中7,
26、8,10,11,12,13號引腳則為2262芯片的數(shù)據(jù)輸入端,當(dāng)輸入端一個值為“1”則意味著有編碼發(fā)出,其內(nèi)部進(jìn)行下拉操作。而17與18號引腳為電源的正負(fù)端口。14號引腳名為TE,是用于進(jìn)行對編碼發(fā)射的啟動端口,且當(dāng)且只當(dāng)在端口狀態(tài)為低電平的時候才會有效。而15與16端口分別為震蕩電阻的輸入與輸出端,而振蕩頻率則是由與15號引腳所接的電阻所決定的。2262的從輸出端為17號引腳,而且在此端口沒有任何信號輸出的情況下,端口的會一直保持低電平的狀態(tài)。 2262編碼器的電源電壓應(yīng)保持在-0.3到15V之間,因為使用的電源為9V的電源,為了將電源控制在5V,所以在在矩陣鍵盤與端口9之間接了四個10K
27、歐姆的電阻。同時還應(yīng)該注意的是2262與2272的地址端口必須對應(yīng)否則2272將無法對2262的編碼進(jìn)行譯碼處理。而且2262在每次發(fā)射的時候至少發(fā)射4組字碼所以矩陣鍵盤需要連接在2262的D0,D1,D2,D3,四個數(shù)據(jù)輸入端上。同時又因為,2262的編碼格式是通過寬度不同的脈沖寬度來表示的,當(dāng)輸入為“0”時2262編碼器會通過發(fā)出兩個窄的脈沖來表示,而當(dāng)輸入信號為“1”時則會利用兩個寬度寬的脈沖表示,同樣當(dāng)輸入為空時就會發(fā)出一寬一窄兩個脈沖。也是正因如此,315M射頻發(fā)射才能正確的根據(jù)脈沖寬度發(fā)出正確的正弦波。 圖4 2262編碼器引腳圖 3.2.2 315M射頻發(fā)射電路 315
28、M射頻發(fā)射電路實質(zhì)為振蕩器,其主要作用就是當(dāng)2262編碼器的編碼端口的狀態(tài)為“1”的時候,震蕩電路將其狀態(tài)所替換成的兩個寬脈沖化為正弦波然后發(fā)射出去由接收裝置接收。對于這樣將脈沖化為正弦波的調(diào)制方式稱為OOK調(diào)制,也為110%調(diào)制深度的AM調(diào)制。選用其作為本次設(shè)計所使用的發(fā)射模塊的原因為,其適用范圍,靈敏度要求不高的場合,如燈控設(shè)備,電子蠟燭和兒童玩具等。無信號輸入則無輸出,有信號時,輸出信號不反相,調(diào)試成本低且方便。且擁有相應(yīng)的315M超再生接受模塊。其電路圖如圖5所示。 在此電路中,使用了兩個電容C3,C6,兩個電阻R1與R2,以及一個電感L。這里將對R1,R2,C3,C6,L的作用做簡
29、單的介紹。 先從電容C6說起,由于選用的這個電容的容量很小,所以很明了的是這個電容在這里的作用并不是作為高頻信號的交流旁路所存在,它的再電路中的是只作用為配合電阻R2使用,與電阻R2組合從而達(dá)到對高頻信號的移相網(wǎng)絡(luò)。同時由于如果要保證聲表振蕩器的穩(wěn)定工作,那么就必須先保證電容C6的大小可以使得移相網(wǎng)絡(luò)的相位保持平衡狀態(tài),否則聲表將僅僅作為一個反向電阻而存在。在這一個組合當(dāng)中電阻R2的另一個作用是為直流工作點提供穩(wěn)定電流的反饋電阻。 那么很顯然,另一對起到組合作用的為電感與兩個電容。他們所組成的選頻網(wǎng)絡(luò)的主要作用就是抑制高次諧波。與此同時也可以是輸出的幅度提高,而剩下的最后一個電阻R1,它作
30、為電路中的偏置電阻的同時,它也起到了對于電路之中的低頻與高平之間的阻隔的作用。保證了系統(tǒng)的穩(wěn)定運(yùn)行 圖5 振蕩器(315M射頻發(fā)射模塊)電路圖 3.2.3遙控電路 在遙控電路中,除了用于發(fā)射信號的振蕩器之外,最重要的就是一2262編碼器為核心與矩陣鍵盤組成的遙控部分。先將矩陣鍵盤的按鍵輸出端分別接到2262編碼器的0至3號數(shù)據(jù)管教上,并在每個按鍵按鍵與數(shù)據(jù)端口的連接線線上分別添加一個二極管,用于反向隔離防止高電平的逆行,例如:按下“慢速”按鈕之后,經(jīng)過定義使D0成為高電頻,如果不接二極管反向隔離,則與其相連的其他也成高電頻,從而導(dǎo)致遙控部分從根本上失靈。其按鍵總共設(shè)置7個,分別為
31、:慢速,中速,勻速,快速,停止,左轉(zhuǎn),右轉(zhuǎn)。其控制方式為將所有按鍵所在的矩陣鍵盤的4個輸出口分別其接于數(shù)據(jù)腳D3,D2,D1,D0四個管腳上經(jīng)過對每一個按鍵進(jìn)行定義,使得每一個按鍵按下后都會對4個數(shù)據(jù)端口產(chǎn)生不同的電平組合從而下達(dá)指令。其數(shù)據(jù)腳的電位組合所對應(yīng)的按鍵效果如表1所示。 按鍵的實質(zhì)效果通過電平的不同而表現(xiàn)出來,經(jīng)過導(dǎo)線將這些用電平方式描述的指令傳輸給編碼器。經(jīng)過編碼器的編碼,將不同的指令更具高低電平的位置轉(zhuǎn)化成寬度不同的脈沖組合,之后再傳送給315M射頻發(fā)射模塊。在振蕩器之中通過110%調(diào)制深度的AM調(diào)制之后,根據(jù)不同寬度的脈沖位子轉(zhuǎn)成不同位置的正弦波信號發(fā)送出去。至此遙控電路的
32、所有任務(wù)皆以完成。在遙控電路上的紅色發(fā)光二極管,則是對是否有信號發(fā)出進(jìn)行提示,方便后期的調(diào)試和故障的排查。整個遙控電路的電路圖如圖6所示。 表1 引腳電位及其相應(yīng)狀態(tài) D3 D2 D1 D0 0 0 0 1 慢速 0 0 1 0 中速 0 0 1 1 左轉(zhuǎn) 0 1 0 0 快速 0 1 0 1 右轉(zhuǎn) 1 0 0 0 停止 1 0 0 1 中速勻速 圖6 遙控電路 3.3接收與主控模塊 所謂的接收與主控模塊為小車用于執(zhí)行指令的主控電路,它的組成包括STC89C52RC單片機(jī),ULN2003驅(qū)動芯片,穩(wěn)壓
33、芯片,單片機(jī)電源開關(guān),晶振,兩個獨立電源,315M超再生接收模塊,以及一個舵機(jī)兩個電機(jī)。 3.3.1 P2272譯碼器 PT2272譯碼器為2262編碼器所配對的響應(yīng)的信號處理芯片。其引腳圖如圖7所示。如2262一樣,2272的1到8號與10到13號為地址管腳,其中1到8號寬口如上文所提及的需要與2262的1到8號端口相對應(yīng),當(dāng)然一但不對應(yīng)2272便無法對2262的編碼進(jìn)行解碼處理。在2272的地址管腳中的7,8,10,11,12,13這5個端口在作為數(shù)據(jù)端口的時候,只有在地址端口與2262完全對應(yīng)的時候,管腳才能輸出與2262的數(shù)據(jù)端相對應(yīng)的高低電平。14管腳作為2272的輸入端,其作用
34、為接收發(fā)射模塊所發(fā)出的信號。而第17號管腳的作用為對解碼是否有效做出確認(rèn),因為輸出端在無信號輸出的時候是保持低電平的狀態(tài),所以當(dāng)其確認(rèn)解碼有效之后,其電平就會變成高電平狀態(tài),但是只瞬時狀態(tài),之后又會恢復(fù)低電平。 圖7 2272解碼器 由于2272的工作電壓最小值為2V最大值為15V,且又因為與2272在同一電路上的52單片機(jī)的工作電流為5V,所以便將單片機(jī),2272使用同一電源供電。因為真?zhèn)€小車需要通過單片機(jī)來控制,而2272又屬于主控本分,其作用在于將接收到的指令傳遞給單片機(jī)進(jìn)行進(jìn)一步的處理,所以將2272的數(shù)據(jù)管腳接至單片機(jī)的出入端中,從而完成2272編碼器的工作。 3.3.2
35、315M超再生接收電路 本次設(shè)計選用的接收模塊為315M超再生接收模塊,是315M射頻發(fā)射模塊的配套模塊。它是根據(jù)超再生原理而研發(fā)的而一種無線接收的集成芯片。這次設(shè)計所使用的315M接收電路是一個集成電路,在這個元件的集成電路中包括了為了保證能準(zhǔn)確接收信號,降低誤差的前置低噪放大器;可以對所接受信號進(jìn)行轉(zhuǎn)換的超再生振蕩器,熄滅信號發(fā)生器以及包絡(luò)檢波解調(diào)器等電路。芯片工作在315MHz/433MHz的ISM(Industrial, Scientific and Medical)頻段,采用OOK(On Off Keying) 調(diào)制方式。芯片根據(jù)所采用的輸入數(shù)據(jù)再直接輸出數(shù)據(jù)的設(shè)計思路,從而將接收
36、到的RF信號經(jīng)過解調(diào)處理之后,輸出CMOS電平數(shù)據(jù)信號。此芯片在理論上的工作電壓應(yīng)為4.5到5.5V之間,當(dāng)5V時芯片將消耗的電流預(yù)計為4mA,顯而易見其典型靈敏度優(yōu)于-90dBm。最大數(shù)據(jù)速率為10Kbit/s,工作溫度范圍-40C至+85C,提供SOP8封裝。 由于此模塊為直接購買的現(xiàn)成接收模塊,對并不能完整闡述此模塊內(nèi)各個元器件的鏈接用處與意義所在二深感慚愧,所以在這里展示其提供的電路圖,其電路圖如圖8所示。同時也因為此模塊的工作電壓與所使用的單片的工作電壓相一致,所以此模塊與單片機(jī)一道使用同一個的供電電源,以做到在使用少量的電源來保證更多電子元件的使用,這樣不但可以減少成本也能降低設(shè)
37、計的難度,減少不必要的多余導(dǎo)線的鏈接。315M超再生接收電路在整個電路之中的作用為將射頻發(fā)射模塊所發(fā)射的正弦波信號接收之后,轉(zhuǎn)化成與正弦波相對應(yīng)的不同寬度的脈沖,隨后再將其發(fā)送給2272解碼器進(jìn)行解碼。至此此模塊所需要承擔(dān)的工作已完成。 圖8 接收模塊電路原理圖 3.3.3主控電路 主控模塊整體由單片機(jī),2272譯碼器,315M超再生接受模塊以及電機(jī)和舵機(jī)組成,其整體電路如[圖8]所示。在這部分將對2272譯碼器,單片機(jī)以及其他部件進(jìn)行簡單的介紹。 首先,2272作為與2262編碼器所配對的譯碼器而言,與上文介紹的一樣二者的1到8號腳必須相配對,且狀態(tài)保持一致,才能發(fā)揮其作用。如前
38、文所訴,接收模塊接收到的正弦波信號轉(zhuǎn)化為不同寬度的脈沖后,將其傳至譯碼器,譯碼器則將所收到的信號狀態(tài)轉(zhuǎn)化成電位輸出給單片機(jī),經(jīng)過單片機(jī)依據(jù)程序設(shè)定將命令分別傳送給電機(jī)與舵機(jī),從而確實實現(xiàn)對其控制的操作。 將2272譯碼器的17號端口接一個發(fā)光二極管,由于此端口的狀態(tài)為電平常低,只有在解碼確認(rèn)有效之后才會出現(xiàn)瞬態(tài)的高電平狀態(tài),于是在這里接一個二極管可以很直觀的體現(xiàn)出有無接收到信號并且將其解碼,也有助于后期的調(diào)試與故障排除。將接收模塊的輸出端接入2272的14號引腳,也就是其輸入端。其10到13號地址管腳與2262相對應(yīng),但是其作用是將恢復(fù)成高低電平的信號向單片機(jī)輸送的輸出端口,并且接在單片機(jī)的
39、P2.0到P2.3端口。而單片機(jī)就會通過不斷的掃描P2.0-P2.3端口之間的信號來改變舵機(jī)與電機(jī)的占空比。 首先,單片機(jī)的本質(zhì)其實就是一個計存器,然而它的計存方式又分為三種,方式0:高8位低5位有效,其最大值為8192。方式1:全位有效,其最大值為65536。方式2:低8位有效,其最大值為256。本次設(shè)計中所使用的是方式1,其原因是操作較為簡單,且相應(yīng)的存儲量大。在經(jīng)過對程序的處理之后通過P1.1與P1.0端口分別將指令發(fā)送給控制電機(jī)與舵機(jī)的驅(qū)動芯片。從而完成其在整個設(shè)計中的最核心的控制作用。將接受到的簡單的電平信號經(jīng)過程序的執(zhí)行,將信號轉(zhuǎn)換成不同的脈沖發(fā)送給驅(qū)動芯片。 在主控電路中驅(qū)動
40、芯片采用的是ULN2003,其特性是高耐壓,大電壓負(fù)荷晶體管驅(qū)動列陣。舵機(jī)與電機(jī)的轉(zhuǎn)向與速度變化皆用占空比來控制()。其中電機(jī)的占空比比值越高速度越快。同理舵機(jī)由于考慮速度的變化,其轉(zhuǎn)彎角度也存在一定的角度更變,理論上比值越大角度越大,但是舵機(jī)的占空比需控制在20%到40%之間。 接下來將大體的對穩(wěn)壓芯片,晶振和兩個電源做籠統(tǒng)的介紹。首先穩(wěn)壓芯片雖然不是和電路的控制有關(guān),但是其作用確實缺一不可的,作為穩(wěn)壓芯片,它的作用顧名思義就是起到穩(wěn)壓,當(dāng)輸入電壓在5到35V之間的時候通過穩(wěn)壓芯片可以將電壓保持在5V,從在持續(xù)供電的同時保護(hù)了單片的以防其被燒壞。而晶振簡單的來說就是為單片機(jī)提供了一個工作的
41、頻率,控制了單片的處理速度與訪問速度,也是不可缺少的元件。 最后就是上文所提到的兩個電源,首先因為考慮電機(jī)舵機(jī)與單片機(jī),2272這些元器件所需要的工作電壓并不一樣,所以才使用了兩個電源。作為單片機(jī)的供電電源,它需要一個持續(xù)的5V的供電環(huán)境,但是考慮到可以使用穩(wěn)壓芯片來保證5V電壓的輸入而且將電池串聯(lián)成5V又過于麻煩所以直接使用了一個9V電池作為電源,且因為單片機(jī)的工作耗電不大,所以將其固定在了小車之上,并沒有考慮它的拆卸更換。而另外一個單獨供電的則向前文所提到的使用電池串聯(lián)的方式將其達(dá)到舵機(jī)與電機(jī)的工作電壓的要求,盡可能的保證其工作的性能不因為供電不足而受到影響,其電路雖然經(jīng)過單片機(jī)所在的洞
42、洞板,但直接接在電機(jī)和舵機(jī)與驅(qū)動芯片的輸出端之間,從某個方面說使得驅(qū)動芯片成為電源的開關(guān),直接控制著電機(jī)的運(yùn)轉(zhuǎn)。 整個主控電路的運(yùn)作流程為接收的正弦波信號通過接收模塊轉(zhuǎn)為脈沖信號,隨后發(fā)送給2272譯碼器并通過譯碼將信號轉(zhuǎn)變成電平的方式發(fā)送給單片機(jī),單片機(jī)在不斷掃描輸入端的電平之后同過程序的執(zhí)行將脈沖信號傳送給驅(qū)動芯片,驅(qū)動芯片通過脈沖寬度調(diào)制的方式將脈沖轉(zhuǎn)變?yōu)檎伎毡?,從而直接改變電機(jī)的速度與舵機(jī)的轉(zhuǎn)向。至此小車主控電路的工作完成。其主控電路圖如圖9所示。 圖9 主控電路及315M超再生接收模塊 3.3.4電機(jī)與舵機(jī) 本次設(shè)計使用了一個舵機(jī)與兩個電機(jī)。在實際電路中,將兩個工作電壓在
43、4V到10V之間的電機(jī)與舵機(jī)采用并聯(lián)的方式連接,因此在對于電池電流的要求較高。所以使用了1.2V,800MA可充電電池,在滿足工作電壓的要求的同時也可以滿足在并聯(lián)電路中的電流的分流所導(dǎo)致的供電不足的影響。經(jīng)過試驗,為了保證舵機(jī)的正常轉(zhuǎn)向,串聯(lián)的6節(jié)電池,減為4節(jié)之后雖然電壓降低了但是依舊在工作電壓之內(nèi),且電流不變保證了舵機(jī)與電機(jī)的正常運(yùn)轉(zhuǎn)。而考慮到電池可能的替換,換成4節(jié)普通的1.5V電池之后雖然電壓滿足工作電壓,但是電流明顯下降,雖然能使電機(jī)工作,但是其性能卻由于供電不足而下降。而本次電機(jī)使用兩個的原因是車體寬度較寬,而電機(jī)本身較小所以對兩個后輪分別驅(qū)動,又因為兩個電機(jī)并聯(lián)在電路之中,所以本
44、身并不會對驅(qū)動造成影響。 3.4總體電路圖 按照上述各個模塊的原理進(jìn)行繪制的電路原理圖,并且是實際電路焊接的依據(jù)??傠娐穲D如圖10所示,其中包括獨立電源,接收與主控模塊,發(fā)射模塊三個部分。 圖10 整體電路 4. 軟件設(shè)計與介紹 在本節(jié)中將詳細(xì)介紹遙控小車的軟件部分,包括程序,以及編寫工具keil。而程序則會分為對電機(jī)與舵機(jī)的控制程序的介紹和遙控部分的介紹。從而對程序進(jìn)行分解分析。 4.1 keil簡介 在本次對單片機(jī)進(jìn)行編程使用的為C語言,并且通過Keil開發(fā)系統(tǒng)進(jìn)行編程。 在本次設(shè)計中為了完成編程所使用的Keil是由美國知名Keil Software公司推出的一款51系
45、列兼容單片機(jī)的C語言軟件開發(fā)系統(tǒng)。相對于其他的編程語言,C語言在功能上,結(jié)構(gòu)性,擁有更大的優(yōu)勢。Keil不單單是一款編程軟件它還通過一個集成環(huán)境為C語言的編寫提供了將庫管理,宏匯編,連接器C,編譯器以及仿真調(diào)試器等集于一身的開發(fā)方案,通過uVision把這些部分組合在一起。在實際操作上Keil 適合任何Windows界面。而且通過Keil 的工具包整體結(jié)構(gòu)就可以完成對單片機(jī)程序的編輯,編譯,鏈接,調(diào)試,仿真等整個過程。所以在本次設(shè)計中使用keil作為編程工具認(rèn)為是一個不錯的選擇。 4.2電機(jī)與舵機(jī)的程序設(shè)計 在本設(shè)計中,因為要實現(xiàn)三檔變速和轉(zhuǎn)向,所以對于電機(jī)和舵機(jī)的程序設(shè)計不能僅僅達(dá)到通電
46、可運(yùn)行的狀態(tài)。變速和轉(zhuǎn)向皆可通過改變占空比來控制,作為電機(jī)與舵機(jī)部分,它的程序主要就是對接收到的占空比的變化指令做出反應(yīng),可以理解為是個執(zhí)行部分。而若使此程序達(dá)到上訴功能,則需要用到PWM脈沖寬度調(diào)制和中斷系統(tǒng)。電機(jī)與舵機(jī)的程序流程圖如圖11所示: 開始 定時器初始化 有無鍵值 改變占空比 N Y 圖11 電機(jī)與舵機(jī)程序流程圖 4.2.1 PWM脈沖寬度調(diào)制與中斷系統(tǒng)介紹 PWM是Pulse Width Modulation的縮寫,中文譯名為脈沖寬度調(diào)制,可以理解為利用數(shù)電控制模電的典范,詳細(xì)說來就是利用微處理器的數(shù)字輸出來對模擬電路進(jìn)行控制,而數(shù)字輸出也就是使用了占空比
47、不同的方波來模擬輸出的一種方式,比如總所周知電腦只會輸出0和1,而當(dāng)想輸出0.5的時候,通過脈沖寬度調(diào)制則可以用輸入01010101……的方式來模擬0.5。其模擬方式如圖12所示: 圖12 PWM的模擬方式 脈沖寬度調(diào)制的控制方式其實就是通過控制逆變電路開關(guān)器件的通斷,從而在輸出端得到可以用來代替正弦波或者其他需要的波形的幅值相同的脈沖。換句話說就是在波形輸出后的半個周期之內(nèi)產(chǎn)生一定量的脈沖,并使這些脈沖的等值電壓轉(zhuǎn)化為正弦波形。從而,只要按照需要對脈沖的寬度進(jìn)行相應(yīng)的調(diào)制就可以改變電路輸出的電壓,同理,也能如此改變輸出的頻率。 因為在PWM的波形中輸出的各個脈沖的幅值都是相同的,所
48、以當(dāng)我們按照需要的系數(shù)改變這些脈沖的寬度時,就能改變所輸出的正弦波的幅值。所以在看似是不斷轉(zhuǎn)化的過程當(dāng)中,變得只有信號的形式,而直流側(cè)壓的幅值的本質(zhì)就是PWM所輸出的脈沖電壓。 通常來說,PWM的生成方式都是通過單片機(jī)中包含的脈沖寬度調(diào)制控制器,也就是在使用時只需要對控制器進(jìn)行設(shè)置即可,但是對于脈沖寬度調(diào)制來說它擁有一個有點,就是在對于沒有包含控制器的單片機(jī)來說,可以使用定時器計數(shù)的方式來實現(xiàn)脈沖寬度調(diào)制的輸出。當(dāng)然,本設(shè)計中就是通過對定時器的設(shè)置來產(chǎn)生PWM波。 脈沖寬度調(diào)制本身在各個行業(yè)當(dāng)中都有著很多的應(yīng)用也很有潛力,PWM因為它的信號都是以數(shù)字的形式,所以減少了不必要的數(shù)模轉(zhuǎn)換,又進(jìn)
49、而體現(xiàn)出它的抗噪能力和更小空間體積,從某種程度上來說也能促進(jìn)節(jié)能減排。但是在這次設(shè)計中,雖然使用到了脈沖寬度調(diào)制,但是只是僅僅使用了它的皮毛,并未真正的深度探究。 除了脈沖寬度調(diào)制之外,在電機(jī)與舵機(jī)的程序中,另一個用到的相對重要的就是中斷系統(tǒng),下面將對中斷系統(tǒng)做出簡單的介紹。 其實中斷系統(tǒng)很好理解,就是系統(tǒng)在執(zhí)行某一個程序的時候,突然接到了更加優(yōu)先的指令,就會暫停原程序的執(zhí)行,轉(zhuǎn)而開始執(zhí)行指令所對應(yīng)的程序,等到該程序執(zhí)行完成之后再返回開始執(zhí)行原程序。 在單片機(jī)的管腳中,低四位控制著外部中斷,單片機(jī)的1號與3號管腳IE0/IE1為外部中斷申請標(biāo)志位,在判斷單片機(jī)是否有收到外部中斷請求的時候
50、,通常會利用這兩個管腳的值來判斷,當(dāng)其沒有受到外部中秋的時候,其值為“0”,而當(dāng)它收到外部的中斷請求之后,它們的值則會變?yōu)椤?”。單片機(jī)的0號與2號引腳IT0與IT1 則為外部中斷請求的觸發(fā)方式的選擇位,當(dāng)其值為0時表明在INT0/INT1端口的外部中斷的方式為低電平有效,而當(dāng)它們的值為1時,則表明負(fù)跳變有效。 在CPU中對中斷系統(tǒng)的所有中斷以及任意一個中斷原的開放或者屏蔽,是由中斷允許寄存器IE所控制的。其中EA端口的電位對整個中斷尤為重要,因為它是IE的中斷總允許位,而當(dāng)其值為“0”時則表示所有的中斷將被禁止且不被處理,而其值為“1”時則是中斷是被允許的也是會被處理的。ET1為定時器T1
51、中斷允許位,當(dāng)值為0時禁止中斷,當(dāng)值為1是則允許中斷。ET0則為定時器T2的中斷允許位,它的值的設(shè)置與ET1相同。ES,EX1,EX0分別為串行口中斷,外部中斷1,外部中斷2的允許位,指的設(shè)定都為0時禁止中斷,1是允許中斷。 上段提到定時器中斷的允許位,那么就要介紹下定時器的控制寄存器TCON,其地址為0X88。其中TF為定時器溢出標(biāo)志,當(dāng)接受了中斷請求之后此端口就會存在溢出現(xiàn)象,而此時此端口的值將會自動被設(shè)置為“1”,當(dāng)中斷開始被執(zhí)行時,此端口的賦值將會被硬件清零或者軟件清零。TR則為定時器的運(yùn)行控制位,值設(shè)置為1時開始計時,當(dāng)其清零時則停止計時。 外部中斷的方法是有低電平觸發(fā)和跳沿觸發(fā)
52、,中斷的撤銷方式則分為定時器中斷請求的撤銷和外部中斷請求的撤銷兩大類。而在本次設(shè)計中,并沒有采用外部中斷的方式,而是使用定時器中斷,當(dāng)定時器的中斷請求被響應(yīng)之后,硬件會自動的掃面其中斷請求標(biāo)志位的電位變化,并且及時的將其清零,所以定時器中斷的請求都不用人為手動清零與撤銷。 4.2.2電機(jī)與舵機(jī)具體控制程序介紹 首先如上一節(jié)所介紹的一樣舵機(jī)與電機(jī)是通過PWM來控制的。在對程序進(jìn)行編譯的時候,由于PWM波的是必須依靠定時器才能夠產(chǎn)生的,所以在編程的時候,為了能讓相應(yīng)波形正確的產(chǎn)生,就得在編程的時候首先如下列程序一樣對定時器進(jìn)行初始化操作: void Time_config() { TM
53、OD = 0x01; //定時器0工作方式1 TL0 = 0xCE; //設(shè)置定時初值 50us TH0 = 0xFF; //設(shè)置定時初值 ET0 = 1; //使能定時器0 TR0 = 1; //開啟定時器0 } 該程序的目的在于定時器的初始化,它通過TMOD語句定義了定時器0,及工作方式1。而在52單片機(jī)中定時器有0,1兩種,方式有4種,本次設(shè)計采用的是方式1所代表的16位定時器,其最大定時65536us。隨后設(shè)置初始值為TL0 = 0xCE;TH0 = 0xFF;初始值的設(shè)置為最大定時后接初始值,因為本次的初始值設(shè)定為是50us,所以初始值=65536-50,但是
54、值得注意的一點是程序中是該值的16進(jìn)制。然后按順序使用TRO=1打開定時器0,再通過ETO=1使能定時器0,最后用EA=1打開總中斷。但是值得注意的是在這里,還沒有打開總中斷。 隨后,上文已介紹了PWM周期和占空比是在定時器中斷中控制的,則其對應(yīng)的程序如下: void Time0_Int() interrupt 1 //定時器中斷程序 中斷向量口為1 首先設(shè)定了定時器在中斷之后會被重新賦予初始值,并且也規(guī)定了其每產(chǎn)生兩次中斷的時間間隔為50us。而其中的打開中斷,關(guān)閉中斷可省略。 TR0 = 0; //關(guān)閉定時器0, TL0 = 0xCE; //設(shè)置定時初值 50us TH
55、0 = 0xFF; //設(shè)置定時初值 TR0 = 1; //開啟定時器0 通過在定時器中斷中計數(shù),也就是Time0,來計進(jìn)入中斷的次數(shù)。PWM的周期為50us*500 = 25ms,也就是程序中 if(Time0 > 500) //500為PWM波周期,500*50us = 25ms Time0 = 0; //達(dá)到501次則清零 設(shè)置好了PWM的周期,即開始通過改變占空比的方式控制舵機(jī)與電機(jī)了。其中單片機(jī)輸出舵機(jī)控制信號為Steer_PWM,對應(yīng)的引腳程序前端已定義。Steer_Ctrl是我們調(diào)節(jié)占空比的,Steer_Ctrl的值越大,占空比越大,舵機(jī)輸出占空比 =
56、Steer_Ctrl/500;就是下面的程序; if(Time0 < Steer_Ctrl) //舵機(jī)占空比=(Steer_Ctrl/Time0)*100% Steer_PWM = 1; else Steer_PWM = 0; 同理,電機(jī)的控制也是相同的,電機(jī)輸出占空比 = Motor_Ctrl/500; if(Time0 < Motor_Ctrl) //電機(jī)占空比=(Motor_Ctrl/Time0)*100% Motor_PWM = 1; else Motor_PWM = 0; 電機(jī)的輸出占空比越大,電機(jī)轉(zhuǎn)速越快,小車速度越快,反之亦然。
57、 4.3遙控部分的程序設(shè)計 遙控部分的程序就是通過按鍵通過編碼后利用發(fā)射元件對主控電路發(fā)出指令,其指令就是前文所提到的對占空比的參數(shù)的設(shè)定,但是相對于需要對信息進(jìn)行處理的電機(jī)與舵機(jī)的程序來說,遙控部分的占空比的參數(shù)就是相當(dāng)于一個數(shù)值的發(fā)送,而遙控部分的關(guān)鍵則是對矩陣鍵盤的應(yīng)用,已經(jīng)考慮到舵機(jī)的一個轉(zhuǎn)彎角度而設(shè)定的一個舵機(jī)保護(hù)值。遙控部分的程序流程圖如圖13所示: 開始 定時器初始化 有無鍵值 改變舵機(jī)占空比 改變電機(jī)占空比 是否超過最大值 Y N Y 保持不變 Y N 圖13 遙控部分的程序流程圖 4.3.1矩陣鍵盤的介紹及與獨立鍵盤的對比 作為單片機(jī)當(dāng)中經(jīng)
58、常使用的非編碼鍵盤,其又細(xì)分為矩陣鍵盤和獨立鍵盤兩種。其原理圖分別如圖14和圖15所示。就兩個鍵盤的接線方法相比較而言,矩陣鍵盤的電路接線復(fù)雜,但是相對提高了I/O口的工作效率,且軟件編程也相對更加復(fù)雜,但是更適合按鍵較多的場合。而獨立鍵盤的電路連接則相對簡單得多,但是一個按鍵對應(yīng)一個I/O接口,這樣的方式會使得當(dāng)按鍵較多的情況出現(xiàn)之后,I/O口的利用率明顯不足,但是相對其編程也簡單的多,所以更加適合按鍵少的場合。在本次設(shè)計中應(yīng)為考慮到會出現(xiàn)三檔變速的三個按鍵,以及轉(zhuǎn)向的兩個按鍵,另外再預(yù)留兩個按鍵,則預(yù)計會出現(xiàn)七個按鍵,這樣的話明顯按鍵較多,選著矩陣鍵盤更加適合。 如同在前章硬件部分說介紹
59、的一樣,按鍵接在2262編碼器上的D3,D2,D1,與D0口上,通過每個按鍵所連接到的不同的引腳,使用到低電平進(jìn)行區(qū)別,從而使4個端頭表現(xiàn)出7個按鍵所需要表達(dá)的效果,例如按鍵“1”的編碼為0001,按鍵“2”的編碼為0010。 圖14 矩陣鍵盤原理圖 圖15 獨立鍵盤原理圖 4.3.2遙控部分程序介紹 在遙控的部分中本次設(shè)計使用的是一對編解碼電路,和一對收發(fā)電路所組成的。發(fā)射控制引腳4個,可以組成16種不同的編碼,在這里因為一共設(shè)置了7個按鍵,所以使用了7種編碼。在接收端使用單片機(jī)P2口的4路引腳接接收芯片的4路控制輸出。通過函數(shù)KeyScan();
60、循環(huán)掃描P2口,如果有輸入的話,該引腳電平為低電平。GPIO_Key存放的就是P2口引腳的值,沒有輸入信號是,GPIO_Key = 0xF0。程序掃描時要是有信號輸入的話,鍵值就會發(fā)生變化,判斷程序: void KeyScan() //鍵值掃描程序,掃描無線輸入狀態(tài)。 { if(GPIO_Key != 0xF0) //檢查是否有按鍵按下。 { Key_Value = GPIO_Key; //將鍵值存儲下來。 Key_Count++; //用作延時。 if(Key_Value != 0xF0) //鍵值發(fā)生變化。 { else 通過Swit
61、ch條件選擇語句,判斷發(fā)射的鍵值,然后選擇相應(yīng)的操作。在switch語句中根據(jù)實際的小車控制按鍵的設(shè)計,將每個語句都賦予不同的鍵值以對應(yīng)不同的功能。 switch(Key_Value) //鍵值選擇。 在case中: 第一個為停車:當(dāng)然電機(jī)的占空比為0,速度為0,舵機(jī)控制Steer_Ctrl = 24,舵機(jī)控制的前輪在中間位置。 case 0xF1: Motor_Ctrl = 0; Steer_Ctrl = 24; break; //停中 第二個為3檔:電機(jī)輸出占空比最高,為100% case 0xF2: Motor_Ctrl = 500; break;
62、//3檔 第三個為2檔:電機(jī)輸出占空比為70% case 0xF4: Motor_Ctrl = 350; break; //2檔 第四個為1檔:電機(jī)輸出占空比為40% case 0xF8: Motor_Ctrl = 200; break; //1檔 第五個為1檔直線。 case 0xF9: Motor_Ctrl = 200; Steer_Ctrl = 24; break; //1檔中 第六個為左轉(zhuǎn):Steer_Ctrl減小 case 0xFA: if(Key_Count % 50 == 0) Steer_Ctrl -= 1; break
63、; //右轉(zhuǎn) 第七個為右轉(zhuǎn):Steer_Ctrl增大 case 0xFC: if(Key_Count % 50 == 0) Steer_Ctrl += 1; break; //左轉(zhuǎn) 但是處于多舵機(jī)的保護(hù),需要對舵機(jī)轉(zhuǎn)角進(jìn)行上下限設(shè)置。 if(Steer_Ctrl >29) //舵機(jī)保護(hù)。 Steer_Ctrl = 29; else if(Steer_Ctrl < 19) Steer_Ctrl = 19; 舵機(jī)的變化在某個占空比范圍內(nèi),在這個周期范圍內(nèi),中心值就是24,占空比為24/500,Key_Count++;是按鍵按下時的延時,使舵機(jī)
64、轉(zhuǎn)角變化變慢,防止舵機(jī)直接打死。 Key_Count = 0; //無按鍵按下,延時清零。 最后就是對主程序進(jìn)行編程了,這是其實只要做定時器的初始化,還有電機(jī)舵機(jī)的初始值,在循環(huán)中,只要做對管腳的循環(huán)掃描就可以了。 void main() { Time_config(); //定時器初始化。 EA = 1; //使能全局變量。 Steer_Ctrl =24; //舵機(jī)的初始值,中間位置,(值變小往右偏,大左)。 Motor_Ctrl = 0; //這里設(shè)定了電機(jī)的初始值,電機(jī)的起始狀態(tài)應(yīng)為禁止,所以轉(zhuǎn)速初始值為0。 while(1) { KeyScan
65、(); //此為鍵盤掃描函數(shù),其作用為掃描無線接收端的值,進(jìn)而正確反映按鍵功能。 } 4.4總程序介紹與總程序流程圖 遙控小車的總程序是將上訴遙控以及電機(jī)與舵機(jī)兩部分的程序相整合,將遙控的控制程序已定時器中斷的方式接入電機(jī)與舵機(jī)的程序當(dāng)中,隨后將兩部分程序接入到對定時器初始化并設(shè)置舵機(jī)與電機(jī)的初始值的主程序當(dāng)中,最后主程序最主要的工作就是對管腳的循環(huán)進(jìn)行掃描。其程序流程圖如圖16所示,而主程序及其程序注解見附錄。 圖16 系統(tǒng)程序流程圖 5. 結(jié)果展示與分析 本節(jié)將記錄在焊接和調(diào)試中的一些問題和感悟,并且展示遙控小車完成之后的各項功能,從而更好的描述出實物的效果。 5.1
66、電路焊接與調(diào)試 在電路的調(diào)試和焊接過程中主要用到了,錫焊,通靈,99SE,Keil。 首先利用通過99SE制作出來的電路原理圖來完成實際的接線,在洞洞板上按照原理圖放置電子元件之后先行對其進(jìn)行焊接。完成之后對照原理圖進(jìn)行實際的接線并且同時焊接,焊接完成先再次對照原理圖查看是否有接錯的線路。檢查完畢后使用通靈進(jìn)行檢查排除因為虛焊造成的線路斷路問題。在焊接的過程中對錫焊的使用需要十分注意,我在本次焊接中不慎將以根導(dǎo)線弄斷了,隨后將導(dǎo)線之間的斷裂部分用錫焊連接,后用塑料管進(jìn)行保護(hù)。 在線路焊接與檢查完成之后,開始對小車進(jìn)行性能測試,用遙控對小車發(fā)出指令,先確定小車是否可以順利執(zhí)行,最后再根據(jù)小車的實際執(zhí)行情況使用keil編程工具修改程序參數(shù)比保證精確。經(jīng)過反復(fù)的修改與調(diào)試對比之后確定:PWM的周
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 指向核心素養(yǎng)發(fā)展的高中生物學(xué)1輪復(fù)習(xí)備考建議
- 新課程新評價新高考導(dǎo)向下高三化學(xué)備考的新思考
- 新時代背景下化學(xué)高考備考策略及新課程標(biāo)準(zhǔn)的高中化學(xué)教學(xué)思考
- 2025屆江西省高考政治二輪復(fù)習(xí)備考建議
- 新教材新高考背景下的化學(xué)科學(xué)備考策略
- 新高考背景下的2024年高考化學(xué)二輪復(fù)習(xí)備考策略
- 2025屆高三數(shù)學(xué)二輪復(fù)習(xí)備考交流會課件
- 2025年高考化學(xué)復(fù)習(xí)研究與展望
- 2024年高考化學(xué)復(fù)習(xí)備考講座
- 2025屆高考數(shù)學(xué)二輪復(fù)習(xí)備考策略和方向
- 2024年感動中國十大人物事跡及頒獎詞
- XX教育系統(tǒng)單位述職報告教育工作概述教育成果展示面臨的挑戰(zhàn)未來規(guī)劃
- 2025《增值稅法》全文解讀學(xué)習(xí)高質(zhì)量發(fā)展的增值稅制度規(guī)范增值稅的征收和繳納
- 初中資料:400個語文優(yōu)秀作文標(biāo)題
- 初中語文考試專項練習(xí)題(含答案)