Apa sensor linear untuk keyboard? [Tutup]

8

Saya mencoba membuat keyboard yang peka terhadap kecepatan untuk memutar musik.

Saya harus mengukur posisi masing-masing tombol untuk mengetahui seberapa keras suara itu seharusnya.

Volume suara adalah fungsi dari kecepatan tombol di ujung keturunan. Saya tahu posisi dapat dipulihkan dari kecepatan dengan mengintegrasikannya.

Apa yang akan menjadi yang termurah dan termudah, namun masih cukup tepat untuk melakukannya?

Saya tidak tahu persis apa artinya "cukup tepat" dalam konteksnya. Saya harus mengujinya.

Panjang perpindahan maksimum sekitar 2 cm.

EDIT: tidak seperti beberapa jawaban tampaknya menyarankan, kenyaringan BUKAN fungsi dari kecepatan rata-rata kunci.

EDIT2: kenyaringan adalah fungsi dari kecepatan palu pada saat menyentuh senar, tetapi kunci tidak mendorong palu sampai akhir jalurnya. Ini benar-benar seperti melempar bola ke dinding: bola meninggalkan tangan pada satu saat, sebelum menyentuh dinding.

Jonas Daverio
sumber
4
Anda dapat menggunakan dioda-IR dan fotodioda di samping satu sama lain di bawah tombol, fotodioda yang mengukur cahaya yang dipantulkan. Semakin rendah posisi tombol, semakin banyak pantulan cahaya yang mencapai fotodioda. Kemudian konversikan arus foto ke tegangan menggunakan penguat transimpedansi. Anda harus bermain-main untuk melihat perubahan voltase atau voltase yang sesuai dengan volume mana.
jusaca
Sudahkah Anda mempertimbangkan untuk meletakkan accelerometer pada setiap tombol? Integrasi akselerasi memberi Anda kecepatan, dan mengintegrasikan kecepatan memberi Anda posisi. Karena Anda berurusan dengan jarak pendek & periode waktu, Anda mungkin bisa mengabaikan kesalahan offset kecil akselerometer.
brhans
1
@ kucing Saya akrab dengan Launchpads dan saya masih tidak tahu apa yang Anda bicarakan. Bisakah Anda sedikit lebih membantu?
Elliot Alderson
1
Ya saya yakin Anda salah. Bandingkan accelerometer $ 1 dengan sensor mekanis individual pada setiap tombol. Pikirkan keandalan dari nol komponen bergerak (dengan asumsi Anda melakukan interkoneksi dengan benar). Anda akan memerlukan mikrokontroler yang cukup mampu dan sedikit pengalaman menulis firmware untuk melakukannya.
brhans
1
@jusaca sepertinya sudah menjadi produk di pasaran: deskthority.net/wiki/Adomax_Flaretech :)
user60561

Jawaban:

2

Bagaimana dengan penginderaan kapasitif? Rekatkan beberapa aluminium foil ke bagian bawah tombol, tanah bagian bawah keyboard, dan mengukur waktu naik melalui resistor 100k.

Metode ini dapat dibuat hampir tepat secara sewenang-wenang, asalkan prosesor Anda cukup cepat untuk membedakan perubahan kapasitansi.

Saya tidak menjelaskan rangkaian dengan sangat baik. Anda menyambungkan output digital ke kunci melalui resistor bernilai tinggi, tetapkan rendah untuk melepaskan muatan liar, dan kemudian setel tinggi. Anda juga menghubungkan input digital langsung ke tombol. Kapasitansi secara perlahan akan mengisi melalui resistor, dan Anda menghitung berapa lama waktu yang dibutuhkan sebelum input digital menyala. Waktu ini sama dengan konstanta waktu RC dari rangkaian.

0xDBFB7
sumber
Jadi, saya harus melewati AC di dalamnya, bukan?
Jonas Daverio
1
@JonasDaverio Saya tidak yakin dengan apa Anda menghubungkan kunci, tetapi satu GPIO per kunci sudah cukup.
0xDBFB7
Saya tidak yakin bagaimana saya seharusnya mengukur kapasitansi. Satu piring terhubung ke ground dan yang lainnya terhubung ke apa? Sumber tegangan konstan?
Jonas Daverio
1
Mikrokontroler Teensy LC [1] memiliki 11 input penginderaan kapasitif dan pustaka C ++ yang membuatnya semudah menelepon analogReaddi Arduino. [1]: pjrc.com/teensy/teensyLC.html
hoosierEE
1
@JonasDaverio maaf, saya tidak menjelaskan sirkuit dengan sangat baik. Anda menyambungkan output digital ke kunci melalui resistor bernilai tinggi, tetapkan rendah untuk melepaskan muatan liar, dan kemudian setel tinggi. Anda juga menghubungkan input digital langsung ke tombol. Kapasitansi secara perlahan akan mengisi melalui resistor, dan Anda menghitung berapa lama waktu yang dibutuhkan sebelum input digital menyala. Waktu ini sama dengan konstanta waktu RC dari rangkaian.
0xDBFB7
16

Kebanyakan keyboard hanya menggunakan dua kontak per kunci, yang dikonfigurasikan sehingga mereka menutup (atau membuka) pada posisi yang berbeda dalam perjalanan kunci. Mereka memperkirakan kecepatan dari waktu yang berlalu antara dua peristiwa. Bahkan keyboard "aksi piano" berbobot mewah menggunakan metode penginderaan dasar ini.

Mencoba mengukur posisi dan / atau kecepatan secara langsung terdengar seperti pembunuhan besar-besaran.

Dave Tweed
sumber
3
Saya pikir metode ini tidak cukup. Inilah sebabnya: jika saya perlahan-lahan menekan tombol ke bawah setengah dari jalan, dan kemudian dengan cepat mendorongnya ke bawah, suara akan keras pada piano nyata, dan metode ini akan berpikir kunci ditekan sangat lambat dan karenanya menghasilkan suara sangat sunyi. Selain itu, jika saya ingin mengulangi catatan, saya harus membiarkan kunci sepenuhnya kembali ke posisi semula, yang sama sekali tidak seperti apa yang akan saya lakukan pada piano sungguhan.
Jonas Daverio
9
Jika satu kontak berada di bagian bawah dan kontak lainnya sangat dekat bagian bawah, Anda tidak akan memiliki masalah ini.
George White
1
Setiap instrumen nyata memiliki nuansa dan keterbatasan. Musisi mengembangkan teknik untuk mengeksploitasi ini untuk efek musik. Pemain akan segera belajar untuk melakukan sampai ke bagian bawah stroke untuk mendapatkan efek yang diinginkan.
Transistor
1
@ Transistor Ya, memang, tapi tujuan saya di sini adalah untuk mencoba mensimulasikan sedekat mungkin piano yang sebenarnya. Sudah ada banyak keyboard yang tersedia, tetapi saya tidak pernah menemukan yang melakukannya. Mungkin ada beberapa yang sangat mahal.
Jonas Daverio
1
Intinya adalah untuk memiliki output midi dan kemungkinan untuk memiliki lebih banyak kunci (untuk mikrotonalitas) sambil menjaga semua sensasi piano nyata. Saya tahu ini tidak akan pernah tercapai. Dan saya juga ingin tetap relatif murah, tetapi jika saya tidak bisa, saya akan tetap pada solusi reguler.
Jonas Daverio
9

Saya harus mengukur posisi masing-masing tombol untuk mengetahui seberapa keras suara itu seharusnya.

Biasanya kecepatan kunci dihitung dengan mengukur waktu antara putus sakelar normal-tertutup dan pembuatan sakelar terbuka normal.

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

Gambar 1. Kontak keyboard break-before-make biasanya digunakan untuk pengukuran kecepatan.

Volume suara tidak hanya berfungsi dari kecepatan tombol di akhir keturunan. ... Panjang perpindahan maksimum sekitar 2 cm.

Dalam hal ini Anda perlu mengatur kontak yang biasanya tertutup secara mekanis sehingga rusak dalam beberapa mm perjalanan terakhir.

skema

mensimulasikan rangkaian ini

Gambar 2. Pengaturan switching mekanis.

Menurut saya, taruhan terbaik Anda adalah memodifikasi pedalboard bass MIDI yang ada untuk memenuhi keperluan Anda.


Komentar OP untuk Dave Tweed:

Saya pikir metode ini tidak cukup. Inilah sebabnya: jika saya perlahan-lahan menekan tombol ke bawah setengah dari jalan, dan kemudian dengan cepat mendorongnya ke bawah, suara akan keras pada piano nyata, dan metode ini akan berpikir kunci ditekan sangat lambat dan karenanya menghasilkan suara sangat sunyi. Selain itu, jika saya ingin mengulangi catatan, saya harus membiarkan kunci sepenuhnya kembali ke posisi semula, yang sama sekali tidak seperti apa yang akan saya lakukan pada piano sungguhan.

Itulah sebabnya saya mengusulkan untuk mengaktifkan sakelar changeover dalam beberapa mm perjalanan terakhir.

Transistor
sumber
Saya menjawab kembali mengapa saya pikir ini masih kurang.
Jonas Daverio
Saya pikir Anda salah membaca apa yang saya tulis. Maksud saya "Volume suara BUKAN hanya fungsi dari kecepatan tombol pada akhir keturunan."
Jonas Daverio
Memang, energi tergantung pada kecepatan selama jangka waktu tumbukan, yang merupakan fungsi dari percepatan (dan brengsek, jika Anda tidak menganggap percepatan konstan). Namun, yakinkah itu membuat banyak perbedaan? Dapatkah Anda menandai spesifik yang Anda miliki atau cari? Saya tidak tahu apa yang akan terjadi. Mungkin tergantung pada efek yang seharusnya ada pada algoritma.
vectory
@JonasDaverio Apakah Anda mengacu pada pelarian? Piano-piano digital menyelesaikan ini dengan sensor ketiga yang menyala sedikit di atas di mana kunci berada di luar (dan di atas sensor yang membunyikan nada). Jika kunci tidak cukup tinggi untuk melepaskan sensor ke-3 ini, maka mengeluarkan tombol tidak akan membunyikan nada kedua, sama seperti piano sungguhan tidak melepaskan palu kecuali kunci dinaikkan cukup tinggi.
DKNguyen
8

Anda harus melihat pada keyboard analog. Lihatlah video ini . Ini hanyalah contoh konsep.

Sunting: Juga, jika sakelar optik tidak berfungsi untuk Anda, lihat ini:

masukkan deskripsi gambar di sini

Ada gulungan dicetak PCB di bawah setiap tutup tombol. Saat Anda menekan koil tombol mengukur perubahan induktansi yang disebabkan oleh penekanan pegas kunci dan dekompresi, oleh karena itu, Anda bisa mendapatkan pembacaan posisi saklar yang cukup akurat.

Sumber:
Reddit
Imgur

Mat
sumber
Rupanya, mereka menggunakan sepasang IR-LED dan photosensor: blog.wooting.nl/flaretech-the-optical-keyboard-switch Namun, saya tidak yakin apakah mereka mengukur penundaan antara emisi dan deteksi atau apakah mereka mengukur intensitas cahaya yang bisa menembus terowongan.
Jonas Daverio
Saya menautkan itu hanya untuk contoh keyboard analog. Anda dapat melihat reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… dan imgur.com/gallery/ImrH7nO . Saya tidak terlalu akrab dengan subjek, hanya mencoba membantu mendorong Anda ke arah yang benar :)
Matt
1
Meskipun tautan ini dapat menjawab pertanyaan, lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah. - Dari Ulasan
Blair Fonville
1
@ BlairFonville Cukup adil. Biarkan saya meringkasnya. Ada gulungan dicetak PCB di bawah setiap tutup tombol. Saat Anda menekan koil tombol mengukur perubahan induktansi yang disebabkan oleh penekanan pegas kunci dan dekompresi, oleh karena itu, Anda bisa mendapatkan pembacaan posisi saklar yang cukup akurat.
Matt
7

Jika variabel penting adalah dampak "palu" yang Anda coba tiru, pertimbangkan sensor piezo yang memungkinkan Anda untuk mengukur ini secara langsung. Mereka menghasilkan pulsa yang amplitudo tergantung pada impuls impak.

pjc50
sumber
3

Salah satu pilihan bisa sensor Hall, yang merasakan kekuatan medan magnet. Ada berbagai jenis sensor Hall untuk penginderaan digital dan analog, Anda memerlukan yang memiliki analog. Misalnya SI7211 harganya sekitar 0,80 USD.

Anda juga membutuhkan magnet kecil di bawah setiap tombol. Ketika magnet semakin dekat ke sensor, medan magnet meningkat yang meningkatkan tegangan output sensor.

jpa
sumber
1
Rupanya, mereka menggunakannya di beberapa keyboard musik. Saya pikir ini adalah solusi yang sangat sederhana dan bagus. Saya akan membandingkan biaya dengan solusi 0xDBFB7.
Jonas Daverio
2

Anda dapat memperlakukan ini sebagai instrumen digital / analog hibrida dengan menempatkan mikrofon [1] di dalam keyboard, disesuaikan dengan suara pukul tombol. Sinyal dari mikrofon menambah input berbasis switch tradisional, sehingga switch memberi tahu Anda tombol mana yang ditekan, dan mikrofon memberi tahu Anda seberapa keras penekanan tombol terbaru.

2 atau lebih mikrofon sepanjang panjang keyboard akan memungkinkan penguraian sandi dengan nada keras / rendah dan nada lembut / tinggi dan sebaliknya.

[1]: Saya terus mengatakan "mikrofon", tapi maksud saya "perangkat penginderaan getaran umum".

hoosierEE
sumber
Kurasa itulah cara kerja E-Guitar. Namun, pertanyaannya tidak menyebutkan bagian akustik, hanya kunci.
vectory
0

Anda mungkin ingin meneliti resistor variabel pegas kembali, potensiometer pegas kembali, atau sensor posisi linear. Berikut ini salah satu contohnya: http://ecatalog.beisensors.com/item/linear-position-sens//linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0

Kemungkinan lain mungkin menggunakan rotary encoder kecil (dan secara mekanis mengubah gerak tekan kunci linier menjadi gerakan putar). Encoder akan menampilkan satu set pulsa atau lebih ketika poros berputar. Denyut nadi yang lebih tinggi akan menunjukkan pers yang lebih cepat. Posisi encoder dapat dilacak secara langsung jika grup pulsa dikirim ke logika digital tambahan. Inilah bagian contohnya: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjAdAAAAA

Nedd
sumber
0

Jika Anda ingin akurasi super dengan harga yang wajar, bagaimana menggunakan linear encoder , melampirkan strip kode abu-abu (yang Anda cetak sendiri menggunakan printer laser ke lembar transparan, kemudian potong dan pasang satu untuk setiap tombol) - selengkapnya rincian tentang cara kerjanya di bawah rotary encoders di sini . Dengan cara ini Anda memerlukan dua (mungkin 3 sehingga Anda mendapatkan indikasi posisi akhir) garis digital per kunci. Ini akan memungkinkan Anda untuk mengukur kecepatan dengan akurasi yang sangat baik dan bahkan posisi jika itu relevan. Keuntungan dari hal ini adalah Anda dapat memasang kembali ke keyboard lama (bahkan keyboard akustik).

Perhatian: ketika saya masih remaja (beberapa waktu yang lalu) saya bertanya-tanya selama bertahun-tahun apakah saya bisa membuat keyboard yang realistis lebih murah daripada membelinya. Tampaknya tidak mungkin pada waktu itu dan tampaknya bahkan lebih tidak mungkin sekarang. Karena itu, metode yang hemat biaya mungkin "membeli keyboard yang sensitif terhadap kecepatan dan membukanya" yang tidak menyenangkan.

abligh
sumber
1
Ya, saya tidak berpura-pura bahwa ini akan menjadi lebih murah daripada yang komersial, tetapi saya sedang mencoba membuat susunan kunci khusus yang tidak ada di pasaran. Untuk jawaban Anda, saya tidak begitu yakin apa yang Anda maksud. Maksud Anda membuat encoder linier dari awal? Saya tidak mengerti apa gunanya strip transparan. Dan 3 bit tampaknya agak rendah untuk mengkodekan posisi secara tepat dan untuk menyimpulkan kecepatan darinya.
Jonas Daverio
Encoder linier akan memberi Anda kecepatan dengan 2 bit saja (lihat tautan) ke resolusi yang hebat (Anda bisa mendapatkan posisi ke 256 per jarak perjalanan dengan sangat mudah). Dengan menghitung periode antara transisi bit kode abu-abu, Anda akan mendapatkan gambar kecepatan yang sangat akurat pada berbagai tahapan perjalanan kunci. Bit ke-3 memberi Anda sinyal 'palu hit string' yang akurat. Saya menyarankan Anda menggunakan pembaca optik enkoder linear dengan 'pita' Anda sendiri - strip transparan.
abligh