ฉันพยายามสร้างตัวควบคุม MIDI ที่มีคอเหมือนกีตาร์ ที่คอนั้นมีเมทริกซ์เซ็นเซอร์ความดันขนาดใหญ่ ตัวควบคุมจะเลียนแบบ 3 สาย
วิธีการทำงานคือ: มีเทปทองแดงสองหน้ายาว 3 แถบ (กว้าง 0.5 ซม. ยาวเท่าคอ) ซึ่งเชื่อมต่อกับพลังงาน (3.3V หรือ 5V อาจไม่สำคัญตอนนี้) บนแถบเหล่านี้เป็นชั้นของ Velostat ซึ่งจะเปลี่ยนความต้านทานตามความดัน ที่ด้านบนของ velocity จะเป็นอีกชั้นหนึ่งของแถวหรือเซลล์ของเทปทองแดงที่เชื่อมต่อกับบางสิ่งบางอย่างที่แยกการอ่านของแรงดันไฟฟ้าผ่านชั้นของ velostat เนื่องจากคอยาวประมาณ 40 ซม. จะมีอย่างน้อย 80 แถว
หากคุณลองนึกภาพแถบทองแดงด้านล่าง 3 แถบเป็นคอลัมน์ของแผนภูมิที่คอคอเซ็นเซอร์อาจเป็นเซลล์หรือแถวขึ้นอยู่กับวิธีการวัด อาจมีหลายแถว) มีเงื่อนไขพิเศษบางอย่างที่อาจทำให้ง่ายขึ้นแม้ว่า: เนื่องจากเป็นคอนโทรลเลอร์ที่เหมือนกีตาร์ไม่จำเป็นต้องวัดการโต้ตอบทุกครั้ง! เฉพาะการสัมผัสที่ใกล้เคียงกับร่างกายของคอนโทรลเลอร์เท่านั้น นอกจากนี้ความละเอียด 8 บิตควรแม่นยำเพียงพอ ระดับความดัน 255 อาจเป็นสิ่งที่จำเป็นมากกว่า
ตอนนี้บิตยาก:
การวัดต้องเป็นแบบเรียลไทม์ - y เพียงพอที่จะตรวจจับค้อน -on เป็นต้น (ไม่ทราบว่าต้องให้อัตราตัวอย่างสูงเท่าไร - ประมาณที่ kHz หลายตัวสำหรับการวัดและการเล่นที่ดี) และเอาต์พุตดิจิตอลของคอนโทรลเลอร์ควรเป็น MIDI (ใน 3 ช่องสัญญาณแยก - หนึ่งต่อสาย) หรือสัญญาณดิจิตอลที่สามารถประมวลผลด้วย Raspberry Pi
ขณะนี้ความรู้ของฉันมี จำกัด ฉันไม่สามารถนึกถึงเครื่องมือที่เหมาะสมสำหรับงานได้ สิ่งที่ฉันรู้คือ: เป็นไปได้ มีคอนโทรลเลอร์ที่คล้ายกัน แต่แตกต่างกันซึ่งใช้เทคนิคที่คล้ายกันมาก (ซึ่งฉันได้ทำการออกแบบวิศวกรรมย้อนกลับจนกระทั่งฉันสังเกตเห็นว่าพวกเขามีสิทธิบัตรและข้อมูลเกี่ยวกับวิธีที่พวกเขาทำมันไม่ได้เป็นความลับอย่างที่ฉันคิด) เรียกว่า ROLI ชายทะเล
TL; DR:
ประมาณ 240 เซ็นเซอร์
สามารถแยกออกเป็นกลุ่ม 80 ที่ขับเคลื่อนโดยบรรทัดเดียวกัน
นี่เป็นแอปพลิเคชั่นตามเวลาจริงฉันจำเป็นต้องได้รับแรงกดดันจากเซ็นเซอร์ทุกตัวเมื่อสัมผัส (มีเงื่อนไขบางประการดูด้านบน)
ขอบคุณล่วงหน้าฉันรู้ว่ามันอ่านเยอะมาก ฉันขอบคุณสำหรับคำแนะนำใด ๆ และจะดีใจมากถ้าคุณสามารถช่วยให้ฉันประสบความสำเร็จยุ่งเหยิงที่ฉันกำหนดไว้ในการผลิต!
สิ่งที่ฉันนึกถึง:
มัลติเพล็กซ์แถวและคอลัมน์อ่านแต่ละเซลล์ด้วย MCP3008 หรือใหญ่กว่า ADC และผูกมัด (โซ่ดอกเดซี่หรือต้นไม้อย่างเช่น) ATmegas ซึ่งผลักดันการมีปฏิสัมพันธ์น้อยที่สุดในตำแหน่งที่ชาญฉลาดไปยังสัญญาณสุดท้าย แต่จากการคำนวณของฉัน ค่าใช้จ่ายในการสื่อสาร รุ่นก่อนหน้านี้ยังรวมโพเทนชิโอมิเตอร์โพเทนชิโอมิเตอร์ซึ่งฉันทิ้งเพราะดีไซน์ไม่ดี (หลายครั้งก็ไม่เจ๋งพอ)
แก้ไข / UPDATE:
ขอบคุณสำหรับคำแนะนำที่ดีจนถึงตอนนี้! ขอบคุณพวกเขาตอนนี้ฉันสามารถวลีปัญหาของฉันชัดเจนยิ่งขึ้น:
ฉันมีเมทริกซ์ของเซ็นเซอร์ความดัน 80 แถว * 3 คอลัมน์ เมื่อมนุษย์โต้ตอบกับเมทริกซ์เซ็นเซอร์เซ็นเซอร์หลายตัวในบริเวณใกล้เคียงจะรับการสัมผัส แต่จะอยู่ตามแนวเสาเท่านั้น คอลัมน์ถูกแยกทางกลไก เซ็นเซอร์มีความต้านทานระหว่าง 100 โอห์มและ 1 kOhm เซ็นเซอร์เหล่านี้ทั้งหมดต้องอ่านด้วยความลึก 8 บิตผ่านการประมวลผลและต้องส่งผลลัพธ์ด้วยอัตราอย่างน้อย 1 kHz ดังนั้นการอ่าน / ประมวลผลเพียงครั้งเดียวจึงต้องใช้เวลาน้อยกว่ามิลลิวินาที เอาต์พุตสุดท้ายต่อคอลัมน์ต้องมี: 4 ไบต์สำหรับ float32 และ 1 ไบต์สำหรับ uint8 float32 จะระบุตำแหน่งโดยเฉลี่ยของการโต้ตอบแรกตามคอลัมน์ การโต้ตอบถูกกำหนดให้เป็นกลุ่มของเซ็นเซอร์ที่ต่อเนื่องกันซึ่งมีแรงดันสูงกว่าเกณฑ์ที่กำหนด นี่คือที่การประมวลผลได้รับการผสม: คอลัมน์จะถูกเลื่อนลงด้านล่างจนกว่าการอ่านจะเกินเกณฑ์ นี่จะนับเป็นการเริ่มต้นของการโต้ตอบ ความดันและตำแหน่งของเซ็นเซอร์ทุกตัวจะได้รับการจดจำจนถึงเซ็นเซอร์ตัวแรกที่อยู่ต่ำกว่าเกณฑ์ที่มีเซ็นเซอร์ต่อเนื่องสูงสุด 4 ตัว จากเซ็นเซอร์ทั้งหมดของการโต้ตอบที่บันทึกไว้เซ็นเซอร์เพียงสองตัวเท่านั้นที่จะถูกประมวลผลซึ่งเป็นเซ็นเซอร์ที่อ่านค่าความดันสูงสุด ตำแหน่งจุดลอยตัวจะคำนวณโดยการหาค่าเฉลี่ยของเซ็นเซอร์ทั้งสองตำแหน่งซึ่งถ่วงน้ำหนักด้วยแรงกดดัน ความกดดันโดยรวมของการโต้ตอบจะเป็นเพียงแค่การเพิ่มแรงกดดันทั้งสองที่ถูกจับระหว่าง 0 และ 255 (เพิ่มแรงกดดันทั้งสองของยูนิต 8 ลงใน uint16 และหารด้วย 2 โดยไม่ปัดเศษทิ้งบิตที่ไม่จำเป็น - นี่น่าจะเร็ว) สิ่งนี้ต้องเกิดขึ้นสำหรับทุกคอลัมน์ ผลลัพธ์ของขนาด 15 ไบต์จะถูกส่งผ่าน SPI ไปยังคอมพิวเตอร์ขนาดเล็ก (Raspberry Pi B3) ที่ทำหน้าที่เป็นซินธิไซเซอร์ ฉันไม่ได้ตั้งค่าวิธีการส่ง ถ้า SPI ไม่ใช่เครื่องมือที่เหมาะสมสำหรับงานฉันยินดีที่จะใช้วิธีการสื่อสารใด ๆ ที่ Raspberry Pi สามารถจัดการได้ เนื่องจากนี่เป็นแอปพลิเคชั่นทางดนตรีโต้ตอบความหน่วงจึงเป็นสิ่งสำคัญ
คำถามที่แน่นอนของฉันคือ: สิ่งนี้สามารถแก้ไขได้ด้วยไมโครคอนโทรลเลอร์เดียวโดยไม่ทำลายธนาคารหรือไม่? ฉันไม่สามารถซื้อไอซีได้หลายร้อยดอลลาร์สำหรับโครงการงานอดิเรก คุณจะแนะนำฮาร์ดแวร์อะไร มีข้อแม้ที่ไม่ชัดเจนที่ฉันต้องระวังหรือไม่
วิธีที่ฉันได้รับจากคำตอบจนถึงตอนนี้คือการให้พลังงานแต่ละคอลัมน์แยกกันจากนั้นอ่านแถวที่มี ADC 16 16 ช่อง (ADS7961) ที่เชื่อมต่อกับ Arduino ผ่าน SPI ฉันกังวลว่านี่อาจไม่ใช่วิธีที่ง่ายที่สุด / ถูกที่สุดหรือไม่เร็วพอที่จะไปถึงอัตรา> 1 kHz
ข้อสงวนสิทธิ์: โดยปกติฉันเป็นนักเคมีเชิงทฤษฎีและมือสมัครเล่นที่น่ากลัวเมื่อพูดถึงวิศวกรรมไฟฟ้าทุกอย่างที่ฉันรู้คือการเรียนรู้ด้วยตนเองและไม่มีพื้นฐานวิชาชีพใด ๆ (ซึ่งเป็นเหตุผลว่า ฉันรู้วิธีแก้ไขซอฟต์แวร์ของฉัน สิ่งใดที่เกี่ยวกับซอฟต์แวร์ฉันจะคิดออกด้วยเวลาที่เพียงพอ นอกจากนี้ฉันเป็นคนเยอรมันดังนั้นโปรดแก้ตัวข้อบกพร่องทางไวยากรณ์เป็นครั้งคราว