Сборка макета

Структуру самодельного сервомотора можно представить в виде 5 блоков:

STM32CubeIDE. DIY Сервопривод на stm32

Драйвер TB6612 управляет мотором MOT. Энкодер мотора ENC отправляет сигналы в контроллер STM32, который, в свою очередь управляет драйвером. Наконец, потенциометр POT, которым мы задаем целевой угол, также отправляет сигнал в STM32.

Теперь разберёмся с тем, как все эти элементы собой связываются.

Подключение двигателя

Двигатель n20 с квадратурным энкодером имеет шесть контактов для подключения.

  • M2 (красный) — питание мотора;
  • VCC (чёрный) — питание энкодера;
  • C2 (жёлтый )- сигнал датчика №1;
  • C1 (зелёный) — сигнал датчика №2;
  • GND (синий) — земля энкодера;
  • M1 (белый) — питание мотора.
Мотор GA12-N20 с энкодером

Контакты мотора M1,M2 подключаем к выходу драйвера TB6612. Полярность на данном этапе не важна.

Всё остальное соединяем с контроллером по схеме:

Мотор n20VCCGNDC1C2
STM32F103C8T6 (bluepill)3.3GNDPA8PA9

Подключение драйвера TB6612

Как известно, сам микроконтроллер не сможет обеспечить вращение двигателя — не хватит силы тока. Поэтому между контроллером и мотором нужен драйвер.

К выбору драйвера для сервомотора следует относиться тщательно. Во-первых, драйвер должен обладать достаточным запасом по току, ведь система будет резко стартовать, останавливаться и менять направление вращения мотора. Во-вторых, чем выше допустимая частота ШИМ драйвера, тем более точным будет управление. В третьих, нужно обеспечить достаточное напряжение на обмотках мотора, то есть драйвер должен быть с запасом по напряжению.

Так, использование самого простого L293D приведет к проблемам, которые потом придётся решать как минимум алгоритмически. При написании данной статьи, смена драйвера на TB6612 позволила значительно улучшить качество регулирования.

Таким образом, будем работать именно с модулем на микросхеме TB6612. H-мост собран на транзисторах с МОП структурой. Частота ШИМ — 100 кГц, вместо 1 КГц у L293D. Максимальный кратковременный ток — 3,2 А.

Используем только один из двух каналов драйвера. Как уже было указано выше, к выходу первого канала драйвера (отмечен М1 или МА) подключаем мотор, а вот остальные контакты соединяем с контроллером по схеме:

Драйвер TB6612+5VGNDA1A2EA
STM32F103C8T6 (bluepill) 3.3GNDPA4PA5PA6

Драйвер TB6612 может работать от 3,3 Вольт, поэтому смело запитываем его от stm32.

Подключение потенциометра

Потенциометр нам нужен исключительно для того, чтобы задавать целевой угол. Фактически, мы можем задавать целевой угол напрямую из кода, или передавать в систему по какому-нибудь интерфейсу типа I2C или UART. Но для целей отладки, потенциометр незаменим!

Тут всё просто, схема знакомая из любого ардуино-урока:

Потенциометр 20 КОмлевый контактцентр. контактправый контакт
STM32F103C8T6 (bluepill) 3.3PA1GND

Итоговый макет будет выглядеть примерно так:

STM32CubeIDE. DIY Сервопривод на stm32

Изменено:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.