文/宋雨露 朱清慧
智能機(jī)器人是一個(gè)集多功能于一體的控制系統(tǒng),而音樂(lè)機(jī)器人是通過(guò)研發(fā)者寫入控制程序,能夠?qū)崿F(xiàn)自動(dòng)演奏音樂(lè)的一類仿真機(jī)器。本設(shè)計(jì)以單片機(jī)為控制核心,通過(guò)驅(qū)動(dòng)步進(jìn)電機(jī)和電磁鐵實(shí)現(xiàn)2-3種敲擊木琴的演奏模式,即基于傳感器的手動(dòng)即時(shí)演奏、基于藍(lán)牙通訊的手機(jī)APP的片段演奏、基于單片機(jī)的整曲演奏。
簡(jiǎn)易鋼琴裝置的設(shè)計(jì)需要單片機(jī)、步進(jìn)電機(jī)、步進(jìn)電機(jī)驅(qū)動(dòng)、紅外傳感器模塊、藍(lán)牙模塊、開關(guān)電源、限位開關(guān)、電磁鐵、繼電器模塊、小木槌和木琴等器件。簡(jiǎn)易鋼琴的硬件控制框圖如圖1所示。
(1)根據(jù)簡(jiǎn)易鋼琴裝置控制系統(tǒng)小巧輕便的特點(diǎn),考慮到系統(tǒng)控制功能的實(shí)現(xiàn)情況,選擇STC89C52RC單片機(jī)作為裝置的主控芯片。
(2)電機(jī)主要用來(lái)帶動(dòng)木錘作平行于琴鍵的定位運(yùn)動(dòng),需要能準(zhǔn)確啟、停,且要求運(yùn)行平穩(wěn)。本設(shè)計(jì)根據(jù)這些要求選擇步進(jìn)電機(jī)42BYG進(jìn)行驅(qū)動(dòng),選用TB6600步進(jìn)電機(jī)驅(qū)動(dòng)器,實(shí)現(xiàn)正反轉(zhuǎn)控制和速度控制。
(3)電磁鐵在本裝置中用來(lái)控制木錘的上下敲擊動(dòng)作,選擇Makeblock公司的一款電磁鐵;另外還給電磁鐵配備了繼電器模塊實(shí)現(xiàn)單片機(jī)對(duì)電磁鐵的控制。
(4)手指檢測(cè)傳感器用來(lái)檢測(cè)到手指落下的位置并能發(fā)送給單片機(jī)從而驅(qū)動(dòng)木錘敲擊實(shí)際的鍵盤,要具有一定的抗干擾能力和較高的靈敏度,選擇7組紅外單向反射式傳感器,有效距離2cm-30cm可滿足設(shè)計(jì)所需,可通過(guò)調(diào)整電位器旋鈕改變檢測(cè)距離。
(5)根據(jù)要求要實(shí)現(xiàn)通過(guò)手機(jī)虛擬鍵盤彈奏鋼琴并由藍(lán)牙模塊發(fā)送給單片機(jī),從而控制鋼琴自動(dòng)演奏。選擇一款常用的HC-05藍(lán)牙模塊作為地面通訊站。
根據(jù)系統(tǒng)硬件框圖和所選擇的器件,在Proteus中將步進(jìn)電機(jī)、步進(jìn)電機(jī)驅(qū)動(dòng)、電磁鐵、繼電器、紅外傳感器、藍(lán)牙模塊、限位開關(guān)等分別與單片機(jī)連接,繪出系統(tǒng)整體電路原理圖如圖2所示。其中單片機(jī)的TXD和RXD與串行模擬終端連接,以進(jìn)行藍(lán)牙通訊仿真調(diào)試。
通過(guò)藍(lán)牙串口助手可以連接藍(lán)牙串口模塊進(jìn)行通信,實(shí)現(xiàn)手機(jī)串口連接。如圖3為藍(lán)牙串口助手的主界面圖,在這里可以進(jìn)行模式的選擇,和藍(lán)牙模式的控制,在使用這些按鍵的時(shí)候首先要對(duì)地面站進(jìn)行設(shè)置,地面站會(huì)發(fā)送十六進(jìn)制的數(shù)給單片機(jī)以完成操作。如圖4為藍(lán)牙通訊地面站設(shè)置圖。
本設(shè)計(jì)主要是完成了一個(gè)初始化,兩個(gè)子程序,三種控制。如圖5為系統(tǒng)的主流程圖。系統(tǒng)初始化主要包括定時(shí)器初始化,計(jì)數(shù)器初始化,變量初始化,中斷初始化。藍(lán)牙通訊控制程序:主要完成手機(jī)與藍(lán)牙的通訊連接,并可以用手機(jī)選擇控制方式和演奏。紅外感應(yīng)隨動(dòng)控制程序是先初始化,然后跟隨手指敲擊鍵盤,系統(tǒng)完成演奏。
在Keil軟件中對(duì)程序流程圖對(duì)單片機(jī)進(jìn)行了程序編寫和編譯,并導(dǎo)入Proteus中進(jìn)行了軟、硬件交互仿真,完全實(shí)現(xiàn)了系統(tǒng)功能。
本裝置將木琴固定在最前端,對(duì)應(yīng)木槌的位置放置軌道,軌道上有步進(jìn)電機(jī)(四條線接步進(jìn)電機(jī)驅(qū)動(dòng)器),電磁鐵(兩條線:一條線接開關(guān)電源COM,一條線接繼電器COM),限位開關(guān)(上端口接+5V,下端口接P1.3);接著固定7個(gè)紅外傳感器(VCC接+5V母線,GND接地線,OUT分別連接P0.0-P0.6),繼電器(輸入:DC+接開關(guān)電源+20V,DC-接地,IN接P1.2;輸出:COM接電磁鐵);然后是開關(guān)電源(輸入220V,輸出20V),步進(jìn)電機(jī)驅(qū)動(dòng)器(輸入:DIR+,ENA+,Pul+接+5V,DIR-接P1.1控制正反轉(zhuǎn),Pul-接P1.0控制速度,輸出:分別接步進(jìn)電機(jī)的四條線),最后固定單片機(jī)開發(fā)板,把藍(lán)牙模塊連接上去(RXD接P3.1,TXD接P3.0,VCC接+5V,GND接地)。如圖6所示為簡(jiǎn)易鋼琴裝置調(diào)試圖。
圖1:簡(jiǎn)易鋼琴的硬件框圖
圖2:系統(tǒng)整體連線圖
圖3:藍(lán)牙串口助手的主界面圖
圖4:藍(lán)牙通訊地面站設(shè)置圖
首先測(cè)得琴鍵之間的距離,計(jì)算出一個(gè)脈沖運(yùn)轉(zhuǎn)的距離為0.002cm。接著根據(jù)同相相阻的原理,確定步進(jìn)電機(jī)的接線。然后從限位開關(guān)的三個(gè)端口選出兩個(gè)端口接入電路,電機(jī)反轉(zhuǎn)直到機(jī)械手臂碰到限位開關(guān)停止,說(shuō)明是正確的接法。最后用電源給繼電器供電,發(fā)現(xiàn)繼電器動(dòng)作,但是電磁鐵無(wú)法正常吸合,后來(lái)改用+12V供電,電磁鐵才能正常吸合。
在編寫藍(lán)牙控制程序的時(shí)候計(jì)算波特率,把11.0593Mhz誤作12Mhz的,這樣再利用51波特率設(shè)置軟件計(jì)算出計(jì)數(shù)器初始值設(shè)置是錯(cuò)誤的,造成了敲擊時(shí)候的混亂。在敲擊程序里面,設(shè)置延時(shí)敲擊,系統(tǒng)通過(guò)提高電機(jī)速度、延時(shí)敲擊來(lái)平衡音符之間時(shí)間間隔。由實(shí)際情況定義電動(dòng)機(jī)移動(dòng)一格子需要的脈沖,取1210個(gè)脈沖每一格。
圖5:系統(tǒng)的主流程圖
圖6:簡(jiǎn)易鋼琴裝置調(diào)試圖