Inhoudsopgave:

RPM-meter met STM32 - Ajarnpa
RPM-meter met STM32 - Ajarnpa

Video: RPM-meter met STM32 - Ajarnpa

Video: RPM-meter met STM32 - Ajarnpa
Video: STM32 TACHOMETER | MEASURE RPM | #33 2024, November
Anonim
Toerentalmeter Met STM32
Toerentalmeter Met STM32

Hoewel het wat lastig is om te kopen (omdat het in veel internetwinkels niet verkrijgbaar is), vind ik het nodig om STM32 L432KC te bespreken. Deze chip verdient speciale genegenheid, want het is ULTRA LAAG VERMOGEN. Voor degenen die de STM32 niet bezitten, kan deze in dit project echter worden vervangen door de Arduino Uno. Om dit te doen, verandert u eenvoudig de pin van de Interrupt-ingang.

Laten we dan een RPM-meter maken met behulp van de STM32 L432KC en een infraroodsensor. Ditzelfde programma kan ook worden gebruikt om de windsnelheid te meten. De low-power-functie van deze microcontroller is perfect voor IOT.

Stap 1: Modules

Modules
Modules
Modules
Modules

Voor ons project van vandaag gebruiken we de 8-cijferige MAX7219CWG, evenals de infraroodmodule.

Stap 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

Stap 3: Demonstratie

Demonstratie
Demonstratie

In onze montage hebben we de STM32, het 8-cijferige display en de pulsingang. De infraroodkaart heeft een fototransistor en een LED die het licht opvangt door een wit lint te weerkaatsen. Deze tape is bevestigd aan een wiel en genereert bij elke draai een puls, die wordt opgevangen door de STM32-interrupt.

We hebben een diode en een condensator in de assemblage die werden gebruikt om te voorkomen dat de ruis van het bandleessignaal de STM32 bereikt, waardoor het de aan en uit zou interpreteren.

De demonstratie toont ons project, evenals de Minipa-meter (beide in werking).

Stap 4: Montage

samenkomst
samenkomst

Stap 5: Programma

We zullen een programma maken waarin de infraroodmodule elke "draai" een onderbreking in de STM32 L432KC activeert, en we zullen de berekeningen uitvoeren om het toerental op het display weer te geven.

Stap 6: Bibliotheken

Bibliotheken
Bibliotheken

Voeg de volgende "DigitLedDisplay"-bibliotheek toe.

Ga gewoon naar "Schets >> Bibliotheken opnemen >> Bibliotheken beheren …"

Stap 7: Broncode

Bibliotheken en variabelen

Laten we beginnen met de broncode, inclusief de DigitLedDisplay-bibliotheek. We laten het weergaveobject zien. Ik heb de interrupt-pin ingesteld, die 12 zal zijn. Ook voer ik een vluchtige operator in voor zowel de RPM-teller als de tijd om botsingsproblemen te voorkomen.

/* Inclusief DigitLedDisplay-bibliotheek */#include "DigitLedDisplay.h" /* Arduino-pin naar display-pin 7 naar DIN, 6 naar CS, 5 naar 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) vluchtige niet-ondertekende int rpm; //contador de rpm vluchtige unsigned long timeold; //tempo

Opstelling

In de Setup configureren we de weergavebewerking en configureren we de onderbreking als Rising.

void setup() {Serial.begin(115200); /* Stel de helderheid min:1, max:15 in */ ld.setBright(10); /* Stel het aantal cijfers in */ ld.setDigitLimit(8); ld.printDigit(0); attachInterrupt(digitalPinToInterrupt(pin), interruptPin, RISING); tpm = 0; tijdoud = millis(); }

Lus

Ten slotte bepalen we het interval van 1 op 1 minuut om het display bij te werken. Na het reinigen van het scherm printen we de RPM. We voeren de functie uit die de interrupt zal aanroepen. We berekenen RPM en updatetijd.

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

Stap 8: Bestanden

Download de bestanden:

PDF

INO

Aanbevolen: