Mündəricat:

STM32 ilə RPM Metr: 8 addım
STM32 ilə RPM Metr: 8 addım

Video: STM32 ilə RPM Metr: 8 addım

Video: STM32 ilə RPM Metr: 8 addım
Video: Using encoder to measure RPM in STM32F4 2024, Noyabr
Anonim
STM32 ilə RPM Metr
STM32 ilə RPM Metr

Almaq bir qədər narahatlıq yaratsa da (bir çox internet mağazasında olmadığı üçün) STM32 L432KC -ni müzakirə etməyi lazım bilirəm. Bu çip ULTRA LOW POWER olduğu üçün xüsusi bir sevgiyə layiqdir. Ancaq STM32 sahibi olmayanlar üçün bu layihədə Arduino Uno ilə əvəz edilə bilər. Bunu etmək üçün, yalnız kəsmə girişinin pinini dəyişdirin.

Gəlin STM32 L432KC və infraqırmızı sensordan istifadə edərək bir RPM sayğacı yaradaq. Eyni proqram külək sürətini ölçmək üçün də istifadə edilə bilər. Bu mikrokontrolörün aşağı gücü xüsusiyyəti IOT üçün idealdır.

Addım 1: Modullar

Modullar
Modullar
Modullar
Modullar

Bu günki layihəmiz üçün 8 rəqəmli MAX7219CWG və infraqırmızı moduldan istifadə edirik.

Addım 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

Addım 3: Nümayiş

Nümayiş
Nümayiş

Quruluşumuzda STM32, 8 rəqəmli ekran və nəbz girişi var. İnfraqırmızı kartda bir fototransistor və ağ lentdən çıxaraq işığı tutan bir LED var. Bu lent təkərə bərkidilir və hər növbədə STM32 -nin kəsilməsi ilə tutulan bir nəbz yaradacaq.

Bant oxuma siqnalının səs -küyünün STM32 -ə çatmasını maneə törətmək üçün istifadə olunan bir diod və bir kondansatörümüz var ki, bu da onu açmağı və söndürməyi izah edir.

Nümayiş bizim layihəni, eləcə də Minipa sayğacını (hər ikisi işlək vəziyyətdə) göstərir.

Addım 4: Montaj

Məclis
Məclis

Addım 5: Proqram

İnfraqırmızı modulun hər "növbədə" STM32 L432KC -də bir kəsilməyə səbəb olacağı bir proqram edəcəyik və RPM -ni ekranda göstərmək üçün hesablamalar aparacağıq.

Addım 6: Kitabxanalar

Kitabxanalar
Kitabxanalar

Aşağıdakı "DigitLedDisplay" kitabxanasını əlavə edin.

Sadəcə "Sketch >> Kitabxanaları Daxil Et >> Kitabxanaları İdarə et …" bölməsinə daxil olun.

Addım 7: Mənbə Kodu

Kitabxanalar və Dəyişənlər

DigitLedDisplay kitabxanası daxil olmaqla mənbə kodunu başlayaq. Göstərilən obyekti göstərəcəyik. 12 olan fasilə pinini təyin etdim. Həm də hər hansı bir toqquşma probleminin qarşısını almaq üçün həm RPM sayğacı, həm də vaxt üçün uçucu bir operator daxil edirəm.

/ * DigitLedDisplay Kitabxanasını daxil edin//#"DigitLedDisplay.h" daxil edin/ * Arduino Pin 7 -ni DIN -ə, 6 -nı CS -yə, 5 -i CLK -ə qədər göstərin */// 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) uçucu işarəsiz int rpm; // contador de rpm uçucu uzun müddət imzasız; // temp

Qurmaq

Quraşdırmada, ekran işini konfiqurasiya edirik, həm də kəsilməni Rising olaraq konfiqurasiya edirik.

void setup () {Serial.begin (115200); / * Parlaqlığı minimuma ayarlayın: 1, maksimum: 15 */ ld.setBright (10); / * Rəqəm sayını təyin edin */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; vaxt bitmiş = milis (); }

Döngə

Nəhayət, ekranı yeniləmək üçün 1 dəqiqədə 1 aralığını təyin edirik. Ekranı təmizlədikdən sonra RPM -ni çap edirik. Kəsənin çağıracağı funksiyanı yerinə yetiririk. RPM və yeniləmə vaxtını hesablayırıq.

void loop () {gecikmə (1000); ld.clear (); ld.printDigit (rpm); } void interruptPin () {rpm = 60*1000/(milis () - vaxt müddəti); vaxt bitmiş = milis (); }

Addım 8: Fayllar

Faylları yükləyin:

PDF

MƏN YOX

Tövsiyə: