Taula de continguts:

Mesurador de RPM amb STM32: 8 passos
Mesurador de RPM amb STM32: 8 passos

Vídeo: Mesurador de RPM amb STM32: 8 passos

Vídeo: Mesurador de RPM amb STM32: 8 passos
Vídeo: ✔️ CONTADOR de OBJETOS de 👍ALTA PRECISION con ARDUINO / MUY FACIL 2024, Desembre
Anonim
Mesurador de RPM amb STM32
Mesurador de RPM amb STM32

Tot i que és una mica molest comprar (perquè no està disponible a moltes botigues d’Internet), crec que és necessari parlar de STM32 L432KC. Aquest xip mereix un afecte especial, ja que és ULTRA BAIXA POTÈNCIA. Tot i això, per a aquells que no posseeixen el STM32, el Arduino Uno el pot substituir en aquest projecte. Per fer-ho, només cal canviar el pin de l'entrada d'interrupció.

A continuació, creem un mesurador de RPM amb el STM32 L432KC i un sensor d'infrarojos. Aquest mateix programa també es pot utilitzar per mesurar la velocitat del vent. La característica de baix consum d’aquest microcontrolador és perfecta per a IOT.

Pas 1: mòduls

Mòduls
Mòduls
Mòduls
Mòduls

Per al nostre projecte actual, fem servir el MAX7219CWG de 8 dígits, així com el mòdul d’infrarojos.

Pas 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

Pas 3: demostració

Demostració
Demostració

Al nostre muntatge, tenim l’STM32, la pantalla de 8 dígits i l’entrada d’impulsos. La targeta infraroja té un fototransistor i un LED que capta la llum rebotant una cinta blanca. Aquesta cinta s’uneix a una roda i, a cada gir, generarà un pols, que serà capturat per la interrupció STM32.

Tenim un díode i un condensador al conjunt que s’utilitzaven per evitar que el soroll del senyal de lectura de cinta arribés al STM32, cosa que el faria interpretar l’encesa i apagada.

La demostració mostra el nostre projecte, així com el comptador Minipa (tots dos en funcionament).

Pas 4: Muntatge

muntatge
muntatge

Pas 5: programa

Farem un programa en què el mòdul d’infrarojos provocarà una interrupció al STM32 L432KC cada "torn" i farem els càlculs per mostrar la RPM a la pantalla.

Pas 6: Biblioteques

Biblioteques
Biblioteques

Afegiu la següent biblioteca "DigitLedDisplay".

Simplement accediu a "Sketch >> Inclou biblioteques >> Gestiona biblioteques …"

Pas 7: Codi font

Biblioteques i variables

Comencem el codi font, inclosa la biblioteca DigitLedDisplay. Mostrarem l’objecte de visualització. Vaig configurar el pin d'interrupció, que serà 12. A més, introdueixo un operador volàtil tant per al comptador de RPM com per al temps per evitar problemes de col·lisió.

/ * Inclou la biblioteca DigitLedDisplay * / # inclou "DigitLedDisplay.h" / * Pin Arduino per mostrar el pin 7 a DIN, 6 a CS, 5 a CLK * / // DigitLedDisplay ld = DigitLedDisplay (7, 6, 5); // arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); // STM32 L432KC int pin = 12; // pino d’interrupció (módulo IR) volatile unsigned int rpm; // contador de rpm volatile unsigned long timeold; // tempo

Configuració

A la configuració, configurem l’operació de visualització i configurem la interrupció com a Rising.

configuració nul·la () {Serial.begin (115200); / * Estableix la brillantor mínima: 1, màxima: 15 * / ld.setBright (10); / * Definiu el recompte de dígits * / ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; timeold = millis (); }

Bucle

Finalment, determinem l'interval d'1 en 1 minut per actualitzar la pantalla. Després de netejar la pantalla, imprimim el RPM. Realitzem la funció que cridarà la interrupció. Calculem RPM i actualitzem el temps.

bucle buit () {delay (1000); ld.clear (); ld.printDigit (rpm); } void interruptPin () {rpm = 60 * 1000 / (millis () - timeold); timeold = millis (); }

Pas 8: fitxers

Descarregueu els fitxers:

PDF

INO

Recomanat: