Tartalomjegyzék:

RPM -mérő STM32 -vel: 8 lépés
RPM -mérő STM32 -vel: 8 lépés

Videó: RPM -mérő STM32 -vel: 8 lépés

Videó: RPM -mérő STM32 -vel: 8 lépés
Videó: Using encoder to measure RPM in STM32F4 2024, November
Anonim
Fordulatszámmérő STM32 -el
Fordulatszámmérő STM32 -el

Bár némileg kellemetlen a vásárlás (mivel nem sok internetes áruházban kapható), szükségesnek tartom az STM32 L432KC megvitatását. Ez a chip különleges szeretetet érdemel, mivel ULTRA LOW POWER. Azok számára azonban, akik nem rendelkeznek az STM32 -vel, ezt ebben a projektben az Arduino Uno helyettesítheti. Ehhez egyszerűen cserélje ki a megszakítás bemenetének tűjét.

Hozzunk létre egy fordulatszámmérőt az STM32 L432KC és egy infravörös érzékelő segítségével. Ugyanez a program használható a szélsebesség mérésére is. Ennek a mikrovezérlőnek az alacsony fogyasztású tulajdonsága tökéletes az IOT számára.

1. lépés: Modulok

Modulok
Modulok
Modulok
Modulok

A mai projektünkhöz a 8 számjegyű MAX7219CWG-t és az infravörös modult használjuk.

2. lépés: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

3. lépés: demonstráció

Demonstráció
Demonstráció

Összeszerelésünkben megvan az STM32, a 8 számjegyű kijelző és az impulzusbemenet. Az infravörös kártya fototranzisztorral és LED -del rendelkezik, amely fehér szalagról lepattanva veszi fel a fényt. Ez a szalag egy kerékhez van rögzítve, és minden fordulaton impulzust generál, amelyet az STM32 megszakítás rögzít.

A szerelvényben van egy dióda és egy kondenzátor, amelyekkel megakadályozták, hogy a szalagolvasó jel zaja elérje az STM32 -et, ami értelmezné a be- és kikapcsolást.

A bemutató bemutatja a projektünket, valamint a Minipa mérőt (mindkettő működik).

4. lépés: Összeszerelés

Összeszerelés
Összeszerelés

5. lépés: Programozás

Csinálunk egy programot, amelyben az infravörös modul minden "fordulaton" megszakítást vált ki az STM32 L432KC -ben, és elvégezzük a számításokat, hogy az RPM megjelenjen a kijelzőn.

6. lépés: Könyvtárak

Könyvtárak
Könyvtárak

Adja hozzá a következő "DigitLedDisplay" könyvtárat.

Egyszerűen nyissa meg a "Vázlat >> Könyvtárak felvétele >> Könyvtárak kezelése …" lehetőséget.

7. lépés: Forráskód

Könyvtárak és változók

Kezdjük a forráskódot, beleértve a DigitLedDisplay könyvtárat. Megmutatjuk a megjelenítő objektumot. Beállítom a megszakítótüskét, amely 12. Ezenkívül megadok egy illékony operátort az RPM számlálóhoz és az időhöz is, hogy elkerüljem az ütközési problémákat.

/ * Include 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 (módulo IR) volatile unsigned int rpm; // contador de rpm volatile unsigned long timeold; //tempó

Beállít

A beállításban konfiguráljuk a megjelenítési műveletet, valamint a megszakítást növekvőként.

void setup () {Serial.begin (115200); / * Állítsa be a fényerőt min: 1, max: 15 */ ld.setBright (10); / * Állítsa be a számjegyek számát */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; timeold = millis (); }

Hurok

Végül meghatározzuk az 1 perc 1 perc intervallumot a kijelző frissítéséhez. A képernyő tisztítása után kinyomtatjuk az RPM -et. Elvégzzük azt a funkciót, amelyet a megszakítás hívni fog. Kiszámítjuk az RPM -et és a frissítési időt.

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

8. lépés: Fájlok

Töltse le a fájlokat:

PDF

ÉN NEM

Ajánlott: