Presentazione progetto e primi dubbi

Ciao a tutti!

Mi sono iscritto da poco e vorrei presentare brevemente il mio primo progetto per chiedere alcuni consigli in merito.

Ho intenzione di costruire un box contenente una serie di effetti per chitarra, comandato da Arduino Mega ed avente pressapoco le seguenti caratteristiche:

  • Una serie di relay che attivano/disattivano gli effetti, comandati tramite un expander MCP23S17
  • Una serie di pulsanti che comandano il tutto
  • Una serie di LED di segnalazione comandati da un secondo expander
  • Infine un display della Nuelectronics (un TFT con tanto di touchscreen e slot SD) che vorrei sfruttare per visualizzare ed impostare i vari parametri.

Mi rendo conto che come primo vero progetto è qualcosa di molto ambizioso. Però ho già sperimentato a lungo sulle funzionalità di base, ed avendo studiato programmazione all'università mi sento in grado di poter rischiare, magari procedendo per gradi e tralasciando inizialmente la parte del display.

Avrei ora un paio di domande:

  • Primo: sarà di primaria importanza la velocità di risposta alla pressione di un pulsante, soprattutto nel cambiamento di stato dei relay, che deve avvenire pressoché istantaneamente. Non mi interessa invece una risposta fulminea nella visualizzazione sul display. La cosa è fattibile collegando i pulsanti ai normali ingressi digitali? Oppure dovrei sfruttare i vari interrupt?
  • Secondo: nel mio progetto avrò dei circuiti per trattamento di segnale audio (distorsori, chorus, delay e simili) affiancati a circuiti digitali e bus SPI. Sarà necessario prendere delle precauzioni per evitare interferenze?
  • Infine una domanda più specifica: sto facendo i primi test sull'utilizzo dell'SPI. Ho testato con successo un expander MCP23S17, ma ho problemi con l'utilizzo di un AD5206: sto utilizzando lo sketch di esempio (DigitalPotControl), ma con un solo led collegato al primo canale. Il problema è il seguente: all'accensione il led si accende e il wiper rimane per circa un minuto intorno ai 2V, poi esegue una volta il ciclo fade in/out, dopodiché si ferma del tutto. Dove può essere il problema?

Per ora vi ringrazio per le informazioni che mi fornirete, avrò sicuramente occasione di presentare meglio il progetto!

Cosa intendi per relé che attivano/disattivano gli effetti? Gli effetti come li generi?

Hai ragione, ho dato per sottinteso il concetto di "effetto", ma in effetti non è così scontato.

Per effetto intendo un circuito a se stante, praticamente un quadripolo, con un suo ingresso del segnale originario e un'uscita del segnale. Il relay (DPDT) si occupa del far "scavalcare" il segnale al suddetto circuito (disattivato) oppure di farlo passare attraverso di esso (attivo). Ci sarà quindi una catena di relay che farà passare il segnale attraverso i circuiti che io desidero e scavalcherà gli altri.
Proprio per questo ho bisogno che il relay si attivi/disattivi istantaneamente alla pressione di un pulsante, in modo da non avere un vuoto tra la pressione del tasto e l'inserimento dell'effetto.

Allego il disegno Eagle della mia catena di relay, in cui ci sono un ingresso, un'uscita e tutti i connettori che portano il segnale ai vari effetti (in questo caso i connettori sono a 4 vie perchè devono portare ingresso, uscita, alimentazione e massa)

Quindi te hai già realizzato (o comprato) dei circuiti (analogici quindi?) di effetti a se stanti che vuoi collegare con dei relé.
Come ben saprai nulla è istantaneo, devi dirci il ritardo massimo che vuoi avere e vedremo se esiste una soluzione.
I relé non sono famosi per essere commutatori veloci, perché proprio relé?

Secondo me sarebbe interessante fare tutto in digitale senza relé, etc.. con effetti via sw (o hw con logiche programmabili), sai se andrebbe bene?

Ciao

Ho idea che questo sia un circuito generatore di effetti per chitarra elettrica. A mia memoria ogni effetto interviene variando il suono portante (quello originale della chitarra); in alcuni casi questi effetti si possono sovrapporre, in altri generano solo bordello.
Sicuramente possiene il generatore di effetti è l'idea è chiara dallo schema elettrico; se questa è nessun problema di ritardi, il tempo di commutazione del relé è trascurabile ed i suoi contatti (a patto che si tratti di relé di qualità) non influenzano in alcun modo il suono, cosa che invece potrebbe avvenire con qualsiasi altro sistema di commutazione non meccanica, anche in caso di commutazione a basso valore ohmico.

Anche se non sono del settore mi è capitato di vedere diverse pedaliere e su tutte c'erano i relè per la commutazione del segnale ma non so il perchè di questa decisione.
Una pedaliera ha il compito di collegare più pedali (lo dice il nome stesso); ogni pedale ha la funzione di alterare il suono, in genere ogni pedale ha un suo effetto regolabile attraverso potenziometri. La pedaliera a bordo ha diversi interruttori che il musicista attiva con il piede per abilitare/disabilitare gli effetti.
Da quanto ho capito lui ha già i pedali, ora deve costruire la pedaliera per assemblare il tutto.
Un consiglio: usa cavi rigorosamente schermati per i vari collegamenti, non risparmiare sulla qualità di cavi e connettori che poi te ne penti.
Chiedo scusa per il linguaggio poco tecnico.

Pelletta:
Anche se non sono del settore mi è capitato di vedere diverse pedaliere e su tutte c'erano i relè per la commutazione del segnale ma non so il perchè di questa decisione.
[...]
Da quanto ho capito lui ha già i pedali, ora deve costruire la pedaliera per assemblare il tutto.
[...]

In realtà non ho i pedali interi, ho solo i circuiti da me assemblati ma senza pulsante e senza scatola di metallo. La mia pedaliera non sarà una valigetta contenente dei pedali acquistati in precedenza, ma un'unico chassis di metallo contenente tutti i circuiti (per la maggior parte analogici) di generazione degli effetti, concatenati e attivabili tramite questi relay.
Inizialmente volevo infatti collegarli tramite dei normali deviatori meccanici (uno per ciascun effetto), ma non era una soluzione molto comoda.La comodità dei relay sta nel fatto che è possibile programmarli per fare in modo che alla pressione di un tasto si possa attivare anche più di un effetto, oppure nella possibilità di memorizzare ciò che è attivo e scorrere queste memorie in base alla necessità.
Il mio dubbio non sta nella concatenazione degli effetti, ma proprio nella gestione di questa catena.

Il concetto è proprio questo: possiedo già i circuiti di generazione dell'effetto ed ho bisogno di capire se la commutazione di diversi relay tramite un expander, su bus SPI, attraverso la pressione di un tasto potrebbe creare problemi di reattività. Non ho infatti avuto modo di capire se tutti questi passaggi possono in qualche modo generare ritardi.
Per la questione dei commutatori a stato solido avevo preso in considerazione la possibilità, ma ho lasciato perdere su consiglio di chi ci ha già provato (problemi di impedenze, perdita di alte frequenze, ecc). Inoltre avendo già in casa dei relay panasonic TQ2 ho deciso di sfruttarli.

flz47655:
Secondo me sarebbe interessante fare tutto in digitale senza relé, etc.. con effetti via sw (o hw con logiche programmabili), sai se andrebbe bene?

La maggior parte dei circuiti sono di mia realizzazione e sono già pronti e testati, tranne alcune eccezioni che, appunto, sono digitali.
Sono comunque tutte copie di circuiti, più o meno datati, di cui girano da tempo gli schemi, e che sono stati ampiamente testati da molte persone. Non vedo praticabile la strada degli effetti software per il semplice motivo che non è per nulla semplice creare da zero un algoritmo di elaborazione audio (o per lo meno attualmente non sono in grado di farlo).

Comunque dalle vostre risposte credo di aver capito che in realtà il problema della commutazione dei relè non sussiste. In base alle mie prove e a ciò che ho già visto da altri utenti non dovrebbe costituire un problema. Probabilmente è una domanda da principiante ma (ripeto) il mio dubbio era proprio sui ritardi software.
E a questo punto il problema principale si sposterebbe sull'utilizzo del bus SPI (ed eventuali problemi di interferenze) e sul mio test con il potenziometro digitale.

Mi scuso poi se non sono riuscito a fornire sufficienti dettagli, ma finora ho frequentato alcuni forum in cui la maggior parte degli utenti navigano nel campo degli strumenti musicali, quindi tendo a dare per scontati alcuni dettagli

Il ritardo maggiore è il relé, il resto è trascurabile in relazione in quanto si parla di microsecondi (10^(-6) secondi), es. magari in tutto ci voglio 50uS che sono uguali a 0.05ms, molto meno del tempo di commutazione del relé

Ciao

ma nello specifico il ritardo del relé è assolutamente trascurabile, la stragrande maggioranda di questi strumenti commuta a relé, non stiamo parlano di 30 secondi ma di qualche ms che non influenza in alcun modo gli effetti; ora però non mi voglio mettere a fare una disquisizione sui tempi di commutazione, li ho usati in una decina di circuiti di effetti e mix audio senza aver mai avuto problemi, se vogliamo andare a scovare la coda alla mosca mi arrendo in partenza, fate vobis :slight_smile:

Guarda caso sabato ho tirato fuori il push-pull di EL34 che feci più di dieci anni fa, ho ripreso l'elettrica e ho cominciato a fare un po di casino, peccato per quel multieffetto che....mmm insomma non suona fa solo casino e pensare che quando lo comprai mi sembrava perfetto.

Ok mi iteressa seguire la cosa che stai progettando, ma mi piacerebbe vedere anche tutto il resto che hai già realizzato, magari c'è qualcosa che di interessante che posso realizzare anche io.

Il problema principale in questi tipi di circuiti è legato al disturbo che avviene durante la commutazione, sia che si tratti di relè o interruttore il problema permane, ed è evidente se il guadagno del circuito di amplificazione/trattamento posto a valle è alto come accade nei circuiti per chitarra ( vedi overdrive, compressori, ecc.). Pertanto per commutare si usa chiudere il circuito audio a massa per l'instante necessario al rele di effettuare la commutazione, di solito si usa un "fet". Quindi questo è il primo circuito che dovresti realizzare e testare.

Seconda cosa, per evitare contaminazione tra segnale digitale e segnale analogico si deve tenere lontani i circuiti ad alta impedenza da quelli digitali. Ma questo non basta si deveno separare le alimentazioni, e per finire curare le schermature e i circuiti di massa schermo, come si fà non lo so, so solo che alle volte c'è da impazzire.

L'oggetto che devi realizzare cosa sarà?
Uno switch da rack?
oppure
Una unità contenente switch e trattamento segnali in unico contenitore?

Per il pot digitale, non ho idea, non lo conosco e dovrei documentarmi leggendo il datasheet, e mi sa tanto che dovrai farlo tu e postare qui i tuoi dubbi.

Hehe, mi fa piacere trovare un altro chitarrista. Io ne ho terminato uno pochi mesi fa... Un clone di un Hiwatt DR-504, che è proprio un push pull di due EL34... E' stata una grandissima soddisfazione sentire le note della chitarra uscire da quelle valvole!

Tornando al progetto, la maggior parte dei circuiti sono semplicemente delle realizzazioni di alcuni circuiti presi da www.tonepad.com e www.generalguitargadget.com, se ti può interessare qualche dettaglio in particolare chiedimi pure!
La mia soluzione sarà pressapoco quella allegata sotto (ho fatto un po' di modellazione 3D per capire gli spazi): uno chassis in alluminio contenente tutto, da Arduino al display, ai vari regolatori di tensione a tutti i singoli circuiti degli effetti. Solo l'alimentatore principale sarà esterno. Poi con calma mostrerò meglio anche tutto il resto.

Il disturbo di commutazione sinceramente non mi ha mai dato più di tanto fastidio, nemmeno con i pulsanti meccanici. E a questo punto non sarà un problema neanche un ritardo di qualche ms in più, soprattutto se il ritardo software è trascurabile rispetto al ritardo del relay. Il mio dubbio era nato guardando dei filmati su youtube in cui utilizzando display e altre periferiche il ritardo era notevole, soprattutto per la visualizzazione della grafica sul display. Essendo però la visualizzazione meno prioritaria rispetto alla commutazione, a questo punto potrei tranquillamente eseguirla (nel software) dopo tutte le altre operazioni.

Quindi assodato che il relay può essere una soluzione fattibile, mi rimane da capire la questione della gestione digitale, separazione delle masse ed isolamenti. Sto già prevedendo una certa logica per riuscire a dividere le alimentazioni, ma non so fin dove posso tenere il tutto separato... Devo mettermi con calma ed analizzare tutti i circuiti che coinvolgono parti digitali.

Caspita si tratta di un progetto complesso sotto tutti i punti di vista, lato software il problema potrebbe presentarsi subito se non suddividi i compiti realizzando più schede a microprocessore che dialogano fra di loro. Una scheda con micro gestisce i pulsanti e dialoga con il display (display dodato di mcu), un'altra scheda mcu gestisce i relè il mute ecc, in questo modo puoi realizzare un pezzo è testarlo, alla fine metti tutto insieme e sai che funzionerà perchè ogni unita/pezzo/funzione è stata testata. Diciamo che l'approccio di sviluppo software è valido anche lato hardware, con la differenza che qui ci sono entrambe insieme.

Oggi sono in vena: :stuck_out_tongue:

Ipotizziamo di avere 3 relè, 2 ( A e B) sono on e C è off (on o off mi riferisco alla bobbina se è alimentata o meno), la scheda tastiera invia un dato via I2c a tutti i dispositivi connessi al bus, il dato cambia a secondo del pulsante premuto. Tutti i dispositivi sul bus I2c ricevono questo dato è sanno cosa devono fare (con il bus I2c c'è la possibilità di inviare una chiamata generale senza dover specificare l'indirizzo). Quindi la scheda relè pone A e B in off e C in on, il display è indipendente e può predersi la briga di fare anche giochini grafici, se non ha niente da fare, ma se arriva un dato sul bus I2c visualizzo il nuovo stato corrispondente, se arriva un nuovo dato nel bus mentre che è a lavoro verra messo nel buffer di dati.

La scheda tastiera può essere usata anche per gestire altri eventi esterni, tipo una interfaccia seriale (midi o meno) verso il mondo esterno.

Il display essendo dotato di mcu programmabile può essere usato anche per mostrare l'entita del segnale in modo grafico oltre che i volumi dei pot digitali il tutto agendo in modo indipendente dalla tastiera e dalla scheda relè.

Con questa suddivisione a livello softare non puoi avere problemi di nessun tipo, puoi gestire il debounche dei tasti senza influenzare le altre funzionalità.

Riguardo il rumore di commutazione, durante situazioni live se il rumore è minimo non è avvertibile dal publico, specie se stai suonando al pub, ma in registrazione potrebbe essere un problema, dipende tutto dall'entità del rumore stesso e quando e quante volte avviene una commutazione e questo dipende dal brano che stai suonando.

Se realizzi uno schema a blocchi funzionali, i primi problemi vengono fuori e saranno risolti prima di avere messo mani al portafogli.

Spero di averti dato spunto per future riflessioni.

La tua soluzione indubbiamente è molto interessante... Vorrei però utilizzare alcuni componenti che ho già in casa, ed in particolare un paio di AD5206 (digital pot) e di MCP23S17 (expander) Sono entrambi su bus SPI e, visto che me ne serviranno due di entrambi avrei pensato di sfruttare ciò che ho in casa e risparmiare qualche buon euro. Cambierebbe qualcosa nelle modalità di comunicazione? Non conosco bene SPI e I2C.
Come display ne ho uno della nuelectronics che ho comprato sull'onda dell'entusiasmo (come quello del link youtube che ho messo sotto, non riesco a linkare direttamente il sito perchè è offline!)... E' molto bello ma occupa tutta la fila di i/o dal 22 al 53, quindi limita la quantità di pin disponibili. Proprio per questo avevo pensato agli expander.

Come gestione delle schede avevo già pensato ad una suddivisione con l'utilizzo di un unico gestore centrale (appunto l'arduino mega) e varie periferiche:

  • una scheda con il circuto di debounce, dove ognuno dei pulsanti è collegato direttamente su un ingresso digitale (per il debouncing posso usare un integrato dedicato, ed eventualmente potrei sfruttare i 6 interrupt del mega per i pulsanti che richiedono una rapidità di risposta maggiore)
  • una scheda con i relè collegati alle uscite di un expander, in modo che con il bus SPI ed una linea di attivazione gestisco tutta la catena di relè. Questo sarebbe il primo attivato alla pressione di un tasto
  • un'altra scheda per i potenziometri digitali, sempre su bus SPI, il cui aggiornamento del valore sarebbe meno prioritario dell'attivazione dei relay
  • un'ultima scheda con il secondo expander per i led di segnalazione, stessa logica di sopra ma ancora meno prioritario
  • Infine il display, il meno prioritario di tutti, che potrei aggiornare tranquillamente alla fine di tutte le altre operazioni
    In questo modo da un veloce calcolo dovrei avere a disposizione porte sufficienti per le varie linee di slave select e per tutti i pulsanti da collegare direttamente ad arduino.

Per quanto riguarda la parte software ho già messo in conto di partire da una cosa molto basilare, del tipo: alla pressione di un tasto attivo una serie di relè e una serie di led, se ri-premuto li disattivo. Poi potrei aggiungere la regolazione dei pot digitali (ad esempio alla pressione di un altro tasto aumento il valore di un potenziometro che mi intensifica un certo effetto). Infine aggiungerei le funzionalità del display.

Il display mi servirebbe essenzialmente per programmare alcune funzioni senza ricorrere al PC, ad esempio decidere quali relay attivare alla pressione di un tasto, modificare manualmente il valore di un pot.digitale e cose simili

Visto che hai già materiale dentro è d'obbligo usarlo e alla fine quelli che hai elencato vanno bene. Tra I2c e SPI cambia il numero di pin necessari per ogni device connesso al bus, 2 soli fili per I2c e 3 per ISP più 1 per il chip select.

Quindi gestirai tutto con l'arduino Mega?

Controlla quanto memoria flash e ram occupa la gestione del display, così da sapere quanto ti puoi allargare con il codice di gestione generale.

La rogna può essere la gestione dei pulsanti, se devi scrivere un debounce software questo o viene complicato oppure impiega un certo tempo in cui il micro non può fare altro che aspettare. Gli interrupt a tempo o esterni sono comodi per la gestione di eventi che devono essere serviti subito, infatti il micro sospende quello che sta facendo e salta ad eseguire la routine di interrupt ed esce da questa dopo avere eseguito tutto il codice contenuto, in questo frangente il loop non gira e se premi un pulsante il software non se ne accorge. Per questo motivo il codice della routine di interrupt deve impiegare il minor tempo cpu possibile.

Per quanto riguarda la parte software ho già messo in conto di partire da una cosa molto basilare, del tipo: alla pressione di un tasto attivo una serie di relè e una serie di led, se ri-premuto li disattivo. Poi potrei aggiungere la regolazione dei pot digitali (ad esempio alla pressione di un altro tasto aumento il valore di un potenziometro che mi intensifica un certo effetto). Infine aggiungerei le funzionalità del display.

Devi mantenere in memoria lo stato attuale di ogni relè, ho usi una struttura (classe) o un array definendo delle #define come indici dell'array, tipo
#define IDX_RELE_BOOST 0
#define IDX_RELE_FLANGER 1
#define IDX_RELE_BYPASS 2
stateRele[10]

if (!stateRele[IDX_FLANGER])
stateRele[IDX_FLANGER] = 1;

ecc.

Aspetto lo schema a blocchi funzionali.

Ciao.

Si, è un arduino mega.
Non so se è sufficiente sapere questo, ma ho compilato uno sketch di esempio contenente tutto il necessario (librerie e codice) per alcuni menu, caratteri e touchscreen, e mi restituisce:

Dimensione del file binario dello sketch: 19.456 bytes (su un massimo di 258.048 bytes)

Per la gestione dei pulsanti non ho problemi ad utilizzare un debounce esterno (lo ho già testato con altre applicazioni), mentre per l'interrupt teoricamente tra una pressione e l'altra di un pulsante passa qualche istante (diciamo almeno mezzo secondo), quindi ci sarebbe il tempo per eseguire qualche operazione.

Per lo schema a blocchi mi serve un po' di tempo. Nei prossimi giorni sono piuttosto occupato, ma vedrò di disegnare qualcosa.

Grazie di tutti i consigli!

Come non detto... Sono riuscito a disegnare qualcosa velocemente, spero possa bastare (vedi pdf in allegato).

Schema a blocchi.pdf (18.3 KB)

Gli ho dedicato 5 minuti ma già da subito mi è sembrato tutto perfetto. Non rimane che passare alla realizzazione dei pcb.

+1 :slight_smile:

Ciao.

Haha.. Dici niente..
Comunque grazie per l'incoraggiamento! 8)

A proposito, avevo anche aggiunto nello schema a blocchi un display a 7 segmenti che mi potrebbe tornare utile in alcune situazioni... Sarà pilotato da un pposito integrato su bus SPI, quindi teoricamente il concetto non cambia.

A presto per altri aggiornamenti!

Si conviene sfruttare ISP per tutto, quindi anche per il display 7 seg.

Se ti può interessare ho trovato degli interruttori privi di contatto, sembra siano degli accoppiatori ottici tra diodo led e fotoresistenza, li ho visti guardando lo schema del Triamp H&K, si chiamano LT3011 da non confondere con gli integrati stabilizzatori di Linear Technology.

http://www.google.it/url?sa=t&rct=j&q=Lt3011&source=web&cd=8&cad=rja&ved=0CFgQFjAH&url=http%3A%2F%2Fwww.excelitas.com%2F_Layouts%2Flistform.aspx%3FPageType%3D4%26ListId%3D%257B06414CB3-CCA7-4B30-AEDA-D8E3BD2DCF6C%257D%26ID%3D14&ei=465PUOr-FYbR4QTRkYDwCQ&usg=AFQjCNHedwF4EghsFycUgkND8COmLT1BJw

purtroppo non ho idea di dove reperirli sul mercato.

Forse allo schema a blocchi della sezione analogica potresti aggiungere i jack send e return così da permettere la connessione di una unità esterna, ma dove metterla, in testa o in coda, boooh forse è meglio non metterla perchè la testata di solito è già provvista di send e return.

Per il pcb userai quasi sicuramente il software eagle che purtroppo non so usare, preferendo kicad.

Se hai qualche dubbio, incertezza ecc, posta pure.

Ciao.

Come pulsanti ho trovato degli economicissimi pulsantoni uguali a quelli che usavano sui vecchi giochi arcade delle sale giochi. Sono veramente molto resistenti, quindi anche con la pressione del piede dovrebbero reggere tranquillamente. Fra l'altro sono trasparenti, quindi posso inserire un led colorato di segnalazione on/off all'interno del pulsante con un ottimo risultato estetico.
Tutto quello che dovrò fare è aggiungere il debounce, ma quello non è assolutamente un problema.

Per i jack di send/return ci avevo pensato, magari dedico un relay apposta per quello e ci collego direttamente i jack, al massimo con un piccolo buffer ad op-amp. La posizione ideale sarebbe forse a metà catena, dopo le distorsioni e prima delle modulazioni (phaser, chorus, etc). Comunque userò dei connettori (pin strip) per collegare gli effetti ai relè, quindi la catena sarà liberamente modificabile in qualsiasi momento.

Per i master userò sicuramente eagle perchè è l'unico programma che conosco abbastanza bene, e con cui ho già iniziato una piccola parte del lavoro.

Devo ora ringraziare tutti per i consigli, veramente molto preziosi.
Mi farò vivo non appena riesco a continuare il lavoro!

Grazie ancora!
Ciao