Si aún no eres usuario, puedes crear una cuenta o entrar
Cómo leer las revoluciones de un ventilador con Arduino

Aqui os dejo un interesante artículo que muestra cómo leer las revoluciones de un ventilador de PC mediante su pin de RPM. El método es muy sencillo ya que básicamente consiste en utilizar una interrupción para saber cuándo el ventilador da una vuelta y luego simplemente contar. El auto a añadido un pequeño display LED de 7 segmentos para visualizar las revoluciones.





Enlace: Revoluciones de ventilador con Arduino

Código fuente

# Include "SevenSegment.h" 

 SevenSegment seg7(19,16,15,13, // ?1,?2,?3,?4, SevenSegment seg7 (19,16,15,13, / / 1 digit, 2 digit, 3 digit, 4 digit 
 18,14,11,9,8,17,12,10); // A,B,C,D,E,F,G,DP 18,14,11,9,8,17,12,10); / / A, B, C, D, E, F, G, DP 

 unsigned long lastPulseTime; unsigned long lastPulseTime; 
 unsigned long pulseInterval; unsigned long pulseInterval; 

 // ???????????????? / / Falling edge detection pulse rotation 
 void senseRotation( void ) { void senseRotation (void) ( 
 unsigned long cur = micros (); unsigned long cur = micros (); 
 unsigned long dif = cur - lastPulseTime; // ?????????? unsigned long dif = cur - lastPulseTime; / / difference between the previous edge 
 pulseInterval = (pulseInterval - (pulseInterval >> 2)) + (dif >> 2); // ???? pulseInterval = (pulseInterval - (pulseInterval>> 2)) + (dif>> 2); / / smooth 
 lastPulseTime = cur; lastPulseTime = cur; 
 } ) 

 void setup () { void setup () ( 
 lastPulseTime = 0; lastPulseTime = 0; 
 pulseInterval = 0; pulseInterval = 0; 
 attachInterrupt (0, senseRotation, FALLING ); // 0 = D2, FALLING = ????? attachInterrupt (0, senseRotation, FALLING); / / 0 = D2, FALLING = falling 
 seg7. begin (); // 7??LED???? seg7. begin (); / / 7 LED segment begins operation 
 } ) 

 unsigned long lastUpdateTime; unsigned long lastUpdateTime; 

 void loop () { void loop () ( 
 if (seg7. update ()){ // ??????????????????????????? if (seg7. update ()) (/ / called at short intervals as possible, so do dynamic lighting control 
 unsigned long cur = millis (); unsigned long cur = millis (); 
 if (cur - lastUpdateTime > 60){ // 60ms???LED??? if (cur - lastUpdateTime> 60) (/ / 60ms update interval LED 

 uint16_t rpm = 60000000 / (pulseInterval * 2); // RPM???? uint16_t rpm = 60000000 / (pulseInterval * 2); / / RPM find 
 seg7. print (rpm); // 7??LED???? seg7. print (rpm); / / 7 LED segment display update 

 lastUpdateTime = cur; lastUpdateTime = cur; 
 } ) 
 } ) 
 } )

Comparte esto con tus amigos!

Si te ha gustado, quizás también te interese...
Juego 2048 portátil con Arduino
Publicado el 16/07/2014
Cómo hacer un climatizador casero
Publicado el 19/06/2014

Comentarios:


Andoni Diaz Puerta
Enviado el 30/07/2010 (20:51)
Como siempre exelentisimo articulo, ahora ya se como trabajarle a mi ventilador en des-uso :)
Por cierto el tercer cable que traen los motores brushless(la mayoria) cumple la misma funcion?

Saludines
@_@

Jose Daniel Hernandez Hernandez
Enviado el 31/07/2010 (10:44)
Antoni, los motores Brushless no tienen lectura de velocidad, los tres hilos son los hilos de las bobinas internas que tienen, deben ser controlador por un variador "ESC" que va rotando el campo magnetico por el estator del motor a diferente velocidad dependiendo de la velocidad de referencia y la lectura de velocidad se hace por Fuerza Contraelectromotriz.

Saludos.

Andoni Diaz Puerta
Enviado el 31/07/2010 (10:54)
Gracias, me has resuelto una gran duda, es que nunca habia tocado ninguno :D

Saludos

Chema Alcérreca
Enviado el 03/08/2010 (08:45)
De hecho en un BL tú pones la velocidad Andoni.

Andoni Diaz Puerta
Enviado el 03/08/2010 (16:07)
Regulando la intensidad?

Saludos

gabre abre
Enviado el 24/11/2011 (03:57)
como hago por ejemplo si quiero medir la velocidad de un motor para el diseno en aeromodelismo??? ayuda!

David López
Enviado el 05/04/2013 (22:39)
Una pregunta no hay ningun filtro del sensor?? no genera mucho ruido?

jose daniel navarro mendez
Enviado el 26/05/2013 (08:39)
hola intento compilar este codigo y da muchos errores alguien tendria el codigo bueno.
muchas gracias.
mandragora21@hotmail.com


Enviar comentario

Debes disponer de una cuenta de usuario para publicar un comentario.

Si aún no dispones de una cuenta, únete a la comunidad de BricoGeek.com y registrate ahora, te llevará tan solo un minuto y es gratis. También puedes identificate si ya dispones de una cuenta de usuario.
rss

Conecta con BricoGeek.com

Canales sociales

Nos gusta mucho estar en contacto con nuestros lectores y saber más acerca de sus proyecto e inventos.


También puedes sugerir una noticia en el blog
Tienda de Electrónica DIY y Arduino

Lo que se cuece...

Comentarios recientes Más comentado Top noticias
Feed de novedades

Tienda BricoGeek.com

Electrónica para tus proyectos!

Estás preparando un proyecto o quieres iniciarte en la electrónica? Encuentra todo lo que necesitas en la tienda.

Visita la tienda BricoGeek!

La familia de BricoGeek.com

Conoce toda la gente que hace que BricoGeek.com sea posible cada día:

Alejandro Mallo
Colaborador
Puedes hacer click sobre un autor para ver todas sus noticias


Etiquetas más populares:

Descubre todo el contenido de bricogeek.com con las etiquetas más populares:


© BricoGeek.com 2005-2014

Demuestra lo que sabes hacer!