Logo audio valvole
Banner Audiovalvole
Compra Audiovalvole eBook su lulu.com
Audio Valvole:Pagina Consigliata
--->Pagina consigliata: Fuoritema

Conta Automobili in transito con sensore acustico

Parametri fisici che andremo a rilevare

L'unico parametro fisico che si può facilmente rilevare e monitorare è il suono emesso dall'auto in transito e nello specifico il suono dei pneumatici a contatto con l'asfalto della strada.
Questo suono è tanto maggiore quanto più sarà usurato l'asfalto e quanto più alta è la velocità di transito dell'automobile.
Per avere una idea precisa del suono emesso faremo dei rilievi in sito utilizzando un banale registratore audio stereo di buona qualità o un computer dotato di scheda audio e un microfono esterno.

Schema di principio elaborazione analogica del segnale

Schama di principio della elaborazione analogica del segnale

Figura N.0

Lo schema di principio del funzionamento di questo sensore è semplice.

Per fare un lavoro migliore occorre inserire all'interno dell'amplificatore passa banda un controllo automatico di guadagno, allo scopo di non far saturare l'amplificatore in presenza di segnali di ampiezza eccessiva.
Questo complica un po' la realizzazione quindi non lo implementeremo in questa fase.
In questo modo il sistema si adatterebbe automaticamente a diversi ambienti caratterizzati da segnali di intensità variabile.

Misure eseguite sul sito

Abbiamo applicato il resistratore e abbiamo rilevato il rumore per un certo lasso di tempo.
La fase successiva consiste nell'analizzare la distribuzione spettrale del suono prodotto dai pneumatici allo scopo di realizzare un amplificatore con una banda stretta adatto a rilevare solo il suono che ci interessa attenuando tutto il resto allo scopo di eliminare tutte le fonti di rumore che non ci interessano.
Allo scopo utilizzeremo Adobe Audition.

Suono originale
Figura N.1

Come potete vedere dall'immagine sopra le frequenze che ci interessano vanno da 500Hz fino a circa 15KHz.
Una cosa che si nota facilmente analizzando le tracce della registrazione stereo è come si possa facilmente individuare la direzione di percorrenza dell'auto che transita, semplicemente analizzando i picchi di rumore.

Picchi di rumore del suono originale
Figura N.2

Come vedete se l'auto proviene da sinistra prima avremo un picco sul microfono di sinistra e poi su quello di destra e viceversa.
In questo modo con un po' di calcoli sarebbe anche possibile determinare con una certa precisione la velocità dell'auto in transito.
Ma al fine del nostro progetto non terremo in considerazione questi dati perchè nello specifico non ci interessano.
Riassumendo: l'amplificatore deve avere una banda passante con frequenza centrale a 4Khz.
Come si vede dalla figura 1 la presenza di disturbi di fondo in questa porzione di banda è molto bassa.
In ogni caso escluderemo l'onnipresente rumore sui 50-100Hz dovuto alla linea di distribuzione dell'energia elettrica e il rumore termico del complesso microfono-amplificatore.
Questo ci permette di avere un notevole rapporto segnale-rumore.
Unica difficoltà, creare un amplificatore il più selettivo possibile.
Il segnale all'uscita deve essere integrato (useremo un circuito integratore) in modo da rilevare più facilmente l'andamento utilizzando un software.

Limiti di utilizzo che emergono dallo studio preliminare

  1. Non è possibile contare due auto che transitano simultaneamente davanti al sensore (nel caso vengano da due diverse direzioni o si stiano superando).

  2. Non è possibile contare automobili che transitano in un flusso continuo (in colonna).

Quindi l'applicazione di questo tipo di contatore è limitato alle strade extraurbane in cui il flusso di auto non sia continuo.
In questo modo l'errore si mantiene molto basso, aumenta all'aumentare del traffico che genera code e genera passaggi simultanei sulle due corsie delle auto.
Possiamo facilmente avere un'idea approssimativa del limite massimo di conteggio guardando l'immagine 2 e determinando la durata di un picco di rumore.
Notiamo subito che è dipendente da:

Nell'esempio della Figura N.2 il picco di rumore dura circa 2 secondi ed è possibile indivuduare due picchi distanti 1/2 secondo l'uno dall'altro.
Quindi potremo contare un massimo di 120 auto al minuto nei due sensi di marcia.
Ora dovremo fare una prova con un microfono più direttivo per convalidare la nostra ipotesi.

Progettazione del sensore utilizzato

Esistono già dei sensori atti allo scopo, purtroppo rilevano tutta la banda audio, quindi non esattamente adatti ai nostri scopi anche se utilizzabili per fare delle prove.
Si tratta di microfoni amplificati con amplificatori operazionali.
Sono sensibili a tutta la gamma audio, quindi anche ad i rumori ambientali che non centrano nulla con il transito degli autoveicoli, dal rumore degli aerei al cinguettare dei passeri.
Quindi ne progetteremo uno adatto allo scopo partendo da un microfono a condensatore commerciale e un amplificatore operazionale anche questi commerciale.
Le caratteristiche saranno le seguenti:

Limitare la banda passante del microfono

Per limitare la banda di frequenze a cui è sensibile il microfono adottando un approccio fisico, occorre mettere il microfono in un sistema risonante accordato alla frequenza che vogliamo captare.
In altre parole occorre adottare un tubo in cui collocare il microfono che abbia una frequenza di risonanza adatta.
Tutte le frequenze prossime alla frequenza di risonanza verranno esaltate mentre le altre attenuate.
Allo scopo abbiamo fatto un esperimente calcolando un tubo che ha la frequenza di risonanza impostata a circa 4KHz.
Qualora fosse impossibile realizzare un microfono direttivo a "mezzo fucile o fucile" che implementi la direttività e la banda passante stretta opeteremo per la caratteristica di direttività che non possiamo implementare per via elettronica (utilizzando un amplificatore a banda stretta).

Tubo risonante
Figura N.3

Quello in figura 3 è il classico schema di un microfono posto in una cavità risonante, in questo caso un tubo chiuso ad una delle estremità.
La frequenza di risonanza è proporzionale alla lunghezza del tubo e alla sua sezione.
Nella formula in figura 3:

Quindi un tubo lungo 10 cm con un diametro di 2 cm ha una frequenza di risonanza fondamentale di F= (1*343)/(4*(0,1+(0,4*0,01)))

Ovvero F=343/0,416=824Hz.
Ovviamente il discorso vale anche per tutti i multipli dispari di detta frequenza.

Verifica pratica microfono posto in una cavità risonante

microfono posto in un tubo

Figura N.4

Come potere vedere dalla figura 4 il suono, grazie al tubo accordato si è disposto solo in alcune bande.
Il calcolo del tubo è stato fatto approssimativamente solo per dimostrare il principio.
La frequenza fondamentale di risonanza circa 900Hz, la seconda banda (F*3) è a 2700Hz, mentre la successiva è a F*5=4500Hz.
La prossima prova la faremo accordando il tubo ad una diversa frequenza per confrontare i dati.
Comunque già si nota che il sistema funziona.

Microfono direttivo

Abbiamo fatto degli esperimenti in merito.
La direttività si ottiene limitando la porzione di spazio da cui il microfono capta il suono.
A questo scopo occorrerebbe utilizzare un microfono a "fucile" o "mezzofucile" tipico microfono utilizzato nelle riprese in esterni.
Consiste in un tubo che funge da elemento direttore.
Viene realizzato aprendo delle feritoie trasversali alla direzione del suono su tutta la lunghezza del tubo allo scopo di evitare di costruire una cavità risonante. Un microfono montato in questo modo è tanto più direttivo quanto più lungo è il tubo e la sensibilità diminuisce proporzionalmente.
Quindi occorre predisporre un amplificatore con un guadagno maggiore.

Preamplificatore passa-banda

Per avere una maggiore selettività abbiamo progettato un amplificatore con filtro ad amplificatore operazionale a reazione moltipla che dobrebbe avere una pendenza di 12dB per ottava.
Questo unito alla cavità di risonanza in cui è posto il microfono dovrebbe avere una pendenza di 22dB per ottava.
Per aumentare ulteriormente la pendenza del filtro basta all'occorrenza metterne due in cascata.

Pre Amplificatore passa-banda
Figura N.5

In riferimento alla Figura N.5, la prima parte del preamplificatore, quella realizzata con la prima sezione dell'operazionale (TL82-1) è un preamplificatore che amplifica circa 100 volte il segnale prelevato dal microfono a condensatore, la seconda sezione dell'operazionale è utilizzata per costruire il filtro.
L'uscita del filtro pilota un rettificatore-integratore composto dal diodo Dsk1 (diodo schottky) e dalla resistenza da 5,6KΩ e il condensatore da 100uF.
Il segnale il uscita è inviato all'ingresso analogico A0 di arduino.
Questo segnale ha un valore fisso rispetto a massa di 2,5Volt a cui viene sommato quello di picco della componente alternata del segnale rettificata dal diodo.
In pratica il campo di esistenza del segnale in uscita va da 2,5V a 5V-VDsk1 dove VDsk1 è la tensione di polarizzazione diretta del diodo che si aggira sui 0,3V.
Quindi il possibile valore in uscita su A0 va da 2,5V a 4,7V.
Per migliorare la risoluzione, cosa peraltro non necessaria sarebbe opportuno produrre la tensione duale di alimentazione dell'operazionale utilizzando un integrato progettato allo scopo come ad esempio l'ICL7660 o LTC1046.
In questo modo in uscita avremmo un segnale che parte da 0Volt e potremmo sfruttare tutta l'estensione dei 5Volt (tensione massima in ingresso ad A0 di arduino) per migliorare la convesione (vedi immagine sotto con le modifiche relative).
In questo modo si riduce anche il consumo del circuito eliminando le due resistenze da 680 Ω utilizzate come partitore di alimentazione.

Pre Amplificatore passa-banda
Figura N.6

Ultime modifiche e collaudo sul campo

Pre Amplificatore passa-banda
Figura N.7

Nella fugura N.7 è possibile vedere l'ultima versione del prototipo che si è arricchita di un trimmer multigiri di taratura subito dopo il microfono. Questo all'ovvio scopo di poter tarare sul campo la sonda in funzione della vicinanza alla strada di transito evitando la saturazione per rumori troppo forti. Nello figure N.8, N.9, N.10 il circuito realizzato su una basetta millefori. Il microfono è stato inglobato in un pezzo di strucco per vetri allo scopo di poterlo direzionare e fissare all'occorrenza per evitare che si sposti.

Pre Amplificatore passa-banda
Figura N.8
Pre Amplificatore passa-banda
Figura N.9
Pre Amplificatore passa-banda
Figura N.10

Il programma di arduino

/*
Funzionamento:
Viene letto un valore analogico da un sensore
Se il valore letto è più basso del valore trigger di quello precedente viene letta l'ora e la data dal RTC
poi viene stoccata in una stringa e dopo aver bufferizzato 10 valori questi vengono scritti in una SD card
*/
#include <SPI.h>
#include <SD.h>
#include <DS3232RTC.h>
#include <Time.h>
#include <Wire.h>
const int chipSelect = 4;
int sensorValue = 0 ;
int sensorOld = 0 ;
int trigger = 5 ;
int nBuffer = 0 ;
String dataString = "";
int led = 8;
void setup() {
Serial.begin(115200);
Serial.print("Inizializzazione SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("La Sd card non funziona o non presente");
return;
}
Serial.println("Sd card initializzata.");

setSyncProvider(RTC.get);
if(timeStatus() != timeSet)
Serial.println("Impossibile leggere RTC");
else
Serial.println("Lettura RTC eseguita");
pinMode(led, OUTPUT);
}

void loop() {
sensorValue = analogRead(A0);
if ((sensorOld-sensorValue)>trigger)
{
Serial.println(nBuffer, DEC);

dataString += String(hour());
dataString += String(":");
dataString += String(minute());
dataString += String(":");
dataString += String(second());
dataString += String("-");
dataString += String(day());
dataString += String("/");
dataString += String(month());
dataString += String("/");
dataString += String(year());
dataString += String('\n');

nBuffer++;
// Aspetta che il rumore continui a scendere fino a che non
// si stabilizza o non aumenti nuovamente
while (sensorOld>sensorValue)
{
sensorOld=sensorValue ;
delay(100) ;
sensorValue = analogRead(A0);
}
if (nBuffer==10) {
scriviSD(dataString);
nBuffer=0;
dataString = "";
}
}
sensorOld=sensorValue ;
digitalWrite(led, HIGH);
delay(100) ;
digitalWrite(led, LOW);
}
void scriviSD(String cScrivi)
{
File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
dataFile.println(cScrivi);
dataFile.close();
Serial.println(cScrivi);
}
else {
Serial.println("Errore Apertura datalog.txt");
}
}
Inizio Pagina