Calcolare lunghezza cavi per 9 sensori piezo

Salve a tutti,
Sto costruendo un controller MIDI utilizzando una scheda Leonardo pro micro che possiede 9 ingressi analogici e lavora a 5v.

Il controller è dotato di 9 sensori piezoelettrici che devono essere collocati lontano dalla scheda, essendo a portata di mano di 9 esecutori differenti.
Tali sensori sono posti ciascuno su un proprio supporto con uscita jack, e quindi separati dal box contenente la scheda, che a sua volta possiede 9 ingressi jack.

La mia domanda è, sapendo che l'uscita di alimentazione VCC è a 5v (500mA suppongo), posso collegare i 9 sensori con cavi jack da 5 metri?

È diverso collegarne uno o collegarne 9? Suppongo di sì essendo l'alimentazione unica e i circuiti in parallelo. Esiste un metodo per ridurre al massimo il rischio di disturbi e interferenze?

Al momento ho seguito questo schema:

Grazie

Praticamente stai facendo una batteria elettronica diciamo... :sunglasses: Per poterti comunque rispondere meglio se ci dici che tipo di segnale vorresti rilevare da ognuno dei piezo, una cosa è appunto una batteria elettronica, un'altra se è qualcosa di diverso (es. vibrazioni?)

Se parliamo di percussioni, se usi i normali cavi audio con jack mono 6.3mm, che sono quindi schermati, visto che non devono passare segnali delicati o particolari, per percussioni vanno benissimo visto che le batterie elettroniche fanno proprio così (per dire, io ho "elettrificato" anche dei normali tom aggiungendo un piezo sotto alla pelle mesh, e collegandoli alla centrlaina con normale cavo mono). Se parliamo di altro, allora devi dirci di cosa parliamo.

Grazie per la risposta!
L'idea è quella di trasmettere il movimento della mano sul piezo come segnale di control change. È uno strumento che dovrà essere utilizzato in musicoterapia da pazienti affetti da SLA, e quindi con poca mobilità.

Il problema principale è che fisicamente non possono trovarsi "vicini" (consideriamo l'ingombro delle sedie a rotelle) e quindi i sensori devono essere dislocati a qualche metro dalla centralina.

Ho provato con un buon jack da 5 metri e non c'è alcuna perdita di segnale, ma non saprei dire se con 9 jack lunghi possa cambiare il risultato.

In immagine due prototipi conclusi ieri dei sensori

Progetto molto ammirevole, complimenti, spero di poterti dare una mano.

Per prima cosa quindi, tu intendi rilevare colpi (quindi singoli eventi impulsivi, di ampiezza ben diversa da eventuale "rumore"), oppure anche altri segnali come vibrazioni o intensità del colpo? Quindi una informazione puramente digitale (es. LOW=nessun colpo, HIGH=colpo) o analogica (quindi con un valore proporzionale al segnale rilevato)? Oppure proprio una pressione (ed in tal caso non basta il piezo, serve un altro sensore, ad esempio resistivo).

Poi hai parlato di Control Change: da musicista (amatoriale) so che i CC hanno valori da 0 a 127, ma dipende da quale aspetto devono controllare, ce ne sono alcuni che sono di fatto on-off (es. pedale di sustain, per il quale valori fino a 63 sono OFF, oltre 64 sono ON). che tipo di CC devi controllare?

E comunque io per prima cosa sperimenterei con un singolo sensore per vedere che tipo di segnale devi rilevare e da quale Arduino (resto sul generico perché la scelta della board dipenderà dall'esito di questi test), mandando sulla seriale il valore letto dal pin analogico al quale hai connesso il piezo, e magari visualizzandolo con serial plotter e capire in base al tipo di movimento da rilevare (output che potresti poi postare qui).

Se impulsivo, potrebbe anche bastare quel circuito "semplice" (immagine dal sito del "solito" Maffucci eh?:wink: ), in caso contrario vedrei bene un circuitino da aggiungere al sensore per pre-elaborare il segnale con una amplificazione e magari un trigger o operazionale, oppure potrebbe esere utile utilizzare un sensore tipo QUESTO forse, già dotato di sua board.
Quindi con un jack stereo, dove prevedere due contatti per GND (sleeve, l'anello esterno) e Vcc (ring, contatto intermedio) e segnale in ingresso (tip, la punta) per dare l'alimentazione al circuitino del sensore.

Ma di questo se ne potrà parlare dopo aver capito bene che tipo di segnale devi poter rilevare, ed i primi test.

PS: diciamo comunque che secondo me averne 9 non cambia molto, se non per il fatto di avere a disposizione sufficienti ingressi o digitali o analogici, e da qui quale Arduino usare. Ma si vedrà successivamente ai test.

Grazie mille per gli spunti! Non conosco il sensore resistivo, mi informo.
Non riesco a postare un video che avevo fatto ieri, formato non supportato, domani appena riesco provo a farne un altro o a fare qualche foto.

Al momento funziona perfettamente per quello che serve:

  • può inviare note la cui velocity (generalmente abbinata al volume) viene gestita dalla pressione in tempo reale
  • può inviare control change da abbinare ad un parametro (a scelta, direttamente dalla DAW)
  • può inviare trigger (segnale binario 0-1)
  • può fare tutte e tre le cose contemporaneamente :grin:

So che per fare una cosa più precisa servirebbe un tipo diverso di sensore, ma in questo contesto ha poca utilità. Semmai potrebbe essere necessario aggiungere dell'alimentazione. È possibile (e ha senso) con questi sensori? Quel circuito di cui parlavi con trigger o operazionale?

Devo saldare i cavi e quindi proverò con lunghezze abbondanti, in caso accorcio.

Non sto usando il diodo, (non li trovo più e non ricordo dove li ho messi :upside_down_face:) non sembra avere problemi. Sarebbe opportuno inserirlo anche se la corrente è bassa giusto?

Come scheda uso Leonardo pro micro, ha 9 ingressi analogici e atmega32u4 che consente di essere visto come strumento MIDI, altrimenti servirebbe un ulteriore software per convertire i dati della porta seriale in messaggi midi o utilizzare software particolari, ma il musicoterapeuta che lo utilizzerà non è un informatico, meglio stare sul facile :sweat_smile:

Puoi sempre caricarlo su youtube e poi postare qui il link.

Ok meglio così! :wink:

Aggiungere ad esempio una amplificazione può servire per alzare il rapporto tra segnale e rumore, e/o un operazionale magari per impostare una soglia, ma se dici che già ti funziona bene così lascia perdere (almeno per ora).

Non lo so esattamente, non avendolo mai avuto, ma dato che nello schema vedo proprio un operazionale ed un comparatore, direi che rientra nella considerazione di cui sopra.. :wink:
image

Salve a tutti,
Sto costruendo un controller MIDI utilizzando una scheda Leonardo pro micro che possiede 9 ingressi analogici e lavora a 5v.

Il controller è dotato di 5 sensori piezoelettrici e 4 sensori resistivi, che devono essere collocati lontano dalla scheda, essendo a portata di mano di 9 esecutori differenti.
Tali sensori sono posti ciascuno su un proprio supporto con uscita jack, e quindi separati dal box contenente la scheda, che a sua volta possiede 9 ingressi jack.
Di seguito una foto dei sensori:

La parte dei piezoelettrici funziona perfettamente, mentre i sensori resistivi ma al tocco di uno, la lettura degli altri 'balla', a volte sensibilmente.
Ho aggiunto nel circuito dei potenziometri per gestire la sensibilità del tocco.
Ho testato tutte le saldature e sembra funzionare tutto correttamente, probabilmente manca nel circuito qualche componente per evitare il ritorno di corrente negli altri sensori. Di seguito uno schemino brutto del circuito in questione:

Qualcuno potrebbe consigliarmi su come risolvere il problema? Grazie mille !

@StefanoMancuso: Stai parlando sempre dello stesso argomento, quindi ... evita di aprire altre discussioni e continua su questa dove avevi già chiesto spiegazioni. Grazie.

Guglielmo

P.S.: ho riunito io la nuova discussione con la vecchia in modo che si continui su questa.

Salve, grazie per la risposta. Il progetto è il medesimo, ma l'argomento è completamente diverso. Comunque nessun problema continueremo da qui, grazie

Anche se non ho una Leonardo per verificare sperimentalmente, per prima cosa bisogna capire bene le caratteristiche di questi sensori. Ma vedendo lo schema che hai postato la prima cosa che mi è venuta in mente è che tu in questo modo hai realizzato una specie di partitore, ma 1MOhm è comunque troppo elevato, di fatto non passa quasi nessuna corrente, ed il rischio è che tu legga valori bassissimi e molto flottanti.

Bisogna ripensare un poco questo aspetto, ma intanto puoi dirci esattamente il modello del sensore e possibilmente postare un link relativo esattamente a quelli che hai preso (e che magari contiene anche le specifiche elettriche)?

Devi fare un circuito attivo per ogni sensore, come minimo con un transistor NPN a collettore comune, per esempio BC547C, con 4k7 o simile sull'emettitore (che può stare nell'unità base). Per il collegamento usa cavetti 2+schermo, normalmente usati per microfoni e, in generale, audio bilanciato: un polo porta +V, l'altro il segnale e la calza va a massa.

Sensori di pressione RP-C10-ST, Sensore di pressione del sensore di pressione a film sottile ad alta precisione, 2 pezzi 20g ~ 2kg https://amzn.eu/d/927aZuf

I sensori sono questi, funzionano fin troppo bene nonostante il potenziometro da 1Mohm che è l'unico che mi dà la possibilità di avere letture tra 0 e 500 messo al minimo. Ho provato con altri (100kohm, 250kohm, 500kohm) e l'attenuazione risultava troppo poco sensibile.

Ma comunque posso agire da software per regolare il range a limite, quindi se pensi sia quello il problema posso provare ad usarne altri, o addirittura a toglierli dal circuito.

Blockquote
la prima cosa che mi è venuta in mente è che tu in questo modo hai realizzato una specie di partitore

È esattamente quello che ho pensato mentre saldavo, quindi sarebbe abbastanza normale che la variazione di pressione su un sensore influenzi la tensione sugli altri. Come si può risolvere?

Grazie per la risposta.
Avevo pensato che servisse un circuito attivo, ma non mi è chiaro dal lato sensore come si connette. I sensori hanno due poli (è una resistenza banalissima con valore tendente a 0 con l'aumento della pressione).

Il punto è che, mi verrebbe da dire abbastanza ovviamente, essendo resistenze in parallelo si influenzano a vicenda. Dove sto sbagliando a ragionare?

Collegherei la base del transistor al cursore del potenziometro, con il sensore tra Vcc e un capo del potenziometro e l'altro capo del potenziometro a massa.

Certo, intendi utilizzare il transistor per amplificare il segnale proveniente dal sensore. Ma allora non serve un cavo Bilanciato, al sensore arriva l'alimentazione e il ritorno va al potenziamento (I pots sono sull'unità principale).

In ogni caso, non capisco come l'amplificatore a transistor potrebbe eliminare le interferenze tra i sensori, ma se dite che funziona allora è quello che manca. Cerco subito i transistor, grazie mille.

Posso dire che non mi convince?

Per portare l'alimentazione al transistor nel sensore e il segnale di ritorno servono due poli, più lo schermo per evitare di captare dissturbi, quindi serve una cavo 2+schermo, cioè un cavo per segnali bilanciati.
Che i potenziometri si trovano sull'unità principale non l'avevi scritto...

Inoltre, ancora non hai pubblicato il codice! Fai sempre un semplice analogRead(input_sensore_n); prima della lettura effettiva?

Considera che anche il microcontrollore ha problemi a commutare fra sorgenti ad alta impedenza, infatti sono previste sorgenti a bassa impedenza (entro 10kohm). Con il potenziometro da 1Mohm, l'impedenza arriva fino a 500kohm a metà corsa! Come minimo devi mettere un condensatore da 100nF tra ogni ingresso A e GND, per avere almeno una bassa impedenza dinamica.

Bisognerebbe, quindi, attendere un attimo tra la commutazione dell'ingresso e la lettura: non essendo possibile fare ciò con analogRead, che fa tutto da solo, la soluzione è fare due analogRead di seguito, anche senza leggere il valore della prima lettura:
analogRead(A0); delay(1); valore=analogRead(A0);
Così facendo, il primo analogRead commuta l'ingresso; il secondo lo trova già commutato e la lettura è ormai stabile. Con impedenze non molto elevate, anche senza il delay(1) la lettura potrebbe essere sufficientemente corretta.

Certo, perché il transistor deve essere collocato nel sensore per avere effetto, deduco non abbia tanto senso metterlo nell'unità principale.

Chiedo venia, avete ragione. Sì sono collocati sull'unità principale per motivi pratici di utilizzo.

Quindi eliminando i pots (o utilizzando valori di resistenza inferiore) il risultato dovrebbe migliorare?

La lettura comunque è ottima già così, estremamente reattiva. Il problema è proprio l'interferenza tra le letture: se tocco un sensore la lettura corrispondente funziona perfettamente, ma anche gli altri tre si muovono, come se ci fosse un ritorno di corrente nella lettura di tutti i pin.

Preciso che i test sono stati fatti con tutti i sensori collegati, a sensore scollegato essendo il circuito aperto so che è normale che la lettura balli.

Grazie mille per la collaborazione, portate pazienza me ne intendo poco di hardware

... tu devi considerare che attraverso la resistenza che presenti all'ingresso deve scorre la corrente che va a caricare il circuito di S/H (sample & hold) del convertitore analogico digitale ... più è alta, più tempo impiega l'ADC a fare la conversione, più c'è il rischio che, commutando il mux su un altro ingresso, tu abbia letture iniziali errate. Atmel (oggi Microchip) dava come limite di impedenza del circuito in ingresso sul ADC 10 KΩ ... tu sei un fattore 100 oltre tale valore!

Se ti è possibile farei un paio di cose:

  1. abbasserei il valore dei potenziometri così da avvicinarti al valore definito da Atmel.
  2. quando cambi canali ADC fai una o anche più di una lettura/e a vuoto ... ovvero, leggi e butti il valore alcune volte prima di fare la vera lettura.

Prova e vedi se la cosa migliora ... :roll_eyes:

Guglielmo

Leggere molte volte l'ADC è inutile... La prima volta commuta l'ingresso e la seconda volta, dopo una pausa adeguata, fa la lettura esatta.