Indholdsfortegnelse:

RPM -måler med STM32: 8 trin
RPM -måler med STM32: 8 trin

Video: RPM -måler med STM32: 8 trin

Video: RPM -måler med STM32: 8 trin
Video: Программирование STM32 Blue Pill с помощью релейной логики ПЛК LDmicro 2024, November
Anonim
RPM -måler med STM32
RPM -måler med STM32

Selvom det er lidt generende at købe (fordi det ikke findes i mange internetbutikker), finder jeg det nødvendigt at diskutere STM32 L432KC. Denne chip fortjener særlig kærlighed, da den er ULTRA LOW POWER. For dem, der ikke ejer STM32, kan den i dette projekt erstattes af Arduino Uno. For at gøre dette skal du blot ændre stiften på afbrydelsesindgangen.

Lad os derefter oprette en RPM -måler ved hjælp af STM32 L432KC og en infrarød sensor. Det samme program kan også bruges til at måle vindhastighed. Laveffektfunktionen i denne mikrokontroller er perfekt til IOT.

Trin 1: Moduler

Moduler
Moduler
Moduler
Moduler

Til vores projekt i dag bruger vi det 8-cifrede MAX7219CWG samt det infrarøde modul.

Trin 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

Trin 3: Demonstration

Demonstration
Demonstration

I vores samling har vi STM32, det 8-cifrede display og pulsindgangen. Det infrarøde kort har en fototransistor og en LED, der fanger lyset ved at hoppe af et hvidt bånd. Dette bånd er fastgjort til et hjul og vil ved hver tur generere en puls, som vil blive fanget af STM32 -afbrydelsen.

Vi har en diode og en kondensator i samlingen, der blev brugt til at forhindre støjen fra båndlæsesignalet i at nå STM32, hvilket ville få det til at fortolke tænd og sluk.

Demonstrationen viser vores projekt samt Minipa -måleren (begge i drift).

Trin 4: Montering

montage
montage

Trin 5: Programmer

Vi laver et program, hvor det infrarøde modul vil udløse en afbrydelse i STM32 L432KC hver "tur", og vi vil foretage beregningerne for at vise omdrejningstallet på displayet.

Trin 6: Biblioteker

Biblioteker
Biblioteker

Tilføj følgende "DigitLedDisplay" -bibliotek.

Du skal blot få adgang til "Skitse >> Inkluder biblioteker >> Administrer biblioteker …"

Trin 7: Kildekode

Biblioteker og variabler

Lad os starte kildekoden inklusive DigitLedDisplay -biblioteket. Vi viser displayobjektet. Jeg indstiller afbryderstiften, som vil være 12. Desuden indtaster jeg en flygtig operatør for både omdrejningstælleren og tiden for at undgå eventuelle kollisionsproblemer.

/ * Inkluder DigitLedDisplay Library */#include "DigitLedDisplay.h"/ * Arduino Pin to Display Pin 7 to DIN, 6 to CS, 5 to 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) flygtig usigneret int rpm; // contador de rpm volatile unsigned long timeold; // tempo

Opsætning

I opsætningen konfigurerer vi displayoperationen samt konfigurerer afbrydelsen som stigende.

ugyldig opsætning () {Serial.begin (115200); / * Indstil lysstyrken min: 1, maks: 15 */ ld.setBright (10); / * Indstil cifretælling */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; timeold = millis (); }

Sløjfe

Endelig bestemmer vi intervallet 1 på 1 minut for at opdatere displayet. Efter rengøring af skærmen udskriver vi RPM. Vi udfører den funktion, som afbrydelsen vil kalde. Vi beregner RPM og opdateringstid.

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

Trin 8: Filer

Download filerne:

PDF

INO

Anbefalede: