Tutorial para hacer un medidor de revoluciones con Arduino

En el siguiente tutorial ofrecemos la explicación detallada de cómo hacer un medidor de revoluciones con una carcaza diseñada e impresa en una impresora 3D y con un sensor conformado por un led infrarojo y un sensor sensible a la luz infraroja.

Materiales

  • Módulo de pantalla oled
  • Batería de 9 voltios
  • Amplificador operacional
  • Potenciómetro
  • Interruptor para encender y apagar
  • circuito del sensor con el amplificador LMB24
  • Una pequeña PCB perforada
  • Un botón
  • Un pequeño potenciómetro de 10k
  • 1 Arduino Nano

Objetivos del proyecto

Primero que nada debemos saber los conceptos básicos de este medidor rpm, los cuales se basan en la detección o no de la Luz infrarroja usando un led infrarrojo, emitiendo una luz.

La razón por la que estamos usando luz infrarroja en vez de luz visible normal es que ya estamos rodeados de luz visible por lo que sería imposible hacer la diferencia entre recibir luz o no, con la onda infrarroja podríamos lograr mejores resultados y distancias más largas con menos ruido (en la señal digital).

El segundo componente es un transistor sensible al infrarrojo que funciona exactamente como transistor BJT común, básicamente este es un interruptor activado por luz.

 

Conexiones

Ahora hablemos un poco del circuito de tensión que es algo como esto:

La salida será el emisor del transistor: Añadimos una resistencia de pull down en la salida, de esta forma cuando el circuito esté abierto la salida será tierra.

 

 

Cuando el circuito se cierre, la salida tendrá un valor en alto, en este caso 5 voltios porque ese es el voltaje del arduino. En realidad esto será la salida de un divisor de voltaje entre la resistencia del transistor y el pull down por lo tanto la resistencia pull down debería tener un valor alto.

 

 

En este caso 4,7 kiloohms, de este modo, cuando el transistor esté conduciendo la caída de voltaje entre el colector y el emisor debería ser muy pequeña y todo el voltaje debería caer sobre la resistencia.

 

 

Luego también deberíamos añadir una pequeña resistencia alrededor de 100 ohms al pin positivo de led infrarrojo para limitar la corriente y no quemar el led.

 

 

Colocamos el sensor prototipo delante de un disco giratorio con una franja blanca, en mi osloscopio tengo un voltaje bajo siempre y cuando no haya luz reflejándose en el sensor y eso representa el material negro.

 

 

Para mejorar esta señal llena de ruido debemos usar un amplificador operacional, he usado el amplificador LM324.

 

 

Colocamos el amplificador en una placa de pruebas y conecto 5 voltios al pin de entrada del amplificador y también comparte tierra.

 

 

 

 

 

 

 

Ahora conecte la salida del sensor a la entrada positiva del amplificador operacional y la entrada negativa a un divisor de voltaje hecho con un potenciómetro.

 

 

de esta forma podríamos regular la distancia de detección del sensor dependiendo de la intensidad de la Luz el amplificador operacional, en este caso actuará como un comparador, cuando la tensión de entrada positiva es más alta que la fijada en la entrada negativa tenemos un pulso positivo en la salida del amplificador, esto mejorará la señal cuadrada que se va a crear como podemos ver aquí en mi osciloscopio, eso es todo, el sensor está listo.

 

Al usar este papel en blanco y negro verifico la funcionalidad, el color negro debería absorber toda la luz por lo que no se reflejará luz en la base del transistor por lo que el circuito aún está abierto, cuando se coloca el color blanco delante del led la luz se refleja y tocará la base del transistor y se cierra el circuito.

 

 

Entonces imagina una franja blanca en el exterior del motor, cada vez que la franja pasa por delante del sensor tenemos 0 voltios de la salida y 5 voltios en el resto del tiempo, ahora debemos conectar la salida al arduino y medir el tiempo entre cada pulso que crea el sensor.

 

 

Pero antes de eso coloco el sensor delante de un disco giratorio y ajusto el potenciómetro para tener una distancia de trabajo alrededor de 10 centímetros.

 

 

Una vez hecho eso conecto la salida del amplificador al arduino y añado esta pantalla de oled con i2c.

 

 

Ahora cargo un pequeño código de prueba que debe imprimir el valor de rpm en la pantalla.

 

 

Ahora vamos a construir este medidor de rpm:

Para hacer las confecciones debe usar este esquema.

 

 

He diseñado mi carcasa en blender, impresa con material PLA tres perímetros y 20% de relleno con una boquilla de 0.4 milímetros, creé el código G, lo guardé en una tarjeta SD y use mi impresora 3D throne XX5 para imprimir la caja. Si deseas que postee tutoriales de impresión 3D tan sólo coméntalo en al final del post.

 

 

 

 

 

 

 

Primero sueldo un cable negro y rojo a los pines positivos y negativos del led y aíslo las conexiones soldadas.

 

 

Pega en su lugar el led y el transistor de infrarrojo en la punta de la caja, también añade este pequeño lente en frente del led para mejorar el punto de luz, ya que quiero que la luz se centre en un área más pequeña para poder entrar dentro de la tira blanca.

 

 

 

 

 

 

 

Debemos asegurarnos que la onda de luz termine exactamente en la base del transistor dentro del agujero de la caja, cierro la punta de la carcasa con súper glue y lo dejo por un tiempo para que se adapte.

 

 

Luego sueldo el cable de la batería de 9 voltios al interruptor principal y el interruptor al pin de entrada V del arduino nano, sueldo ground directamente al pin de tierra de esta forma el sistema se enciende cuando se activa el interruptor.

 

 

Conecto el pin del reloj de la pantalla oled y el pin de datos a los pines A4 y A5 del arduino esos son los pines del puerto I12 y si está utilizando el arduino nano también comparta tierra y 5 voltios a la pantalla oled.

 

 

Sueldo circuitos del sensor en la pcb siguiendo el esquema pero soldó el potenciómetro de distancia con cables no al pcb, quiero colocar este potenciómetro en el exterior de la caja de plástico.

 

 

Recuerde conectar a tierra y alimentar 5 voltios al amplificador y al circuito del sensor. También soldaré la salida del amplificador al pin digital DI3 del arduino y conectare también 5 voltios y tierra.

 

 

Finalmente sueldo el botón con una resistencia de pull down y conecto la salida del botón al pin digital 9, usaré este botón para indicar al sensor cuándo medir y, en caso contrario poner el arduino en el modo de baja potencia sin medir.

 

 

Pego el interruptor principal con pegamento caliente en el exterior de la caja una vez más usando una pequeña cantidad de pegamento caliente, coloque la pantalla oled y asegúrese de que esté bien fijada.

 

 

Cuando la pantalla está lista en su lugar, atornillo el botón y añado un poco de pegamento caliente una vez tengo el botón colocado en el margen de la carcasa.

 

 

También pego el potenciómetro en el interior de la caja de la siguiente manera, ahora conecte la batería y eso es todo, el circuito está listo es hora de programar el arduino.

 

 

 

 

 

 

 

Código

1.- Primero que nada, importamos las librerías:

El proyecto necesita dos librerías para compilar. Necesitamos la librería Adafruit GFX y la librería para la pantalla OLED.

Una vez descargadas las librerías, abre el IDE del arduino, vamos a Sketch>Include Library>Add .ZIP Library. Selecciona los archivos zip descargados para instalarlos.

2.- Descarga el código del proyecto en este link y pégalo en el IDE del arduino. En la primera parte definimos las variables para la pantalla led.

 

 

3.- Definimos las entradas del sensor y el pulsador que configuramos como entradas, además en el bucle de la configuración comenzamos la comunicación I12 con la pantalla usando su dirección de I12.

 

4.- Si no conoce esa dirección use el siguiente código de escáner i12 descarga el código y conecte el módulo a los pines A4 y A5 que son datos y el reloj cargue el código y abra el monitor serie a una velocidad de varios de 9.600, aquí está la dirección i12 del dispositivo.

 

 

5.- Ahora en nuestra función loop, si se presiona el botón medimos el tiempo entre cada pulso que el sensor nos da

 

 

El procedimiento es así, cuando detectamos un piso en alto o un franco positivo comenzamos a contar usando la función Micros, cuando detectamos el franco negativo seguimos contando.

 

6.- Finalmente cuando detectamos el segundo franco positivo dejamos de contar y hacemos la diferencia entre la primera medición y la medición actual.

 

 

y eso nos dará el tiempo entre pulsos que es el tiempo en microsegundos para una rotación.

 

 

Si conocemos el tiempo para una rotación podríamos obtener las rotaciones totales en un minuto completo diciendo un minuto multiplicado por la longitud del pulso medido y eso es todo.

 

 

7.- Ahora debemos dividir el valor en la pantalla oled y ya está.

 

 

Si no se presiona el botón el arduino estará en modo de bajo consumo.

 

 

 

 

 

 

 

 

 

 

8.- Sube el código al arduino y cierra la caja con tornillos M3 para probarlo.

 

 

Pego una franja blanca de cinta adhesiva en el disco giratorio conectado a este motor, el cual es un motor de paso a paso para poder controlar la velocidad fácilmente. Sé que éste motor necesita 200 pasos para cada rotación por lo que a una frecuencia de 2 kilovoltios debería girar a 10 revoluciones por segundo o 60” revoluciones por minuto.

 

 

 

 

 

 

 

Coloco el sensor en frente de él y el resultado es bastante preciso.

 

 

También pruebo el medidor con velocidades más altas usando un motor DC el medidor de RPM funciona podría medir más de 10mil revoluciones por minuto. Recuerda apagar el dispositivo cuando no lo está usando.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

15 + diecinueve =