Costruzione Vu-Meter

Buonasera a tutti, mi servirebbe un vu-meter.

Qualche giorno fa avevo trovato questo schema abbastanza semplice (purtroppo non trovo più la pagina da dove lo avevo scaricato) con il programma


VU_meter_-_LED_Strip.ino (2,9 KB)

o questo molto simile a parte per l'uso di qualche componente in più (potenziometro, condensatore, pulsante..che credo servano per funzioni aggiuntive)

In entrambi gli schemi, i due positivi del jack audio vanno a un ingresso analogico di arduino e il GND del jack audio è messo in comune con tutto il GND (quindi anche quello delle strisce led)

Purtroppo, però ho trovato questo topic Receiving audio input from hifi system for vu meter - #3 by porschecraig in cui PieterP al post 4 dice che lo schema (il primo che ho mostrato che avevo trovato) è sbagliato perchè è stato collegato il jack audio agli ingressi analogici di arduino.

Quindi questi due schemi non vanno bene? E come si dovrebbe fare?

Ti ricordo che il segnale "audio" è un segnale analogico che oscilla sopra e sotto lo zero (GND) ...

image

... mentre gli ingressi analogici di Arduino accettano SOLO segnali positivi, penna il loro danneggiamento, quindi ... devi solo spostare l'offset del segnale audio.

Se fai un po' di ricerche qui sul forum se ne è parlato anche altre volte.

Guglielmo

Ciao grazie. Sto provando a cercare, ma non riesco a trovare quello che dici...
Potresti indicarmi un post per favore?

Oppure,c'è qualche modulo che si può acquistare che fa questa cosa? Cioè una schedina con ingresso jack e uscita i 2 cavi che vanno all'analogivo e quello che va a gnd

Grazie

Guarda, se fai una piccola ricerca con Google "arduino audio input circuit" trovi vari schemi che separano la parte alternata e la spostano di un offset.

Guglielmo

Grazie. Allora ho trovato questo schema per collegare audio ad arduino.

1.Pensi possa essere adatto per il mio scopo?

  1. Nello schema è indicato il diodo, un semplice diodo raddrizzatore va bene?

  2. Nello schema è indicato un condensatore da 0.22uF...se non lo trovo da 0.22uF, per non riempire dixonsensatori cercando la giusta combinazione di serie e paralleli per ottenere 0.22uF, va bene lo stesso se ad es. Metto 1uf oppure 10uF???

EDIT:

Altrimenti c'è anche questo schema
Audio Input Schematic

ma non ho capito se è indifferente usare quello a diodo o questo, oppure se c'è differenze e quindi in tal caso non ho capito quale sarebbe meglio per il vu-meter.

Con il primo schema misuri solo la semionda positiva (o meglio il suo inviluppo, non esagerare con il valore del condensatore altrimenti ti riduce la dinamica ... fra 100n e 330n dovrebbero andare)

Con il secondo sposti l'intera semionda di 2.5V "in su" rispetto a massa, cosi l'ingresso "vede" solo una tensione positiva.

Per campionare velocemente delle forme d'onda andrebbe in teoria meglio il secondo, ma per l'uso come vu-meter credo sia meglio il primo.

Grazie @Etemenanki , non mi è chiara una cosa...

il primo hai detto che misura solo la semionda positiva (infatti, essendoci il diodo credo che prende solo la metà positiva). Facendo il vu-meter con quello schema, però poichè appunto prendo solo la semionda positiva e perdo quella negativa, non perdo una parte di musica che quindi non viene usata per l'accensione dei leds? O col primo schema la semionda negativa viene "ribalta" come una sorta di valore assoluto e quindi non perdo nulla?

EDIT ho collegato l'uscita audio al mio picoscopio e questo è il grafico che mi viene

l'andamento mi sembra corretto...se per far vedere il segnale con picoscopio saldo sul jack d'ingresso due fili a cui attccare l'oscilloscopio...quindi dal jack andrei:

  1. Al circuito arduino per il vu-meter
  2. Ai fili per picoscopio

Pensi che perderei molto segnale audio al vu-meter?

EDIT 2: Poichè non ho ancora il materiale , ho provato una simulazione con tinkercad. Con un generatore di funzioni genero una funzione (quindi simulo l'ingresso audio) e con il potenziometro vario la tensione (Quindi simulo volume alto e basso).
Tuttavia, impostando una tensione di 600mV (visto che il segnale audio al massimo ha tensione tra -300mV e 300mV circa), mettendo il diodo, sul pin analogico leggo sempre un valore 0 come puoi vedere

senza il diodo, invece leggo valori massimo +/- 60

quidi comune valori troppo bassi...

quidni, mi sembra impossibile fare il vu-meter visto che questo circuito abbassa cos tanto i valori letti...sbaglio io qualcosa?

Col secondo schema (quello che usa due resistori), invece, leggo valori su A0 che permettono di fare il vu-meter

Non ho capito se ho sbagliato io qualcosa nel simulare il primo schema (quello con diodo

Se vuoi farlo bene, devi mettere il diodo e dare in ingresso un segnale ad alto livello, preso da un altoparlante. Per farlo funzionare con segnali a basso livello, devi usare un "raddrizzatore ideale" attivo.

Ciao @Datman,

  1. il segnale che ho mostrato ieri, che non supera i +/-300mV viene dall'uscita del computer...per usare lo schema a diodo, il segnale audio dovrebbe venire da un amplificatore?

  2. Il raddrizzattore è il secondo schema? Cioè quello con i 2 resistori e un 1 condensatore che ho mostrato che funziona??

In pratica, ti spiego cosa devo fare.

Il 24 e 25 settembre avremo la notte dei ricercatori e presenteremo delle strumentazioni di fisica fatte con Arduino. Per abbellire lo stand, volevo fare anche un vu-meter...ma il segnale audio devo prenderlo dal computer. Quindi, dall'uscita del computer (quello per gli auricolari) devo mettere uno splitter audio così collego a un'uscita dello splitter un paio di casse (quelle piccole da computer) e a un'altra uscita il vu-meter..
Quindi, il segnale audio (visto col picoscopio) non supera i +/- 300mV ...cosa mi consigli di fare con questi valori?

EDIT: Ho trovato questo vecchio messaggio VU meter Arduino - #13 by dab77 di @gpb01 in cui diceva che dovendo trattare con basse tensioni, si doveva usare analogReference();

Però, nella simulazione...mettendo analogReference(EXTERNAL);
mi legge sempre 1023 come potete vedere qui (stessa cosa nel circuito con diodo)


e

PS: Considerato che il vu-meter è una cosa fatta da tutti con arduino, ma possibile che non esiste un modulo già bello e pronto in cui inserire il jack audio amplifica il segnale e manda il iusto segnale ai pin analogici?

intanto riduci il riferimento di tensione a 3.3, o magari anche meno, che avrai piu possibilita' di leggere segnali bassi.

da questo progetto puoi copiare la sezione di ingresso https://create.arduino.cc/projecthub/marcaubin/audio-spectrum-visualiser-with-colour-selection-c43fcc

infine questi puoi usarli se vuoi farci anche un'analizzatore di spettro audio https://www.sparkfun.com/datasheets/Components/General/MSGEQ7.pdf

Ciao, grazie. Allora, ho seguito questo schema

Tuttavia, nella simulazione

a. se scrivo analogReference(EXTERNAL); ho sempre valori bassi (che non arrivano a 600)

b. se scrivo analogReference(3); mi da sempre valore 1023

Ho sbagliato io qualcosa?

Comunque, ho trovato questo amplificatore https://www.amazon.it/gp/product/B07STCS657/ref=ox_sc_act_title_1?smid=A249EEO40WNRMY&psc=1 ...potrebbe essere utile? cioè andrei dall'uscita audio del computer a questo amplificatore e poi da questo fare il circuito per non avere valori negativi.
O questo tipo amplifica solo la potenza senza però amplificare la tensione?
Lo alimenterei con i 5V che mi escono dallo step down con cui alimento anche la striscia LED, oppure i 9V d'ingresso.
C'è anche questo https://www.amazon.it/DollaTek-Classe-Amplificatore-Immersione-TDA7377/dp/B07KPSPLKF/ref=sr_1_9?dchild=1&keywords=amplificatore+stereo+arduino&qid=1631439194&sr=8-9
ma c'è scritto che l'alimentazione deve essere tra i 9-15V raccomandata a 12V. Essendo la mia alimentazione a 9V, non so se stando proprio al valore minimo funziona bene...

PS Ho anche notato che in questo circuito che mi hai suggerito, se imposto una tensione più alta sui generatori di funzione, arduino mi legge valori negativi come puoi vedere

Il problema delle simulzioni e' che tante volte hanno poco a che fare con la realta' :wink:

Oltretutto analogReference() non accetta qualsiasi parametro, ma solo alcuni e non tutti uguali per ogni versione di MCU (ed e' strano che usando i valori che metti tu non ti dia errore, ma come ho detto, simulazione e realta' spesso differiscono parecchio).

Prova a settare analogReference(EXTERNAL) ed elimina R6 da 4k7, collegando AREF ed il 3.3V insieme, e vediamo cosa ne esce (sarebbe anche meglio mettere fra AREF e GND un condensatore, anche solo da 100n).

Grazie

Graize, purtroppo sto aspettando il materiale e quindi, in attesa stavo provando la simulazione.

Non sono sicuro se ho capito bene dove mettere il condensatore che dicevi...guarda se è corretto per favore. Però, come vedi, mi da sempre valori 400-600

Ps. Con quegli amplificatori che ho mostrato non ci faccio nulla? Sono solo di potenza e non di tensone??

no, aref e 3.3V insieme, il condensatore fra questi due pin e massa.

Così?

Però anche in questo caso leggo sempre valori bassi

Sul fatto che leggi valori bassi bisogna vedere la simulazione cosa combina ... giusto per curiosita', prova ad impostare i valori di C1 e C2 a 100uF invece che a 100n ed i generatori a 40 o 50 Hz e vedere se e come cambiano le letture (anche usando solo un condensatore ed un generatore, per simulare un solo canale, tanto stai usando solo un'ingresso, non ha molto senso mettere entrambi i generatori per ora)

Per gli ampli, il secondo non serve, e' a ponte, il primo potrebbe andare se lo alimentassi a 2.5V ed usando il reference di default a 5V, ma e' tutto da provare.

c'e' anche a meno :wink:

Grazie ancora

  1. Con i valori dei condensatori dello schema (e usando la frequenza da 1KHz), come detto ho valori solo tra 400-600

  1. Con un solo generatore a 50Hz, e un solo condensatore da 100uF i valori stanno aumentando velocemente...da intorno ai 100, adesso stanno intorno ai 700

  1. Con due generatori (50Hz) e due condensatori (100uF) è aumentato lentamente rispetto all'altro...da intorno ai 100, adesso sta itorno ai 400 (le simulazioni sono partite tutte insieme), adesso sembra però che si sia stabilizzato a tale valore

Alimentarlo a 2.5V sarebbe un po' un problema, perchè già ho uno step down per la striscia led...dovrei metterne un altro... alimentarlo a 5V o con i 3.3V di Arduino non servirebbe a nulla?cosa signfica usare il reference a 5V?

Grazie, ma come vedi arriverebbe a ottobre ...la notte dei ricercatori è 24-25/9

E' possibile che sia proprio il software di simulazione allora, che da valori sballati, se e' cosi c'e' poco da fare oltre al fare le prove "fisicamente".

Per l'ampli, alimentalo a 5V e fai un partitore di tensione all'uscita (oppure regola basso il volume), in modo da non saturare l'ingresso di Arduino con tensioni superiori ai 3.3V e da non avere componente negativa (per le semionde negative) sull'ingresso.

Grazie, allora devo attendere che arrivi il materiale!

Quindi, anche se faccio quel circuito per modificare l'offset subito dopo l'amplificatore cioè:

Uscita audio computer/cellulare -----> amplificatore---->circuito di offset---->Arduino

C'è il rischio che se la tensione è troppo alta, arduino legga tensioni negative?

Bisogna evitarlo, perche' se dai tensioni negative su un'ingresso rischi di strinarlo, i diodi di protezione sui pin sono per sicurezza ma possono reggere poca corrente.

Per questo si modifica l'offset ... quindi se usi l'ampli serve iniziare a volume minimo ed aumentarlo lentamente finche; arrivi alla lettura quasi massima, ma senza superare i circa 2V di picco ... sarebbe anche meglio aggiungere, sempre per sicurezza, un diodo sull'ingresso come ulteriore protezione, uno zener da 4.9V collegato catodo al pin ed anodo a GND.