Home
Accesso / Registrazione
 di 

Misure di frequenza con Arduino e libreria FreqMeasure

arduino come misuratore di frequenza

Vogliamo presentarvi una libreria software utile ad effettuare misure di frequenza con dispositivi Arduino o compatibili; si tratta di FreqMeasure, ed è particolarmente indicata per applicazioni tachimetriche e, più in generale, per applicazioni cosiddette RPM

In questo articolo vogliamo presentarvi una libreria software utile ad effettuare misure di frequenza con dispositivi Arduino o compatibili; si tratta di FreqMeasure, ed è particolarmente indicata per applicazioni tachimetriche e, più in generale, per applicazioni cosiddette RPM in cui si ha la necessità di misurare rotazioni per minuto. Il principio che sta alla base è quello di misurare la durata temporale di un periodo e quindi calcolarne la frequenza tenendo conto anche della frequenza della CPU; pertanto è evidente che tale libreria possa funzionare egregiamente con segnali che abbiano un ridotto numero di armoniche. Per ottenere quindi una misura piuttosto accurata, è quindi opportuno filtrare preventivamente il segnale da misurare con un filtro passa-basso. Il filtraggio del segnale elimina parte del rumore e taglia le armoniche a frequenza elevata. Ecco un possibile schema del filtro da applicare al segnale:

In realtà è necessario amplificare il segnale quando il livello di tensione dello stesso non sia sufficiente a pilotare l'input digitale TTL.

Misurare una frequenza nulla:

dato che questa libreria si basa sul principio di misurare la distanza temporale di due istanti con lo stesso livello in tensione (in pratica triggerando il segnale), per misurare una frequenza nulla non si deve fare altro che impostare un timeout; cioè bisogna impostare un intervallo di tempo oltre il quale, se non è stato “agganciato” alcun segnale, viene assunta come frequenza del segnale la frequenza nulla.

Vediamo ora come utilizzare la libreria:

per prima cosa procediamo all'installazione della libreria: Le librerie degli utenti sono memorizzate nella cartella di Arduino cartella \libraries. Quindi se volessimo installare la libreria FreqMeasure, dovremmo creare nella cartella \libraries una cartella che si chiamerà FreqMeasure e che conterrà i nostri files FreqMeasure.cpp e FreqMeasure.h, riavviare l'IDE di Arduino. L'intera cartella da posizionare in “libraries” è scaricabile in formato “zip” dal link della fonte

FreqMeasure.begin(); Inizio acquisizione segnale misurando

FreqMeasure.available(); Restituisce il numero di misure, oppure restituisce “0” se non vi sono misure leggibili. FreqMeasure.read(); Legge la misura. Contiene il numero dei clock della CPU trascorsi in un periodi della forma d'onda. Per convertire in frequenza, F_CPU deve essere diviso per questo numero. Ogni misura inizia immediatamente dopo la precedente senza alcun ritardo, così facendo possiamo fare più acquisizioni al fine di migliorare la risoluzione.

FreqMeasure.end(); Interrompe la misura di frequenza

Ora un esempio pratico :

#include  <FreqMeasure.h>

void setup() {   

Serial.begin(57600);   

FreqMeasure.begin();

}

double sum=0;

int count=0;

void loop() {   

if (FreqMeasure.available()) {

    // average several reading together     

    sum = sum + FreqMeasure.read();

    count = count + 1;

    if (count > 30) {

      double frequency = F_CPU / (sum / count);

      Serial.println(frequency);

      sum = 0;

      count = 0;     }

  }

}

I limiti di FreqMeasure: La frequenza massima misurabile non è solo limitata dalla possibilità di agganciare o meno il segnale, ma all'aumentare della frequenza sorgono problemi di impiego della CPU. Alla fine di ogni periodo, infatti, vi è una richiesta di interrupt alla CPU per far si che i dati vengano elaborati con la minore latenza possibile; pertanto all'aumentare della frequenza di interrupt, avremo un eccessivo impiego della CPU. Una soluzione possibile sarebbe quella di disabilitare gli interrupts; a frequenze elevate, però vi è il rischio di saltare periodi del segnare e quindi falsare la misura della frequenza. Per tutte le ragioni esposte, possiamo dire che FreqMeasure è utilizzabile per misurare frequenze da 0.1 a 1 kHz, mentre per frequenze più elevate è conveniente utilizzare la libreria FreqCount (da 1 kHz a 5 Mhz).

Arduino è disponibile da Farnell

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di Anonimo

Arduino is the best! e ho

Arduino is the best! e ho detto tutto :D

ritratto di AnonimoFra

Problema

Ma se io avessi bisogno di fare due misure diverse con questa libreria come faccio? posso usare solo il pin 8?

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 14 utenti e 138 visitatori collegati.

Ultimi Commenti