Turinys:

RPM matuoklis su STM32: 8 žingsniai
RPM matuoklis su STM32: 8 žingsniai

Video: RPM matuoklis su STM32: 8 žingsniai

Video: RPM matuoklis su STM32: 8 žingsniai
Video: Сделать высокоскоростной двигатель постоянного тока из двигателя миксера на 220 В 2024, Lapkritis
Anonim
RPM matuoklis su STM32
RPM matuoklis su STM32

Nors pirkti yra šiek tiek nemalonu (nes jo nėra daugelyje internetinių parduotuvių), manau, kad būtina aptarti STM32 L432KC. Šis lustas nusipelno ypatingos meilės, nes jis yra ULTRA LOW POWER. Tačiau tiems, kurie neturi STM32, jį šiame projekte gali pakeisti „Arduino Uno“. Norėdami tai padaryti, tiesiog pakeiskite „Interrupt“įvesties kaištį.

Tada sukurkime apsisukimų dažnio matuoklį naudodami STM32 L432KC ir infraraudonųjų spindulių jutiklį. Ta pati programa taip pat gali būti naudojama vėjo greičiui matuoti. Šio mikrovaldiklio mažos galios funkcija puikiai tinka IOT.

1 žingsnis: moduliai

Moduliai
Moduliai
Moduliai
Moduliai

Šiandien savo projektui naudojame 8 skaitmenų MAX7219CWG, taip pat infraraudonųjų spindulių modulį.

2 žingsnis: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

3 žingsnis: demonstravimas

Demonstracija
Demonstracija

Mūsų surinkime turime STM32, 8 skaitmenų ekraną ir impulsų įvestį. Infraraudonųjų spindulių kortelėje yra fototransistorius ir šviesos diodas, kuris užfiksuoja šviesą atšokdamas nuo baltos juostelės. Ši juosta pritvirtinta prie rato ir kiekviename posūkyje sukels impulsą, kurį užfiksuos STM32 pertrauka.

Mes turime diodą ir kondensatorių, kurie buvo naudojami tam, kad juostos skaitymo signalo triukšmas nepasiektų STM32, o tai leistų interpretuoti įjungimą ir išjungimą.

Demonstracija rodo mūsų projektą, taip pat „Minipa“skaitiklį (abu veikia).

4 žingsnis: Surinkimas

Surinkimas
Surinkimas

5 žingsnis: programa

Mes atliksime programą, kurioje infraraudonųjų spindulių modulis suaktyvins STM32 L432KC pertraukimą kiekvieną „posūkį“, ir atliksime skaičiavimus, kad ekrane būtų rodomas RPM.

6 žingsnis: bibliotekos

Bibliotekos
Bibliotekos

Pridėkite šią „DigitLedDisplay“biblioteką.

Tiesiog eikite į „Eskizas >> Įtraukti bibliotekas >> Tvarkyti bibliotekas …“

7 žingsnis: šaltinio kodas

Bibliotekos ir kintamieji

Pradėkime šaltinio kodą, įskaitant „DigitLedDisplay“biblioteką. Parodysime rodomą objektą. Nustatiau pertraukimo kaištį, kuris bus 12. Be to, įvedu nepastovų operatorių tiek RPM skaitikliui, tiek laikui, kad išvengčiau susidūrimo problemų.

/ * Įtraukti „DigitLedDisplay“biblioteką */#include "DigitLedDisplay.h"/ * „Arduino“kaištis, kad būtų rodomas kaištis nuo 7 iki DIN, nuo 6 iki CS, nuo 5 iki CLK */// „DigitLedDisplay“ld = DigitLedDisplay (7, 6, 5); // arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); // STM32 L432KC int pin = 12; // pino de interrupção (metodulo IR) volatile unsigned int rpm; // contador de rpm volatile unsigned long timeold; // tempas

Sąranka

Sąrankoje mes sukonfigūruojame ekrano veikimą, taip pat pertrauką kaip kylančią.

void setup () {Serial.begin (115200); / * Nustatykite ryškumą min: 1, maks: 15 */ ld.setBright (10); / * Nustatykite skaičių skaičių */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); aps / min = 0; timeold = milis (); }

Kilpa

Galiausiai nustatome intervalą 1 per 1 minutę, kad atnaujintume ekraną. Išvalę ekraną, spausdiname RPM. Mes atliekame funkciją, kurią iškvies pertraukėjas. Mes apskaičiuojame RPM ir atnaujinimo laiką.

tuštumos kilpa () {uždelsimas (1000); ld.clear (); ld.printDigit (aps./min.); } void interruptPin () {aps/min = 60*1000/(milis () - laikas); timeold = milis (); }

8 žingsnis: failai

Atsisiųskite failus:

PDF

AŠ NE

Rekomenduojamas: