Sto cercando di costruire un controller simile a MIDI che abbia un collo come una chitarra. Su quel collo c'è un'enorme matrice di sensori di pressione. Il controller emulerà 3 stringhe.
Il modo in cui funziona è: ci sono 3 lunghe strisce di nastro di rame biadesivo (0,5 cm di larghezza, lungo quanto il collo) che sono collegate all'alimentazione (3,3 V o 5 V probabilmente, non importa per ora). Su queste strisce è presente uno strato di Velostat, che cambia la resistività in base alla pressione. Sulla parte superiore del velostato ci sarà un altro strato di file o celle di nastro di rame, collegato a qualcosa, che sputerà una lettura della tensione attraverso lo strato di velostato. Poiché il collo è lungo circa 40 cm, ci saranno almeno 80 file.
Se immagini le 3 strisce inferiori di nastro di rame come colonne di un grafico lungo il collo, i sensori saranno o le celle o le file, a seconda del metodo di misurazione (pensavo che si potesse anche essere in grado di multiplexare le colonne, quindi potrebbero esserci delle righe.) Ci sono alcune condizioni speciali che potrebbero rendere questo più semplice: Poiché si tratta di un controller simile a una chitarra, non tutte le interazioni devono essere misurate! È importante solo il tocco più vicino al corpo del controller. Anche una risoluzione di 8 bit dovrebbe essere abbastanza accurata. 255 livelli di pressione sono probabilmente più del necessario comunque.
Ora i pezzi difficili:
La misurazione deve essere in tempo reale sufficiente per rilevare i colpi di ariete ecc. (Non ho idea di quanto sia alta la frequenza di campionamento - stimata a diversi kHz per una buona misurazione e giocabilità) e l'uscita digitale del controller dovrebbe essere MIDI (su 3 canali separati - uno per stringa) o un segnale digitale che può essere elaborato con un Raspberry Pi.
Ora, poiché le mie conoscenze sono davvero limitate, non sono riuscito a pensare agli strumenti giusti per il lavoro. Quello che so però è: è possibile. Esiste un controller simile ma diverso che utilizza una tecnica molto simile (che praticamente ho invertito fino a quando non ho notato, che hanno un brevetto e le informazioni su come lo fanno non sono così arcane come pensavo), si chiama ROLI Costa.
TL; DR:
circa 240 sensori
può essere separato in gruppi di 80 che sono alimentati dalla stessa linea
questa è un'applicazione in tempo reale, devo acquisire pressione da ogni sensore quando viene toccato (si applicano alcune condizioni, vedi sopra)
Grazie in anticipo, so che è molto da leggere. Sono grato per qualsiasi suggerimento e sarei molto felice se potessi aiutarmi a realizzare il terribile pasticcio che ho deciso di produrre!
Cose a cui ho pensato finora:
Righe e colonne multiplexing, lettura di ogni cella con un ADC MCP3008 o superiore e concatenamento di ATmegas (daisy chain o tree like) che spingono solo l'interazione più bassa dal punto di vista della posizione al segnale finale, ma dai miei calcoli, che potrebbe eventualmente essere strozzata da le spese generali di comunicazione. Anche un modello precedente includeva potenziometri a nastro, che ho scartato, perché il design era difettoso (diversi tentativi, non era abbastanza interessante).
EDIT / UPDATE:
Grazie per i buoni suggerimenti finora! Grazie a loro ora sono in grado di esprimere il mio problema in modo molto più chiaro:
Ho una matrice di 80 file * 3 colonne di sensori di pressione. Quando un essere umano interagisce con la matrice del sensore, diversi sensori in prossimità rilevano il tocco, ma solo lungo una colonna. Le colonne sono separate meccanicamente. I sensori hanno una resistenza tra 100 Ohm e 1 kOhm. Tutti questi sensori devono essere letti con una profondità di 8 bit, elaborati e i risultati devono essere inviati con una frequenza di almeno 1 kHz. Quindi una singola lettura / elaborazione deve richiedere meno di un millisecondo. L'output finale per colonna deve essere: 4 byte per un float32 e 1 byte per un uint8. Float32 indicherà la posizione media della prima interazione lungo la colonna. Un'interazione è definita come un gruppo consecutivo di sensori con una pressione superiore a una determinata soglia. Qui è dove l'elaborazione entra nel mix: la colonna verrà attraversata verso il basso fino a quando una lettura supera una soglia. Questo conterà quindi come l'inizio di un'interazione. La pressione e la posizione di ogni sensore vengono memorizzate fino al primo sensore, che scende al di sotto della soglia con un massimo di (probabilmente) 4 sensori consecutivi. Da tutti i sensori dell'interazione registrata, verranno elaborati solo due sensori: quello che legge la pressione più alta (resistenza più bassa) e quella più alta direttamente sopra o sotto di essa. La posizione in virgola mobile viene calcolata facendo la media delle due posizioni del sensore ponderate in base alle loro pressioni. La pressione complessiva dell'interazione sarà solo l'aggiunta di entrambe le pressioni bloccate tra 0 e 255 (aggiungere entrambe le pressioni dell'unità8 in un uint16 e dividere per 2 senza arrotondamento, scartare i bit non necessari - questo dovrebbe essere veloce). Questo deve accadere per ogni colonna. Il risultato della dimensione di 15 byte verrà quindi inviato tramite SPI a un piccolo computer (Raspberry Pi B3) che funge da sintetizzatore. Non sono impostato sul metodo di trasmissione. Se SPI non è lo strumento giusto per il lavoro, sono disposto a prendere qualsiasi metodo di comunicazione in grado di gestire un Raspberry Pi. Poiché si tratta di un'applicazione musicale-interattiva, la latenza è cruciale.
Le mie domande esatte sono: questo può essere risolto con un singolo microcontrollore senza rompere la banca? Non posso permettermi di acquistare diverse centinaia di dollari di circuiti integrati per un progetto di hobby. Quale hardware consiglieresti? Ci sono avvertimenti non ovvi di cui devo stare attento?
L'approccio che finora ho derivato dalle risposte è stato quello di alimentare ciascuna colonna singolarmente, quindi leggere le righe con 5 ADC a 16 canali (ADS7961) collegati a un Arduino su SPI. Sono preoccupato che questo potrebbe non essere l'approccio più semplice / economico o non abbastanza veloce da raggiungere una frequenza> 1 kHz.
Disclaimer: di solito sono un chimico teorico e un terribile dilettante quando si tratta di ingegneria elettrica, tutto ciò che so è autodidatta e senza alcun background professionale (che è a sua volta il motivo per cui cerco aiuto da persone più competenti). Conosco comunque il mio modo di aggirare il software. Qualunque cosa riguardi il software, lo scoprirò con abbastanza tempo. Inoltre, sono tedesco, quindi per favore scusa occasionali difetti grammaticali.