You are on page 1of 10

Un tacmetro es una herramienta til para el recuento de las RPM (revoluciones

por minuto) de una rueda o bsicamente cualquier cosa que hace girar. La manera ms
fcil de construir un tacmetro est utilizando un transmisor y un receptor. Cuando el
vnculo entre ellos se rompe, usted sabe que algo est girando y puede ejecutar un
cdigo que calcula las RPM actual de lo que se hace girar para romper el vnculo
transmisor / receptor.
En este artculo vamos a explorar cmo utilizar un transmisor y receptor de
infrarrojos romper haz par similar a la PIC tacmetro proyecto constru hace unos
meses, pero debido a la demanda popular, el Arduinosistema ser utilizado para todo
el procesamiento y romper haz conteo interrupcin. El resultado final ser un LCD 16x2
mostrar las RPM de algunos ventiladores de ordenador.
Propsito y Descripcin general de este proyecto
El objetivo de este proyecto es la construccin de una sola entrada, sistema de
salida nica. La entrada vendr en la forma de un cambio de estado de la seal de alto
(+ 5v) a menor (+ 0v) que se producen cuando la ruptura de haz de infrarrojos se
interrumpe y el Arduino entonces incrementar un contador interno. Conforme pasa el
tiempo, el procesamiento y clculo adicional se producen como las interrupciones
estn gatillo y la pantalla LCD de salida de la RPM calculado.
Para crear la ruptura haz IR, vamos a utilizado un IR LED con una resistencia de
bajo valor para que brilla muy brillante. El receptor ser un fototransistor que empuja
"on" cuando se detecta la luz del LED IR. Un ventilador del equipo se coloca entre el
enlace de IR y encendido para generar continuamente una interrupcin a travs de
alguna circuitera lgica transistor adicional. Para la salida, la interfaz LCD Arduino ser
utilizado que vimos la semana pasada para que podamos emitir el valor final RPM para
la pantalla LCD.
Partes
Arduino UNO
LCD 16x2
Breadboard
5K Trimpot
Jumper Wire
SIP
2x 2N2222 NPN Transistor
LED infrarrojo
Fototransistor
10 Resistencia
100k Resistencia
15k o 16k Resistencia
Ventilador para ordenador
Lista de piezas Detalles
Las piezas utilizadas en este proyecto estn listadas anteriormente, pero las
partes ms interesantes y necesarios se enumeran a continuacin con un poco ms de
detalle para describir su funcin. Arduino UNO
Esta es la placa Arduino que
vamos a utilizar para procesar los pulsos de ruptura de haz de infrarrojos que nos dicen
cuando el ventilador de la CPU se ha movido. El Arduino utilizar estos pulsos, junto
con un temporizador para averiguar lo que el RPM actual del ventilador es. 16x2

LCD
Despus de la Arduino ha descubierto lo que el RPM curent es, que se
mostrar en esta pantalla LCD para que sea evidente para el usuario . 5K
Trimpot
Este potencimetro se utiliza para ajustar el contraste de la pantalla
LCD 16x2. Es da una salida anaolg variando de + 5v a 0, lo que la pantalla LCD se
traduce en un ajuste de brillo. IR Emisor Diode y Fototransistor
El
fototransistor se enciende cada vez que la luz infrarroja intensa brilla en l. As que
cada vez que el LED IR est encendido y brillante, mantiene el fototransistor sesgada
"on", pero si se bloquea el LED IR, por ... por ejemplo una hoja de ventilador de la CPU,
el fototransistor es sesgada "off". 2N3904 y2N3906
Estos transistores se
utilizarn principalmente como palancas de cambio de nivel para asegurar la salida de
pulsos del IR ruptura viga a la Arduino venir en forma de + 0V a + 5v y nada en el
medio.
Descripcin Esquema
El esquema para este proyecto es un poco ms complicado que el de la semana
pasada Interfaz 16x2 LCD. Para empezar, la interfaz LCD est simplificado para tener
slo 2 lneas de control y 4 lneas de datos. A continuacin, el circuito de ruptura haz IR
tacmetro se aade en el lado para hacer las cosas un poco ms complejo.
Especficos esquemticos
16x2 Interfaz LCD
2 pines de control y 4 pines de datos se conectan desde el Arduino para la
pantalla LCD. Estos son lo que va a decir la LCD qu hacer y cundo. IR Break-Beam
Circuito
de seal del circuito de ruptura haz va a la entrada digital pin # 2 en el
Arduino.Esto interrumpe la Arduino para que pueda contar con un pulso que acaba de
ser registrado y el tacmetro est leyendo datos.
Diseo de Hardware
Hay dos partes principales del diseo de hardware aqu. El primero es conectar
la pantalla LCD para el Arduino como lo hicimos en el LCD 16x2 Arduino interfaz. El
segundo es la construccin del circuito ruptura haz IR. Todava no hay demasiadas
partes, por lo que no debera tomar mucho tiempo para construir. Construccin del
Circuito Complejo
A continuacin puedes ver todas las piezas necesarias para
empezar a cablear el circuito exactamente como se vio en los esquemticos detalles.
El Software
Hay dos partes principales de cdigo que se ven explicados y en detalle a
continuacin: -Main Loop LCD Actualizacin -Interrupt tiempo de
actualizacin
El bucle principal se ve a continuacin es donde el RPM se
calcuated y la pantalla se actualiza. Desde el bucle principal es mientras gigantesca (1)
lazo, lo que significa que se ejecuta una y otra vez para siempre, el RPM se calcualted y
LCD actualiza varias veces al segundo. La funcin de interrupcin est contando el
tiempo entre las interrupciones de manera que en el bucle principal el clculo RPM se
puede hacer. 16x2 texto esttico LCD

#include <LiquidCrystal.h>
LiquidCrystal lcd(3, 5, 9, 10, 11, 12);

volatile float time = 0;


volatile float time_last = 0;
volatile int rpm_array[5] = {0,0,0,0,0};
void setup()
{
//Digital Pin 2 Set As An Interrupt
attachInterrupt(0, fan_interrupt, FALLING);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("Current RPM:");
}
//Main Loop To Calculate RPM and Update LCD Display
void loop()
{
int rpm = 0;
while(1){
//Slow Down The LCD Display Updates
delay(400);
//Clear The Bottom Row
lcd.setCursor(0, 1);
lcd.print("
");
//Update The Rpm Count
lcd.setCursor(0, 1);
lcd.print(rpm);
////lcd.setCursor(4, 1);
////lcd.print(time);
//Update The RPM
if(time > 0)
{
//5 Sample Moving Average To Smooth Out The Data
rpm_array[0] = rpm_array[1];
rpm_array[1] = rpm_array[2];
rpm_array[2] = rpm_array[3];
rpm_array[3] = rpm_array[4];
rpm_array[4] = 60*(1000000/(time*7));
//Last 5 Average RPM Counts Eqauls....
rpm = (rpm_array[0] + rpm_array[1] + rpm_array[2] + rpm_array[3] + rpm_array[4]) / 5;
}
}

}
//Capture The IR Break-Beam Interrupt
void fan_interrupt()
{
time = (micros() - time_last);
time_last = micros();
}

Conclusin
En general, considero que este proyecto sea un xito. Los resultados fueron en
realidad ms prometedor que el tacmetro PIC ... Aunque, culpo de que el tiempo y la
experiencia. De todos modos, el sistema funcion como lo diseamos y lo
suficientemente fiable que vimos los resultados que esperbamos ... 3000 fans de RPM
corri a aproximadamente 3000 RPM y as sucesivamente. Espero que hayan disfrutado
leyendo este artculo y aprendido algo acerca de construir su propio tacmetro con un
Arduino!
Si usted tiene alguna duda, te suplico que ... no seas tmido, echa un vistazo a
losforos o hacer una pregunta all. Yo les visita con regularidad y quiero conseguir
comentarios y preguntas.

Proyectos de Arduino, hacen cuentarrevoluciones arduino con Arduino.


Lista de piezas;
1) 1x 16 2 pantalla LCD paralela (compatible con controlador Hitachi HD44780)
2) 1x Arduino
3) 1x 10k potencimetro
4) 1x 10k resistencia
5) 1x IR LED
6) 1x IR Fototransistor
7) Cable Jumper

Instruccin;
1) Conecte todo cable de puente como se muestra en el diagrama.

2) Conectar IR LED al pin digital 13.


3) Conecte IR Fototransistor (oscuro) a digital pin 2. Hacer plomo Seguro corto
conectado al pin digital 2 y plomo ms tiempo en tierra.
Sube este cdigo a su arduino

/*
* Tacmetro ptico

*
* Utiliza un LED IR e IR fototransistor para implementar un tacmetro ptico.
* El LED IR est conectado al pin 13 y corri continuamente.
* Pin 2 (interrumpir 0) est conectado a travs del detector de IR.
*
* Cdigo basado en: www.instructables.com/id/Arduino-Based-Optical-Tachometer/
* Codificado por: arduinoprojects101.com
*/
int ledPin = 13;

// IR LED conectado al pin digital 13

voltil byte rpmcount;


unsigned int rpm;
sin firmar larga timeold;
// Incluyen el cdigo de biblioteca:
#include <LiquidCrystal .h>
// inicializar la biblioteca con los nmeros de los pines de interfaz
LiquidCrystal lcd (7, 8, 9, 10, 11, 12);
void rpm_fun ()
{
// Cada rotacin, esta funcin de interrupcin se ejecuta dos veces, as que tome
eso en cuenta para
// calcular RPM
// Actualizacin recuento
rpmcount ++;
}
void setup ()
{
lcd. comenzar (16, 2); // intialise la pantalla LCD
// Interrupcin 0 es pin digital 2, de modo que es donde est el detector de IR
est conectado
// dispara en CAER (cambio de mayor a menor)

attachInterrupt (0, rpm_fun, QUE CAE);


// Activar IR LED
pinMode (ledPin, SALIDA);
digitalWrite (ledPin,ALTO);
rpmcount = 0;
rpm = 0;
timeold = 0;
}
void loop ()
{
// RPM de actualizacin cada segundo
de retardo (1000);
// No te alarmas de proceso durante los clculos
detachInterrupt (0);
// Tenga en cuenta que esto sera 60 * 1000 / (millis () - timeold) * rpmcount si la
interrupcin
// pas una vez por revolucin en lugar de dos veces. Otros mltiplos podran
utilizarse
// para hlices mltiples palas o ventiladores
rpm = 30 * 1000 / (millis () - timeold) * rpmcount;
timeold = millis ();
rpmcount = 0;
// Imprima resultado de lcd
lcd. Borrar ();
. lcd de impresin ("RPM =");
. lcd de impresin (rpm);
// Reinicie el proceso de interrupcin
attachInterrupt (0, rpm_fun, QUE CAE);
}

Nota:
Este rpm lectura de cdigos con 2 hlice en el motor. Esta media 2 corte del haz de
infrarrojos contar como 1 revolucin. Puede modificar esta lnea para adaptarse a
su uso;
rpm = 30 * 1000 / (millis () - timeold) * rpmcount;

You might also like