Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Iako je kupnja pomalo neugodna (jer nije dostupna u mnogim internetskim trgovinama), smatram da je potrebno razgovarati o STM32 L432KC. Ovaj čip zaslužuje posebnu naklonost jer je ULTRA NISKE SNAGE. Međutim, za one koji ne posjeduju STM32, u ovom projektu može ga zamijeniti Arduino Uno. Da biste to učinili, jednostavno promijenite pin ulaza Interrupt.
Zatim napravimo RPM mjerač pomoću STM32 L432KC i infracrvenog senzora. Ovaj isti program može se koristiti i za mjerenje brzine vjetra. Značajka male snage ovog mikrokontrolera savršena je za IOT.
Korak 1: Moduli
Za današnji projekt koristimo 8-znamenkasti MAX7219CWG, kao i infracrveni modul.
Korak 2: STM32 NUCLEO-L432KC
Korak 3: Demonstracija
U našem sklopu imamo STM32, osmeroznamenkasti zaslon i impulsni ulaz. Infracrvena kartica ima fototranzistor i LED koji hvata svjetlost odbijajući se od bijele vrpce. Ova traka je pričvršćena na kotač i pri svakom zavoju generirat će impuls koji će se uhvatiti prekidom STM32.
U sklopu imamo diodu i kondenzator koji su korišteni za sprječavanje da šum signala za čitanje trake dođe do STM32, što bi ga učinilo interpretiranim za uključivanje i isključivanje.
Demonstracija prikazuje naš projekt, kao i mjerač Minipa (oba u radu).
Korak 4: Montaža
Korak 5: Program
Napravit ćemo program u kojem će infracrveni modul aktivirati prekid u STM32 L432KC pri svakom "skretanju", a mi ćemo napraviti izračune za prikaz RPM -a na zaslonu.
Korak 6: Knjižnice
Dodajte sljedeću biblioteku "DigitLedDisplay".
Jednostavno pristupite "Sketch >> Include Libraries >> Manage Libraries …"
Korak 7: Izvorni kod
Knjižnice i varijable
Počnimo s izvornim kodom uključujući biblioteku DigitLedDisplay. Prikazat ćemo objekt prikaza. Postavio sam pin za prekid, koji će biti 12. Također, unosim promjenjivi operator i za brojač okretaja i za vrijeme kako bih izbjegao probleme pri sudaru.
/ * Uključi biblioteku DigitLedDisplay */#uključuje "DigitLedDisplay.h"/ * Arduino pin za prikaz pin 7 prema DIN, 6 do CS, 5 do 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) volatile unsigned int rpm; // contador de rpm volatile unsigned longtime; //tempo
Postaviti
U Setup -u konfiguriramo radnju prikaza, kao i prekid kao Rising.
void setup () {Serial.begin (115200); / * Postavite svjetlinu min: 1, max: 15 */ ld.setBright (10); / * Postavite broj znamenki */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); o / min = 0; timeold = millis (); }
Petlja
Konačno, određujemo interval od 1 u 1 minuti za ažuriranje prikaza. Nakon čišćenja zaslona ispisujemo RPM. Izvodimo funkciju koju će prekid pozvati. Izračunavamo RPM i vrijeme ažuriranja.
void loop () {kašnjenje (1000); ld.clear (); ld.printDigit (o / min); } void interruptPin () {rpm = 60*1000/(millis () - vremensko ograničenje); timeold = millis (); }
Korak 8: Datoteke
Preuzmite datoteke:
INO