Table des matières:

Compteur RPM avec STM32 : 8 étapes
Compteur RPM avec STM32 : 8 étapes

Vidéo: Compteur RPM avec STM32 : 8 étapes

Vidéo: Compteur RPM avec STM32 : 8 étapes
Vidéo: ESP32 Car Dashboard/Controller 2024, Novembre
Anonim
Compteur de tours avec STM32
Compteur de tours avec STM32

Bien qu'il soit un peu gênant d'acheter (car il n'est pas disponible dans de nombreux magasins Internet), je trouve nécessaire de discuter du STM32 L432KC. Cette puce mérite une affection particulière, car elle est ULTRA FAIBLE PUISSANCE. Cependant, pour ceux qui ne possèdent pas le STM32, il peut être remplacé dans ce projet par l'Arduino Uno. Pour ce faire, il suffit de changer la broche de l'entrée Interruption.

Créons ensuite un compteur RPM à l'aide du STM32 L432KC et d'un capteur infrarouge. Ce même programme peut également être utilisé pour mesurer la vitesse du vent. La fonction de faible consommation de ce microcontrôleur est parfaite pour l'IOT.

Étape 1: Modules

Modules
Modules
Modules
Modules

Pour notre projet aujourd'hui, nous utilisons le MAX7219CWG à 8 chiffres, ainsi que le module infrarouge.

Étape 2: STM32 NUCLEO-L432KC

STM32 NUCLÉO-L432KC
STM32 NUCLÉO-L432KC

Étape 3: Démonstration

Manifestation
Manifestation

Dans notre assemblage, nous avons le STM32, l'affichage à 8 chiffres et l'entrée d'impulsion. La carte infrarouge possède un phototransistor et une LED qui capte la lumière en rebondissant sur un ruban blanc. Cette bande est attachée à une roue et, à chaque tour, va générer une impulsion, qui sera captée par l'interruption STM32.

Nous avons une diode et un condensateur dans l'assemblage qui ont été utilisés pour empêcher le bruit du signal de lecture de bande d'atteindre le STM32, ce qui lui ferait interpréter le marche et l'arrêt.

La démonstration montre notre projet, ainsi que le compteur Minipa (tous deux en fonctionnement).

Étape 4: Assemblage

Assemblée
Assemblée

Étape 5: programmer

Nous allons faire un programme dans lequel le module infrarouge déclenchera une interruption dans le STM32 L432KC à chaque "tour", et nous ferons les calculs pour afficher le RPM sur l'écran.

Étape 6: Bibliothèques

Bibliothèques
Bibliothèques

Ajoutez la bibliothèque "DigitLedDisplay" suivante.

Accédez simplement à "Esquisse >> Inclure les bibliothèques >> Gérer les bibliothèques …"

Étape 7: Code source

Bibliothèques et variables

Commençons le code source incluant la bibliothèque DigitLedDisplay. Nous allons montrer l'objet d'affichage. J'ai mis la broche d'interruption, qui sera 12. De plus, j'entre un opérateur volatile à la fois pour le compteur RPM et l'heure afin d'éviter tout problème de collision.

/* Inclure la bibliothèque DigitLedDisplay */#include "DigitLedDisplay.h" /* Broche Arduino à afficher Broche 7 à DIN, 6 à CS, 5 à CLK */ //DigitLedDisplay ld = DigitLedDisplay (7, 6, 5); //arduino DigitLedDisplay ld = DigitLedDisplay(4, 2, 3); //STM32 L432KC broche int = 12; //pino de interrupção (modulo IR) volatil unsigned int rpm; //contador de rpm volatile unsigned long timeold; //tempo

Installer

Dans le Setup, nous configurons l'opération d'affichage, ainsi que l'interruption comme Rising.

void setup() {Serial.begin(115200); /* Définit la luminosité min:1, max:15 */ ld.setBright(10); /* Définit le nombre de chiffres */ ld.setDigitLimit(8); ld.printDigit(0); attachInterrupt(digitalPinToInterrupt(pin), interruptPin, RISING); tr/min = 0; ancien = millis(); }

Boucle

Enfin, nous déterminons l'intervalle de 1 à 1 minute pour mettre à jour l'affichage. Après avoir nettoyé l'écran, nous imprimons le RPM. Nous exécutons la fonction que l'interruption appellera. Nous calculons le RPM et le temps de mise à jour.

boucle vide() { délai(1000); ld.clear(); ld.printDigit(tr/min); } void interruptPin() { rpm = 60*1000/(millis() - timeold); ancien = millis(); }

Étape 8: Fichiers

Téléchargez les fichiers:

PDF

INO

Conseillé: