Edoardo Vignali
Arduino come misuratore di frequenze
Tutorials -
Martedì 03 Agosto 2010 15:55
Scritto da Edoardo Vignali

Arduino frequency meter

In questo articolo illustrerò come fare a misurare frequenze con arduino.

Le frequenze misurabili arrivano fino a circa 8MHz quando il duty cicle è del 50% e con una risoluzione di 16bit.

Dovrete creare uno stadio di preamplificazione di questo tipo:

Preamplificazione

Dovrete installare questa libreria.

Il nostro circuito preamplificatore è collegato all'Analog Pin 5 perchè questo pin è mappato con la porta T1. Questo vuol dire che, con particolari accorgimenti via software, possiamo generare un interrupt di tipo 1 quando questo pin commuta. Grazie a questa libreria infatti riusciamo a misurare il tempo che passa tra due interrupt e quindi a misurare il semiperiodo. Il nostro BJT PNP serve proprio ad amplificare i segnali più bassi in modo che il pin 5 commuti. Se vorrete misurare frequenze più elevate di 8 MHz allora dovrete utilizzare un Prescaler o comunque un circuito divisore di frequenza.

Il Gate time rappresenta la risoluzione con cui vogliamo misurare la nostra frequenza, gate time di 10ms, 100ms, 1000ms daranno una risoluzione rispettivamente di 100Hz, 10Hz, 1Hz. Il gate time minimo è 2ms e si imposta con la funzione FreqCounter::start( valore );. La funzione FreqCounter::f_comp serve a compensare gli errori del gate time fino ad avere una deviazione standard nulla su tutto il range di misura.

Eccovi il codice, ricordatevi di includere la libreria FreqCounter.h

// Switch on LED on pin 13 each second


void setup() {
  pinMode(13, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(7, OUTPUT);
  Serial.begin(57600);        // connect to the serial port

 

  Serial.println("Frequency Counter");

}

unsigned long frq;
int cnt;

void loop() {
  
  // wait if any serial is going on
  FreqCounter::f_comp=106;
  FreqCounter::start(1000);
  
  while (FreqCounter::f_ready == 0) 
  
  
  
  frq=FreqCounter::f_freq;
  Serial.print(cnt++);
  Serial.print("  Freq: ");
  Serial.println(frq);
  delay(200);


 
  
} 
 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi