Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Obwohl der Kauf etwas lästig ist (weil es nicht in vielen Internetshops erhältlich ist), halte ich es für notwendig, über STM32 L432KC zu sprechen. Dieser Chip verdient besondere Zuneigung, da er ULTRA LOW POWER ist. Für diejenigen, die den STM32 jedoch nicht besitzen, kann er in diesem Projekt durch den Arduino Uno ersetzt werden. Ändern Sie dazu einfach den Pin des Interrupt-Eingangs.
Lassen Sie uns dann einen Drehzahlmesser mit dem STM32 L432KC und einem Infrarotsensor erstellen. Das gleiche Programm kann auch verwendet werden, um die Windgeschwindigkeit zu messen. Die Low-Power-Funktion dieses Mikrocontrollers ist perfekt für IOT.
Schritt 1: Module
Für unser heutiges Projekt verwenden wir den 8-stelligen MAX7219CWG, sowie das Infrarotmodul.
Schritt 2: STM32 NUCLEO-L432KC
Schritt 3: Demonstration
In unserer Baugruppe haben wir das STM32, das 8-stellige Display und den Impulseingang. Die Infrarotkarte verfügt über einen Fototransistor und eine LED, die das Licht einfängt, indem sie von einem weißen Band abprallt. Dieses Band ist an einem Rad befestigt und erzeugt bei jeder Umdrehung einen Impuls, der vom STM32-Interrupt erfasst wird.
Wir haben eine Diode und einen Kondensator in der Baugruppe, die verwendet wurden, um zu verhindern, dass das Rauschen des Bandlesesignals den STM32 erreicht, wodurch er das Ein- und Ausschalten interpretieren würde.
Die Vorführung zeigt unser Projekt, sowie den Minipa Zähler (beide in Betrieb).
Schritt 4: Montage
Schritt 5: Programm
Wir werden ein Programm machen, in dem das Infrarotmodul bei jeder "Umdrehung" einen Interrupt im STM32 L432KC auslöst, und wir werden die Berechnungen durchführen, um die Drehzahl auf dem Display anzuzeigen.
Schritt 6: Bibliotheken
Fügen Sie die folgende Bibliothek "DigitLedDisplay" hinzu.
Rufen Sie einfach „Skizze >> Bibliotheken einschließen >> Bibliotheken verwalten …“auf.
Schritt 7: Quellcode
Bibliotheken und Variablen
Beginnen wir mit dem Quellcode einschließlich der DigitLedDisplay-Bibliothek. Wir zeigen das Anzeigeobjekt. Ich setze den Interrupt-Pin, der 12 sein wird. Außerdem gebe ich einen flüchtigen Operator sowohl für den RPM-Zähler als auch für die Zeit ein, um Kollisionsprobleme zu vermeiden.
/* DigitLedDisplay-Bibliothek einschließen */#include "DigitLedDisplay.h" /* Arduino Pin zum Display Pin 7 zu DIN, 6 zu CS, 5 zu 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 long timeold; //Tempo
Aufstellen
Im Setup konfigurieren wir den Anzeigebetrieb, sowie die Unterbrechung als Steigend.
Void setup () {Serial.begin (115200); /* Helligkeit einstellen min:1, max:15 */ ld.setBright(10); /* Stellen Sie die Ziffernanzahl ein */ ld.setDigitLimit(8); ld.printDigit(0); AttachInterrupt (digitalPinToInterrupt (Pin), InterruptPin, RISING); U/min = 0; timeold = millis(); }
Schleife
Schließlich bestimmen wir das Intervall von 1 in 1 Minute, um die Anzeige zu aktualisieren. Nach der Reinigung des Bildschirms drucken wir die RPM. Wir führen die Funktion aus, die der Interrupt aufruft. Wir berechnen die Drehzahl und die Aktualisierungszeit.
Void Schleife () { Verzögerung (1000); ld.clear(); ld.printDigit (rpm); aufrechtzuerhalten. Void InterruptPin () { U / min = 60 * 1000 / (Millis () - Zeit alt); timeold = millis(); }
Schritt 8: Dateien
Laden Sie die Dateien herunter:
INO