come primo progetto su Arduino condivido la mia idea sul pilotaggio di un array di 8 relè comandati da Arduino UNO.
Hocercato molto in giro ma niente si avvicina a ciò che vorrei realizzare..
Innanzitutto in linea teorica si vorrebbe accendere una o una serie di luci connesse a ciascun relè al variare della musica.
Qui il primo dubbio.. Il top sarebbe poter analizzare le frequenze ed accendere/spegnere una serie di contatti per determinate frequenze creando un gioco di luci "di spettro" ma non capisco bene come creare il controllo in frequenza tramite codice.
Ho letto qualcosa su come creare dei frequenzimetri ma leggono una sola frequenza mentre io vorrei tenere sotto controllo una decina di frequenze.
Tutte queste creano un "immagine spettrale" e innescano una sequenza di luci preimpostata logicamente il tutto deve essere a tempo e quindi sincronizzarsi all'esecuzione.
Per avere una linearità esecutiva ho pensato di utilizzare un ingresso analogico per connettere un LINE out del mixer (mono per non avere casini stereofonici) ed analizzare 10 frequenze ad esempio: 100, 300, 1200, 2800, 4100, 6800, 9,800, 12,000 Hz e controllare l'ampiezza dei 110 Hz come controllo di picco per sincronizzare la sequenza.. la mia domanda è: è possibile impostare il clock della sequenza tramite un valore di ampiezza analogico?
Vorrei creare per adesso 3 modalità: modalita "SPETTRO" che mi attiverà i contatti in ordine delle frequenze controllate, modalità "SEQUENZA AUTONOMA" che avvierà una sequenza preimpostata ogni 5 secondi e leggendone ogni volta lo spettro, modalità "STROBO" che preleva l'ampiezza della frequenza dei 100 Hz per accendere e spegnere i contatti inipendentemente dalle frequenze ma mantenendo il tempo inoltre che le tre modalità possano combinarsi tra loro.
In futuro vorrei creare un app bluetooth per poter gestire il tutto da smatphone.. ma ancora c'è tempo!
spero di essermi spiegato bene..
sapete se c'è qualcosa di analogo da dove poter partire?
La modalita STROBO dovrebbe essere la più semplice e penso partirò da quella, ma per capire che valori ho in ingresso credo che dovrò procurarmi un lcd oppure un display..
Qualche consiglio?
Materiale in possesso:
Arduino UNO
Arduino MEGA
Modulo Bluetooth
Modulo microfonico
Breadboard con modulo d'alimentazione
cavi, led, pulsanti, potenziometri olio, sale e pepe
Per quel genere di applicazione, i rele' non si usano mai (tranne che se sono rele a stato solido), primo perche' continuerebbero a ticchettare dando fastidio, e poi perche' per un'uso del genere durerebbero molto poco ... se le luci sono a bassa tensione, meglio usare mosfet, se invece sono a 230VAC, con l'aiuto di un'elettricista per la parte dei cablaggi sulla 230, meglio usare SSR per alternata, che reggano minimo 400V (ed ovviamente almeno il doppio della corrente minima dei banchi di lampade)
grazie per la risposta rapida,
per quel che riguarda i relè posso usare anche quelli a stato solido e visto che dovrò comandare delle lampade X potrei anche costruirmele interamente a led e pilotarle a bassa tensione per l'utilizzo prolungato.. questo è il meno..
Il mio problema sta nella parte iniziale ovvero nel riuscire a insegnare ad arduino che all'ingresso analog si presenta un segnale audio che deve analizzare in frequenza.
sul tubo ho trovato questo:
però utilizza un transistor/potenziometro per ogni frequenza.. siccome vorrei compattare il piu possibile il progetto mi chiedevo se fosse possibile analizzare le frequenze direttamente da codice e mandarle ad un relè che accendeva una luce..
credo ci voglia qualche modulo in piu perche il segnale che arriva ad arduino è un valore in volt, inutilizzabile come spettro.. sbaglio?
però utilizza un transistor/potenziometro per ogni frequenza
??????????? e questa cosa dove l'hai vista ?
Ma se e' il modo più semplice e compatto per fare quello che vuoi.
Un'unico chip, che impegna solo tre pin di Arduino ( c'e' anche il Reset ) che fa' da Equalizzatore Grafico e ti dà un valore per ognuna delle 7 bande con cui ha diviso lo spettro audio e che costa pure poco.
@Brunello:
mi son confuso con questo che ha 3 potenziometri.
appurato che arduino riceve un segnale in tensione l'unico modo per riuscire nell'intento è far segmentare il segnale in 8 bande con componenti discreti e dividendoli a 8 ingressi analogici (utilizzerò il MEGA) cosicchè ogni ingresso ha un valore in ampiezza che posso gestire.
vorrei centralizzare il piu possibile tramite arduino in modo da dover agire solamente sulla programmazione per successive implementazioni.
Quello a cui fai riferimento tu e' un semplice circuito per luci psichedeliche, quello a cui si riferisce Brunello e' un chip MSGEQ7, un chip che contiene al suo interno gia tutti i filtri e le reti di condizionamento per leggere un'ingresso audio e restituirti, in modo sequenziale, il valore di tensione corrispondente a 7 bande di frequenza (in pratica, l'equivalente delle 7 reti passabanda attive che altrimenti dovresti costruirti tu a parte, piu un registro che, con un segnale di clock, collega a rotazione ognuna delle reti all'uscita in sequenza) ... usando quello, e' possibile poi leggere con arduino i livelli corrispondenti alle 7 bande, a rotazione, ed usarle nel tuo sketch ...
Deciso immediatamente di acquistarlo. nel frattempo che arriva sto pensando al comando delle varie uscite.
in alternativa all'array di relè che comandano separatamente, ho deciso di optare per un controllo dinamico di 7 led da 10w utilizzando la capacita di modulazione d'ampiezza di arduino. ho letto parecchio sul comando dei led di alta potenza e una discussione a cui hai risposto mi ha catapultato nell opzione di comprare questi dispositivi: http://www.ebay.com/itm/High-Power-10W-LED-Driver-MBI6651-PWM-DIM-/380236759063?pt=LH_DefaultDomain_0&hash=item5887e08017
uno per ogni led (7) in questo modo posso anche trasmettere quelle sfumature che può darmi l'integrato.
a questo punto il progetto comincia a prendere forma e per la funzione "SPETTRO" ormai ho praticamente tutto.
Per la funzione "STROBO" semplicemente vorrei utilizzare ad esempio la banda di frequenza delle basse e in uscita farli accendere tutti insieme sempre utilizzando la PWM!
sto procedendo nella giusta direzione?
grazie ancora a tutti!
Considera l'uso dell'algoritmo FFT (Fast Fourier Tranform): per sole 8 bande di frequenza non richiede molta potenza od impegno di memoria.
In pratica il segnale audio viene analizzato nel dominio della frequenza e vengono restituiti N valori corrispondenti all'ampiezza del segnale secondo N frequenze.
Attenzione che quei driver possono arrivare a dare in uscita 1500mA, mentre i "normali" led da 10W (quelli quadrati con 9 chip, connessi in 3 serie di 3 chip messe in parallelo), richiedono in media 900mA ... quindi per il funzionamento in modalita' "continua", dovrai impostare il livello massimo del PWM perche' i driver ti diano circa 900mA alla massima luminosita' prevista ...
Invece i 1500mA vengono buoni per la modalita' "strobo", a patto di tenere gli impulsi che causano i lampi di luce molto brevi ... ad esempio, potresti usare impulsi fra 70 e 100ms, non piu di due per secondo, oppure fra 30 e 50 ms, non piu di 4 per secondo, ed in questo modo riuscire a pilotare i led a 1500mA, facendogli produrre lampi piu luminosi del livello che hanno in modo "psico", senza bruciarli ...
Tutti i led andranno ovviamente dissipati bene, ma questo presumo tu lo sappia gia, come anche sappia il fatto che ti servira' un'alimentatore "robusto" per pilotarci tutti quei driver ... comunque avendo un'ingresso che puo arrivare a 36V, puoi usare anche un'alimentatore industriale da 24V ed una decina di Ampere o piu per alimentarci tutti i driver insieme ...
grazie per la dritta del FFT approfondirò il discorso!
i led che intendo utilizzare sono i 9-12 quindi ad andare bene saranno 900mA, per quanto riguarda l'alimentazione come prima prova intendo utilizzare un vecchio alimentatore da pc e sfruttare 3 delle sue uscite a 12v poi se non dovesse bastare ne comprerò uno adatto, quindi collegare le uscite ai moduli di pilotaggio pwm.
per il funzionamento in funzione STROBO avrei intenzione di intervenire impostando una soglia in ampiezza con la quale Arduino interpreterà come segnale di comando e farà accendere tutti i led per un tempo che puo variare in base alla durata del beat (dovrò impostare un potenziometro per regolare una variabile che influenzerà la soglia d'intervento sul segnale in ingresso).
per i dissipatori credo di ordinare un kit lenticolare + led + dissipatore che ho visto da qualche parte girovagando