Mundarija:

STM32 bilan aylanish tezligi o'lchagichi: 8 qadam
STM32 bilan aylanish tezligi o'lchagichi: 8 qadam

Video: STM32 bilan aylanish tezligi o'lchagichi: 8 qadam

Video: STM32 bilan aylanish tezligi o'lchagichi: 8 qadam
Video: Ернинг айланиши шиддат билан тезлашди 2024, Noyabr
Anonim
STM32 bilan RPM o'lchagich
STM32 bilan RPM o'lchagich

Garchi sotib olish biroz noqulaylik tug'dirsa -da (chunki u ko'plab internet -do'konlarda mavjud emas), men STM32 L432KC ni muhokama qilishni lozim topdim. Bu chip ULTRA LOW POWER bo'lgani uchun alohida mehrga loyiqdir. Biroq, STM32 -ga ega bo'lmaganlar uchun uni ushbu loyihada Arduino Uno bilan almashtirish mumkin. Buni amalga oshirish uchun, faqat uzilish kiritish pinini o'zgartiring.

Keling, STM32 L432KC va infraqizil sensor yordamida RPM o'lchagichni yarataylik. Xuddi shu dastur shamol tezligini o'lchash uchun ham ishlatilishi mumkin. Ushbu mikrokontrollerning kam quvvatli xususiyati IOT uchun juda mos keladi.

1 -qadam: Modullar

Modullar
Modullar
Modullar
Modullar

Bugungi loyihamiz uchun biz 8 xonali MAX7219CWG va infraqizil moduldan foydalanamiz.

2-qadam: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

3 -qadam: Namoyish

Namoyish
Namoyish

Bizning yig'ilishimizda bizda STM32, 8-raqamli displey va pulsli kirish mavjud. Infraqizil kartochkada fototransistor va oq lentadan sakrash orqali nurni ushlab turuvchi LED mavjud. Bu tasma g'ildirakka mahkamlanadi va har burilishda puls hosil qiladi, uni STM32 uzilishi ushlab oladi.

Bizda lenta o'qish signalining shovqini STM32 ga etib bormasligi uchun ishlatilgan diod va kondansatör mavjud, bu uni yoqish va o'chirishni tushuntiradi.

Namoyish bizning loyihamizni, shuningdek Minipa hisoblagichini ko'rsatadi (ikkalasi ham ishlaydi).

4 -qadam: yig'ish

O'rnatish
O'rnatish

5 -qadam: Dastur

Biz infraqizil modul STM32 L432KC -ning har bir "burilishida" uzilishni keltirib chiqaradigan dasturni bajaramiz va RPMni displeyda ko'rsatish uchun hisob -kitoblarni qilamiz.

6 -qadam: kutubxonalar

Kutubxonalar
Kutubxonalar

Quyidagi "DigitLedDisplay" kutubxonasini qo'shing.

"Sketch >> kutubxonalarni qo'shish >> kutubxonalarni boshqarish …" ga kiring.

7 -qadam: Manba kodi

Kutubxonalar va o'zgaruvchilar

Keling, DigitLedDisplay kutubxonasini o'z ichiga olgan manba kodini boshlaylik. Biz ko'rsatiladigan ob'ektni ko'rsatamiz. Men uzilish pinini o'rnatdim, u 12 bo'ladi. Bundan tashqari, to'qnashuv muammosini oldini olish uchun, RPM hisoblagichi uchun ham, vaqt uchun ham o'zgaruvchan operatorni kiritaman.

/ * DigitLedDisplay kutubxonasini qo'shing */#"DigitLedDisplay.h" ni o'z ichiga oladi/ * 7 -pinni DINga, 6 -ni CS -ga, 5 -ni CLK -ga ko'rsatish uchun Arduino -pin */// 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) uchuvchi belgisiz int rpm; // contador de rpm uchuvchan, uzoq vaqt imzolanmagan; // temp

Sozlash

O'rnatishda biz ekranning ishlashini sozlaymiz, shuningdek uzilishni Rising sifatida sozlaymiz.

void setup () {Serial.begin (115200); / * Yorqinlikni min: 1, maksimal: 15 */ ld.setBright (10); / * Raqamlar sonini o'rnating */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; vaqt tugashi = millis (); }

Loop

Nihoyat, displeyni yangilash uchun 1 daqiqada 1 oralig'ini aniqlaymiz. Ekranni tozalashdan so'ng biz RPM -ni chop etamiz. Biz uzilish chaqiradigan funktsiyani bajaramiz. Biz RPM va yangilanish vaqtini hisoblaymiz.

void loop () {kechiktirish (1000); ld.clear (); ld.printDigit (rpm); } void interruptPin () {rpm = 60*1000/(millis () - vaqt); vaqt tugashi = millis (); }

8 -qadam: fayllar

Fayllarni yuklab oling:

PDF

INO

Tavsiya: