Документация Engee
Notebook

Пакет поддержки Arduino: проект пантограф

Проведем известный в кругах любителей Arduino эксперимент - Пантограф. Соберем модель, которая будет управлять позицией вала сервопривода на основе позиции роторного энкодера.

Введение

После усвоения документации по пакету поддержки Arduino и использования базовых блоков интеграции, можно приступить к сборке эксперимента "Пантограф".

Для данной модели понадобится набор из роторного энкодера, сервопривода, макетной платы и STM32 Nucleo 64 F401RE.

Схема на макетке

image.png

Модель на Engee

Вся логика модели заключается в считывании позиции энкодера, конвертации этой позиции в градусы и передачи этого значения в сервопривод:

  • Arduino-encoderRead - получает значение позиции энкодера
  • ConvertToDegrees - конвертирует значение энкодера в значение из интервала от 0 до 180
  • Arduino-servoWrite - задает положение вала сервопривода, на основе значения из блока ConvertToDegrees
In [ ]:
amplitude = 36  # Амплитуда значений для энкодера

POS - Значение позиции вала энкодера

DEGREE - Значение градусов для задания в сервопривод

Снимок экрана_20260406_171707.png

Позиция энкодера может принимать значение от -amplitude/2 до amplitude/2. В нашем случае это от -18 до 18, что нужно преобразовать в интервал от 0 до 180 - именно это и происходит внутри подсистемы ConvertToDegrees:

image.png
In [ ]:
BIASED = POS + (amplitude/2)  # В блоке Add

Смещаем интервал на половину периода amplitude.

In [ ]:
MULTIPLIED = BIASED * 5  # В блоке DSP Product

Растягиваем получившийся интервал в 5 раз, получая новый, искомый от 0 до 180.

Заключение

На простом примере пантографа мы ознакомились с возможностями блоков Arduino-encoderRead и Arduino-servoWrite, что позволяет создать более сложные модели управления.