基于AVR和51單片機(jī)的機(jī)器魚語音控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
模塊PCB板已經(jīng)將連接麥克風(fēng)的引腳接到模塊的MIC插座上,所以在連接電路的時(shí)候11~19和22~31引腳懸空不用。與51單片機(jī)連接時(shí),ICR_P0~I(xiàn)CR_P7(2和33-39引腳)必須連接在單片機(jī)的數(shù)據(jù)總線上,同時(shí)需要在P0-P7,以及RDB,MD,INTB,WRB,CSB這些控制管腳上焊接1K /10K的上拉電阻(上拉到3.3V即可),這樣可以輔助系統(tǒng)穩(wěn)定運(yùn)行。CLK引腳的連接有兩種選擇:1)直接將51單片機(jī)的晶振信號(hào)通過導(dǎo)線輸入到LD3320的CLK管腳,但是導(dǎo)線不宜過長。2)將正方形有源晶振直接焊接在模塊上預(yù)留的連接點(diǎn),此時(shí)CLK管腳需要懸空。本文采用的第二種方法。
2.3 AVR控制部分
AVR是魚體的主控MCU,主要用來控制機(jī)器魚的的動(dòng)力部分。機(jī)器魚的動(dòng)力來自舵機(jī),設(shè)計(jì)關(guān)節(jié)數(shù)為三個(gè),即有三個(gè)舵機(jī)。每個(gè)舵機(jī)由十五位的不同占空比的PWM波來控制轉(zhuǎn)動(dòng)不同的角度,三個(gè)舵機(jī)需要配合形成魚體波來控制魚體擺動(dòng)。魚體結(jié)構(gòu)如圖3。
魚體波是利用桿系機(jī)器魚對(duì)真實(shí)魚游動(dòng)形態(tài)的擬合,可以認(rèn)為魚體波曲線是魚體波幅包絡(luò)線和正弦曲線的合成,它開始于魚體慣性力的中心,延伸至尾柄,其曲線方程可表示為
式中,yboby是魚體的橫向位移(背腹軸),x是魚體的軸向位侈(頭尾軸),c1是魚體波波幅包絡(luò)線的一次項(xiàng)系數(shù),c2是魚體波波幅包絡(luò)線的二次項(xiàng)系數(shù),k是波長倍數(shù)(k=2π/λ),λ是魚體波的波長,w是魚體波的頻率(w=2πf=2π/T)。
由于計(jì)算機(jī)控制是一種離散的數(shù)字量,魚體波曲線也需要離散化,所以把時(shí)間參數(shù)t從魚體波運(yùn)動(dòng)函數(shù)yboby(x,t)中分離出來,方程即為
式中,i表示一個(gè)擺動(dòng)周期內(nèi)的樣條曲線序列的第i個(gè)變量;N表示魚體波分辨率,即在一個(gè)擺動(dòng)周期內(nèi)整個(gè)魚體波被離散的程度,其上限不能大于驅(qū)動(dòng)機(jī)構(gòu)擺動(dòng)的最高頻率。
為了更好地表征魚體波動(dòng)的參數(shù),提高魚體方向控制特別是轉(zhuǎn)彎過程中的靈活性,在方程2的特征參數(shù)基礎(chǔ)上,增加波長倍數(shù)k相對(duì)于x的二次增益,修改后的方程如下
通過調(diào)整k1和k2的值,根據(jù)x的變化可以得到更多的魚體波曲線。同時(shí),在機(jī)器魚的設(shè)計(jì)過程中,可通過微調(diào)身體波參數(shù)來增加運(yùn)動(dòng)的機(jī)動(dòng)性和靈活性。
評(píng)論