Innholdsfortegnelse:

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

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

Video: RPM -måler med STM32: 8 trinn
Video: Monitoring the RPM of a 12Vdc Three Wire Cooler Fan with Arduino, with speed control potentiometer 2024, November
Anonim
RPM -måler med STM32
RPM -måler med STM32

Selv om det er litt plagsomt å kjøpe (fordi det ikke er tilgjengelig i mange internettbutikker), synes jeg det er nødvendig å diskutere STM32 L432KC. Denne brikken fortjener spesiell hengivenhet, siden den er ULTRA LOW POWER. For de som ikke eier STM32, kan den imidlertid erstattes i dette prosjektet av Arduino Uno. For å gjøre dette, bare endre pinnen på Interrupt -inngangen.

La oss deretter lage en RPM -måler ved hjelp av STM32 L432KC og en infrarød sensor. Det samme programmet kan også brukes til å måle vindhastighet. Laveffektfunksjonen til denne mikrokontrolleren er perfekt for IOT.

Trinn 1: Moduler

Moduler
Moduler
Moduler
Moduler

For prosjektet vårt i dag bruker vi den 8-sifrede MAX7219CWG, samt den infrarøde modulen.

Trinn 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

Trinn 3: Demonstrasjon

Demonstrasjon
Demonstrasjon

I vår samling har vi STM32, det 8-sifrede displayet og pulsinngangen. Det infrarøde kortet har en fototransistor og en LED som fanger lyset ved å sprette av et hvitt bånd. Denne båndet er festet til et hjul og vil ved hver sving generere en puls som vil bli fanget opp av STM32 -avbruddet.

Vi har en diode og en kondensator i forsamlingen som ble brukt for å forhindre at støyen fra båndlesesignalet når STM32, noe som ville få det til å tolke av og på.

Demonstrasjonen viser prosjektet vårt, så vel som Minipa -måleren (begge i drift).

Trinn 4: Montering

montering
montering

Trinn 5: Program

Vi vil lage et program der den infrarøde modulen vil utløse et avbrudd i STM32 L432KC hver "sving", og vi vil gjøre beregningene for å vise RPM på displayet.

Trinn 6: Biblioteker

Biblioteker
Biblioteker

Legg til følgende "DigitLedDisplay" -bibliotek.

Bare få tilgang til "Skisse >> Inkluder biblioteker >> Administrer biblioteker …"

Trinn 7: Kildekode

Biblioteker og variabler

La oss starte kildekoden inkludert DigitLedDisplay -biblioteket. Vi viser skjermobjektet. Jeg stiller inn avbruddspinnen, som vil være 12. Dessuten angir jeg en flyktig operatør for både turtall og tid for å unngå problemer med kollisjoner.

/ * 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 (IR IR) flyktig usignert int rpm; // contador de rpm volatile unsigned long timeold; // tempo

Oppsett

I Setup konfigurerer vi skjermoperasjonen, samt konfigurerer avbruddet som Rising.

ugyldig oppsett () {Serial.begin (115200); / * Still inn lysstyrken min: 1, maks: 15 */ ld.setBright (10); / * Angi tallene */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; tidsold = millis (); }

Løkke

Til slutt bestemmer vi intervallet 1 på 1 minutt for å oppdatere skjermen. Etter rengjøring av skjermen skriver vi ut RPM. Vi utfører funksjonen som avbruddet vil kalle. Vi beregner RPM og oppdateringstid.

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

Trinn 8: Filer

Last ned filene:

PDF

INO

Anbefalt: