Сборка макета
Структуру самодельного сервомотора можно представить в виде 5 блоков:
Драйвер TB6612 управляет мотором MOT. Энкодер мотора ENC отправляет сигналы в контроллер STM32, который, в свою очередь управляет драйвером. Наконец, потенциометр POT, которым мы задаем целевой угол, также отправляет сигнал в STM32.
Теперь разберёмся с тем, как все эти элементы собой связываются.
Подключение двигателя
Двигатель n20 с квадратурным энкодером имеет шесть контактов для подключения.
- M2 (красный) — питание мотора;
- VCC (чёрный) — питание энкодера;
- C2 (жёлтый )- сигнал датчика №1;
- C1 (зелёный) — сигнал датчика №2;
- GND (синий) — земля энкодера;
- M1 (белый) — питание мотора.
Контакты мотора M1,M2 подключаем к выходу драйвера TB6612. Полярность на данном этапе не важна.
Всё остальное соединяем с контроллером по схеме:
| Мотор n20 | VCC | GND | C1 | C2 |
| STM32F103C8T6 (bluepill) | 3.3 | GND | PA8 | PA9 |
Подключение драйвера TB6612
Как известно, сам микроконтроллер не сможет обеспечить вращение двигателя — не хватит силы тока. Поэтому между контроллером и мотором нужен драйвер.
К выбору драйвера для сервомотора следует относиться тщательно. Во-первых, драйвер должен обладать достаточным запасом по току, ведь система будет резко стартовать, останавливаться и менять направление вращения мотора. Во-вторых, чем выше допустимая частота ШИМ драйвера, тем более точным будет управление. В третьих, нужно обеспечить достаточное напряжение на обмотках мотора, то есть драйвер должен быть с запасом по напряжению.
Так, использование самого простого L293D приведет к проблемам, которые потом придётся решать как минимум алгоритмически. При написании данной статьи, смена драйвера на TB6612 позволила значительно улучшить качество регулирования.
Таким образом, будем работать именно с модулем на микросхеме TB6612. H-мост собран на транзисторах с МОП структурой. Частота ШИМ — 100 кГц, вместо 1 КГц у L293D. Максимальный кратковременный ток — 3,2 А.
Используем только один из двух каналов драйвера. Как уже было указано выше, к выходу первого канала драйвера (отмечен М1 или МА) подключаем мотор, а вот остальные контакты соединяем с контроллером по схеме:
| Драйвер TB6612 | +5V | GND | A1 | A2 | EA |
| STM32F103C8T6 (bluepill) | 3.3 | GND | PA4 | PA5 | PA6 |
Драйвер TB6612 может работать от 3,3 Вольт, поэтому смело запитываем его от stm32.
Подключение потенциометра
Потенциометр нам нужен исключительно для того, чтобы задавать целевой угол. Фактически, мы можем задавать целевой угол напрямую из кода, или передавать в систему по какому-нибудь интерфейсу типа I2C или UART. Но для целей отладки, потенциометр незаменим!
Тут всё просто, схема знакомая из любого ардуино-урока:
| Потенциометр 20 КОм | левый контакт | центр. контакт | правый контакт |
| STM32F103C8T6 (bluepill) | 3.3 | PA1 | GND |
Итоговый макет будет выглядеть примерно так:



