Оглавление:

Измеритель частоты вращения с STM32: 8 шагов
Измеритель частоты вращения с STM32: 8 шагов

Видео: Измеритель частоты вращения с STM32: 8 шагов

Видео: Измеритель частоты вращения с STM32: 8 шагов
Видео: STM32. Замер частоты внешнего сигнала. Двухканальный частотомер. Супер точность :) Урок 13. 2024, Ноябрь
Anonim
Измеритель оборотов с STM32
Измеритель оборотов с STM32

Хотя покупать его несколько неудобно (потому что он недоступен во многих интернет-магазинах), я считаю необходимым обсудить STM32 L432KC. Этот чип заслуживает особого внимания, так как имеет УЛЬТРА НИЗКАЯ МОЩНОСТЬ. Однако для тех, кто не владеет STM32, он может быть заменен в этом проекте на Arduino Uno. Для этого просто измените контакт входа прерывания.

Затем давайте создадим измеритель оборотов, используя STM32 L432KC и инфракрасный датчик. Эту же программу можно использовать для измерения скорости ветра. Низкое энергопотребление этого микроконтроллера идеально подходит для Интернета вещей.

Шаг 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 * / # include "DigitLedDisplay.h" / * Вывод Arduino для вывода вывода 7 на DIN, 6 на CS, 5 на CLK * / // DigitLedDisplay ld = DigitLedDisplay (7, 6, 5); // Arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); // STM32 L432KC int pin = 12; // прерывание (модуль IR) volatile unsigned int rpm; // изменение оборотов volatile unsigned long timeold; //темп

Настраивать

В Setup мы настраиваем работу отображения, а также настраиваем прерывание как Rising.

void setup () {Serial.begin (115200); / * Устанавливаем яркость min: 1, max: 15 * / ld.setBright (10); / * Устанавливаем количество цифр * / ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (контакт), interruptPin, RISING); об / мин = 0; timeold = миллис (); }

Петля

Наконец, мы определяем интервал 1 в 1 минуту для обновления дисплея. После очистки экрана печатаем обороты. Выполняем функцию, которую вызовет прерывание. Рассчитываем обороты и время обновления.

void loop () {задержка (1000); ld.clear (); ld.printDigit (об / мин); } void interruptPin () {об / мин = 60 * 1000 / (миллис () - время); timeold = миллис (); }

Шаг 8: файлы

Загрузите файлы:

PDF

Я НЕТ

Рекомендуемые: