Tôi đang cố gắng xây dựng một bộ điều khiển giống như MIDI có cổ như đàn guitar. Trên cổ đó, có một ma trận cảm biến áp suất rất lớn. Bộ điều khiển sẽ mô phỏng 3 chuỗi.
Cách thức hoạt động này là: Có 3 dải băng đồng hai mặt dài (chiều rộng 0,5 cm, dài bằng cổ) được kết nối với nguồn điện (có lẽ 3,3V hoặc 5V, hiện tại không thành vấn đề). Trên các dải này là một lớp Velifier, thay đổi điện trở suất dựa trên áp suất. Trên đầu của bộ điều tốc sẽ là một lớp khác của các hàng hoặc các ô của băng đồng, được kết nối với một cái gì đó, tạo ra sự đọc điện áp thông qua lớp bộ điều tốc. Vì cổ dài khoảng 40 cm, sẽ có ít nhất 80 hàng.
Nếu bạn tưởng tượng 3 dải băng đồng dưới cùng là các cột của biểu đồ dọc theo cổ, các cảm biến sẽ là các ô hoặc hàng, tùy thuộc vào phương pháp đo (tôi nghĩ người ta cũng có thể ghép nhiều cột có thể có hàng.) Có một vài điều kiện đặc biệt có thể làm cho việc này dễ dàng hơn: Vì đây là bộ điều khiển giống như guitar, không phải mọi tương tác đều cần được đo! Chỉ có cảm ứng gần nhất với cơ thể của bộ điều khiển có vấn đề. Ngoài ra độ phân giải 8 bit phải đủ chính xác. 255 mức áp suất có lẽ nhiều hơn mức cần thiết.
Bây giờ các bit khó khăn:
Phép đo cần phải đủ thời gian thực để phát hiện các búa, v.v. (không biết tốc độ mẫu cần phải cao đến mức nào - ước tính ở mức vài kHz để có thể đo và phát tốt) và đầu ra kỹ thuật số của bộ điều khiển phải là MIDI (trên 3 kênh riêng biệt - một kênh trên mỗi chuỗi) hoặc tín hiệu kỹ thuật số có thể được xử lý bằng Raspberry Pi.
Bây giờ vì kiến thức của tôi rất hạn chế, tôi không thể nghĩ ra các công cụ phù hợp cho công việc. Những gì tôi biết mặc dù là: Nó có thể. Có một bộ điều khiển tương tự nhưng khác nhau sử dụng một kỹ thuật rất giống nhau (mà tôi thực tế đã đảo ngược cho đến khi tôi nhận thấy rằng họ có bằng sáng chế và thông tin về cách họ làm nó không phức tạp như tôi nghĩ), nó được gọi là ROLI Biển.
TL; DR:
khoảng 240 cảm biến
có thể được tách thành các nhóm 80 được cung cấp bởi cùng một dòng
Đây là một ứng dụng thời gian thực, tôi cần phải chịu áp lực từ mọi cảm biến khi chạm vào (một số điều kiện áp dụng, xem ở trên)
Cảm ơn trước, tôi biết nó rất nhiều để đọc. Tôi rất biết ơn về bất kỳ đề nghị nào và sẽ rất vui mừng nếu bạn có thể giúp tôi hoàn thành mớ hỗn độn khủng khiếp mà tôi đặt ra để sản xuất!
Những điều tôi đã nghĩ đến cho đến nay:
Ghép các hàng và cột, đọc từng ô với một MCP3008 hoặc ADC lớn hơn và xâu chuỗi (chuỗi daisy hoặc cây giống như) ATmegas chỉ đẩy tương tác thấp nhất theo vị trí đến tín hiệu cuối cùng, nhưng từ tính toán của tôi, có thể bị tắc nghẽn bởi các chi phí liên lạc. Ngoài ra một mô hình trước đó bao gồm chiết áp ruy băng, mà tôi đã loại bỏ, bởi vì thiết kế rất tệ (một vài lần thử, không đủ mát).
CHỈNH SỬA / CẬP NHẬT:
Cảm ơn những lời đề nghị tốt cho đến nay! Nhờ họ mà giờ đây tôi có thể diễn đạt vấn đề của mình rõ ràng hơn nhiều:
Tôi có một ma trận gồm 80 hàng * 3 cột cảm biến áp suất. Khi một người đang tương tác với ma trận cảm biến, một số cảm biến ở gần sẽ nhấc cảm ứng, nhưng chỉ dọc theo một cột. Các cột được phân tách cơ học. Các cảm biến có điện trở trong khoảng từ 100 Ohm đến 1 kOhm. Tất cả các cảm biến này cần được đọc với độ sâu 8 bit, được xử lý và kết quả cần được gửi với tốc độ ít nhất là 1 kHz. Vì vậy, một lần đọc / xử lý cần phải mất ít hơn một phần nghìn giây. Đầu ra cuối cùng cho mỗi cột cần phải là: 4 byte cho float32 và 1 byte cho uint8. Float32 sẽ chỉ ra vị trí trung bình của tương tác đầu tiên dọc theo cột. Một tương tác được định nghĩa là một cụm cảm biến liên tiếp có áp suất trên một ngưỡng nhất định. Đây là nơi xử lý được đưa vào hỗn hợp: cột sẽ được chuyển xuống dưới cho đến khi đọc vượt qua một ngưỡng. Điều này sau đó sẽ được tính là bắt đầu của một tương tác. Áp suất và vị trí của mọi cảm biến được ghi nhớ cho đến khi cảm biến đầu tiên rơi xuống dưới ngưỡng với tối đa (có thể) 4 cảm biến liên tiếp. Từ tất cả các cảm biến của tương tác được ghi lại, chỉ có hai cảm biến sẽ được xử lý - một cảm biến đọc áp suất cao nhất (điện trở thấp nhất) và cao nhất trực tiếp trên hoặc dưới nó. Vị trí điểm nổi được tính bằng cách lấy trung bình hai vị trí cảm biến có trọng số bởi áp lực của chúng. Áp lực chung của sự tương tác sẽ chỉ là việc thêm cả hai áp suất được kẹp trong khoảng từ 0 đến 255 (thêm cả hai áp lực của đơn vị8 vào một uint16 và chia cho 2 mà không làm tròn, loại bỏ các bit không cần thiết - việc này sẽ nhanh). Điều này cần phải xảy ra cho mỗi cột. Kết quả của kích thước 15 byte sau đó sẽ được gửi qua SPI đến một máy tính nhỏ (Raspberry Pi B3) hoạt động như một bộ tổng hợp. Tôi không được thiết lập về phương pháp truyền tải. Nếu SPI không phải là công cụ phù hợp cho công việc, tôi sẵn sàng thực hiện bất kỳ phương thức giao tiếp nào mà Raspberry Pi có thể xử lý. Vì đây là một ứng dụng tương tác âm nhạc, độ trễ là rất quan trọng.
Câu hỏi chính xác của tôi là: Điều này có thể được giải quyết với một vi điều khiển duy nhất mà không phá vỡ ngân hàng không? Tôi không đủ khả năng để mua IC trị giá hàng trăm đô la cho một dự án sở thích. Bạn muốn giới thiệu phần cứng nào? Có những cảnh báo không rõ ràng tôi cần phải cảnh giác?
Cách tiếp cận tôi rút ra từ các câu trả lời cho đến bây giờ là cấp nguồn cho từng cột riêng lẻ, sau đó đọc các hàng với 5 ADC 16 kênh (ADS7961) được kết nối với Arduino qua SPI. Tôi lo lắng rằng đây có thể không phải là cách tiếp cận dễ nhất / rẻ nhất hoặc không đủ nhanh để đạt tốc độ> 1 kHz.
Tuyên bố miễn trừ trách nhiệm: Tôi thường là một nhà hóa học lý thuyết và là một kẻ nghiệp dư khủng khiếp khi nói về kỹ thuật điện, mọi thứ tôi biết là tự học và không có bất kỳ nền tảng chuyên môn nào (đó là lý do tôi tìm kiếm sự giúp đỡ từ những người hiểu biết hơn). Tôi biết cách của tôi xung quanh phần mềm mặc dù. Bất cứ điều gì liên quan đến phần mềm, tôi sẽ tìm ra với đủ thời gian. Ngoài ra, tôi là người Đức, vì vậy xin vui lòng loại trừ các lỗi ngữ pháp không thường xuyên.