基于CC1110無(wú)線單片機(jī)的機(jī)器魚(yú)控制系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
魚(yú)類(lèi)的游動(dòng)具有高效性、機(jī)動(dòng)性以及低噪性等優(yōu)點(diǎn)。因此,仿生機(jī)器魚(yú)的研究己成為機(jī)器人研究領(lǐng)域的熱點(diǎn)。隨著仿生機(jī)器魚(yú)研究的不斷深入,仿生機(jī)器魚(yú)在水下搜救、水質(zhì)檢測(cè)以及海洋資源勘探等領(lǐng)域發(fā)揮著重要的作用。近年來(lái),機(jī)器魚(yú)也成為國(guó)內(nèi)國(guó)際高校機(jī)器人比賽項(xiàng)目之一。本文就是針對(duì)在國(guó)際水中機(jī)器人大賽的大平臺(tái)上的三關(guān)節(jié)機(jī)器魚(yú)而設(shè)計(jì)的一套雙關(guān)節(jié)機(jī)器魚(yú)控制系統(tǒng)。本機(jī)器魚(yú)控制系統(tǒng)具有體積小、成本低、微功耗等優(yōu)點(diǎn),可以方便地運(yùn)用到類(lèi)似的機(jī)器魚(yú)產(chǎn)品中。
1機(jī)器魚(yú)控制系統(tǒng)設(shè)計(jì)方案
機(jī)器魚(yú)控制系統(tǒng)總體結(jié)構(gòu)如圖1所示。系統(tǒng)主要分為指令發(fā)送端和指令執(zhí)行端,兩部分均以CC1110無(wú)線單片機(jī)作為核心控制器,負(fù)責(zé)指令的發(fā)送、接收、數(shù)據(jù)處理,進(jìn)而控制機(jī)器魚(yú)的相關(guān)執(zhí)行機(jī)構(gòu)工作。指令發(fā)送端的指令來(lái)自上位機(jī),USB串口轉(zhuǎn)換電路將USB接口模擬成串口,實(shí)現(xiàn)上位機(jī)與CC1110的串口通信。電源模塊完成電壓的變換,為相關(guān)電路提供各種合適的工作電壓。存儲(chǔ)器模塊存儲(chǔ)機(jī)器魚(yú)的相關(guān)信息。舵機(jī)驅(qū)動(dòng)模塊為執(zhí)行機(jī)構(gòu)舵機(jī)提供合適的控制信號(hào)。
圖1機(jī)器魚(yú)控制系統(tǒng)總體結(jié)構(gòu)圖
2機(jī)器魚(yú)控制系統(tǒng)硬件設(shè)計(jì)
2.1 USB串口轉(zhuǎn)換電路
CH341T是一款USB總線轉(zhuǎn)接芯片,通過(guò)簡(jiǎn)單的接線即可實(shí)現(xiàn)USB接口和串口之間的轉(zhuǎn)換,此時(shí)無(wú)需改動(dòng)上位機(jī)與下位機(jī)的程序,通過(guò)USB接口即可實(shí)現(xiàn)上位機(jī)與下位機(jī)的串行通信。USB串口轉(zhuǎn)換電路原理圖如圖2所示。
圖2 USB串口轉(zhuǎn)換電路
在本設(shè)計(jì)電路中,將CH341T芯片的SDA和SCL引腳懸空,此時(shí)芯片功能為USB轉(zhuǎn)異步串口,模擬計(jì)算機(jī)串口;CH341T芯片的TXD和RXD兩個(gè)引腳分別連接到CC1110無(wú)線單片機(jī)的RX(P0.2)和TX(P0.3)兩個(gè)引腳;TEN#引腳為串口發(fā)送使能端,接地使CH341T能發(fā)送數(shù)據(jù)。CH341T芯片的地要和CC1110無(wú)線單片機(jī)的地相連。CH341T不需外接電源,直接由上位機(jī)通過(guò)USB口提供+5V電源。
2.2 DC-DC電壓變換電路
指令發(fā)送端由USB提供5V電壓,指令執(zhí)行端由電池提供5V直流電壓。電池提供的5V直流電壓可以直接為舵機(jī)驅(qū)動(dòng)芯片以及舵機(jī)供電。而系統(tǒng)內(nèi)部CC1110無(wú)線單片機(jī)正常工作電壓范圍是2.0~3.6V,存儲(chǔ)器芯片24AA01正常工作電壓范圍是1.7~5.5V,這里可以將二者的工作電壓選擇為3.3V.為此,專(zhuān)門(mén)設(shè)計(jì)了一個(gè)DC-DC電壓變換電路,將5V直流電壓變換為3.3V直流電壓后再提供給CC1110無(wú)線單片機(jī)和24AA01芯片,以保證系統(tǒng)的正常工作。這里采用AMS公司生產(chǎn)的AMS1117芯片設(shè)計(jì)了電壓變換電路,具體的DC-DC電壓變換電路如圖3所示。
圖3 DC-DC電壓變換電路
在電壓輸入端接有22μF電解電容及電壓輸出端接有47μF電解電容,以保證輸出電壓的穩(wěn)定。
2.3 CC1110無(wú)線收發(fā)電路
在機(jī)器魚(yú)控制系統(tǒng)中,機(jī)器魚(yú)指令的發(fā)送、接收以及指令解析執(zhí)行是系統(tǒng)的關(guān)鍵部分。而現(xiàn)有的無(wú)線收發(fā)系統(tǒng)很多都是采用單片機(jī)和RF收發(fā)模塊組成,這樣整個(gè)控制電路的體積較大,將會(huì)使機(jī)器魚(yú)的體積變大。為了將機(jī)器魚(yú)體積做小以及將功耗降低,這里采用TI公司生產(chǎn)的一種低成本、低功耗的CC1110無(wú)線單片機(jī)作為指令收發(fā)執(zhí)行的核心器件。CC1110無(wú)線收發(fā)電路如圖4所示。
圖4 CC1110無(wú)線收發(fā)電路
在無(wú)線收發(fā)電路中,電容C1-C6為電源去耦電容;電阻R2和電容C18構(gòu)成上電復(fù)位電路;電容C7、C9以及電感L1、L2構(gòu)成BALUN阻抗匹配電路,將輸出阻抗轉(zhuǎn)換為50Ω標(biāo)準(zhǔn)天線阻抗;Y1、C13以及C14構(gòu)成CC1110高速時(shí)鐘源;Y2、C15以及C16構(gòu)成CC1110低速時(shí)鐘源:JATG接口用于在線調(diào)試與下載程序;PWM01(P1.0)和PWM02(P1.1)接舵機(jī)驅(qū)動(dòng)電路的輸入;RX(P0.2)和TX(P0.3)接USB串口轉(zhuǎn)換電路,用于串口通信;2401_WP(P0.4)、2401_SCL(P0.5)以及2401_SDA(P0.6)接存儲(chǔ)器模塊,控制存儲(chǔ)器的讀寫(xiě)。
2.4舵機(jī)驅(qū)動(dòng)電路
在機(jī)器魚(yú)控制系統(tǒng)中,我們利用舵機(jī)的擺動(dòng)來(lái)模擬機(jī)器魚(yú)的游動(dòng)。而無(wú)線單片機(jī)產(chǎn)生的PWM信號(hào)不足以驅(qū)動(dòng)舵機(jī),為保證舵機(jī)正常工作,要專(zhuān)門(mén)設(shè)計(jì)一個(gè)舵機(jī)驅(qū)動(dòng)電路。舵機(jī)驅(qū)動(dòng)電路采用了NXPSemiconductors公司生產(chǎn)的74AHCT1G04芯片,舵機(jī)驅(qū)動(dòng)電路原理圖如圖5所示。
圖5舵機(jī)驅(qū)動(dòng)電路
2.5存儲(chǔ)器電路
在機(jī)器魚(yú)初始化階段以及在機(jī)器魚(yú)控制過(guò)程中需要存儲(chǔ)一些參數(shù),因此要有專(zhuān)門(mén)的存儲(chǔ)模塊。由于參數(shù)的數(shù)據(jù)量比較小,這里采用Microchip公司生產(chǎn)的I2C接口的24AA01存儲(chǔ)芯片,存儲(chǔ)器電路原理圖如圖6所示。
圖6存儲(chǔ)器電路
3機(jī)器魚(yú)控制系統(tǒng)軟件設(shè)計(jì)
在機(jī)器魚(yú)控制系統(tǒng)中軟件設(shè)計(jì)采用模塊化設(shè)計(jì),主要包括串口通信程序、無(wú)線通信程序、存儲(chǔ)器讀寫(xiě)程序以及舵機(jī)驅(qū)動(dòng)程序。
3.1串口通信程序設(shè)計(jì)
串口通信程序完成CC1110無(wú)線單片機(jī)與上位機(jī)PC的串行通信。串口接收數(shù)據(jù)采用中斷的方式,串口發(fā)送數(shù)據(jù)采用查詢的方式。串口收發(fā)程序流程圖如圖7所示。
圖7串口收發(fā)程序流程圖
在硬件設(shè)計(jì)中采用了CH341T串口轉(zhuǎn)換電路模擬串口,為了配合硬件的使用,需要在上位機(jī)中安裝驅(qū)動(dòng)程序,驅(qū)動(dòng)程序可以從南京沁恒電子有限公司網(wǎng)站上下載。
3.2無(wú)線通信程序設(shè)計(jì)
在設(shè)計(jì)無(wú)線通信程序前,需要配置CC1110的高頻部分,以確定無(wú)線收發(fā)器的收發(fā)頻率、發(fā)送功率、傳輸速率以及調(diào)制方式等。由于CC11 10高頻配置較為復(fù)雜,這里可以采用TI公司的SmartRF Studio軟件來(lái)進(jìn)行配置。通過(guò)設(shè)置寄存器FREQ2、FREQ1和FREQ0將CC1110的收發(fā)頻率選擇在433MHz頻段;通過(guò)設(shè)置PA TABLE0將CC1110的發(fā)送功率設(shè)置為10dBm,這樣可以提高發(fā)射距離;由于該控制系統(tǒng)的指令數(shù)據(jù)量較小,可以選擇較低的傳輸速率,不僅可以提高傳輸距離,而且可以降低能耗;調(diào)制方式選擇2-FSK方式。
無(wú)線通信程序包括無(wú)線發(fā)送程序和無(wú)線接收程序兩部分。無(wú)線發(fā)送程序?qū)⒋l(fā)送的數(shù)據(jù)通過(guò)無(wú)線的方式發(fā)送出去,無(wú)線接收程序可以接收同頻率的發(fā)射機(jī)發(fā)送的數(shù)據(jù)。無(wú)線通信程序流程圖如圖8所示。
圖8無(wú)線通信程序流程圖
3.3指令發(fā)送端主程序設(shè)計(jì)
在機(jī)器魚(yú)控制系統(tǒng)的指令發(fā)送端,實(shí)現(xiàn)的功能包括串口收發(fā)數(shù)據(jù)和無(wú)線收發(fā)數(shù)據(jù)。指令發(fā)送端主程序流程圖如圖9所示。
圖9指令發(fā)送端主程序流程圖
指令數(shù)據(jù)無(wú)線發(fā)送以后,指令發(fā)送端開(kāi)始等待接收指令執(zhí)行端反饋的數(shù)據(jù)。指令發(fā)送端接收到反饋數(shù)據(jù)后調(diào)用串口發(fā)送程序?qū)⒎答仈?shù)據(jù)發(fā)回到PC,將反饋數(shù)據(jù)與指令數(shù)據(jù)比對(duì),如果反饋數(shù)據(jù)與發(fā)送數(shù)據(jù)一致,則認(rèn)為指令數(shù)據(jù)發(fā)送成功,否則重新發(fā)送指令數(shù)據(jù)。如果長(zhǎng)時(shí)間沒(méi)有接收到反饋數(shù)據(jù),則重新發(fā)送指令數(shù)據(jù)。
3.4指令執(zhí)行端主程序設(shè)計(jì)
在機(jī)器魚(yú)控制系統(tǒng)指令執(zhí)行端,主要包含指令數(shù)據(jù)的接收、指令數(shù)據(jù)的反饋發(fā)送、存儲(chǔ)器的讀寫(xiě)以及舵機(jī)的控制等。其中,舵機(jī)的控制是最為關(guān)鍵的部分。在控制舵機(jī)前要先對(duì)指令數(shù)據(jù)進(jìn)行解析,計(jì)算出舵機(jī)的控制量。由于舵機(jī)采用級(jí)聯(lián)的方式來(lái)模仿魚(yú)體的擺動(dòng),因此舵機(jī)間關(guān)節(jié)的運(yùn)動(dòng)規(guī)律可以采用以下數(shù)學(xué)模型:
式中,Ka為振幅系數(shù),Ki為偏斜系數(shù),f為擺動(dòng)頻率,φi為關(guān)節(jié)滯后角,Aimax為關(guān)節(jié)擺動(dòng)幅度,t為時(shí)間。以上參數(shù)即為舵機(jī)的主要控制參數(shù)。在程序設(shè)計(jì)過(guò)程中,一般取Ka≤0.5,Ki、f、φi以及Aimax四個(gè)參數(shù)根據(jù)具體的速度指令和方向指令來(lái)計(jì)算出相應(yīng)的控制量。指令執(zhí)行端主程序流程圖如圖10所示。
圖10指令執(zhí)行端主程序流程圖
4結(jié)束語(yǔ)
本文設(shè)計(jì)的機(jī)器魚(yú)控制系統(tǒng)通過(guò)了下水測(cè)試。在機(jī)器魚(yú)下水測(cè)試階段,利用串口調(diào)試助手對(duì)機(jī)器魚(yú)進(jìn)行直接發(fā)送控制指令實(shí)驗(yàn),對(duì)機(jī)器魚(yú)的調(diào)直數(shù)據(jù)保存、直游以及轉(zhuǎn)彎進(jìn)行了直接控制。測(cè)試結(jié)果表明,機(jī)器魚(yú)控制系統(tǒng)可以有效地接收上位機(jī)發(fā)送的指令數(shù)據(jù),并執(zhí)行相關(guān)的動(dòng)作,達(dá)到了較好的控制效果。同時(shí),本文的研究設(shè)計(jì)工作為進(jìn)一步研究設(shè)計(jì)自主機(jī)器魚(yú)以及多魚(yú)協(xié)作提供了較好的軟硬件設(shè)計(jì)基礎(chǔ)。