- Componenti richiesti:
- Spiegazione del circuito:
- Generatore di segnali utilizzando 555 Timer IC:
- Schmitt Trigger Gate:
- Spiegazione del codice del contatore di frequenza Arduino:
Quasi ogni hobbista elettronico deve aver affrontato uno scenario in cui deve misurare la frequenza del segnale generato da un orologio, da un contatore o da un timer. Possiamo usare l'oscilloscopio per fare il lavoro, ma non tutti possiamo permetterci un oscilloscopio. Possiamo acquistare apparecchiature per misurare la frequenza ma tutti questi dispositivi sono costosi e non sono per tutti. Con questo in mente, progetteremo un contatore di frequenza semplice ma efficiente utilizzando Arduino Uno e il gate trigger di Schmitt.
Questo contatore di frequenza Arduino è economico e può essere facilmente realizzato, useremo ARDUINO UNO per misurare la frequenza del segnale, UNO è il cuore del progetto qui.
Per testare il misuratore di frequenza, creeremo un generatore di segnale fittizio. Questo generatore di segnale fittizio verrà realizzato utilizzando un chip timer 555. Il circuito del timer genera un'onda quadra che sarà fornita a UNO per il test.
Con tutto a posto avremo un frequenzimetro Arduino e un generatore di onde quadre. Arduino può anche essere utilizzato per generare altri tipi di forme d'onda come onda sinusoidale, onda a dente di sega ecc.
Componenti richiesti:
- 555 timer IC e 74LS14 Schmitt trigger gate o NOT gate.
- Resistenza da 1K Ω (2 pezzi), resistenza da 100Ω
- Condensatore 100nF (2 pezzi), condensatore 1000µF
- LCD 16 * 2,
- Vaso da 47KΩ,
- Breadboard e alcuni connettori.
Spiegazione del circuito:
Lo schema del circuito della misurazione della frequenza utilizzando Arduino è mostrato nella figura sottostante. Il circuito è semplice, un LCD è interfacciato con Arduino per visualizzare la frequenza del segnale misurata. 'Wave Input' andrà al Signal Generator Circuit, dal quale stiamo alimentando il segnale ad Arduino. Un trigger gate di Schmitt (IC 74LS14) viene utilizzato per garantire che solo l'onda rettangolare venga inviata ad Arduino. Per filtrare il rumore abbiamo aggiunto un paio di condensatori attraverso l'alimentazione. Questo frequenzimetro può misurare frequenze fino a 1 MHz.
Il circuito del generatore di segnale e il trigger di Schmitt sono stati spiegati di seguito.
Generatore di segnali utilizzando 555 Timer IC:
Prima di tutto parleremo del generatore di onde quadre basato su 555 IC, o dovrei dire 555 Astable Multivibrator. Questo circuito è necessario perché, con il frequenzimetro in posizione, dobbiamo avere un segnale la cui frequenza ci è nota. Senza quel segnale non saremo mai in grado di dire il funzionamento del frequenzimetro. Se abbiamo un quadrato di frequenza nota, possiamo usare quel segnale per testare il frequenzimetro Arduino Uno e possiamo modificarlo per regolazioni per la precisione, in caso di eventuali deviazioni. Di seguito è riportata l'immagine del generatore di segnale che utilizza 555 Timer IC:
Di seguito è riportato un tipico circuito di 555 in modalità Astable, da cui abbiamo derivato il circuito generatore di segnale sopra indicato.
La frequenza del segnale di uscita dipende da RA, resistori RB e condensatore C.L'equazione è data come, Frequenza (F) = 1 / (Periodo di tempo) = 1,44 / ((RA + RB * 2) * C).
Qui RA e RB sono valori di resistenza e C è il valore di capacità. Mettendo i valori di resistenza e capacità nell'equazione sopra otteniamo la frequenza dell'onda quadra di uscita.
Si può vedere che RB del diagramma sopra è sostituito da un vaso nel circuito del generatore di segnale; questo viene fatto in modo da poter ottenere un'onda quadra a frequenza variabile in uscita per test migliori. Per semplicità si può sostituire la pentola con una semplice resistenza.
Schmitt Trigger Gate:
Sappiamo che tutti i segnali di test non sono onde quadrate o rettangolari. Abbiamo onde triangolari, onde dei denti, onde sinusoidali e così via. Con l'UNO in grado di rilevare solo le onde quadrate o rettangolari, abbiamo bisogno di un dispositivo che possa alterare qualsiasi segnale in onde rettangolari, quindi utilizziamo Schmitt Trigger Gate. Schmitt trigger gate è una porta logica digitale, progettata per operazioni aritmetiche e logiche.
Questo gate fornisce OUTPUT in base al livello di tensione INPUT. Uno Schmitt Trigger ha un livello di tensione THERSHOLD, quando il segnale INPUT applicato al gate ha un livello di tensione superiore alla THRESHOLD del gate logico, OUTPUT diventa HIGH. Se il livello del segnale di tensione INPUT è inferiore a THRESHOLD, l'USCITA del cancello sarà BASSA. Di solito non otteniamo il trigger di Schmitt separatamente, abbiamo sempre un gate NOT dopo il trigger di Schmitt. Il funzionamento di Schmitt Trigger è spiegato qui: Schmitt Trigger Gate
Stiamo per usare 74LS14 circuito integrato, questo chip ha 6 porte trigger di Schmitt in esso. Queste porte SIX sono collegate internamente come mostrato nella figura sottostante.
La tabella della verità del gate di trigger di Schmitt invertito è mostrata nella figura sottostante, con questo dobbiamo programmare l'UNO per invertire i periodi di tempo positivo e negativo ai suoi terminali.
Ora alimenteremo qualsiasi tipo di segnale al gate ST, avremo un'onda rettangolare di periodi di tempo invertiti in uscita, alimenteremo questo segnale a UNO.
Spiegazione del codice del contatore di frequenza Arduino:
Il codice per questa misurazione della frequenza utilizzando arduino è abbastanza semplice e facilmente comprensibile. Qui stiamo spiegando la funzione pulseIn che è principalmente responsabile della misurazione della frequenza. Uno ha una funzione speciale pulseIn , che ci consente di determinare la durata dello stato positivo o la durata dello stato negativo di una particolare onda rettangolare:
Htime = pulseIn (8, HIGH); Ltime = pulseIn (8, LOW);
La funzione data misura il tempo per il quale è presente il livello Alto o Basso al PIN8 di Uno. Quindi in un singolo ciclo d'onda, avremo la durata dei livelli positivo e negativo in Micro secondi. La funzione pulseIn misura il tempo in micro secondi. In un dato segnale, abbiamo tempo alto = 10mS e tempo basso = 30ms (con frequenza 25 HZ). Quindi 30000 verrà memorizzato in Ltime integer e 10000 in Htime. Quando li sommiamo insieme avremo la Durata del ciclo, e invertendola avremo la Frequenza.
Di seguito sono riportati il codice completo e il video per questo frequenzimetro che utilizza Arduino.