Arduino: Progettare un rilevatore di picco da zero

Arduino Rilevatore di picco

Progettiamo un rilevatore di picco per Arduino, ed utilizziamone i valori calcolati per rendere più semplice la sua programmazione.

Un rivelatore di picco è un circuito in grado di misurare l’ampiezza massima (di picco, appunto) di un segnale elettrico, e determinarne in tal modo il massimo livello di tensione da esso raggiunto.

Troviamo l’uso dei rilevatori di picco nei sistemi di elaborazione audio come VU-meter e analizzatori di spettro. Dal momento che il volume dell’audio di un segnale varia con la differenza di potenziale ai suoi capi, un rivelatore di picco è in grado di monitorare il livello massimo di tale segnale, per valutare e reimpostare automaticamente il livello audio del sistema. Ma non solo: dal momento che sensori di vario tipo operano in base alla variazione di tensione (o di resistenza interna, strettamente correlata), il rivelatore di picco potrebbe altresì essere utilizzato per sistemi di illuminazione autoranging, in grado di alzare o abbassare la luminosità di un apparato in relazione all livello di luce ambiente percepito. 

Come è fatto

Un semplice rilevatore di picco è costituito da un diodo collegato in serie ad un condensatore

Arduino rilevatore di picco

Quando al circuito viene applicata una tensione positiva, la corrente attraversa il diodo e carica il condensatore sino a tale valore. Quando poi la tensione viene ridotta, la carica immagazzinata nel condensatore non ha più facoltà di spostarsi liberamente lungo il circuito, poiché la corrente non può attraversarte il diodo. Quindi, il condensatore rimane carico e mantiene il potenziale più elevato raccolto in precedenza; tale potenziale è quindi il massimo valoore di tensione raggiunto dal condensatore. 

In realtà non è proprio così: La tensione di uscita non sarà mai esattamente la stessa di quella in ingresso. Infatti il circuito perderà approssimativamente 0,6V a causa del forward voltage drop del diodo. In altri termini, per determinare il livello effettivo di tensione di ingresso occorrerà sommare la tensione di forward voltage del diodo alla tensione di uscita del segnale.

Arduino rilevatore di picco

Il circuito

Il nostro semplice rilevatore di picco trova posto su di una breadboard. Consta di un diodo di tipo 1N4148 ed un condensatore da 100 microFarad. 

È possibile determinare il comportamento del circuito utilizzando un oscilloscopio a doppia traccia e ponendo il segnale in input del circuito e quello in output sui due canali di confronto (rispettivamente A e B). Noteremo come al variare del segnale in ingresso, il segnale in uscita resterà lineare, mantenendo il valore di tensione più elevato che ha nel frattempo attraversato il circuito.

Rilevator di picco
A sinistra il nostro rilevatore di picco iniziale. A destra la versione che mantiene il livello per alcuni secondi prima di scaricarsi

Ovviamente, a causa delle perdite di carica implicite in un componente non ideale come il condensatore, vedremo che nel tempo il livello di picco tenderà a diminuire.

Estensioni possibili

Abbiamo parlato di VU-meter e di analizzatori di spettro audio. Chi come me ha una certa età, ricorderà sicuramente impianti stereo esoterici dotati di misuratori di output a LED, agilissimi e guizzanti. 

Analizzatore di spettro

Una delle caratteristiche che più affascinava noi (allora) giovani audiofili tecnologici era la funzione peak hold, ovvero una funzione che manteneva acceso il LED corrispondente al valore massimo raqggiunto per alcuni decimi di secondo prima di decadere. E il decadimento avveniva veso livelli sempre più bassi, sino a raggiungere il livello minimo attuale tenuto dalla sorgente audio.

Bene, tale funzione è facilmente realizzabile dal nostro rilevatore tramite l’aggiunta di un sempllice resistore in parallelo al condensatore, che scaricherà quest’ultimo a massa. Ma come calcolare il valore del nuovo resistore?

Fortunatamente ci viene in aiuto una formula usatissima nel calcolo dei filtri elettronici, che possiamo press’a poco enunciare in questo modo: “Il tempo (in secondi) necessario a scaricare un condensatore da x Farad posto in parallelo ad un resistore da y ohm è più o meno pari a 5*R*C“.  O T = 5RC.

Facciamo un esempio. Vogliamo che il nostro condensatore da 100 microFarad si scarichi in 5 secondi: avremo allora che

Inserendo un resistore da 10.000 ohm in parallelo al condensatore, azzereremo il valore del picco di segnale in circa cinque secondi.

Considerazioni finali

Al termine di questo articolo abbiamo imparato come progettare un rilevatore di picco elettronico che consenta di visualizzare e mantenere nel tempo il valore massimo raggiunto da un segnale elettrico: Tale sistema potrà tornarci utile quando decidessimo di creare con Arduino ad esempio un sistema di monitoraggio delle temperature in tempo reale in grado di mantenere anche la temperatura massima raggiunta. O il massimo livello di pressione sonora. O il grado più elevato di umidità. Il tutto senza dover scrivere una sola riga di codice, ma utilizzando il circuito elettronico come un contatore ed una cella di memoria.

Se avete dubbi o domande al riguardo, o proposte/richieste di circuiti di utilità, scriveteci!

Link utili

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.