About Taringa!

Popular channels

Frecuencimetro casero con Arduino

Hola a todos
Este es mi nuevo y humilde proyecto que pongo a consideración de todos los taringueros.-
Se trata de un simple frecuencímetro con un Arduino nano.-(Puede ser cualquier Arduino!!)
Por ahora esta poco desarrollado . pero seguro se puede mejorar.-
Para comenzar use en 555 funcionando como astable con un resistor multivueltas para poder variar la frecuencia y usarlo como generador de pulsos.-
No voy a explicar aquí el funcionamiento de este versátil integrado ya que hay mucha información al respecto.-
Para señales no cuadradas se puede conformar la misma con una bascula de Smith y luego atacar al Arduino.-
Estuve mirando por la web varios proyectos pero no vi ninguno que se apoyara en mi idea
Que se me ocurrió?? Usar la función pulseIn.-
La misma devuelve el tiempo en micro segundos del largo de un pulso ; ya sea que pase de 0 a 1 o de 1 a cero. Y ..... efectivamente eso es lo que me hace falta !!!
Si puedo medir esos dos tiempos , llamemos tiempo 1 y tiempo 2 tengo el periodo y por consiguiente la frecuencia . Sencillo no ???
Por lo tanto me puse manos a la obra y desarrolle un skecth muy simple que prácticamente no necesita explicación. La salida se hace por el monitor serial ; pero seria sencillo usar un LCD
Lo he probado a distintas frecuencias obteniendo; creo yo ; una una aceptable exactitud , que obviamente depende de lo certera que pueda ser la función pulseIn().-
Debido a que no tengo a mi alcance un frecuencimetro de laboratorio lo que hice fue usar una de las versiones del osciloscopio con la placa de sonido ( bastante limitado !! ) solo hasta los 20 Khz . Pero bueno ; es lo que tengo a mano , para poder comparar las medidas dadas por el arduino con algo !!!
Muestro solo un ejemplo de 50 Hz . Vale aclarar que no tiende nada que ver con la frecuencia de la red. Solo tome ese valor que me daba el 555 en ese caso !!
Ademas debido a las características de la función seguramente este proyecto no pueda medir mas allá de algunos Khz. Pero si pensamos que podemos hacer una adaptación relativamente sencilla para convertirlo en un tacómetro ; se podrán tener lecturas de rpm con aceptable exactitud.-
Adjunto algunas capturas de pantallas.-








A continuación va el código:
---------------------------------------------------------------------------------------

unsigned long duracion1;
unsigned long duracion2;

void setup ()
{
Serial.begin(9600);
}

void loop ()
{
duracion1 = pulseIn (2, HIGH,100000000);
duracion2 = pulseIn (2, LOW,100000000);
Serial.println();
Serial.print("periodo 1: ";
Serial.print(duracion1);
Serial.print("ms";
Serial.println();
Serial.print("periodo 2: ";
Serial.print(duracion2);
Serial.print("ms";
//Serial.println((duracion1+duracion2)/1000);// periodo
//Serial.println((duracion1)/1000);// periodo
//Serial.println((duracion2)/1000);// periodo
Serial.println();
Serial.print("frecuencia: ";
Serial.print(1000000/(duracion1+duracion2)); //frecuencia
Serial.print("Hz";
Serial.println();
delay(1000);
}

--------------------------------------------------------------

Observen se las similitudes de ambas medidas !!!!
Bueno creo que no queda nada por comentar . No hago diagrama del proyecto ya que es muy simple solo hay que armar el astable con el 555 . La salida del mismo (pata 3 ) se conecta al pin digital 2 del arduino con una resistencia de 1K o similar.-
Les animo a armarlo en un protoboard y probarlo.
Ademas serán bienvenidas las sugerencias o correcciones .
1Comment