Medidor de Frecuencia DIY con Arduino Nano – Hasta 6.5 MHz
Componentes y materiales
| Componente | Cantidad |
|---|---|
| Arduino Nano R3 | 1 |
| Pantalla LCD 16x2 (paralela) | 1 |
| Transistor NPN genérico (p.ej. 2N2222, BC547) | 1 |
| Interruptor deslizante (selector forma de onda) | 1 |
| Pulsador (selector intervalo medida) | 1 |
| Resistencias, condensadores, diodos (para amplificador formador) | 1 set |
Herramientas necesarias
- Soldador y estaño
Descripción del proyecto
Este medidor de frecuencia basado en Arduino Nano mide señales rectangulares, sinusoidales y triangulares desde unos pocos Hz hasta 6.5 MHz. Ofrece tres intervalos de integración: 0.1 s, 1 s y 10 s.
Para señales rectangulares no hace falta el amplificador formador; la señal va directo al pin digital 5 (T1). Para otras formas de onda, el amplificador acondiciona la señal a niveles lógicos.
El código es muy simple gracias a la librería FreqCount (Paul Stoffregen).
Componentes del dispositivo
- Arduino Nano
- Placa amplificadora formadora
- Pantalla LCD 16x2
- Selector forma de onda (interruptor deslizante)
- Conector JACK entrada señal
- Selector intervalo: 0.1 s / 1 s / 10 s (pulsador)
Calibración
Para calibrar, edita FreqCount.cpp en la librería FreqCount:
// Busca:
#if defined (TIMER_USE_TIMER2) && F_CPU == 12000000L
float correct = count_output * 0.996155;
// Reemplaza por:
#if defined (TIMER_USE_TIMER2) && F_CPU == 16000000L
float correct = count_output * 1.000000; // Ajusta tu factor de corrección
Aplica una señal de 1 MHz conocida y ajusta el factor hasta leer 1.000000 MHz. Vuelve a subir el sketch.
Código
#include
#include
LiquidCrystal lcd(12, 11, 6, 4, 3, 2); // RS, E, D4, D5, D6, D7
void setup() {
lcd.begin(16, 2);
pinMode(7, INPUT); // Pulsador cambio intervalo
FreqCount.begin(1000); // Inicio: 1 s
}
unsigned long f;
float f0;
int x, n = 3, r;
void loop() {
// Cambio de intervalo con pulsador (pin 7)
if(digitalRead(7) == HIGH) { n++; x = 0; delay(100); }
lcd.setCursor(0,1);
if(n == 1) { if(x==1) FreqCount.begin(100); r = -1; lcd.print("T = 0.1 s "); }
if(n == 2) { if(x==1) FreqCount.begin(10000); r = 1; lcd.print("T = 10 s "); }
if(n == 3) { if(x==1) FreqCount.begin(1000); r = 0; lcd.print("T = 1 s "); }
if(n > 3) n = 1;
lcd.setCursor(0,0);
lcd.print("F = ");
// Formateo según rango e intervalo
if(FreqCount.available()) { f = FreqCount.read(); lcd.setCursor(10,1); lcd.print("***"); }
// Visualización adaptativa (MHz/kHz con decimales variables)
if(n==3) {
if(f >= 1000000) { f0 = f/1000000.0; lcd.print(f0, 6+r); lcd.print(" MHz"); }
else { f0 = f/1000.0; lcd.print(f0, 3+r); lcd.print(" kHz"); }
}
if(n==1) {
if(f >= 100000) { f0 = f/100000.0; lcd.print(f0, 6+r); lcd.print(" MHz"); }
else { f0 = f/100.0; lcd.print(f0, 3+r); lcd.print(" kHz"); }
}
if(n==2) {
if(f >= 10000000) { f0 = f/10000000.0; lcd.print(f0, 6+r); lcd.print(" MHz"); }
else { f0 = f/10000.0; lcd.print(f0, 3+r); lcd.print(" kHz"); }
}
delay(200);
lcd.clear();
}
Librería FreqCount
Descarga: FreqCount-master.zip
Esquemáticos
Proceso de manufactura
- Construye un reloj Numitron retro con Arduino: Simple, fiable y eficiente energéticamente
- Construya un osciloscopio Arduino de 20 kHz en LCD Nokia 5110: Guía DIY fácil
- Construye tu Propio Juego de Ruleta de 37 LEDs con Arduino Nano
- Detector de terremotos DIY con ADXL335 – Acelerómetro 3 ejes de baja potencia
- Controlador DIY para soldador 862D+ — Precisión y fiabilidad
- Construye un juego Tetris con Arduino Nano en matriz LED 16x8 DIY
- MobBob: Robot Arduino Impreso en 3D, Controlado por Smartphone Android
- Never Ride Alone: Sistema inteligente de seguridad para bicicletas
- Diseño de una Cerradura de Combinación de 4 Bits con Puertas XOR y NOR
- Multímetros: De Analógicos a Digitales — Guía Completa
- Medición de Frecuencia y Fase en Sistemas de Potencia CA