Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
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
For prosjektet vårt i dag bruker vi den 8-sifrede MAX7219CWG, samt den infrarøde modulen.
Trinn 2: STM32 NUCLEO-L432KC
Trinn 3: 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
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
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:
INO