16/09/2023
Arduino, con su versatilidad y bajo costo, se ha convertido en una herramienta popular para una gran variedad de proyectos, incluyendo la medición de revoluciones por minuto (RPM). Este tutorial te guiará paso a paso en la construcción de un sistema para contar RPM utilizando un switch mecánico y una placa Arduino. Aprenderás cómo conectar los componentes, escribir el código y analizar los resultados. Cubriremos diferentes técnicas y consideraciones para obtener mediciones precisas y confiables.

Principios de la medición de RPM
La medición de RPM se basa en la detección de eventos cíclicos. En este caso, usaremos un switch mecánico para detectar cada revolución de un objeto giratorio. El switch se activará cada vez que una parte del objeto en rotación complete una vuelta. Arduino registrará estos eventos y, usando un algoritmo simple, calculará la velocidad de rotación en RPM.
Componentes necesarios
- Arduino Uno (o similar)
- Switch mecánico (un interruptor simple que se activa al presionar)
- Cable de conexión
- Objeto giratorio (motor, ventilador, rueda, etc.)
- Resistencia (opcional) , dependiendo del tipo de switch, para protección.
Conexión del circuito
La conexión del circuito es bastante sencilla. Conecta un cable desde un pin digital de tu Arduino al switch mecánico. El otro lado del switch se conecta a GND (tierra) de Arduino. Si tu switch requiere una resistencia pull-up o pull-down, conéctala apropiadamente. La elección del pin digital es arbitraria, pero se recomienda usar un pin que no esté en uso por otras funciones.
Es crucial asegurar una conexión firme y segura para evitar lecturas erróneas o daños al circuito. Considera el uso de una placa de pruebas para facilitar la conexión y el prototipado.
Código Arduino para contar RPM
El código Arduino se encarga de leer el estado del switch, contar las interrupciones y calcular las RPM. A continuación, se muestra un ejemplo de código que puedes adaptar a tu proyecto:
const int switchPin = 2; // Pin digital al que está conectado el switchvolatile int rpmCount = 0;unsigned long previousMillis = 0;const unsigned long interval = 60000; // 60 segundos (1 minuto)void setup() { Serial.begin(9600); pinMode(switchPin, INPUT_PULLUP); // Configura el pin como entrada con pull-up interno}void loop() { if (digitalRead(switchPin) == LOW) { rpmCount++; } unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { float rpm = (float)rpmCount 60.0 / interval; Serial.print("RPM: "); Serial.println(rpm); rpmCount = 0; previousMillis = currentMillis; }}Explicación del código:
switchPin: Define el pin digital al que está conectado el switch.rpmCount: Variable volátil para contar las interrupciones (revoluciones). La palabra clavevolatilees crucial para garantizar que la variable se actualiza correctamente desde la interrupción.previousMilliseinterval: Variables para medir el tiempo y calcular las RPM cada minuto.setup(): Inicializa la comunicación serial y configura el pin del switch como entrada con pull-up interno.loop(): Lee constantemente el estado del switch. Si el switch está en estado bajo (LOW), incrementarpmCount. Cada minuto, calcula y muestra las RPM en el monitor serial.
Consideraciones importantes:
- Debouncing: Es fundamental implementar una técnica de debouncing para evitar lecturas erróneas causadas por rebotes en el switch mecánico. Puedes agregar un pequeño retardo en el código o usar una librería de debouncing.
- Número de objetos: Si el objeto giratorio tiene múltiples partes (como un ventilador con varias aspas), debes modificar la fórmula de cálculo de las RPM para tener en cuenta este factor. La fórmula general es: RPM = (recuento 60) / (tiempo número de objetos)
- Precisión: La precisión de la medición depende de la calidad del switch y la consistencia de la rotación del objeto. Para mediciones más precisas, considera usar sensores más sofisticados, como sensores ópticos o magnéticos.
Calibración y pruebas
Después de construir el circuito y cargar el código, es importante calibrar el sistema. Compara las lecturas de RPM con un método de medición conocido (tacómetro, por ejemplo). Si hay una discrepancia significativa, ajusta el código o el hardware según sea necesario. Realiza varias pruebas para garantizar la exactitud y la estabilidad de las mediciones.

Tabla comparativa de métodos para medir RPM
| Método | Precisión | Costo | Complejidad |
|---|---|---|---|
| Switch mecánico | Media | Baja | Baja |
| Sensor óptico | Alta | Media | Media |
| Sensor magnético | Alta | Media | Media |
| Tacómetro | Alta | Alta | Baja |
Esta tabla muestra una comparación entre diferentes métodos para medir RPM. La elección del método depende de los requisitos de precisión, costo y complejidad del proyecto.
Consultas habituales sobre contar RPM con switch mecánico y Arduino
¿Cómo puedo mejorar la precisión de la medición? Implementando técnicas de debouncing, utilizando un sensor más preciso (como un sensor óptico o magnético) y calibrando cuidadosamente el sistema.
¿Qué sucede si el objeto giratorio no tiene una rotación constante? Las lecturas de RPM serán menos precisas. Para mediciones en situaciones con fluctuaciones de velocidad, se puede considerar el uso de técnicas de promediado o filtros.
¿Puedo usar este método para medir RPM muy altas? Depende de la velocidad de respuesta del switch mecánico y del procesador de Arduino. Para RPM muy altas, se recomienda utilizar sensores de mayor velocidad de respuesta.
¿Puedo adaptar este código para diferentes objetos giratorios? Sí, solo necesitas ajustar la fórmula de cálculo de las RPM para tener en cuenta el número de objetos que activan el sensor por cada revolución.
En resumen, contar RPM con un switch mecánico y Arduino es una solución simple, económica y efectiva para muchas aplicaciones. Con una comprensión adecuada de los principios de funcionamiento y una cuidadosa implementación, se pueden obtener resultados precisos y confiables. Recuerda considerar las limitaciones y las posibles mejoras para optimizar el sistema según tus necesidades específicas.
