Tabla de contenido:

Medidor de RPM con STM32: 8 pasos
Medidor de RPM con STM32: 8 pasos

Video: Medidor de RPM con STM32: 8 pasos

Video: Medidor de RPM con STM32: 8 pasos
Video: Medidor de RPM com STM32 2024, Noviembre
Anonim
Medidor de RPM con STM32
Medidor de RPM con STM32

Aunque es algo molesto comprarlo (porque no está disponible en muchas tiendas de Internet), me parece necesario hablar sobre STM32 L432KC. Este chip merece un cariño especial, ya que es ULTRA BAJA POTENCIA. Sin embargo, para aquellos que no poseen el STM32, puede ser reemplazado en este proyecto por el Arduino Uno. Para hacer esto, simplemente cambie el pin de la entrada de interrupción.

Entonces creemos un medidor de RPM usando el STM32 L432KC y un sensor de infrarrojos. Este mismo programa también se puede utilizar para medir la velocidad del viento. La función de bajo consumo de este microcontrolador es perfecta para IOT.

Paso 1: módulos

Módulos
Módulos
Módulos
Módulos

Para nuestro proyecto de hoy, utilizamos el MAX7219CWG de 8 dígitos, así como el módulo de infrarrojos.

Paso 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

Paso 3: demostración

Demostración
Demostración

En nuestro ensamblaje, tenemos el STM32, la pantalla de 8 dígitos y la entrada de pulsos. La tarjeta de infrarrojos tiene un fototransistor y un LED que capta la luz rebotando en una cinta blanca. Esta cinta está adherida a una rueda y, en cada giro, generará un pulso, que será capturado por la interrupción STM32.

Tenemos un diodo y un condensador en el conjunto que se utilizaron para evitar que el ruido de la señal de lectura de la cinta llegara al STM32, lo que haría interpretar el encendido y apagado.

La demostración muestra nuestro proyecto, así como el medidor Minipa (ambos en funcionamiento).

Paso 4: Montaje

Montaje
Montaje

Paso 5: Programa

Haremos un programa en el que el módulo de infrarrojos disparará una interrupción en el STM32 L432KC cada "giro", y haremos los cálculos para mostrar las RPM en la pantalla.

Paso 6: Bibliotecas

Bibliotecas
Bibliotecas

Agregue la siguiente biblioteca "DigitLedDisplay".

Simplemente acceda a "Sketch >> Incluir bibliotecas >> Administrar bibliotecas …"

Paso 7: código fuente

Bibliotecas y variables

Comencemos con el código fuente, incluida la biblioteca DigitLedDisplay. Mostraremos el objeto de visualización. Establezco el pin de interrupción, que será 12. Además, entro un operador volátil tanto para el contador de RPM como para el tiempo para evitar problemas de colisión.

/ * Incluye biblioteca DigitLedDisplay * / # incluye "DigitLedDisplay.h" / * Pin Arduino para mostrar Pin 7 en DIN, 6 en CS, 5 en CLK * / // DigitLedDisplay ld = DigitLedDisplay (7, 6, 5); // arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); // STM32 L432KC int pin = 12; // pino de interrupção (módulo IR) volatile unsigned int rpm; // contador de rpm volatile unsigned long timeold; //tempo

Configuración

En el Setup, configuramos la operación de visualización, así como configuramos la interrupción como Ascendente.

configuración vacía () {Serial.begin (115200); / * Establece el brillo mínimo: 1, máximo: 15 * / ld.setBright (10); / * Establecer el recuento de dígitos * / ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; timeold = millis (); }

Círculo

Finalmente, determinamos el intervalo de 1 en 1 minuto para actualizar la pantalla. Después de limpiar la pantalla, imprimimos las RPM. Realizamos la función que llamará la interrupción. Calculamos RPM y tiempo de actualización.

bucle vacío () {retraso (1000); ld.clear (); ld.printDigit (rpm); } void interruptPin () {rpm = 60 * 1000 / (millis () - timeold); timeold = millis (); }

Paso 8: archivos

Descarga los archivos:

PDF

INO

Recomendado: