Frequenzimetro con arduino

Frequenzimetro con arduino

Frequenzimetro con arduino

misurazione della frequenza ac utilizzando arduino

Questo tutorial spiega come usare la libreria Audio Frequency Meter per le schede Arduino e Genuino Zero. Il codice utilizza un metodo della libreria per misurare la frequenza di un segnale collegato ad A0 e amplificato attraverso un circuito elettronico, al fine di ottenere la frequenza di un generico segnale di ingresso. La gamma attualmente misurata dalla libreria va da 60 a 1500 Hz e può essere ristretta dal metodo setBandwidth().

Per ottenere la massima gamma dinamica anche da ingressi di basso livello, il circuito consiste in un amplificatore non invertente che porta l’ampiezza del segnale all’intera gamma di tensione d’ingresso supportata dall’ADC. Campionare a piena risoluzione significa una migliore accuratezza.

Il trimpot da 10k permette di regolare il guadagno dell’amplificatore facendo corrispondere il livello del segnale al range di ingresso dell’ADC. Questa regolazione dovrebbe essere fatta guardando l’uscita sul monitor seriale del software Arduino (IDE): quando la lettura della frequenza è stabile, il guadagno è impostato correttamente.

monitoraggio seriale del contatore di frequenza arduino

L’ingresso di frequenza è fissato al pin digitale 5. Questo pin è mappato alla funzione della porta alternativa T1 che è l’ingresso 16 Bit Hardware Counter1. Per ottenere una risoluzione più alta di 16 Bit, anche gli overflow del contatore sono contati e sono calcolati con il valore del contatore fino al risultato finale intero lungo. L’uscita della sorgente di frequenza deve avere un livello digitale così che i segnali deboli devono essere amplificati per esempio da un singolo transistor o da un inverter 74HC14. La massima frequenza di ingresso è di circa 8 MHz quando il duty cycle del segnale è del 50%.

Se volete misurare frequenze più alte dovete usare un circuito prescaler o divisore che può essere usato da altri progetti di contatori pubblicati sul web. Il Gate Time per il periodo di conteggio può essere scelto nella funzione start() dove valori di 10, 100 o 1000 ms sono praticabili per una risoluzione di 100, 10 e 1 Hz ma qualsiasi valore può essere usato. La risoluzione interna del gatetime è di 2 ms in modo che il tempo possa essere variato nell’incremento di 2. Se si desidera minimizzare l’errore di indicazione, il valore della variabile FreqCounter::f_comp può compensare lievi errori di gatetime. Rispetto a un contatore ACECO commerciale è possibile tagliare la deviazione a quasi zero su tutto l’intervallo. Per gatimes di 10,100,100 i valori 1, 10 e 100 sono stati trovati buoni per le nostre schede Duemilanova.

codice del ciclo di lavoro di arduino

Oltre al commento di Transistor sopra (tipi di dati non corrispondenti), c’è anche il problema se gli interrupt debbano essere attivati o disattivati – e quale pulseIn() dovresti usare. Sembra che tu stia seguendo: https://www.electronicshub.org/frequency-counter-using-arduino/. Suggerirei di iniziare con il loro codice esatto (nota le dichiarazioni del tipo di variabile).

Infine, se stai cercando di fare un contatore di frequenza, ti suggerirei di usare gli interrupt (https://learn.openenergymonitor.org/electricity-monitoring/pulse-counting/interrupt-based-pulse-counter) o di usare il registro del contatore costruito da atmega che è progettato esattamente per questo (per esempio: https://forum.arduino.cc/index.php?topic=59779.msg438414#msg438414, ma ci devono essere anche altri esempi là fuori).

contatore di frequenza preciso di arduino

Oltre al commento di Transistor qui sopra (tipi di dati non corrispondenti), c’è anche il problema se gli interrupt debbano essere attivati o disattivati – e quale pulseIn() dovresti usare. Sembra che tu stia seguendo: https://www.electronicshub.org/frequency-counter-using-arduino/. Suggerirei di iniziare con il loro codice esatto (nota le dichiarazioni del tipo di variabile).

Infine, se stai cercando di fare un contatore di frequenza, ti suggerirei di usare gli interrupt (https://learn.openenergymonitor.org/electricity-monitoring/pulse-counting/interrupt-based-pulse-counter) o di usare il registro del contatore costruito da atmega che è progettato esattamente per questo (per esempio: https://forum.arduino.cc/index.php?topic=59779.msg438414#msg438414, ma ci devono essere anche altri esempi là fuori).