Съдържание:

RPM измервател със STM32: 8 стъпки
RPM измервател със STM32: 8 стъпки

Видео: RPM измервател със STM32: 8 стъпки

Видео: RPM измервател със STM32: 8 стъпки
Видео: Автомобильный генератор 12 В, 64 ампера (2000 об/мин), преобразованный в (600 об/мин) 2024, Ноември
Anonim
RPM метър със STM32
RPM метър със STM32

Въпреки че е донякъде неудобно да се купува (тъй като не се предлага в много интернет магазини), намирам за необходимо да обсъдим STM32 L432KC. Този чип заслужава специална привързаност, тъй като е ULTRA LOW POWER. Въпреки това, за тези, които не притежават STM32, той може да бъде заменен в този проект от Arduino Uno. За да направите това, просто сменете щифта на входа за прекъсване.

Нека тогава създадем RPM метър, използвайки STM32 L432KC и инфрачервен сензор. Същата програма може да се използва и за измерване на скоростта на вятъра. Функцията с ниска мощност на този микроконтролер е идеална за IOT.

Стъпка 1: Модули

Модули
Модули
Модули
Модули

За нашия проект днес използваме 8-цифрения MAX7219CWG, както и инфрачервения модул.

Стъпка 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

Стъпка 3: Демонстрация

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

В нашия монтаж имаме STM32, 8-цифрения дисплей и импулсния вход. Инфрачервената карта има фототранзистор и светодиод, който улавя светлината, отскачайки от бяла лента. Тази лента е прикрепена към колело и при всеки завой ще генерира импулс, който се улавя от прекъсването STM32.

Имаме диод и кондензатор в сглобката, които бяха използвани за предотвратяване на шума от сигнала за четене на лентата да достигне STM32, което би го накарало да интерпретира включването и изключването.

Демонстрацията показва нашия проект, както и измервателния уред Minipa (и двата в експлоатация).

Стъпка 4: Монтаж

Монтаж
Монтаж

Стъпка 5: Програма

Ще направим програма, в която инфрачервеният модул ще задейства прекъсване в STM32 L432KC на всеки „завой“и ще направим изчисленията, за да покажем оборотите на дисплея.

Стъпка 6: Библиотеки

Библиотеки
Библиотеки

Добавете следната библиотека "DigitLedDisplay".

Просто влезте в „Скица >> Включване на библиотеки >> Управление на библиотеки…“

Стъпка 7: Изходен код

Библиотеки и променливи

Нека стартираме изходния код, включително библиотеката DigitLedDisplay. Ще покажем обекта на дисплея. Зададох щифта за прекъсване, който ще бъде 12. Също така въвеждам променлив оператор както за брояча на оборотите, така и за времето, за да избегна всякакви проблеми при сблъсък.

/ * Включете библиотеката DigitLedDisplay */#включва "DigitLedDisplay.h"/ * Arduino 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 volatile unsigned longtimeold; // темпо

Настройвам

В настройката ние конфигурираме операцията на показване, както и конфигурираме прекъсването като нарастващо.

void setup () {Serial.begin (115200); / * Задайте яркостта мин: 1, макс: 15 */ ld.setBright (10); / * Задайте броя на цифрите */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; timeold = millis (); }

Цикъл

И накрая, ние определяме интервала от 1 в 1 минута, за да актуализираме дисплея. След почистване на екрана отпечатваме оборотите. Изпълняваме функцията, която прекъсването ще извика. Ние изчисляваме RPM и времето за актуализиране.

void loop () {забавяне (1000); ld.clear (); ld.printDigit (rpm); } void interruptPin () {rpm = 60*1000/(millis () - timeold); timeold = millis (); }

Стъпка 8: Файлове

Изтеглете файловете:

PDF

АЗ НЕ

Препоръчано: