找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4576|回復(fù): 26
打印 上一主題 下一主題
收起左側(cè)

兒童玩具電鋼琴改裝成拉弦電子琴(日記)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
      一個(gè)月前在某一個(gè)寶看到一臺(tái)兒童電鋼琴,37鍵,是2.2M標(biāo)準(zhǔn)鋼琴琴鍵,很便宜,于是買了一臺(tái)打算改進(jìn)成拉弦電子琴,我的第一款拉弦電子琴已經(jīng)制作成功,還搬上舞臺(tái)表演,并申請(qǐng)了中國(guó)專利,已經(jīng)收到受理通知書,原本打算再買一批來(lái)改裝,但廠家倒了,買不到,只好再買一款,從頭做起,并打算把改裝過(guò)程在論壇與大家分享,也歡迎大家來(lái)提意見(jiàn)。



拆開(kāi)后:



芯片大頭照:



打算把主控芯片換掉,用STC8代替,完成掃描后輸出MIDI碼,待續(xù)。。


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:283954 發(fā)表于 2023-9-6 03:57 | 只看該作者
電路分析:此琴用三顆電池供電,電壓為4.5V,通過(guò)兩個(gè)硝基二級(jí)管降壓,并防止電池反接,總共有8X5條掃描線,A0-A7隔著二極管與B3-B7連接,A端接二極管正極,B端接二極管負(fù)極,掃描時(shí)讓B口的每一位輪流輸出低電位,并檢查A端的8位數(shù)據(jù),該位若為0則表示相應(yīng)的按鍵被按下,經(jīng)查表可得到該鍵的排列號(hào)碼。

選用STC8作為掃描芯片,這是畫好的板,打樣回來(lái)后就可編程了。




回復(fù)

使用道具 舉報(bào)

板凳
ID:1013588 發(fā)表于 2023-9-6 11:57 | 只看該作者
占個(gè)沙發(fā),關(guān)注樓主后續(xù)
回復(fù)

使用道具 舉報(bào)

地板
ID:283954 發(fā)表于 2023-9-6 15:37 | 只看該作者
龍小白 發(fā)表于 2023-9-6 11:57
占個(gè)沙發(fā),關(guān)注樓主后續(xù)

歡迎一起來(lái)玩,我這臺(tái)也一定能成功改造完成,將來(lái)到國(guó)內(nèi)推行電子琴弦樂(lè)隊(duì)也用這一款。
回復(fù)

使用道具 舉報(bào)

5#
ID:283954 發(fā)表于 2023-9-6 16:22 | 只看該作者
拆除主控芯片:芯片用黑膠封住,什么都看不到,應(yīng)該是很成熟的方案,除了掃描線輸入,還有四條DATA線,但不知道是什么功能,如果是輸出MIDI碼,那就好辦,不必搞自己的掃描版,這臺(tái)機(jī)到我家還不到一小時(shí)就被拆了,連一個(gè)音都沒(méi)有聽(tīng)到,我想如果再來(lái)一臺(tái),可以用邏輯分析儀去看看到底是什么來(lái)的,也許只是輸入端,總之自己掌握了鍵盤掃描技術(shù)就能用一粒MCU直搗龍門,與按鍵直連,不必廠家提供資料,什么琴都能改裝成功。

用銅箔覆蓋芯片四周,用350攝氏度的熱風(fēng)器吹,讓主控芯片板與琴骨肉分離,讓新板入住。






也可以用恒溫臺(tái)來(lái)拆,但要把整片板與塑料支架分離,必須拆8顆螺絲,很累,就用吹算了。如果能找到平面很小的恒溫臺(tái)就好了。


回復(fù)

使用道具 舉報(bào)

6#
ID:283954 發(fā)表于 2023-9-29 18:26 | 只看該作者
終于把板子給焊上了,之所以會(huì)這么久是因?yàn)樽龊玫腜CB還必須集運(yùn)才送來(lái),得十天八天,影響開(kāi)發(fā)速度,軟件方面就容易得多,因?yàn)槲抑耙呀?jīng)做了兩款掃描電子琴琴鍵的軟件,有88鍵的,包含力度感應(yīng),相當(dāng)復(fù)雜,當(dāng)初幸好有網(wǎng)友yzwzfyz指點(diǎn)一番,不然還真做不出來(lái)。

現(xiàn)在這個(gè)就非常簡(jiǎn)單了,只用到8條X線,5條Y線,可檢測(cè)40個(gè)鍵,所以把舊軟件簡(jiǎn)化,用了兩晚就解決了,編程思路如下:

1. 向某一條Y線送出0, 其他保持1,讀取X線的值(8位),這8位有某個(gè)按鍵被按下,該位是0。
2. 由于8位連接的按鍵會(huì)同時(shí)被按下,所以得用移位逐個(gè)檢測(cè)每個(gè)位,并結(jié)合Y的值算出是琴上的那個(gè)鍵被按下。
3. 確定被按下的鍵必須在記憶區(qū)相應(yīng)的位置設(shè)定標(biāo)記1,然后送出NOTEON的MIDI碼。
4. 沒(méi)有按下的鍵也必須在其記憶區(qū)相應(yīng)的位置檢查標(biāo)記,若為1表示之前已經(jīng)送出NOTEON,所以必須送出NOTEOFF的MIDI碼,再把標(biāo)記設(shè)為0.
5. 按鍵不必有防抖程序,因?yàn)槊恳淮螔呙钑?huì)有間隔,不會(huì)出現(xiàn)連續(xù)開(kāi)關(guān)的情況,經(jīng)過(guò)測(cè)試的確如此。

注:Y線是連接二極管的負(fù)極,X線是連接二極管的正極。


SCANNER:               ;鍵盤掃描主程序
;LCALL DELAY3        ;這個(gè)試驗(yàn)時(shí)可開(kāi),但正式使用要關(guān)。

SCANP1:                 ;輸出到P1,其中一列是0,然后從P2讀入,8位代表列,如某行有按下則為0,否則為1,8行都有可能同時(shí)按下。
MOV 35H, #0          ;THIS WILL ADD TO ROW TO MAKE 0-7
MOV 32H, #5          ;8 BITS TO SHIFT
MOV 50H, #11111111B  ;THIS BYTE FOR SHIFT AND OUTPUT TO P1
MOV P1, #11111111B   ;CLEAR P1 AFTER EVERY BIT SCAN
LCALL DELAY1   
CLR C                    ;PUSH A ZERO INTO 50H AT FIRST ROTATE
SCANP1A:
MOV A, 50H
RLC A                    ;改用左移,第一次(C=0)被推入,變成11111110,而C變成1,第二次移0被左移,變成11111101
MOV 50H, A           ;保留進(jìn)50H,下次再用
MOV P1, A             ;輸出到P1
;MOV P1, #11101111B   ;第一步:這個(gè)用來(lái)檢測(cè)每一根輸出線(逐個(gè)放0,只有5根線BIT0-BIT4)

LCALL DELAY0          ;稍等   

MOV A, P2            ;READ FROM P2

;LCALL SENTONEBYTE1

LCALL EACHDATA

SETB C                        ;BEFORE LOOP SET C FOR SHIFT ONE TO 50H
MOV P1, #11111111B   ;CLEAR P1 AFTER EVERY BIT SCAN
LCALL DELAY1
;LCALL DELAY3

DJNZ 32H, SCANP1A     ;5 TIME LOOP

JMP SCANNER


EACHDATA:            ;32H 從8逐漸減到1,代表是那一列被設(shè)為0,與監(jiān)測(cè)到0的行相乘就得到掃描號(hào)碼。      
PUSH PSW
MOV 34H, #8         ;8行檢測(cè)
MOV 33H, A           ;A 是由P2 讀來(lái)的8BIT,每個(gè)BIT代表一個(gè)掃描線與P1那個(gè)被設(shè)定為0之間的按鍵是否有按下,按下則為零。

EACHDATA1:           ;8次重復(fù)由34H控制
MOV A, 33H
LCALL COUNTPOSITION  ;先算出當(dāng)前鍵的位置
MOV 3EH, A                  ;回來(lái)后A是按鍵數(shù)目

LCALL KEYMAP              ;查表得到該按鍵在鍵盤上的排列號(hào)碼

MOV 3AH, A                 ;保存鍵盤號(hào)碼到3AH

MOV A, 33H           
RLC A                         ;向左移,檢查C看是1還是0
MOV 33H, A               ;SAVE BACK FOR NEXT ROTATE

JNC DOKEY1              ;CONTACT POINT NOT CONTACT GO NOTEOFF SUBROTINE
LCALL NOTEOFFLAH    ;NOTE OFF SUBROUTINE
JMP DOKEY2
DOKEY1:
MOV A, 3AH                 ;按鍵碼  
;LCALL SENTONEBYTE1
LCALL NOTEONLAH       ;保存區(qū)相應(yīng)位置放1
DOKEY2:

DJNZ 34H, EACHDATA1   ;8 LOOP NEEDED
DOKEYEXIT:
POP PSW
RET

NOTEOFFLAH:
MOV DPH, #0
MOV DPL, 3AH
MOVX A, @DPTR     ;READ OLD DATA
JZ NOTEOFFX
MOV A, #0
MOVX @DPTR, A        ;標(biāo)志為1
LCALL SENTNOTEOFF ;送出NOTEOFF,只限一次
NOTEOFFX:
RET


NOTEONLAH:
MOV DPH, #0
MOV DPL, 3AH
MOVX A, @DPTR        ;READ OLD DATA
JNZ NOTEONX
MOV A, #1
MOVX @DPTR, A        ;標(biāo)志為1
LCALL SENTNOTEON  ;送出NOTEON,只限一次
NOTEONX:
RET

SENTNOTEOFF:
MOV A, #10000000B   ;MIDI NOTEOFF CHANNEL1
LCALL SENTONEBYTE1
LCALL SENTONEBYTE2
MOV A, 3AH
LCALL SENTONEBYTE1
LCALL SENTONEBYTE2
MOV A, #0
LCALL SENTONEBYTE1
LCALL SENTONEBYTE2
RET

SENTNOTEON:
MOV A, #10010000B    ;MIDI NOTEON CHANNEL1
LCALL SENTONEBYTE1
LCALL SENTONEBYTE2
MOV A, 3AH
ANL A, #01111111B    ;MASKING BIT7 音符  
LCALL SENTONEBYTE1
LCALL SENTONEBYTE2
MOV A, #7FH           ;力度
LCALL SENTONEBYTE1
LCALL SENTONEBYTE2
RET


COUNTPOSITION:    ;這個(gè)算法不一般
PUSH PSW
MOV A, 32H        ;列ROW POSITION 1-8
MOV B, #8         ;8 CONTACT POINT FOR EACH ROW
MUL AB            ;得到的數(shù)字是 8,16,24,32,40.......128
CLR C
SUBB A, #8        ;MAKE A 0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120
ADD A, 34H        ;加上34H 1-8 行COLUME
POP PSW
RET

KEYMAP:           ;由于此款排列順序,無(wú)需查表,直接運(yùn)算
MOV A, #50H       ;從小變大!
CLR C
SUBB A, 3EH
RET


回復(fù)

使用道具 舉報(bào)

7#
ID:283954 發(fā)表于 2023-10-5 22:56 | 只看該作者
原來(lái)的琴?zèng)]有功放,于是采用了TDA7297功放模塊,想起很多年前我還在用2N3055/2n2955做功放,現(xiàn)在實(shí)在太方便了,實(shí)測(cè)結(jié)果聲音很大,不過(guò)靜態(tài)電流也很大,電池很快就會(huì)耗盡,打算改用數(shù)字功放,靜態(tài)電流20MA,由于我的音源模塊是立體聲的,必須有兩個(gè)喇叭,要在底座開(kāi)多一個(gè)喇叭孔就麻煩了,暫時(shí)就這么用,掃描板的串口輸出直接接上一個(gè)藍(lán)牙模塊,用PC版的藍(lán)牙接收模塊,就可以彈進(jìn)電腦了。




回復(fù)

使用道具 舉報(bào)

8#
ID:105534 發(fā)表于 2023-10-6 09:06 | 只看該作者
匯編大師,單片機(jī)匯編全還給老師了
回復(fù)

使用道具 舉報(bào)

9#
ID:444392 發(fā)表于 2023-10-6 11:19 | 只看該作者
這么改會(huì)不會(huì)麻煩了些?為什么不直接用MIDI模塊來(lái)做呢?
回復(fù)

使用道具 舉報(bào)

10#
ID:283954 發(fā)表于 2023-10-6 15:48 | 只看該作者
msold5 發(fā)表于 2023-10-6 11:19
這么改會(huì)不會(huì)麻煩了些?為什么不直接用MIDI模塊來(lái)做呢?

沒(méi)找到適用的器材,得自己做,單單MIDI模塊也做不了這事的。
回復(fù)

使用道具 舉報(bào)

11#
ID:444392 發(fā)表于 2023-10-6 16:02 | 只看該作者
dalaoshi 發(fā)表于 2023-10-6 15:48
沒(méi)找到適用的器材,得自己做,單單MIDI模塊也做不了這事的。

沒(méi)明白你說(shuō)的不適合是什么意思,單片機(jī)發(fā)送指令到MIDI,直接調(diào)用MIDI里的彎音滑音功能不是更適合制作弦類樂(lè)器嗎?
回復(fù)

使用道具 舉報(bào)

12#
ID:1083996 發(fā)表于 2023-10-6 18:34 | 只看該作者
不錯(cuò)的思路,成品玩具琴很好買,可以做多種改裝啊
回復(fù)

使用道具 舉報(bào)

13#
ID:283954 發(fā)表于 2023-10-6 22:26 | 只看該作者
本帖最后由 dalaoshi 于 2023-10-7 20:12 編輯

msold5 發(fā)表于 2023-10-6 16:02
沒(méi)明白你說(shuō)的不適合是什么意思,單片機(jī)發(fā)送指令到MIDI,直接調(diào)用MIDI里的彎音滑音功能不是更適合制作弦類 ...

要做的是一臺(tái)能現(xiàn)場(chǎng)演奏的弦樂(lè)電子琴,用四人組成樂(lè)隊(duì)來(lái)表演,用普通電子琴無(wú)法表現(xiàn)弦樂(lè)的拉弓技巧,所以必須改裝。



51hei.jpeg (359.05 KB, 下載次數(shù): 109)

51hei.jpeg
回復(fù)

使用道具 舉報(bào)

14#
ID:283954 發(fā)表于 2023-10-6 22:31 | 只看該作者
量子工業(yè) 發(fā)表于 2023-10-6 18:34
不錯(cuò)的思路,成品玩具琴很好買,可以做多種改裝啊

改裝是最可行之道,那些琴鍵必須廠家投資才能生產(chǎn)的,電路板就可以自己做,這就是會(huì)玩電子的人的好處。
回復(fù)

使用道具 舉報(bào)

15#
ID:444392 發(fā)表于 2023-10-14 22:54 | 只看該作者
dalaoshi 發(fā)表于 2023-10-6 22:26
要做的是一臺(tái)能現(xiàn)場(chǎng)演奏的弦樂(lè)電子琴,用四人組成樂(lè)隊(duì)來(lái)表演,用普通電子琴無(wú)法表現(xiàn)弦樂(lè)的拉弓技巧,所 ...

你改得很好,我不是說(shuō)用電子琴有問(wèn)題,我是說(shuō)用電子琴不如直接用MIDI芯片直接,電子琴里不也是調(diào)用的MIDI功能嗎?
回復(fù)

使用道具 舉報(bào)

16#
ID:283954 發(fā)表于 2023-10-15 02:05 | 只看該作者
msold5 發(fā)表于 2023-10-14 22:54
你改得很好,我不是說(shuō)用電子琴有問(wèn)題,我是說(shuō)用電子琴不如直接用MIDI芯片直接,電子琴里不也是調(diào)用的MIDI ...

你是說(shuō)在琴里面放MIDI芯片,也就是音源芯片SAM2695, VS1053B?這些的音質(zhì)都太差了,所以要將MIDI信號(hào)輸出外接高檔音源才行,我還無(wú)法找到好的音源SOC呢。
回復(fù)

使用道具 舉報(bào)

17#
ID:283954 發(fā)表于 2023-10-16 22:53 | 只看該作者
這是琴的主控板,從以前比較復(fù)雜的板簡(jiǎn)化而來(lái),廢除不少按鍵,只剩5個(gè),可用32腳的STC8G2K32S4,比較容易焊,之所以采用S4是因?yàn)橛窒胱銎渌麑?shí)驗(yàn),比如用兩個(gè)音源來(lái)產(chǎn)生合奏效果,我曾經(jīng)用了4個(gè)不同牌子的音源同時(shí)演奏一個(gè)聲道,出來(lái)的效果和用一個(gè)音源一樣,因?yàn)檫@些音源的采樣都是一樣的,演奏也都很準(zhǔn)確,而真樂(lè)器合奏時(shí),會(huì)有時(shí)間點(diǎn)誤差,音量變化誤差,音調(diào)準(zhǔn)確度誤差,頻率響應(yīng)誤差,而且都是隨機(jī)的,這樣才有合奏效果,用S4就能夠同時(shí)控制3個(gè)音源,哈!充滿幻想,如果一人吹喇叭就有3支喇叭合奏的結(jié)果,就可以搞電子銅樂(lè)隊(duì)了。







回復(fù)

使用道具 舉報(bào)

18#
ID:108361 發(fā)表于 2023-10-25 12:49 | 只看該作者
大佬啊,居然直接上手匯編開(kāi)發(fā),雖然我現(xiàn)在也還能看懂51匯編,但是要我動(dòng)手寫已經(jīng)不行了,用太久的C,匯編已經(jīng)退化
回復(fù)

使用道具 舉報(bào)

19#
ID:283954 發(fā)表于 2023-10-25 22:14 | 只看該作者
powerdruy 發(fā)表于 2023-10-25 12:49
大佬啊,居然直接上手匯編開(kāi)發(fā),雖然我現(xiàn)在也還能看懂51匯編,但是要我動(dòng)手寫已經(jīng)不行了,用太久的C,匯編 ...

我是走投無(wú)路才呆在匯編的,當(dāng)年第一次玩單片機(jī)時(shí)51C還不曾出現(xiàn),第二次玩單片機(jī)時(shí)已經(jīng)是C的天下,反正做都是自己的項(xiàng)目,就不想學(xué)C了。
回復(fù)

使用道具 舉報(bào)

20#
ID:283954 發(fā)表于 2023-10-31 02:15 | 只看該作者
這是電源供應(yīng)板,功放板直接用12V,聽(tīng)從論壇大佬的勸告,用78M05作為穩(wěn)壓,不要用LDO,避免過(guò)沖,由于擔(dān)心鋰電池沒(méi)有過(guò)放保護(hù),所以設(shè)計(jì)了一個(gè)電壓檢測(cè)器,用PMOS作開(kāi)關(guān),HT7050做電壓檢測(cè)器,用四個(gè)發(fā)光二極管降壓,可檢測(cè)5V以上的電壓,當(dāng)電壓過(guò)低時(shí)關(guān)斷PMOS,發(fā)光二極管可用不同的顏色組合以便獲得需要檢測(cè)的電壓,我用四顆紅LED可檢測(cè)11.2V電壓,3顆可檢測(cè)9.8V電壓。另外做了個(gè)混音放大器一混合兩個(gè)音源的輸出。

LED的電壓:通常所說(shuō)的LED是正向電壓,就是說(shuō)LED的正極接電源正極,負(fù)極接電源負(fù)極。電壓與顏色有關(guān)系,紅、黃、黃綠的電壓是1.8—2.4v之間。白、藍(lán)、翠綠的電壓是3.0—3.6v之間。






回復(fù)

使用道具 舉報(bào)

21#
ID:283954 發(fā)表于 2023-11-3 01:14 | 只看該作者
這是焊好的主控板,輕觸開(kāi)關(guān)用到24MM的柄,才能夠穿過(guò)厚后的木板,由于這個(gè)琴鍵沒(méi)有力度感應(yīng),必須用電阻式壓力傳感器,ADC后產(chǎn)生壓力參數(shù),控制電子琴音量的大小。

正面:



反面:



回復(fù)

使用道具 舉報(bào)

22#
ID:283954 發(fā)表于 2023-11-15 00:43 | 只看該作者
     終于完成整機(jī)的組裝,比較困難的就是那個(gè)拉弦模擬器的外殼,必須把所有接線都隱藏在內(nèi),現(xiàn)在還有一個(gè)接頭外露,等下次改板再說(shuō)把,另外經(jīng)過(guò)測(cè)試,必須重新安排電阻壓力傳感器的位置,否則拉弦時(shí)要轉(zhuǎn)換為彈撥很難操作,接下來(lái)就是寫軟件了。

整機(jī):



控制部分:



掃描MCU:




回復(fù)

使用道具 舉報(bào)

23#
ID:283954 發(fā)表于 2024-5-27 02:24 | 只看該作者
第三款掃描板正反面。



回復(fù)

使用道具 舉報(bào)

24#
ID:283954 發(fā)表于 2024-12-28 13:37 | 只看該作者
經(jīng)過(guò)8年的網(wǎng)上學(xué)習(xí)和咱們的強(qiáng)大供應(yīng)鏈,終于開(kāi)始制作100臺(tái)拉弦電子琴了。

這是最后的控制板:







回復(fù)

使用道具 舉報(bào)

25#
ID:463443 發(fā)表于 2025-1-22 17:14 | 只看該作者
我就是電子琴這個(gè)行業(yè)的,不過(guò)是負(fù)責(zé)打螺絲的
回復(fù)

使用道具 舉報(bào)

26#
ID:283954 發(fā)表于 2025-2-13 21:38 | 只看該作者

好不容易找了個(gè)兒童來(lái)演示拉弦電子琴

成功學(xué)有一個(gè)經(jīng)典故事:有個(gè)推銷員被派到非洲推銷鞋子,回來(lái)報(bào)告說(shuō):“非洲人是不穿鞋的,鞋子沒(méi)有市場(chǎng)",上司說(shuō):“非洲人還沒(méi)穿鞋?市場(chǎng)很大!”,問(wèn)題在于;如何讓非洲人從不穿鞋變成穿鞋?一是砸錢搞吹銷穿鞋的好處,二是收買酋長(zhǎng)命令必須穿鞋否則不準(zhǔn)走路,三是用國(guó)際開(kāi)發(fā)署的辦法發(fā)錢給專家寫研究報(bào)告說(shuō)不穿鞋容易腳底生癌,得趕快穿鞋,如果這些辦法還是不能讓非洲人穿鞋,那就等天來(lái)幫忙,把地表溫度升高到不穿鞋就被燙到,非洲人就得穿鞋了,市場(chǎng)很大,發(fā)財(cái)了。
拉弦電子琴目前還處在“非洲人不穿鞋”的狀態(tài),琴是造出來(lái)了,卻還賣沒(méi)人要,因?yàn)檎y(tǒng)藝術(shù)界是不用電子琴的,正如非洲人是不穿鞋的,要讓他們接受電子琴,還得努力。不過(guò),得自我審核,究竟要推廣的東西是否有用?比如鞋子,的的確確能保護(hù)雙腳,那就值得推廣。拉弦電子琴有用嗎?用四個(gè)鍵盤手就能組成弦樂(lè)隊(duì),替代幾十個(gè)提琴手組成的交響樂(lè)隊(duì)弦樂(lè)組,演奏技巧包含拉弓,強(qiáng)弓,顫弓,跳弓,撥弦等效果,還能一鍵轉(zhuǎn)調(diào),肯定是有用的東西,因此值得推廣。



回復(fù)

使用道具 舉報(bào)

27#
ID:338503 發(fā)表于 2025-2-14 09:56 | 只看該作者
這個(gè)嘗試非常難能可貴,做的非常好。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表