Inhaltsverzeichnis:

Drehzahlmesser mit STM32 - Gunook
Drehzahlmesser mit STM32 - Gunook

Video: Drehzahlmesser mit STM32 - Gunook

Video: Drehzahlmesser mit STM32 - Gunook
Video: Tachometer (RPM-meter) with IR proximity sensor & Arduino - Drehzahlmesser mit IR-Sensor und Arduino 2024, November
Anonim
Drehzahlmesser mit STM32
Drehzahlmesser mit STM32

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

Module
Module
Module
Module

Für unser heutiges Projekt verwenden wir den 8-stelligen MAX7219CWG, sowie das Infrarotmodul.

Schritt 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

Schritt 3: Demonstration

Demonstration
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

Montage
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

Bibliotheken
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:

PDF

INO

Empfohlen: