Мазмуну:

STM32 менен RPM Meter: 8 кадам
STM32 менен RPM Meter: 8 кадам

Video: STM32 менен RPM Meter: 8 кадам

Video: STM32 менен RPM Meter: 8 кадам
Video: Как использовать SSD1306 128x32 OLED-дисплей I2C с кодом Arduino 2024, Ноябрь
Anonim
STM32 менен RPM Meter
STM32 менен RPM Meter

Сатып алуу бир аз ыңгайсыз болсо да (анткени ал көптөгөн интернет -дүкөндөрдө жок), мен STM32 L432KCди талкуулоону зарыл деп эсептейм. Бул чип өзгөчө сүйүүгө татыктуу, анткени бул ULTRA LOW POWER. Бирок, STM32ге ээ болбогондор үчүн, бул долбоордо Arduino Uno менен алмаштырылышы мүмкүн. Бул үчүн, жөн гана үзгүлтүккө киргизүү пинин алмаштырыңыз.

Келгиле анда STM32 L432KC жана инфракызыл сенсорду колдонуп RPM эсептегичти түзөлү. Ушул эле программа шамалдын ылдамдыгын өлчөө үчүн да колдонулушу мүмкүн. Бул микроконтроллердин аз кубаттуулугу IOT үчүн идеалдуу.

1 -кадам: Модулдар

Модулдар
Модулдар
Модулдар
Модулдар

Бүгүнкү күндө биздин долбоор үчүн биз 8 орундуу MAX7219CWGди, ошондой эле инфракызыл модулду колдонобуз.

2-кадам: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

3 -кадам: Демонстрация

Демонстрация
Демонстрация

Биздин жыйында STM32, 8 орундуу дисплей жана импульстук киргизүү бар. Инфракызыл картада фототранзистор жана LED бар, ал ак лента менен секирип жарыкты алат. Бул лента дөңгөлөккө бекитилет жана ар бир бурулушта импульс пайда болот, аны STM32 үзгүлтүккө учуратат.

Бизде диод жана конденсатор бар, ал лентанын окуу сигналынын ызы -чуусун STM32ге жетүүсүн алдын алуу үчүн колдонулган, бул аны күйгүзүүнү жана өчүрүүнү чечет.

Демонстрация биздин долбоорду, ошондой эле Minipa метрин (экөө тең иштеп жатат) көрсөтөт.

4 -кадам: Ассамблея

Ассамблея
Ассамблея

5 -кадам: Программа

Биз инфракызыл модул STM32 L432KC үзүлүшүн ар бир "бурулушта" иштете турган программаны жасайбыз жана дисплейде RPMди көрсөтүү үчүн эсептөөлөрдү жасайбыз.

6 -кадам: Китепканалар

Китепканалар
Китепканалар

Төмөнкү "DigitLedDisplay" китепканасын кошуңуз.

Жөн гана "Эскиз >> Китепканаларды кошуу >> Китепканаларды башкаруу…" кирүү

7 -кадам: Булак коду

Китепканалар жана өзгөрмөлөр

Келгиле, DigitLedDisplay китепканасын камтыган баштапкы кодду баштайлы. Биз дисплей объектин көрсөтөбүз. Мен үзгүлтүккө кадап коём, ал 12 болот. Ошондой эле, мен кагылышуу көйгөйлөрүн болтурбоо үчүн, RPM эсептегичине да, убакытка да туруксуз операторду киргизем.

/ * DigitLedDisplay китепканасын кошуу */#камтыйт "DigitLedDisplay.h"/ * Arduino Pin Pin 7ди DINге, 6га CS, 5ке 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) туруксуз белгисиз int rpm; // contador de rpm туруксуз кол коюлбаган узак убакыт; // темп

Жайгашуу

Орнотууда дисплей ишин конфигурациялайбыз, ошондой эле үзүлүүнү Rising катары конфигурациялайбыз.

void setup () {Serial.begin (115200); / * Жарыктыгы мин: 1, макс: 15 */ ld.setBright (10); / * Сандардын санын коюңуз */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; убакыт эсеби = миллис (); }

Loop

Акырында, дисплейди жаңыртуу үчүн 1 мүнөт ичинде 1 интервалын аныктайбыз. Экранды тазалагандан кийин биз RPM басып чыгарабыз. Биз үзгүлтүккө учурай турган функцияны аткарабыз. Биз RPMди жана жаңыртуу убактысын эсептейбиз.

void loop () {delay (1000); ld.clear (); ld.printDigit (rpm); } void interruptPin () {rpm = 60*1000/(millis () - убакыт эсеби); убакыт эсеби = миллис (); }

8 -кадам: Файлдар

Файлдарды жүктөп алыңыз:

PDF

МЕН ЖОК

Сунушталууда: