Un frecuencímetro es un dispositivo que mide la frecuencia de una señal periódica. En combinación con una alarma, puede ser una herramienta invaluable para aplicaciones donde es crucial monitorear y controlar la frecuencia de determinadas señales. Utilizando Arduino, es posible construir un frecuencímetro preciso y versátil, que además de medir la frecuencia, active una alarma cuando esta se salga de un rango predefinido.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Componentes electrónicos del proyecto
Arduino Nano
El Arduino Nano es una placa pequeña, completa y compatible con la placa de pruebas basada en el ATmega328 (Arduino Nano 3.x). Tiene más o menos la misma funcionalidad del Arduino Duemilanove, pero en un paquete diferente. Solo carece de un conector de alimentación de CC y funciona con un cable USB Mini-B en lugar de uno estándar.
Microcontrolador | ATmega328 |
Arquitectura | AVR |
Tensión de funcionamiento | 5 V |
Memoria flash | 32 KB de los cuales 2 KB utiliza el gestor de arranque |
SRAM | 2 KB |
Velocidad de reloj | 16 MHz |
Pines analógicos IN | 8 |
EEPROM | 1 KB |
Corriente CC por pines de E / S | 40 mA (pines de E / S) |
Voltaje de entrada | 7-12 V |
Pines de E / S digitales | 22 (6 de los cuales son PWM) |
Salida PWM | 6 |
El consumo de energía | 19 mA |
Tamaño de PCB | 18 x 45 mm |
Peso | 7 g |
Diagrama de pines
Un Zócalo para arduino
Pines hembra
Cables dupont hembra macho
Display oled sh1106
Se trata de un módulo de pantalla OLED monocromática DE 128×64 puntos con interface I2C .Que presenta varias ventajas en comparación con pantallas LCD, y podemos destacar su alto brillo, un muy buen contraste, un ángulo de visión más amplio, y bajo consumo de energía. ES compatible con Arduino Rasberry Pi y microcontroladores PIC entre otros. Trabaja con niveles lógicos de 3.3V a 5V tiene un angulo de visión mayor a los 160 grados. el Tamaño de la pantalla es de 1,3 pulgadas. Se alimenta con un voltaje de 3.3V a 5V Se lo puede usar en aplicaciones como relojes inteligentes, MP3, termómetros, instrumentos, y proyectos varios, etc.
Características
- Interface: I2C(3.3V / 5V logic level)
- Resolution: 128 x 64
- Angle of view: >160 degree
- Display color: Blue
- Display size: 1.3 inch
- Driver IC: SH1106
- Power supply: DC 3.3V~5V
- Operating temperature: -20~70’C
- Application: smart watch, MP3, thermometer, instruments, DIY projects, etc.
Un led de 5 mm
Un resistor de 330 Ohm
Módulo Buzzer
PCB
Diagrama electrónico del pcb
Código fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
#include "U8glib.h" // Librería para el control del display OLED #include <FreqCount.h> // Definición de los pines const int buzzerPin = 12; // Pin para el buzzer const int ledPin = 4; // Pin para el LED // Definición de umbrales de frecuencia const unsigned int umbralInferior = 500; // Umbral inferior de frecuencia const unsigned int umbralSuperior = 1500; // Umbral superior de frecuencia U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI // Se habilita esta línea según el display a usar en este caso el driver SH1106 unsigned long count = 0; void setup() { Serial.begin(115200); // Velocidad del puerto serial FreqCount.begin(1000); pinMode(buzzerPin, OUTPUT); // Configuración del pin del buzzer como salida pinMode(ledPin, OUTPUT); // Configuración del pin del LED como salida } void loop() { if (FreqCount.available()) { // Devuelve verdadero cuando hay una nueva medida disponible count = FreqCount.read(); // Devuelve la medición más reciente, la medición se hace por defecto en el pin número 5 del Arduino Serial.println(count); // Imprime el valor de la frecuencia obtenida en el monitor serial u8g.firstPage(); do { draw(); // Llama a la función draw } while (u8g.nextPage()); // Comprobar si la frecuencia está fuera del rango permitido if (count < umbralInferior) { buzzer(40);//Llama a la función buzzer } else { digitalWrite(buzzerPin, LOW); // Desactivar alarma sonora digitalWrite(ledPin, LOW); // Desactivar alarma el led } // Comprobar si la frecuencia está fuera del rango permitido if (count > umbralSuperior) { buzzer(20);//Llama a la función buzzer } else { digitalWrite(buzzerPin, LOW); // Desactivar alarma sonora digitalWrite(ledPin, LOW); // Desactivar alarma visual } } } void draw(void) { // Imprimimos en pantalla el valor de la frecuencia obtenida u8g.setFont(u8g_font_unifont); // Imprimir frecuencia medida u8g.setPrintPos(0, 20); u8g.print("Freq:"); u8g.print(count); u8g.print("Hz"); // Imprimir umbrales de frecuencia inferior y superior u8g.setPrintPos(0, 40); u8g.print("U.Inf:"); u8g.print(umbralInferior); u8g.print("Hz"); u8g.setPrintPos(0, 60); u8g.print("U.Sup:"); u8g.print(umbralSuperior); u8g.print("Hz"); } void buzzer(int t){ digitalWrite(ledPin, HIGH); // Enciende el led digitalWrite(buzzerPin, HIGH); // Activar alarma sonora delay(t); digitalWrite(buzzerPin, LOW); // Activar alarma sonora delay(t); digitalWrite(buzzerPin, HIGH); // Activar alarma sonora delay(t); digitalWrite(buzzerPin, LOW); // Activar alarma sonora delay(t); digitalWrite(ledPin, LOW); // Apaga el led } |
PROYECTO RECOMENDADO