魯益帆



摘 要:智能小車可以根據(jù)人們的需求,添加一些特定的功能,比如工廠里,檢測(cè)一定區(qū)域的溫度或氣體參數(shù),在人不便暴露的情況下,智能小車就可以代替人們工作了,它可以沿著一定的軌跡,按照設(shè)計(jì)好的道路前進(jìn),進(jìn)行探測(cè)。但是一旦遇到規(guī)定道路以外的情況又該怎么辦,這時(shí)還需要人對(duì)小車進(jìn)行控制,就產(chǎn)生了無(wú)線控制的需求,本文正是以無(wú)線通信作為重點(diǎn),對(duì)智能小車進(jìn)行設(shè)計(jì)。
本文設(shè)計(jì)智能小車實(shí)現(xiàn)的主要功能是利用電腦端上位機(jī)通過(guò)nRF24L01模塊發(fā)送信息給以STC89C51單片機(jī)為核心的智能小車,來(lái)完成實(shí)時(shí)無(wú)線通信并對(duì)實(shí)現(xiàn)其遠(yuǎn)程操控。
關(guān)鍵詞:智能小車;nRF2401;循跡行駛;串口通信;無(wú)線通信
概述
本文是基于STC89C51系列單片機(jī)進(jìn)行智能循跡小車的設(shè)計(jì)與制作。小車依靠紅外光電傳感器檢測(cè)道路和反饋路況信號(hào),自主控制小車按照規(guī)定的路徑行駛,并能實(shí)現(xiàn)啟動(dòng)、停車、蔽障、入庫(kù)、報(bào)警等功能,當(dāng)小車發(fā)現(xiàn)規(guī)定路徑以外的情況,可以人工干預(yù),采用遠(yuǎn)程無(wú)線控制的操作,進(jìn)行查看。
1系統(tǒng)設(shè)計(jì)
本設(shè)計(jì)使用STC89C51單片機(jī)為核心的智能小車進(jìn)行循跡行駛,且電腦可以與其實(shí)時(shí)無(wú)線通信并對(duì)其遠(yuǎn)程控制。設(shè)計(jì)使用到了STC89C51單片機(jī)、nRF24L01無(wú)線通信模塊、信號(hào)采樣模塊、驅(qū)動(dòng)電機(jī)模塊、電源模塊等模塊來(lái)完成。
1.1系統(tǒng)整體方案設(shè)計(jì)
實(shí)現(xiàn)系統(tǒng)總體方案如圖1所示。
1.2單片機(jī)最小系統(tǒng)
本設(shè)計(jì)的控制核心為STC89C51單片機(jī),通過(guò)各個(gè)IO口來(lái)控制每一個(gè)模塊。STC89C51采用的是8051核的ISP在系統(tǒng)可編程芯片,單片機(jī)兼容標(biāo)準(zhǔn)的111條MCS-51算數(shù)運(yùn)算指令及80C51引腳結(jié)構(gòu)。時(shí)鐘頻率從0~35MHz,實(shí)際工作頻率可達(dá)48MHz,4KB的flash,512B RAM,共有27個(gè)IO口,有2個(gè)16位定時(shí)器/計(jì)數(shù)器,2路外部中斷。具有UART和SPI,可支持全雙工通信。本設(shè)計(jì)需要8個(gè)采樣信號(hào)輸入IO口,6個(gè)電機(jī)驅(qū)動(dòng)IO口,8個(gè)無(wú)線模塊數(shù)據(jù)傳輸IO口,完全可以滿足本文的設(shè)計(jì)。
1.3采樣模塊
這里,采用TCRT5000型號(hào)的傳感器。目前,循跡軌跡的顏色大都是黑色,因?yàn)楹谏軌蛭沾蟛糠值墓猓瑢?dǎo)致反射的光減少。當(dāng)紅外發(fā)射管發(fā)射的紅外線遇到黑色物體時(shí),大部分紅外線都被吸收了,反射出來(lái)的紅外線就變得極少;若是照射到白色物體上時(shí),大部分的紅外線都會(huì)被反射回來(lái)。TCRT5000傳感器的紅外發(fā)射二極管一直不間斷地發(fā)射紅外線,如果沒(méi)有檢測(cè)到反射回來(lái)的紅外線,則光敏三極管一直處于斷開狀態(tài),模塊輸出低電平;相反,如果檢測(cè)到的紅外線達(dá)到要求值,則可以導(dǎo)通光敏三極管,讓模塊輸出高電平。由此,就可以判斷小車是否在規(guī)定的路徑上行駛了。
有了TCRT5000檢測(cè)黑線,還不夠。還需要添加外部檢測(cè)電路,才能實(shí)現(xiàn)采樣功能,可以有多種選擇,本文采用LM339(四路差動(dòng)比較器)。電路設(shè)計(jì)如圖3所示:比較器有兩個(gè)輸入端和一個(gè)輸出端,“+”號(hào)表示的為同輸入端,“-”示的為反向輸入端。比較信號(hào)電壓時(shí),哪一端的電壓高邊輸出哪一端的電壓。R4為滑動(dòng)變阻器,作分壓電阻來(lái)提供合適的比較電壓,根據(jù)路面情況和小車底盤距離地面的高度可以進(jìn)行適當(dāng)?shù)恼{(diào)節(jié)。
1.4驅(qū)動(dòng)模塊
STC89C51的每一個(gè)IO口最多只能輸出20mA左右的電流,這樣小的電流遠(yuǎn)遠(yuǎn)不能驅(qū)動(dòng)直流電機(jī)。因此必須借助驅(qū)動(dòng)芯片來(lái)驅(qū)動(dòng)電機(jī)。本文采用了較為常見的L298N驅(qū)動(dòng)芯片。本設(shè)計(jì)L298N采用封裝是15腳Multiwatt封裝。可以驅(qū)動(dòng)兩個(gè)接直流電機(jī),使用單片機(jī)的IO口提供信號(hào);而且電路簡(jiǎn)單,使用比較方便。L298N驅(qū)動(dòng)模塊中驅(qū)動(dòng)一個(gè)直流電機(jī)的信號(hào)有三個(gè)(ENA, OUT1, OUT2),分別連接MCU的P2.0, P2.2, P2.3, 分別負(fù)責(zé)芯片的使能和電機(jī)正轉(zhuǎn)反轉(zhuǎn),本設(shè)計(jì)中的EA端接+5V信號(hào)。
1.5電源模塊
為了使輸入電壓達(dá)到一個(gè)穩(wěn)定的值,電源模塊的芯片采用了LM2576HVT-5.0,穩(wěn)壓降壓效果很好,最高輸入電壓不超過(guò)45V。電源插口出,設(shè)計(jì)有整流橋,將交流轉(zhuǎn)化為直流,也可以防止反接。本設(shè)計(jì)采用的是通用的18650電池組,供電電壓為7.4V。
1.6無(wú)線模塊
nRF24L01是一款單片無(wú)線收發(fā)器芯片,工作在2.4~2.5GHz世界通用ISM頻段。輸出功率、頻道選擇和協(xié)議的設(shè)置都是通過(guò)SPI接口進(jìn)行設(shè)置。ISM頻段是主要開放給工業(yè),科學(xué)和醫(yī)學(xué)機(jī)構(gòu)使用,這一頻段是免費(fèi)使用的,而且無(wú)需申請(qǐng)。
整體模塊的配置,包括工作模式,輸出功率和頻道的選擇,協(xié)議的設(shè)置等等都可以通過(guò)SPI串口與單片機(jī)連接進(jìn)行設(shè)置,同時(shí)傳輸無(wú)線數(shù)據(jù)。
本設(shè)計(jì)中,nRF24L01采用的是模塊化產(chǎn)品,在主板位置預(yù)留出接口即可,即插即用。CE引腳的作用是使能,讓芯片發(fā)射或者接收,CSN,SCK,MOSI,MISO這四個(gè)是SPI串口通信的引腳,分別是片選線,時(shí)鐘線,輸入線和輸出線。MCU可通過(guò)這四個(gè)引腳來(lái)控制和配置nRF24L01;另外IRQ為中斷標(biāo)志。
2 電機(jī)控制
本文對(duì)驅(qū)動(dòng)電機(jī)模塊的信號(hào)控制設(shè)計(jì)方面,采用了PWM(脈沖寬度調(diào)制)控制,這是一種非常經(jīng)濟(jì)、方便且實(shí)用的方法,搭配L298N的驅(qū)動(dòng)電路實(shí)現(xiàn)對(duì)直流電機(jī)的調(diào)速。單片機(jī)引腳輸出的波形,一般是矩形波,且周期是固定的。改變每一個(gè)周期中高電平的脈沖寬度,即高電平在整個(gè)周期之中的占有比例,也稱作占空比,就是PWM。
有一些單片機(jī),本身就含有硬件PWM 模塊,這樣設(shè)計(jì)程序時(shí)就變得較為簡(jiǎn)單,但STC89C51系列,就不具備這個(gè)條件。在沒(méi)有 PWM 硬件的單片機(jī)上實(shí)現(xiàn) PWM,并不困難,只需一個(gè)定時(shí)器,讓它在中斷方式工作即可,控制其中斷的時(shí)間,這樣就可以控制高電平輸出的時(shí)間,從而改變其占空比,完成PWM控制。
電機(jī)的轉(zhuǎn)速是由電機(jī)電壓進(jìn)行控制的,電壓越大,電機(jī)的轉(zhuǎn)速也就越快,而電機(jī)兩端的電壓是由控制信號(hào)波形中的占空比來(lái)決定的,占空比越大,電壓也就越大,相當(dāng)于占空比越大,電機(jī)的轉(zhuǎn)速也就越快。當(dāng)占空比=1時(shí),電機(jī)轉(zhuǎn)速達(dá)到最大。在實(shí)際操作過(guò)程中,控制信號(hào)的頻率不用很高,400Hz以下就足夠使用了,占空比的多級(jí)調(diào)節(jié)可由實(shí)際進(jìn)行設(shè)計(jì),10級(jí),20級(jí)調(diào)節(jié)都是可以的。此外,在小車前進(jìn)時(shí),占空比不需要太高,太高會(huì)導(dǎo)致小車全速行駛,這樣循跡信號(hào)的檢測(cè),就變得很不穩(wěn)定了。直線行駛和轉(zhuǎn)彎行駛應(yīng)該分開來(lái)設(shè)計(jì),轉(zhuǎn)彎的時(shí)候,車速不宜過(guò)快,否則方向不易控制,小車容易滑出規(guī)定的線路之外,若是設(shè)計(jì)的太慢了,未免過(guò)于浪費(fèi)時(shí)間,可以根據(jù)實(shí)際情況,進(jìn)行調(diào)節(jié)。
3 軟件開發(fā)
常用的開發(fā)思維即是模塊化編程,先將系統(tǒng)需求分劃開來(lái),分成多個(gè)模塊,然后按每個(gè)模塊來(lái)細(xì)化編寫,主要在keil5軟件平臺(tái)進(jìn)行編寫,使用STC燒寫軟件進(jìn)行燒寫。
主要分為一下幾個(gè)模塊:
1.采樣檢測(cè)模塊:主要檢測(cè)路面的黑色循跡線路,當(dāng)識(shí)別到黑色循跡線路時(shí),要給單片機(jī)一個(gè)反饋信息,同時(shí)要點(diǎn)亮對(duì)應(yīng)的二極管方便查看。
2.PWM調(diào)速模塊:?jiǎn)纹瑱C(jī)通過(guò)定時(shí)中斷來(lái)控制IO口輸出波形中高電平的占空比,從而實(shí)現(xiàn)對(duì)電機(jī)兩端電壓的調(diào)整,完成加速和減速操作。
3. 小車控制模塊:通過(guò)L298N驅(qū)動(dòng)來(lái)操控電機(jī)的前進(jìn)后退等基本操作。根據(jù)PWM調(diào)速模塊和采樣檢測(cè)模塊,實(shí)時(shí)調(diào)整電機(jī)的速度,通過(guò)左右輪速差,來(lái)做到轉(zhuǎn)彎前進(jìn)。
4. 無(wú)線通信模塊:電腦端通過(guò)上位機(jī)對(duì)nRF24L01模塊的操作,發(fā)射無(wú)線信息給智能小車,小車通過(guò)nRF24L01模塊來(lái)接收信息,進(jìn)行判斷,執(zhí)行操作。所以要對(duì)nRF24L01模塊進(jìn)行配置。
4. 總結(jié)
本文基于nRF24L01芯片展開了設(shè)計(jì),目的就是通過(guò)無(wú)線操作智能小車,來(lái)完成一些人類不便進(jìn)入的區(qū)域的任務(wù),既然是模塊化的設(shè)計(jì),就如同搭積木一般,可裝可拆,本設(shè)計(jì)還有更多的展望,如添加一個(gè)溫度檢測(cè)傳感器、氣體檢測(cè)傳感器等等,在一些較為危險(xiǎn)的地方,可以代替人類進(jìn)行探測(cè)。
參考文獻(xiàn):
[1]張毅剛.單片機(jī)原理及接口技術(shù)[M], 人民郵電出版.