華東師范大學(xué)信息科學(xué)與技術(shù)學(xué)院 王 近 劉 開
腦電信號是腦神經(jīng)細(xì)胞群在大腦皮層的電信號活動(dòng)反映,屬于微弱的生物電信號,包含了全部生理信息,同時(shí)也能反映出大部分的病理狀態(tài)。腦電信號可以體現(xiàn)出生物體的健康狀況,甚至可以體現(xiàn)出復(fù)雜的心理與生理狀況。研究腦電信號對臨床疾病的治療有重要的意義,而且對生物電生理學(xué)等領(lǐng)域有一定的推動(dòng)作用。其中腦機(jī)接口是研究腦電信號的主要方式,通過研究小鼠在實(shí)施某種特定行為時(shí),其大腦相應(yīng)的腦神經(jīng)反應(yīng)區(qū)神經(jīng)元的工作情況與協(xié)調(diào)機(jī)制,為研究大腦如何控制行為提供了一種有效的方法。
以單片機(jī)為控制核心的嵌入式系統(tǒng)因其功能專一,可靠,價(jià)格便宜,因此在工控,電子智能儀器設(shè)備等領(lǐng)域有著廣泛的應(yīng)用。ATMEL公司的AVR系列單片機(jī)采用RISC結(jié)構(gòu),其速度,內(nèi)存容量,外圍接口的集成度,向串行擴(kuò)展和更適合使用高級語言編程等眾多特性,使其得到了廣泛地應(yīng)用,成為單片機(jī)嵌入式系統(tǒng)的主流芯片之一。本文使用ATmega128單片機(jī)為控制核心,設(shè)計(jì)一種智能小鼠訓(xùn)練系統(tǒng),實(shí)現(xiàn)對小鼠行為訓(xùn)練的智能控制,配合腦機(jī)接口,檢測出小鼠在某種行為下的大腦的反應(yīng),從而方便了腦電信號的研究。
在該系統(tǒng)中,老鼠被放置于一個(gè)密閉的容器中,僅左,中,右三個(gè)洞口可以供其探頭,分別稱為a,b,c洞,三個(gè)洞口處各置一個(gè)高亮度的LED燈與紅外探測器。預(yù)期實(shí)現(xiàn)如下功能:
1.任意時(shí)刻b洞口處的LED燈亮,小鼠需在b洞探頭;
2.紅外b檢測到小鼠探頭,記錄時(shí)間,同時(shí)控制蜂鳴器給于一個(gè)頻率的聲音并開始計(jì)時(shí),高頻聲音指示小鼠應(yīng)向a洞探頭,低頻表示向c洞探頭;
3.若小鼠做出正確的動(dòng)作,蜂鳴器給予1個(gè)正確提示聲音并且控制水泵放水給小鼠以獎(jiǎng)勵(lì),記錄該時(shí)間,并得出小鼠完成這個(gè)過程所用的時(shí)間;
4.若小鼠做出錯(cuò)誤的動(dòng)作,給予1個(gè)錯(cuò)誤的聲音提示,并且led燈閃爍2下發(fā)出警告,記錄小鼠發(fā)生錯(cuò)誤的時(shí)間以及給予錯(cuò)誤提示的時(shí)間節(jié)點(diǎn)。
小鼠訓(xùn)練流程圖如圖1所示。
1.基本原理
系統(tǒng)主要由單片機(jī)紅外發(fā)射接收電路、蜂鳴器電路、水泵電路以及PC與單片機(jī)之間的通信部分組成。
硬件部分分為兩個(gè)部分:核心控制板以及外圍電路板。控制板由ATmega128構(gòu)成其最小系統(tǒng);外圍電路板由系統(tǒng)所需的外圍設(shè)備電路如:繼電器,紅外等組成。通過編程利用單片機(jī)控制外圍電路。
軟件部分利用C語言完成基本系統(tǒng)功能的控制,利用Vb編程的基本控件完成界面功能,單片機(jī)與PC機(jī)的通信采用串行雙工方式實(shí)現(xiàn)雙方之間的命令收發(fā)。
2.單片機(jī)ATmega128及其最小系統(tǒng)簡介
ATmega128是Atmel公司8位RISC系列微控制器的最高配置的一款單片機(jī),具有高性能,低功耗的特點(diǎn),采用哈佛結(jié)構(gòu),通過在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行一條指令,使其可以取得1MIPS/MHz的性能,從而緩解系統(tǒng)在功耗和處理速度之間的矛盾。內(nèi)部集成了128KB的Flash程序存儲(chǔ)器,4KB的EEPROM和SRAM數(shù)據(jù)存儲(chǔ)器,具有53個(gè)可編程I/O口,8個(gè)10位ADC轉(zhuǎn)換通道,以及4個(gè)獨(dú)立的定時(shí)/計(jì)數(shù)器等。ATmega128片內(nèi)集成了2個(gè)全雙工通用同步/異步串行收發(fā)器USART,AVR的USART是一個(gè)增強(qiáng)型的,高度靈活的串行通信設(shè)備,除了一般USART所具有的功能外,兩個(gè)串口均可以工作于同步或異步方式,使用起來非常靈活。ATmega128AVR有整套的開發(fā)工具,包括C編譯器,宏匯編,程序調(diào)試器/仿真器和評估板。
單片機(jī)芯片加上正確的時(shí)鐘電路,復(fù)位電路以及電源就可以構(gòu)成其最小系統(tǒng),一個(gè)單片機(jī)嵌入式系統(tǒng)的核心,就是一個(gè)單片機(jī)最小系統(tǒng),再根據(jù)實(shí)際電路的需要連接相應(yīng)的外設(shè),將編好的程序通過下載電路下載至單片機(jī)中,即可構(gòu)成一個(gè)單片機(jī)嵌入式系統(tǒng)。
1.系統(tǒng)硬件結(jié)構(gòu)設(shè)計(jì)
系統(tǒng)硬件結(jié)構(gòu)方框圖如圖2所示。
(1)單片機(jī)控制電路
單片機(jī)控制電路是系統(tǒng)的控制核心,該電路主要由ATmega128最小系統(tǒng)電路加上必要的外圍接口電路組成。
1)ATmega128有64個(gè)引腳,具有豐富的管腳資源,其中有8個(gè)端口共53個(gè)獨(dú)立的可編程I/O引腳,可以通過編程分別設(shè)置其輸入,輸出方式。單片機(jī)通過I/O引腳實(shí)現(xiàn)對外圍設(shè)備的控制。ATmega128引腳圖如圖3所示。
2)單片機(jī)的外部系統(tǒng)時(shí)鐘電路由引腳XLAT1與XLAT2外接16MHz石英晶體和電容組成諧振回路,配合片內(nèi)的OSC振蕩電路構(gòu)成振蕩源。外部時(shí)鐘電路如圖4所示。
3)復(fù)位電路如圖5所示。正常工作下,電路輸出到復(fù)位引腳上的信號為高電平;由于ATmega128是低電平復(fù)位,當(dāng)按下復(fù)位按鍵時(shí),電容C3迅速放電,復(fù)位引腳上的電平被迅速拉低,單片機(jī)復(fù)位;此后VCC通過R16給電容充電,最終C3上的電壓為Vcc,復(fù)位狀態(tài)結(jié)束。
4)電源電路使用LM7805三端穩(wěn)壓芯片,將輸入的12V直流電壓轉(zhuǎn)化為5V輸出,作為單片機(jī)及部分外設(shè)的電源。IN4001為整流二極管,對輸入的交流成分進(jìn)行整流,也對輸入電源正負(fù)反接進(jìn)行保護(hù)。12V直流電壓可以由220V交流電通過電源適配器得到,這樣就可以使用220V交流電直接給系統(tǒng)供電。電源電路如圖6所示。
5)ATmega128支持多種下載方式,本電路匹配了2個(gè)2X5插針座,分別對用于ISP與JTAG兩種編程下載接口。JTAG口主要用于實(shí)現(xiàn)在片調(diào)試仿真和編程,ISP主要為編程下載使用。ISP下載口連線圖如圖7所示,JTAG下載口連線圖如圖8所示。
6)ATmega128提供了兩個(gè)全雙工的通用同步/異步串行收發(fā)器USART1與USART2,串行通信需要用到兩個(gè)I/O口RXD和TXD。PC機(jī)的串行口采用的是標(biāo)準(zhǔn)的RS232接口,單片機(jī)的串行接口電平是TTL電平,與RS232的電氣特性不匹配,因此為了使單片機(jī)的串行口能與RS232接口通信,必須將串口的輸入/輸出電平進(jìn)行轉(zhuǎn)換。電路采用MAX232芯片來完成電平轉(zhuǎn)換,通過其電平轉(zhuǎn)換,連接單片機(jī)的兩個(gè)UART口,實(shí)現(xiàn)與PC機(jī)的異步通信,AVR系統(tǒng)RS-232接口電路連接圖如圖9所示。
(2)外圍電路
外圍電路由主要由紅外收發(fā)電路,蜂鳴器電路,繼電器控制水閥電路,高亮度LED電路組成。
1)紅外電路,通過一對紅外對管,紅外發(fā)射管根據(jù)其10-20mA的驅(qū)動(dòng)電流,選擇相應(yīng)的電阻,大約為330歐姆,紅外接受管和一20K歐姆的電阻相連在發(fā)射管一端引出比較信號,另外要引出+5V和GND的引腳來方便與中央控制板相連接。
在中單片機(jī)控制板通過LM393構(gòu)成比較器,電路如圖所示,在比較器輸出端接上拉電阻,通過變阻器來調(diào)節(jié)比較電壓,和輸入信號作比較,在紅外接受管有信號時(shí),即在紅外對管前有障礙物時(shí),比較信號會(huì)由原來的高電平變?yōu)榈碗娖剑容^器輸出端的電壓也會(huì)從高電平變成低電平。紅外模塊電路如圖10所示。
2)蜂鳴器電路如圖11所示。原則上講,用單片機(jī)產(chǎn)生各種音樂發(fā)聲原理很簡單,就是由I/O引腳輸出不同頻率的脈沖信號,再將信號放大,推動(dòng)發(fā)聲器件發(fā)聲(這里是指在要求不高的情況下,用不同頻率的脈沖方波代替正弦波)。
BZ為一個(gè)無源蜂鳴器,作為發(fā)聲器件(有源蜂鳴器的發(fā)聲頻率固定,不能使用),I/O口的脈沖輸出經(jīng)過三極管放大驅(qū)動(dòng)蜂鳴器發(fā)聲;電阻RM1、RM2起到限流和保護(hù)作用,電阻RM1的值應(yīng)在5-10歐姆之間,太大了會(huì)降低蜂鳴器的發(fā)聲功率;又因?yàn)槿龢O管驅(qū)動(dòng)的為BZ內(nèi)部的電感線圈,所以要加上一個(gè)反峰保護(hù)器。
圖1 小鼠訓(xùn)練流程圖
圖2 系統(tǒng)硬件框圖
圖3 ATmega128引腳圖
圖4 外部時(shí)鐘電路
圖5 單片機(jī)復(fù)位電路
圖6 系統(tǒng)電源電路
圖7 ISP下載口連線圖
圖8 JTAG下載口連線圖
圖9 AVR系統(tǒng)RS-232接口電路連接圖
圖10 紅外模塊電路
圖11 蜂鳴器電路
圖12 繼電器控制電磁閥電路
圖13 主程序流程圖
圖14 紅外模塊狀態(tài)轉(zhuǎn)換圖
圖15 上位機(jī)系統(tǒng)控制界面
圖16 最小系統(tǒng)板原理圖
圖17 最小系統(tǒng)板PCB
圖18 ATmega28最小系統(tǒng)控制板
3)水泵使用電磁閥實(shí)現(xiàn),電磁閥是用電磁控制的工業(yè)設(shè)備,用在工業(yè)控制系統(tǒng)中調(diào)整介質(zhì)的方向、流量、速度和其他的參數(shù)。電磁閥是用電磁的效應(yīng)進(jìn)行控制,主要的控制方式由繼電器控制。這樣,電磁閥可以配合不同的電路來實(shí)現(xiàn)預(yù)期的控制,而控制的精度和靈活性都能夠保證。電磁閥的工作原理就是利用給電磁鐵通電,電磁閥里面的鐵芯運(yùn)動(dòng),來控制流體的通斷。通電時(shí),電磁線圈產(chǎn)生電磁力把關(guān)閉件從閥座上提起,閥門打開;斷電時(shí),電磁力消失,彈簧把關(guān)閉件壓在閥座上,閥門關(guān)閉。
本電路采用2v025-08兩位兩通電磁閥,標(biāo)準(zhǔn)電壓DC12V使用繼電器進(jìn)行開關(guān)的控制,電路如圖12所示。電磁繼電器一般由鐵芯、線圈、銜鐵、觸點(diǎn)簧片等組成的。只要在線圈兩端加上一定的電壓,線圈中就會(huì)流過一定的電流,從而產(chǎn)生電磁效應(yīng),銜鐵就會(huì)在電磁力吸引的作用下克服返回彈簧的拉力吸向鐵芯,從而帶動(dòng)銜鐵的動(dòng)觸點(diǎn)與靜觸點(diǎn)(常開觸點(diǎn))吸合。當(dāng)線圈斷電后,電磁的吸力也隨之消失,銜鐵就會(huì)在彈簧的反作用力返回原來的位置,使動(dòng)觸點(diǎn)與原來的靜觸點(diǎn)(常閉觸點(diǎn))釋放。這樣吸合、釋放,從而達(dá)到了在電路中的導(dǎo)通、切斷的目的。對于繼電器的“常開、常閉”觸點(diǎn),可以這樣來區(qū)分:繼電器線圈未通電時(shí)處于斷開狀態(tài)的靜觸點(diǎn),稱為“常開觸點(diǎn)”;處于接通狀態(tài)的靜觸點(diǎn)稱為“常閉觸點(diǎn)”。繼電器一般有兩股電路,為低壓控制電路和高壓工作電路。
NPN晶體管驅(qū)動(dòng)時(shí):當(dāng)晶體管Q1基極被輸入高電平時(shí),晶體管飽和導(dǎo)通,集電極變?yōu)榈碗娖?,因此繼電器線圈通電,觸電吸合,電磁閥通電,開始放水。當(dāng)晶體管Q1基極被輸入低電平時(shí),晶體管截止,繼電器線圈斷電,觸電斷開,電磁閥斷電,停止放水。
三極管采用中功率管,導(dǎo)通電流大于300mA。電阻R1為限流作用,限制從I/O流出的電流不能太大,從而保護(hù)I/O口,阻值為1KΩ;二極管D1釋放反峰電壓,保護(hù)三極管和I/O口不會(huì)被反峰電壓擊穿,一般選1N4148;電容C1作用是對繼電器動(dòng)作時(shí)產(chǎn)生的尖峰電壓進(jìn)行有效的過濾,從而提高系統(tǒng)的可靠性。另外,當(dāng)AVR上電時(shí),I/O口三態(tài)高阻輸入方式,因此使用電阻R2在上電時(shí)將三極管的基極電位拉低,三極管截止,從而防止上電誤操作。
2.系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件部分分為兩個(gè)部分:C語言基本模塊與VB控制界面。
利用C語言完成基本功能的控制,主要分為以下幾個(gè)模塊:
(1)主程序模塊
主程序主要進(jìn)行小鼠訓(xùn)練流程的控制,根據(jù)紅外等外部設(shè)備反饋的結(jié)果判斷小鼠的動(dòng)作,并分析正誤,控制蜂鳴器及水閥等電路,從而指示小鼠的下一步動(dòng)作。主程序流程圖如圖13所示。
(2)紅外模塊
紅外模塊主要使用狀態(tài)機(jī)的思想分別對三個(gè)洞口當(dāng)前監(jiān)測狀態(tài)進(jìn)行判斷與控制,過程分為4個(gè)狀態(tài)。狀態(tài)0為初始狀態(tài),當(dāng)中間洞口的紅外監(jiān)測到小鼠探頭時(shí),進(jìn)入狀態(tài)1,再次判斷紅外監(jiān)測結(jié)果進(jìn)行消抖并進(jìn)入狀態(tài)2;當(dāng)監(jiān)測到小鼠探頭時(shí)間超過baseline后,進(jìn)入狀態(tài)3,并返回當(dāng)前狀態(tài)值;當(dāng)監(jiān)測到小鼠探頭的時(shí)間超過delaytime后,進(jìn)入狀態(tài)4;再次監(jiān)測到小鼠探頭返回狀態(tài)0。狀態(tài)轉(zhuǎn)換圖如圖14所示。
(3)小鼠動(dòng)作判斷模塊
char judge_act(void)子函數(shù)主要對小鼠動(dòng)作的正誤進(jìn)行判斷,并返回判斷結(jié)果,當(dāng)蜂鳴器給出第二個(gè)聲音時(shí),高頻指示小鼠應(yīng)在左洞口探頭,低頻指示小鼠應(yīng)在右洞口探頭,該函數(shù)根據(jù)蜂鳴器的發(fā)聲頻率以及紅外監(jiān)測小鼠的動(dòng)作來判斷是否正確,并返回判斷結(jié)果。
(4)VB模塊
PC的系統(tǒng)控制界面如圖15所示,vb編程的基本控件主要完成控制界面的功能,需要突出的是利用了vb中的MSConn控件完成了串口通信的功能。根據(jù)上述的通信協(xié)議,利用PC機(jī)發(fā)出命令(包括開始,暫停,繼續(xù))來控制單片機(jī)運(yùn)行整個(gè)邏輯,以及一系列的參數(shù);而單片機(jī)則會(huì)發(fā)出應(yīng)答包來確認(rèn)正確收到命令,PC機(jī)也同樣利用MSComm控件來接受單片機(jī)發(fā)出的命。
如圖16、17、18。
以AVR單片機(jī)ATmega128為控制核心的嵌入式智能小鼠控制系統(tǒng)可以實(shí)現(xiàn)對小鼠行為訓(xùn)練的智能控制。系統(tǒng)由硬件和軟件部分組成.硬件部分由ATmega128構(gòu)成最小系統(tǒng)控制外設(shè)電路;軟件部分由PC作為上位機(jī),單片機(jī)作為下位機(jī),由VB完成編程,控制界面以及串行通信等一系列功能的設(shè)計(jì)。該系統(tǒng)硬件結(jié)構(gòu)簡單,軟件功能專一,成本低廉,性能可靠,有助于檢測小鼠在特定行為下的大腦反應(yīng),為腦點(diǎn)信號的研究提供了方便。
[1]馬潮.AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用實(shí)踐[M].北京航空航天大學(xué)出版社,2011,8(第二版).
[2]查明華.ATMEL ATMEGA128新型微控制器及應(yīng)用[OL].(2013/3/8)[2013/3/9].http://www.cnki.com.cn/Article/CJFDTotal-GYKJ200210022.htm.
[3]張桂香,姚存志.基于ATmega128單片機(jī)的智能供電測控系統(tǒng)設(shè)計(jì)[OL].(2013/3/8)[2013/3/9].http://lib.cqvip.com/qk/97650X/200908/31169601.html.