直流電機(jī)驅(qū)動(dòng)電路與電源模塊設(shè)計(jì)
微控制器模塊
AT89S52是一個(gè)低功耗、高性能CMOS 8位單片機(jī),片內(nèi)有8KB ISP的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。
AT89S52有40個(gè)引腳,片內(nèi)有8KB Flash程序存儲(chǔ)器,256B的RAM,32個(gè)外部雙向輸入/輸出口,5個(gè)中斷優(yōu)先級(jí),2層中斷嵌套,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器等。
在開發(fā)過(guò)程中使用開發(fā)板,以方便程序的調(diào)試和整機(jī)的測(cè)試,待系統(tǒng)調(diào)試完成后,將單片機(jī)從開發(fā)板上取下,安裝在機(jī)器人系統(tǒng)板的單片機(jī)座中,由于設(shè)計(jì)中的機(jī)器人需要完成的任務(wù)比較簡(jiǎn)單,因此只在機(jī)器人系統(tǒng)板的單片機(jī)系統(tǒng)中保留了晶振和復(fù)位電路,取消了JTAG編程口等冗余電路。
3.2 傳感器模塊
光電傳感器的工作原理是傳感器紅外發(fā)射管發(fā)射出紅外光,接收管根據(jù)反射回來(lái)的紅外光強(qiáng)度大小來(lái)計(jì)數(shù)的,故被檢測(cè)的部件或物體表面必須有黑白相間的部位用于吸收和反射紅外光,這樣接收管才能處于有效的截止和飽和區(qū)以達(dá)到計(jì)數(shù)的目的。傳感器的檢測(cè)與調(diào)節(jié)電路如圖2所示。圖中的R3用于調(diào)節(jié)比較器的門限電壓,經(jīng)示波器觀察,輸出波形相當(dāng)規(guī)則,可以直接供單片機(jī)查詢使用,而且經(jīng)驗(yàn)證給此電路供電的電池壓降較小。紅外光電傳感器通過(guò)主板P8、P9、P10接口連接到AT89S52的P0.5、P0.6和P0.7端口。其中P0.5 = 0,表示前方有障礙;P0.6 = 0 ,表示左方有障礙; P0.7=0,表示右方有障礙。
直流電機(jī)驅(qū)動(dòng)電路與電源模塊
直流電機(jī)通過(guò)主板的P5接口連接到主板的驅(qū)動(dòng)模塊上。本文采用L298作為電機(jī)的驅(qū)動(dòng)芯片,L298的5、7、10、12四個(gè)引腳連接到單片機(jī)上,通過(guò)對(duì)單片機(jī)的編程就可以實(shí)現(xiàn)兩組直流電機(jī)的正反轉(zhuǎn)等功能。由于單片機(jī)的電壓在4.8V左右,故采用VFM升壓型電源芯片,為單片機(jī)及外圍電路提供5V左右的電壓。
軟件開發(fā)環(huán)境與搜索算法
本文采用Keil U Version2 作為系統(tǒng)的開發(fā)環(huán)境,在程序設(shè)計(jì)中采用C語(yǔ)言和匯編語(yǔ)言混合編程。在軟件算法上,考慮到深度優(yōu)先搜索算法的時(shí)空效率和迷宮地形的復(fù)雜程度成正比,即迷宮越復(fù)雜,搜索出口的時(shí)間就越長(zhǎng)。本文采用了一種稱為左手(或右手)法則的迷宮路徑搜索策略,即在迷宮中一直沿著左側(cè)(或右側(cè))的墻尋找,就可以找到出口。
相對(duì)于深度優(yōu)先搜索法,左手(或右手)法則的空間占用與迷宮復(fù)雜程度無(wú)關(guān),機(jī)器人搜索路徑的選擇只與當(dāng)前結(jié)點(diǎn)有關(guān),不需要回溯。同時(shí),硬件的制造精度要求不高,不需要精確的控制機(jī)器人的移動(dòng)距離和移動(dòng)方向,方便了驅(qū)動(dòng)設(shè)計(jì)。為便于算法的實(shí)現(xiàn),本文設(shè)定了如下約束條件:
1.在算法中不管迷宮地形有多么復(fù)雜,均由直線、死路、丁字形、十字形、轉(zhuǎn)角形和終點(diǎn)七個(gè)基本地形構(gòu)成。
2.按分岔的多少將分岔口分為二岔口和三岔口(一般沒(méi)有四岔口),而將分岔口前面的岔路按從右到左的順序分別稱為第一岔路、第二岔路、第三岔路(十字型才有)。二岔路有三種不同的形式,第一種是前進(jìn)的路線右邊出現(xiàn)一條岔路(右邊的岔路稱為第一岔路、前方稱為第二岔路);第二種是在前進(jìn)的路線左邊出現(xiàn)一條岔路(前方稱為第一岔路、左邊的岔路稱為第二岔路);第三種是丁字路口(右邊的岔路稱為第一岔路、左邊的岔路稱為第二岔路)。對(duì)于這三種情況,算法對(duì)應(yīng)的程序由主程序、走直線子程序、左轉(zhuǎn)子程序、右轉(zhuǎn)子程序和校正子程序組成。主程序起到導(dǎo)向和決策的功能,決定機(jī)器人什么時(shí)候該做什么。機(jī)器人的其他功能通過(guò)調(diào)用具體的子程序來(lái)實(shí)現(xiàn)。
本文所采用的迷宮搜索算法流程如圖3所示。接通電機(jī)和傳感器電源后,單片機(jī)在程序的控制下,根據(jù)傳感器檢測(cè)到的值,決定電機(jī)的正轉(zhuǎn)和反轉(zhuǎn)。當(dāng)P0.7=1時(shí),表示左方?jīng)]有障礙物,依據(jù)“右手”遍歷算法,機(jī)器人將調(diào)用右轉(zhuǎn)子程序;當(dāng)P0.7=0并且P0.5=0時(shí),機(jī)器人將調(diào)用左轉(zhuǎn)子程序;否則機(jī)器人直線前進(jìn),如此反復(fù)檢測(cè)并調(diào)整機(jī)器人的動(dòng)作,直至機(jī)器人走出迷宮為止。
從架構(gòu)上看,CLB與FPGA的可編程邏輯結(jié)構(gòu)很相似。構(gòu)成CLB的每個(gè)BLE由?個(gè)4輸?LUT(Lookup-Table, 查找表)和?個(gè)D觸發(fā)器組成。CLB的輸入接口提供了16個(gè)輸入的選擇鎖存器,每個(gè)選擇鎖存器可以選擇最多40種不同的信號(hào)之一的信號(hào)來(lái)作為輸入,這些信號(hào)可以是通過(guò)外部引腳輸入的信號(hào),內(nèi)部外設(shè)的輸出信號(hào)以及軟件操作的寄存器的信號(hào)。CLB輸入端都嵌入了可編程的邊沿檢測(cè)器,這些邊沿檢測(cè)器默認(rèn)由上升沿觸發(fā),但可以編程為由下降沿觸發(fā)或完全旁路。
另外,CLB支持8路輸出可以路由到外部引腳、內(nèi)部寄存器或內(nèi)部外圍設(shè)備的輸?。CLB還包含?個(gè)3位硬件計(jì)數(shù)器,以幫助使?CLB構(gòu)建狀態(tài)機(jī)。當(dāng)MCU需要執(zhí)?簡(jiǎn)單的多任務(wù)并?處理,或者需要實(shí)現(xiàn)少量硬件級(jí)實(shí)時(shí)處理時(shí),CLB的作?就會(huì)更?程度地顯現(xiàn)出來(lái)。開發(fā)者可以使?CLB來(lái)實(shí)現(xiàn)狀態(tài)機(jī)或“?速”外設(shè),例如軟件驅(qū)動(dòng)的信號(hào)多路復(fù)?器、計(jì)數(shù)器、正交解碼器、步進(jìn)電機(jī)控制器或?速PWM(脈寬調(diào)制器)等。
全新的開發(fā)體驗(yàn)
實(shí)際上,對(duì)于Microchip來(lái)說(shuō),在MCU中集成可編程邏輯功能并不是?個(gè)全新的課題。早在?多年前,Microchip就曾在其MCU中引?了?種被稱為可配置邏輯單元(CLC)的可編程邏輯外設(shè),這?設(shè)計(jì)思路的價(jià)值已經(jīng)被市場(chǎng)所驗(yàn)證。隨著實(shí)際應(yīng)?中對(duì)更復(fù)雜的可編程邏輯需求的增加,終在PIC16F13145系列中演化出了CLB這個(gè)規(guī)模更?、更復(fù)雜的可編程邏輯塊,完成了?次重要的迭代升級(jí),也使得該系列MCU能夠?于以往屬于獨(dú)?可編程邏輯器件的應(yīng)?領(lǐng)域。
PIC16F13145系列MCU這一獨(dú)特的定位,可以為開發(fā)者帶來(lái)諸多好處。
首先,集成到MCU的CLB,是通過(guò)硬件的方式實(shí)現(xiàn)邏輯功能,在性能上明顯優(yōu)于“通用MCU+軟件”的模式,有利于優(yōu)化嵌入式控制系統(tǒng)的速度和響應(yīng)時(shí)間,提升整體的系統(tǒng)性能。而且由于在系統(tǒng)設(shè)計(jì)時(shí),無(wú)需增加額外的外部邏輯器件,還可以降低BOM成本,可謂是一舉兩得。
其次,作為獨(dú)立于CPU內(nèi)核的外設(shè),PIC16F13145中的CLB可以在CPU處于睡眠模式時(shí)運(yùn)行,以響應(yīng)和處理來(lái)自外部和內(nèi)部的任務(wù),更大限度地降低MCU的功耗。CLB還可以與其他外設(shè)(如定時(shí)器、ADC、PWM模塊等)結(jié)合使用,進(jìn)一步優(yōu)化系統(tǒng)功耗性能。
此外,CLB還有助于PIC16F13145系列MCU實(shí)現(xiàn)更強(qiáng)的可擴(kuò)展性。在實(shí)際工作中,隨著需求的變化,設(shè)計(jì)的調(diào)整在所難免,而PIC16F13145系列MCU所具備的可編程邏輯功能,使得開發(fā)者無(wú)需“從頭再來(lái)”徹底修改整個(gè)設(shè)計(jì),就能夠通過(guò)靈活的硬件編程快速完成設(shè)計(jì)迭代,簡(jiǎn)化整個(gè)設(shè)計(jì)流程。
由此可見,憑借CLB模塊而帶來(lái)的更高的性能、更低的功耗以及更強(qiáng)的可擴(kuò)展性,加之其他豐富的片上資源(包括具有內(nèi)置計(jì)算功能的快速10位ADC、8位DAC、快速比較器、8位和16位定時(shí)器,以及I2C和SPl等通信模塊),PIC16F13145系列MCU無(wú)疑為嵌入式開發(fā)者提供了一個(gè)強(qiáng)大而靈活的開發(fā)利器。
完善的開發(fā)生態(tài)
當(dāng)然,?個(gè)嵌?式硬件平臺(tái),加上配套的軟件開發(fā)?具以及相關(guān)技術(shù)資源,才能夠提供完整的開發(fā)體驗(yàn)。具體到PIC16F13145系列MCU這個(gè)創(chuàng)新的硬件架構(gòu),更是需要完善開發(fā)?態(tài)的?持,盡可能降低開發(fā)者上?“嘗鮮”的?檻。
好消息是,這?點(diǎn)Microchip已經(jīng)準(zhǔn)備好了。PIC16F13145 系列MCU 的開發(fā), 可以得到MPLAB 代碼配置器(MCC)的?持,MCC是Microchip的MPLAB X IDE中?個(gè)免費(fèi)軟件插件,為開發(fā)者提供了?個(gè)基于GUI的簡(jiǎn)便開發(fā)界?,?于配置器件和片上外設(shè)(包括CLB)。CLB所需的?定義邏輯配置可通過(guò)MCC創(chuàng)建原理圖,因此??減少了開發(fā)時(shí)間,?且?戶可以使?硬件描述語(yǔ)?(Verilog)作為開發(fā)語(yǔ)言,增加了開發(fā)的靈活性。自定義邏輯配置的原理圖也可以通過(guò)在線方式創(chuàng)建(logic.microchip.com)。
同時(shí),PIC16F13145 Curiosity Nano評(píng)估套件可為使?PIC16F13145系列MCU進(jìn)?設(shè)計(jì)提供全??持,?需外部?具、編程和調(diào)試,簡(jiǎn)單易?,有助于開發(fā)者實(shí)現(xiàn)?縫嵌?式開發(fā)體驗(yàn),縮短產(chǎn)品上市時(shí)間。
今天,競(jìng)爭(zhēng)激烈的MCU市場(chǎng),迫切需要差異化的創(chuàng)新產(chǎn)品。Microchip的PIC16F13145系列MCU,創(chuàng)造性地將可編程邏輯外設(shè)功能與8位MCU架構(gòu)相結(jié)合,在繼承MCU固有優(yōu)勢(shì)特性的同時(shí),?帶來(lái)了更佳的性能、低功耗特性和可擴(kuò)展性,在實(shí)時(shí)控制、數(shù)字傳感器節(jié)點(diǎn),以及?業(yè)和汽?等細(xì)分市場(chǎng),為嵌?式開發(fā)者提供了全新的想象空間和開發(fā)體驗(yàn)。