国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

在MicroBlaze上創(chuàng)建機(jī)器人彈奏手

發(fā)布時(shí)間:2010-4-8 16:23    發(fā)布者:嵌入式公社
關(guān)鍵詞: MicroBlaze , 彈奏 , 機(jī)器人
為了設(shè)計(jì)出可以演奏管風(fēng)琴的機(jī)器人,我所在的dorkbot Edinburgh團(tuán)隊(duì)(旨在推進(jìn)工程科學(xué)界與藝術(shù)界之間的草根協(xié)作的非正式組織)開(kāi)展了“WaldflÖte項(xiàng)目”。經(jīng)過(guò)7個(gè)月的思考、探究和討論,我們最終設(shè)計(jì)出幾種操縱管風(fēng)琴鍵盤的方式。

采用正確的機(jī)械部件

在開(kāi)發(fā)的初始階段我們就明確地將問(wèn)題分為機(jī)械和電子兩部分。如果我們能夠找到解決機(jī)械問(wèn)題的方案,就能相對(duì)獨(dú)立地打造這兩個(gè)部分。
資金是設(shè)計(jì)的主要因素之一。我們走遍尾貨市場(chǎng),找到了一些價(jià)格合適的電磁鐵。我們能夠以1英磅(約合1.5美元)左右的單價(jià)得到100個(gè)這樣的電磁鐵,于是訂購(gòu)了6個(gè)在管風(fēng)琴上進(jìn)行試驗(yàn)。

電磁鐵的尺寸非常理想,但電磁鐵芯的運(yùn)動(dòng)距離比要始終如一地觸動(dòng)管風(fēng)琴白鍵所需的運(yùn)動(dòng)距離略短。盡管我們可以直接利用電磁鐵芯來(lái)驅(qū)動(dòng)黑鍵,但還是需要某種杠桿來(lái)驅(qū)動(dòng)白鍵。


圖1 電磁體組件原型

電磁鐵組裝的首個(gè)原型如圖1所示,圖2為電磁鐵的工作原理圖。對(duì)于白鍵而言,頂部的膠合板杠桿的后面用管道膠帶作鉸鏈連接,當(dāng)電磁鐵通電時(shí),它會(huì)受到下拉的力量。當(dāng)電磁鐵斷電時(shí),管風(fēng)琴鍵自身會(huì)提供向上力——因此無(wú)需另外使用彈簧。對(duì)于黑鍵而言,從電磁鐵底部伸出的小銷具有足夠的力量,可以直接按壓琴鍵,彈奏音符。


圖2 機(jī)械布局

組件測(cè)試表明設(shè)計(jì)的確可以成功地按壓琴鍵。同時(shí)也表明,我無(wú)法做到將放置電磁鐵的空間七等分,其間隔無(wú)法接近鍵盤八度音階的實(shí)際間隔,因此,我們只能一次測(cè)試一個(gè)鍵。但我們證實(shí)了這個(gè)原理是可行的,因此,我們訂購(gòu)了適用于整個(gè)鍵盤的部件,然后開(kāi)始著手電子設(shè)計(jì)。


圖3 基本電子結(jié)構(gòu)圖

電子設(shè)計(jì)

在進(jìn)行電子設(shè)計(jì)時(shí),我們粗略地設(shè)計(jì)出電子結(jié)構(gòu),圖3為基本結(jié)構(gòu)圖。在圖的左側(cè),MIDI(樂(lè)器數(shù)字接口)消息由外部傳入(我將在下文詳細(xì)介紹MIDI協(xié)議)。圖的右側(cè)是一個(gè)位移寄存器鏈。控制器在驅(qū)動(dòng)相應(yīng)的“數(shù)據(jù)”值填充位移寄存器鏈時(shí)負(fù)責(zé)切換“時(shí)鐘”信號(hào),然后通過(guò)“選通”信號(hào)將位移寄存器鏈的內(nèi)容并行發(fā)送至電磁鐵驅(qū)動(dòng)器的輸入端。

我們?cè)谖灰萍拇嫫?驅(qū)動(dòng)器鏈上采用了74HC595位移寄存器IC。電磁鐵試驗(yàn)顯示每個(gè)電磁鐵大約需要15V電源提供350mA驅(qū)動(dòng)電流——這超出了CMOS輸出級(jí)的提供范圍。為了滿足這個(gè)要求,我們?cè)诿總(gè)位移寄存器IC上增加了一個(gè)ULN2803A達(dá)林頓輸出級(jí)。這個(gè)芯片還具備一個(gè)保護(hù)二極管,對(duì)切斷電流時(shí)電磁鐵生成的高反激電壓進(jìn)行分流,避免增加一個(gè)分立式二極管。我們?cè)谌f(wàn)用板上制作了幾個(gè)驅(qū)動(dòng)器電路板原型,每個(gè)可驅(qū)動(dòng)16個(gè)電磁鐵。

控制器設(shè)計(jì)

可以采取多種方法設(shè)計(jì)控制器(包括利用Arduino平臺(tái)或采用其他微控制器)。我們最終選擇使用Spartan-3E入門套件,一是因?yàn)槲以谌粘9ぷ髦杏眠^(guò)這種開(kāi)發(fā)板,對(duì)相關(guān)工具了如指掌。特別是我知道如何使用Platform Studio SDK和ChipScope等調(diào)試工具。由于機(jī)器彈奏風(fēng)琴有可能是一個(gè)現(xiàn)場(chǎng)調(diào)試項(xiàng)目,這樣做可以節(jié)省時(shí)間。這里,我們使用賽靈思嵌入式開(kāi)發(fā)套件開(kāi)發(fā)核心組件MicroBlaze子系統(tǒng),如圖4所示。


圖4 MicroBlaze子系統(tǒng)

除了MIDI接口和位移寄存器接口,我們還選擇增加了串行RS-232控制端口,以幫助調(diào)試系統(tǒng)。RS-232協(xié)議看起來(lái)有點(diǎn)老套,但在此類項(xiàng)目中,它很有價(jià)值。我們也增加了一些GPIO端口,用于驅(qū)動(dòng)LED,讀取開(kāi)關(guān)和按鈕,以便在無(wú)需使用控制端口的情況下完成某些交互操作。

寫入MicroBlaze固件

自20世紀(jì)80年代以來(lái),MIDI已經(jīng)成為連接合成器等數(shù)控樂(lè)器與其他樂(lè)器或控制計(jì)算機(jī)的標(biāo)準(zhǔn)接口,因此,我們確定系統(tǒng)的最佳輸入接口是MIDI端口。

MIDI是一種單向低速串行協(xié)議,傳輸速率為31250波特。它包含多種類型的信息,但就我們的目標(biāo)應(yīng)用而言,只有NOTE ON和NOTE OFF是重要的信息類型。每個(gè)NOTE ON信息由3個(gè)字節(jié)構(gòu)成:第一個(gè)字節(jié)是0x9n,這里的n代表通道數(shù);第二個(gè)字節(jié)是0~127的音符數(shù),中間的C為第60號(hào);第三個(gè)字節(jié)是0~127的速度值。

NOTE OFF除第一個(gè)字節(jié)是0x8n外,其余與此非常相似。

在設(shè)計(jì)中,我們決定同步聽(tīng)取所有通道的信息(“omni”操作)。由于管風(fēng)琴鍵盤對(duì)速度并不敏感,因此可以忽略所有速度字節(jié)。

EDK UART IP核接收MIDI消息,然后通過(guò)FIFO,一次向MicroBlaze處理器發(fā)送一條信息。MicroBlaze可從內(nèi)部顯示整個(gè)鍵盤的狀態(tài)和系統(tǒng)正在按壓哪些鍵(即系統(tǒng)正在為哪些電磁鐵加電)。固件采用一個(gè)靜態(tài)查找表,指出與這個(gè)音符相關(guān)的電磁鐵,將這個(gè)靜態(tài)查找表用做內(nèi)部圖的索引;到達(dá)的NOTE ON消息將相應(yīng)entry值設(shè)為“1”,而NOTE OFF消息將entry值設(shè)為“0”。

內(nèi)部圖更新后,利用圖的全部?jī)?nèi)容更新電磁鐵寄存器。通過(guò)GPIO端口的位拆解,MicroBlaze處理器一次將一位的圖內(nèi)容寫入位移寄存器的數(shù)據(jù)輸入端,然后切換時(shí)鐘信號(hào),移動(dòng)一下位移寄存器。一旦利用圖內(nèi)容對(duì)整個(gè)位移寄存器進(jìn)行了更新,MicroBlaze會(huì)將一個(gè)上升沿寫入STROBE行,這能夠?qū)⑽灰萍拇嫫鞯闹悼截愔凛敵黾拇嫫鳎瑸檎_的電磁鐵加電或斷電,從而產(chǎn)生悅耳的音樂(lè)。

我們將固件用作軟件狀態(tài)機(jī)。對(duì)于不采用實(shí)時(shí)操作系統(tǒng)的嵌入式應(yīng)用而言,這可提供某些多線程應(yīng)用功能,但沒(méi)有實(shí)際線程實(shí)現(xiàn)開(kāi)銷。靜態(tài)結(jié)構(gòu)數(shù)組根據(jù)當(dāng)前的狀態(tài),指出系統(tǒng)針對(duì)特定事件應(yīng)當(dāng)采取什么措施。

const midi_state_table_entry_t MIDI_STATE_TABLE[] =
{
{INHIBITED,PANIC,
MidiSM_Panic,INHIBITED},
{ANY_STATE,PANIC,
MidiSM_Panic,INIT},
{ANY_STATE,INHIBIT,
MidiSM_DoNothing,INHIBITED},
{ANY_STATE,OTHER_STATUS_RECEIVED,MidiSM_ClearMessage,INIT},
{INIT,NOTE_ON_OR_OFF_RECEIVED,MidiSM_StoreStatusByte,NOTE_ON_OR_OFF},
{INIT,DATA_RECEIVED,
MidiSM_DoNothing,INIT},
{NOTE_ON_OR_OFF,NOTE_ON_OR_OFF_RECEIVED,MidiSM_StoreStatusByte,NOTE_ON_OR_OFF},
{NOTE_ON_OR_OFF,DATA_RECEIVED,MidiSM_StoreNoteNumber,NOTE_ON_OR_OFF_NUMBER},
{NOTE_ON_OR_OFF_NUMBER,NOTE_ON_OR_OFF_RECEIVED,MidiSM_StoreStatusByte, NOTE_ON_OR_OFF},
{NOTE_ON_OR_OFF_NUMBER,DATA_RECEIVED,MidiSM_NoteOnOrOffComplete,NOTE_ON_OR_OFF},
{INHIBITED,ENABLE,
MidiSM_DoNothing,INIT},
{LAST_STATE, LAST_EVENT, 0,LAST_STATE},
};

在該結(jié)構(gòu)體中的第一個(gè)entry表示當(dāng)前狀態(tài);第二個(gè)entry表示事件到達(dá);第三個(gè)entry表示處理該事件需要使用狀態(tài)轉(zhuǎn)換功能;第四個(gè) entry表示下一狀態(tài)。

狀態(tài)機(jī)業(yè)務(wù)端采用的代碼如下:

XStatus MidiSM_
DoStateTransition
(midi_state_machine_t *pInstance,u8 event)
{
const midi_state_table_
entry_t *pTable = pInstance-
>pStateTable;
// Search for a match in the
state table
do {
if ((event == pTable-
>received_event)
&& ((pInstance-
>current_state == pTable-
>state)
|| (pTable->state ==
ANY_STATE)))
{
(*pTable-
>transition_function)((v
oid *)pInstance);
pInstance->current_state
= pTable->next_state;
return XST_
SUCCESS;
}
pTable++;
} while (pTable->state !=LAST_STATE);
// Aaargh, something bad happened - should never get here
XASSERT_NONVOID_ALWAYS();
}

事件循環(huán)提供的事件是對(duì)這種功能的論證,根據(jù)當(dāng)前的狀態(tài)和事件,采取某種措施和改變系統(tǒng)狀態(tài)。事件的類型包括字節(jié)到達(dá)MIDI接口,字符到達(dá)控制端口和按下重啟按鈕。重啟按鈕是保護(hù)耳朵和電源必備的特性——它可無(wú)條件地關(guān)閉所有電磁鐵,使系統(tǒng)恢復(fù)到已知安全狀態(tài)。

演奏WaldflÖe

電磁鐵木制背板隱藏在琴鍵底部,每塊板上安裝30個(gè)或更多的電磁鐵,同時(shí)還安裝了一些回收利用的罐狀電容器,為電磁鐵提供電能。我們將整個(gè)驅(qū)動(dòng)器組件與管風(fēng)琴連接,利用回收利用的CAT5電纜將Spartan-3E入門套件開(kāi)發(fā)板和接口萬(wàn)用板與驅(qū)動(dòng)器組件連接。

我們利用這套系統(tǒng)成功演奏了一些非常復(fù)雜、快節(jié)奏的音樂(lè),從古典到搖滾。電磁鐵和驅(qū)動(dòng)器在速度方面并沒(méi)有表現(xiàn)出太大的局限性。即使在彈奏要求最苛刻的曲目時(shí),電磁鐵電源在15V電壓條件下通常電流不超過(guò)4A。即使我們稍微過(guò)度使用電磁鐵,電磁鐵線圈也沒(méi)有出現(xiàn)明顯升溫的情況。總而言之,我們對(duì)這個(gè)系統(tǒng)非常滿意,同時(shí)為參與開(kāi)發(fā)這套系統(tǒng)深感自豪。

作者:賽靈思公司設(shè)計(jì)經(jīng)理 Gareth Edwards   
來(lái)源:電子設(shè)計(jì)應(yīng)用2009年第8期
本文地址:http://m.qingdxww.cn/thread-10259-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開(kāi)發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開(kāi)發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲在成人网在线看| 亚洲国产成人在线| 特级a禁片| 日韩一级片在线免费观看| 日本成人免费网站| 在线九色| 中文字幕在线视频免费观看| 老师在讲桌下边h边讲课| 最新影音先锋av资源台| 欧美高清精品人妖| 日韩av线上| 亚洲一级免费毛片| 在线观看网站| 伦理片a在线线2| 闲人综合网| 人人爱人人看| 私人影院在线播放| 99手机在线视频| 日韩在线视频www色| 欧美激情在线精品三区| 日本人视频18jizz免费| 特黄特色的大片观看免费视频| 在线观看精品视频一区二区三区| 久久毛片免费看一区二区三区| 自拍偷拍12p| 青青青线在线观看| 手机免费在线视频| xxxxxx视频| 午夜AV内射一区二区三区红桃视| 亚洲精品午夜级久久久久 | 含羞草完整视频在线播放免费| 天天操天天干天天透| 午夜激爽毛片在线看| 色视频亚洲| 亚洲欧美激情在线| 回复术士勇者免费观看全集| 日韩成人免费观看| 日本三级午夜| 希岛爱理aⅴ在线中文字幕| 国产白丝精品爽爽久久久久久蜜臀| 亚洲免费在线观看视频|