郭興龍
(廣州市市政職業(yè)學(xué)校,廣東廣州 510507)
在科技技術(shù)更新日異月新的情況下,終身學(xué)習(xí)觀念已經(jīng)深入人心,學(xué)習(xí)對(duì)于人們來(lái)說(shuō)已經(jīng)必不可少了。但是,人們還是比較傾向于既能夠體驗(yàn)樂(lè)趣,又能夠?qū)W到專業(yè)知識(shí)的學(xué)習(xí)方法。本系統(tǒng)小車的制作,就是讓學(xué)習(xí)者在制作過(guò)程中,不僅體驗(yàn)制作樂(lè)趣,又學(xué)習(xí)了較強(qiáng)的專業(yè)知識(shí),集趣味性、專業(yè)性于一體,其可行性是可以驗(yàn)證的。學(xué)習(xí)者完成該項(xiàng)目之后,電路板還可以擴(kuò)展制作其它科技作品,為后續(xù)的可持續(xù)學(xué)習(xí)提供素材。在制作完成過(guò)程中,學(xué)習(xí)者能夠詳細(xì)的了解電子元器件焊接技術(shù)、單片機(jī)技術(shù)、PCB板制作、傳感器技術(shù)、通信技術(shù)、電機(jī)控制技術(shù)、PWM控制理論以及上位機(jī)軟件應(yīng)用等的知識(shí)[1],為今后的學(xué)習(xí)工作的深入發(fā)展,打下良好基礎(chǔ)。基于這一出發(fā)點(diǎn),本文詳細(xì)介紹了遙控小車的設(shè)計(jì)與制作過(guò)程。
本小車系統(tǒng),主要由遙控發(fā)射板和接收驅(qū)動(dòng)板兩部分組成,接收驅(qū)動(dòng)板安裝在小車底盤(pán)上,底盤(pán)采用左右一個(gè)輪子和車架尾部一個(gè)萬(wàn)向輪的三角支撐結(jié)構(gòu)。輪子由T130的直流電動(dòng)機(jī),經(jīng)過(guò)1:48變速后帶動(dòng),系統(tǒng)控制左右電機(jī)的轉(zhuǎn)速不一樣,存在一個(gè)轉(zhuǎn)速差,從而實(shí)現(xiàn)小車的不同角度的轉(zhuǎn)向控制。整個(gè)系統(tǒng)采用可充電電池供電的模式。
系統(tǒng)以NF-04-MI-2.4G無(wú)線模塊作為通訊介質(zhì),以STC15W408AS為核心控制器,其系統(tǒng)框圖如圖1所示。發(fā)送板單片機(jī)利用自帶的AD功能,對(duì)兩向手柄搖桿電位器的電壓信號(hào)進(jìn)行采樣,按一定周期將AD數(shù)據(jù)和按鍵等信息,通過(guò)2.4G模塊發(fā)送出去。接收板的2.4G模塊,接收到有效信息之后,接收板單片機(jī)通過(guò)查詢的方式,將信息讀取出來(lái)。單片機(jī)再結(jié)合避障傳感器信號(hào),利用PWM技術(shù)控制左右兩個(gè)電機(jī)正反轉(zhuǎn)運(yùn)動(dòng)轉(zhuǎn)速,從而實(shí)現(xiàn)小車的各種運(yùn)動(dòng)狀態(tài)控制。PC機(jī)端上位機(jī)軟件,通過(guò)RS232串口與接收板、發(fā)送板通訊連接,將獨(dú)立的地址碼下載到單片機(jī)[2],保存在單片機(jī)的EEROM,這樣,發(fā)送板和接收板地址一樣,就可以通訊連接上,并且保證不同的小車,地址碼不一樣,相互不干擾,能夠獨(dú)立控制。

圖1 遙控小車系統(tǒng)原理框圖
小車硬件設(shè)計(jì),包括主要元器件選型和電路設(shè)計(jì)等部分。
STC15W408AS單片機(jī)是深圳宏晶公司生產(chǎn)一款低成本、低功耗、超高速的、具有ISP功能的8051內(nèi)核單片機(jī),最高工作頻率可以達(dá)到33 MHz,芯片采用SOP-16封裝,I/O口達(dá)到14個(gè)管腳,具有1路SPI、3路PWM、8路ADC、3個(gè)定時(shí)器和1個(gè)USART串口,8 kB的flash存儲(chǔ)器容量,512字節(jié)的SRAM和5 kB的EEPROM等資源,工作電壓是2.5~5.5V,內(nèi)部集成了晶振電路、看門狗電路和復(fù)位電路,芯片功能豐富,使用方便,開(kāi)發(fā)靈活,完全能夠滿足小車控制要求[3]。該芯片具有的ISP在線下載功能,可以通過(guò)串口,直接將編譯器生成的可執(zhí)行HEX文件燒錄到單片機(jī),可以多次燒錄,開(kāi)發(fā)方便。
NF-04-MI-2.4G無(wú)線模塊是一款基于BK245芯片設(shè)計(jì)的2.4G無(wú)線通信模塊,該模塊采用SPI接口模式,具有高穩(wěn)定性,高性價(jià)比,抗干擾強(qiáng),低輻射,性價(jià)比高等優(yōu)點(diǎn)。該模塊集成了發(fā)送、接收等鏈路層,有效數(shù)據(jù)量可達(dá)32字節(jié),數(shù)據(jù)收發(fā)全部自動(dòng)完成,收發(fā)自動(dòng)產(chǎn)生應(yīng)答信號(hào)。發(fā)送時(shí),內(nèi)置CRC校驗(yàn)碼自動(dòng)生成,接收數(shù)據(jù)時(shí),CRC自動(dòng)校驗(yàn),能夠檢測(cè)數(shù)據(jù)的有效性。該模塊還可以設(shè)置重復(fù)發(fā)送的時(shí)間和次數(shù)。單片機(jī)和無(wú)線模塊,通過(guò)SPI接口相連,接口簡(jiǎn)單,傳輸速率快,易于開(kāi)發(fā)。其主要特點(diǎn)參數(shù)如下:
(1)支持GFSK/FSK等通用調(diào)制方式,支持六通道數(shù)據(jù)收發(fā);
(2)支持2Mbit/s/1Mbit/s/250kbit/s等數(shù)據(jù)速率;
(3)頻點(diǎn)多達(dá)126點(diǎn),實(shí)現(xiàn)多點(diǎn)通信和跳頻通信需要;
(4)內(nèi)部集成高PSRR的LDO;
(5)寬電源電壓范圍:1.9~3.6 V;
(6)功耗低,平均發(fā)射電流低至110 mA;
(7)接收靈敏度:-96dBm@250 kbit/s;
(8)最高發(fā)射功率:+7dBm。
其通訊數(shù)據(jù)包格式如表1所示。

表1 數(shù)據(jù)包格式
其中,引導(dǎo)碼是固定格式的,地址碼3~5字節(jié),由用戶設(shè)置,成套的設(shè)備地址碼必須一樣,否則通訊信息無(wú)效。通訊包控制位由相應(yīng)寄存器設(shè)置,控制通訊方式。有效數(shù)據(jù)可由用戶根據(jù)需要,決定數(shù)據(jù)量字節(jié)數(shù),數(shù)據(jù)滿足需要即可,如果數(shù)據(jù)量較大,通訊時(shí)間相應(yīng)增加。CRC校驗(yàn)碼,在發(fā)送模式下,由系統(tǒng)自行計(jì)算產(chǎn)生,并且自動(dòng)發(fā)送;在接收模式下,系統(tǒng)根據(jù)接收的數(shù)據(jù)自動(dòng)核對(duì)校驗(yàn)碼,如果校驗(yàn)碼不對(duì),接收的數(shù)據(jù)將被舍棄。
為了同時(shí)滿足單片機(jī)和無(wú)線模塊同時(shí)工作,提高芯片工作穩(wěn)定性,發(fā)送板的工作電壓統(tǒng)一采用3.3 V。發(fā)送板主要由兩節(jié)五號(hào)電池供電,電池電壓經(jīng)過(guò)升壓芯HT7733S轉(zhuǎn)換之后,電壓穩(wěn)定在3.3 V,滿足系統(tǒng)工作要求。HT7733S是一款低噪聲,低紋波的同步型DC-DC升壓轉(zhuǎn)換芯片,采用SOT-23封裝,啟動(dòng)電壓低至0.7 V,轉(zhuǎn)換效率可達(dá)80%,輸出電壓誤差范圍為±2.5%,輸出電流可達(dá)100 mA。外圍電路簡(jiǎn)單,只需要搭配一個(gè)10μH的功率電感即可,如圖2所示。

圖2 HT7733S電源設(shè)計(jì)電路
遙控小車動(dòng)力常用兩個(gè)130直流電機(jī),其額定工作電壓是5 V,工作電壓范圍是3~9 V,空載電流是130 mA,小車一般使用可充電鎳鎘電池組,標(biāo)稱電壓是7.2 V,為滿足單片機(jī)和無(wú)線模塊電源需要,采用AMS1117-3.3電源芯片設(shè)計(jì)電路。AMS1117-3.3芯片是一款低功耗、低紋波的線性穩(wěn)壓電源集成模塊,采用SOT-223封裝,輸入電壓范圍為4~15 V,輸出電壓3.3 V,輸出電流可達(dá)1 A,電路簡(jiǎn)單、可靠,能夠完全滿足電路設(shè)計(jì)要求。電路設(shè)計(jì)如圖3所示。

圖3 驅(qū)動(dòng)板電源設(shè)計(jì)
小車的運(yùn)動(dòng),主要是由兩個(gè)130直流有刷電動(dòng)機(jī)驅(qū)動(dòng),電機(jī)驅(qū)動(dòng)采用MX612E芯片,其內(nèi)部采用H橋電路結(jié)構(gòu)設(shè)計(jì),電流內(nèi)阻低,內(nèi)部集成了N溝道和P溝道的功率MOSFET管,工作電壓范圍為2~9.6 V,工作可持續(xù)電流達(dá)1.4 A,峰值電流可達(dá)2.5 A,具有過(guò)熱保護(hù)功能,比較適合驅(qū)動(dòng)線圈、馬達(dá)等感性負(fù)載。其功能圖框如圖4所示。

圖4 MX612E原理結(jié)構(gòu)圖
如圖4所示,OUTA和OUTB接直流電動(dòng)機(jī),VCC是邏輯控制電源,VDD是電機(jī)電源。INA和INB是控制電機(jī)的正反轉(zhuǎn)的邏輯輸入,連接到單片機(jī)的I/O口管腳。根據(jù)INA和INB輸入值,決定該芯片的工作狀態(tài),其真值表如表2所示。

表2 真值表
MX612E芯片四種工作狀態(tài)如圖5所示。
當(dāng)INB或者INA為邏輯高電平的時(shí)候,另外一邊輸出PWM信號(hào),直流電動(dòng)機(jī)在導(dǎo)通和剎車模式之間切換,電機(jī)轉(zhuǎn)速將受到PWM信號(hào)占空比控制,達(dá)到穩(wěn)定平滑調(diào)速效果。在剎車模式下,馬達(dá)儲(chǔ)存的能量通過(guò)低邊的NMOS管快速釋放。此外,如果PWM信號(hào)工作頻率過(guò)低,在PWM占空比較低的情況下,電機(jī)由剎車模式進(jìn)入導(dǎo)通模式下,會(huì)導(dǎo)致電機(jī)出現(xiàn)無(wú)法平滑轉(zhuǎn)動(dòng)的情況。為減小電機(jī)噪音,PWM信號(hào)頻率控制在10 kHz~50 kHz的范圍之內(nèi)。

圖5 MX612E的四種工作模式
避障傳感器,主要采用紅外傳感器檢測(cè),由紅外發(fā)光二極管和接收二極管組成。紅外發(fā)射二極管發(fā)射波長(zhǎng)約為940 nm的紅外線,如沒(méi)有遇到障礙物,紅外線將散射出去,遇到障礙物,紅外線被障礙物反射回來(lái),光敏二極管接收到紅外線后,根據(jù)紅外線的光輻照度,其內(nèi)阻發(fā)生變化。
紅外傳感器避障利用此原理,電路設(shè)計(jì)如圖6所示,發(fā)射管不斷發(fā)出紅外線,接收管與電阻串聯(lián),連接到電壓運(yùn)放的同相端,當(dāng)接收管接收紅外線之后,內(nèi)部導(dǎo)通,使同相端輸入電壓,與反相端電壓比較,輸出信號(hào)傳輸?shù)絾纹瑱C(jī)。調(diào)整電位器,可以調(diào)節(jié)紅外傳感器的檢測(cè)距離。

圖6 避障紅外傳感器電路設(shè)計(jì)
遙控小車發(fā)送板,為提高通訊可靠性,NF-04-MI-2.4G模塊采用250 kbit/s的通訊速率,地址碼為5字節(jié),CRC校驗(yàn)為2字節(jié),重復(fù)發(fā)送次數(shù)是3次,通訊有效數(shù)據(jù)是5字節(jié)。通過(guò)計(jì)算,完成一次發(fā)送的時(shí)間約為0.48 ms,為保證CPU具有足夠的時(shí)間處理,采用10 ms的周期通訊一次。發(fā)送板單片機(jī)對(duì)兩個(gè)搖桿電位器進(jìn)行連續(xù)電壓采樣,為提高數(shù)據(jù)的有效性,數(shù)據(jù)經(jīng)過(guò)平均值處理。10 ms的周期,采用定時(shí)器控制,定時(shí)時(shí)間一到,單片機(jī)將搖桿的AD數(shù)據(jù)、按鍵等信息發(fā)送出去。如果發(fā)送失敗,無(wú)線模塊自動(dòng)重發(fā),若超過(guò)了設(shè)置的重復(fù)次數(shù),單片機(jī)讀取到發(fā)送失敗的信息后,指示燈以1 Hz的頻率閃爍,如果通訊成功,以25 Hz的頻率閃爍。程序設(shè)計(jì)流程圖如圖7所示。信號(hào)的AD采樣,采用中斷方式,采樣實(shí)時(shí)性要求不高,為降低CPU工作負(fù)荷,采樣周期是540時(shí)鐘,采樣次數(shù)達(dá)到15次之后,取平均值作為一次有效數(shù)據(jù),其工作流程圖如圖8所示。

圖7 發(fā)送程序流程圖

圖8 AD采樣流程圖
接收驅(qū)動(dòng)板采用查詢控制方式。主函數(shù)不斷查詢無(wú)線模塊,檢測(cè)是否接收到有效信息。如果沒(méi)有檢測(cè)到有效信息或者通訊失敗,程序?qū)㈦妱?dòng)機(jī)做停機(jī)處理。如果接收到有效信息,根據(jù)AD采樣到的數(shù)據(jù),決定小車的運(yùn)動(dòng)狀態(tài)。電機(jī)的轉(zhuǎn)速,由AD數(shù)據(jù)經(jīng)過(guò)運(yùn)算,利用單片機(jī)自帶的PWM發(fā)送控制寄存器,產(chǎn)生PWM信號(hào),直接控制直流電動(dòng)機(jī)的轉(zhuǎn)速,從而使小車速度平滑控制,系統(tǒng)采用開(kāi)環(huán)的控制方式。驅(qū)動(dòng)板接收程序流程圖如圖9所示。
系統(tǒng)初始化部分程序:
Timer0Init();
InitADC();
InitPCA();
Read_ADDRESS();
NF_04_MI_Init();
單片機(jī)STC15W408AS的PWM輸出,主要是由PCA模塊產(chǎn)生。PCA含是一個(gè)16位定時(shí)/計(jì)數(shù)器,其內(nèi)部結(jié)構(gòu)如圖所示,其時(shí)基可以是系統(tǒng)時(shí)鐘SYSclk、定時(shí)器0溢出和外部輸入ECI(P1.2),通過(guò)設(shè)置CMOD和CCON寄存器來(lái)選擇[3]。
為了提高電機(jī)控制的平滑度,PWM控制采8位的控制方式,其頻率是:
fPWM=PCA時(shí)基頻率/256
為提高系統(tǒng)處理速度,單片機(jī)采取內(nèi)部時(shí)鐘,沒(méi)有經(jīng)過(guò)分頻,其工作時(shí)鐘頻率是18.432 MHz的。PCA時(shí)基采用SYSclk/4,由上式計(jì)算:
fPWM=18 kHz,該頻率滿足電機(jī)控制的頻率范圍。
PWM控制初始化程序:

圖9 接收程序流程圖
CCON=0; //初始化PCA控制寄存器
CMOD=0x0a; //設(shè)置PCA時(shí)鐘源sysclk/4
CL=0; //復(fù)位PCA計(jì)數(shù)寄存器
CH=0;
PCA_PWM0=0x00;//PCA模塊工作于8位PWM
PCA_PWM1=0x00;PCA_PWM2=0x00;
為了防止不同的遙控小車控制信號(hào)相互干擾控制,為每個(gè)無(wú)線模塊分配個(gè)地址,利用VB6.0開(kāi)發(fā)平臺(tái),開(kāi)發(fā)上位機(jī)軟件。串口通訊編程主要基于MSComm控件實(shí)現(xiàn)數(shù)據(jù)發(fā)送和接收,傳輸協(xié)議由用戶自定義。地址碼由軟件生成,其中,班級(jí)、學(xué)號(hào)等信息由下拉控件選擇,軟件按照一定的規(guī)程,生成不一樣的地址碼。串口通訊幀格式由引導(dǎo)碼、數(shù)據(jù)和校驗(yàn)碼組成,引導(dǎo)碼固定,數(shù)據(jù)是班級(jí)、學(xué)號(hào)變換組成,校驗(yàn)碼是幀之前所有數(shù)據(jù)的累加和后,取低兩位字節(jié)。
MSComm串口控件初始化程序:
Private Sub ComInit()
Dim TempTxt As String
On Error GoTo Comm_Error
MSComm1.CommPort = Val(Right(Combo1.Text,1))
MSComm1.Settings=Val(Combo2.Text)&",M,8,1"
MSComm1.InputMode=comInputModeBinary
MSComm1.InBufferCount=0
MSComm1.RThreshold=7
MSComm1.PortOpen=True
Exit Sub
MSComm串口控件發(fā)送數(shù)據(jù)程序:
MSComm1.InBufferCount=0
MSComm1.OutBufferCount=0
SendData(0)=&H55
SendData(1)=&HAD
SendData(2)=&H65
SendData(3)=Combo3.ListIndex*3+100
SendData(4)=Val(Combo4.Text)+43
SendData(5)=Val(Combo4.Text)+77
SendData(6) = (CLng(SendData(0)) +CLng(SendData(1))
+CLng(SendData(2))+CLng(SendData(3))+CLng(SendData(4))
+CLng(SendData(5)))Mod 256
MSComm1.Output=SendData
經(jīng)過(guò)制作試驗(yàn),本系統(tǒng)遙控小車,能夠?qū)崿F(xiàn)前進(jìn)、后退和轉(zhuǎn)向等狀態(tài)控制,遇到障礙物,能夠及時(shí)停下來(lái),在空曠地方,有效遙控范圍達(dá)到70多米。其中PWM控制的應(yīng)用,使小車的運(yùn)行速度可連續(xù)調(diào)節(jié),特別是在轉(zhuǎn)彎的過(guò)程中,通過(guò)調(diào)節(jié)兩個(gè)輪子轉(zhuǎn)速差,可以控制轉(zhuǎn)向的大小,提升了用戶操控性體驗(yàn)性,克服了傳統(tǒng)的小車轉(zhuǎn)彎要么不轉(zhuǎn)、要么全轉(zhuǎn),轉(zhuǎn)向角度無(wú)法控制的弊端。通過(guò)上位機(jī)軟件,每套系統(tǒng)小車設(shè)置不一樣的地址后,多部小車同時(shí)運(yùn)行,沒(méi)有出現(xiàn)相互控制或者干擾的現(xiàn)象。小車驅(qū)動(dòng)續(xù)航能力,根據(jù)電池容量大小不一樣而不同。不足之處是,小車出于成本考慮,沒(méi)有使用傳感器檢測(cè)將電機(jī)轉(zhuǎn)速反饋給單片機(jī),采用開(kāi)環(huán)控制,在運(yùn)行過(guò)程中,一旦某一邊輪子負(fù)載過(guò)重,小車就偏離了原先路徑。整體上,遙控小車的功能基本上達(dá)到預(yù)期效果。
參考文獻(xiàn):
[1]李全利.單片機(jī)原理及接口技術(shù)[M].北京:高等教育出版社,2009.
[2]徐愛(ài)鈞.keil C51單片機(jī)高級(jí)語(yǔ)言應(yīng)用編程技術(shù)[M].北京:電子工業(yè)出版社,2015.
[3]宏晶科技公司官網(wǎng).STC15W404AS系列資料.http://www.stcmcu.com/[EB/OL].
[4]深圳市安信可科技有限公司.NF-04-MI無(wú)線模塊資料.https://www.ai-thinker.com/home[EB/OL].
[5]深圳市嘉立創(chuàng)科技發(fā)展有限公司.芯片資料.http://www.sz-jlc.com/home/index.html[EB/OL].
[6]重慶中科芯億達(dá)電子有限公司.MX612E芯片資料.http://mixic.com.cn/[EB/OL].
[7]李俊.Visual Basic 6.0程序設(shè)計(jì)與應(yīng)用教程[M].北京:電子工業(yè)出版社,2013.