Подключение серводвигателя к STM32F103C8 (Blue Pill)


В современной электронике, а особенно в проектах робототехники, широкое применение находят серводвигатели (сервомоторы), которые отличаются небольшими размерами, энергоэффективностью и точностью. Также они обеспечивают большой крутящий момент и могут передвигать или поднимать различные грузы. В данной статье мы рассмотрим подключение серводвигателя к плате STM32F103C8, также известной под названием STM32 Blue Pill ("синяя таблетка"). Для регулировки положения сервомотора будет использоваться потенциометр, а угол поворота оси сервомотора будет отображаться на экране ЖК дисплея 16х2.

Внешний вид проекта подключения серводвигателя к STM32F103C8 (Blue Pill)

Ранее на нашем сайте мы рассматривали подключение серводвигателя к следующим микроконтроллерам (платам):

Необходимые компоненты

  1. Плата разработки STM32F103C8 (STM32 Blue Pill) (купить на AliExpress).
  2. Сервомотор SG90 (купить на AliExpress).
  3. ЖК дисплей 16x2 (купить на AliExpress).
  4. Потенциометр – 2шт. (купить на AliExpress).
  5. Макетная плата.
  6. Соединительные провода.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Схема проекта

Схема подключения серводвигателя к плате STM32F103C8 (Blue Pill) представлена на следующем рисунке.

Схема подключения серводвигателя к плате STM32F103C8 (Blue Pill)В плате STM32F103C8 имеется 10 контактов АЦП (PA0-PB1), из них мы будем использовать только один (PA3) для подключения потенциометра и установки с помощью него угла поворота серводвигателя.

Также плата STM32F103C8 содержит 15 ШИМ контактов (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9), в нашем проекте мы будем использовать только один из них для подачи импульсов на ШИМ контакт сервомотора (обычно он оранжевого цвета).

Более подробно про использование АЦП и ШИМ в плате STM32F103C8 (Blue Pill) вы можете прочитать в следующих статьях:

Соединения между платой STM32F103C8 и ЖК дисплеем представлены в следующей таблице.

Плата STM32F103C8 ЖК дисплей
GND VSS
+5V VDD
средний контакт потенциометра V0
PB0 RS
GND RW
PB1 E
PB10 D4
PB11 D5
PC13 D6
PC14 D7
+5V A
GND K

Соединения между платой STM32F103C8 и сервомотором представлены в следующей таблице.

Плата STM32F103C8 Сервомотор
+5V RED (+5V)
PA0 ORANGE (PWM pin)
GND BROWN (GND)

Также в нашей схеме мы использовали два потенциометра. Потенциометр в правой части схемы для регулировки контрастности ЖК дисплея, его центральный контакт подключен к контакту V0 дисплея. Потенциометр в левой части схемы используется для задания положения оси сервомотора, его левый контакт подключен к контакту 3.3V платы STM32F103C8, правый – к контакту GND платы, а центральный – к контакту PA3 платы.

Внешний вид собранной конструкции проекта

Объяснение программы для платы STM32

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Программировать плату STM32 мы будем с помощью Arduino IDE через USB порт без использования FTDI программатора. Таким образом, она будет программироваться фактически также, как и обычные платы Arduino.

Первым делом в программе подключим библиотеки для работы с серводвигателем и ЖК дисплеем.

Затем укажем контакты платы, к которым подключен ЖК дисплей и создадим объект для работы с ним. Также объявим контакты, к которым подключаются серводвигатель и потенциометр.

Далее создадим объект класса Servo для работы с серводвигателем и прикрепим его к ранее указанному ШИМ контакту.

После этого считаем аналоговое значение с контакта PA3 (контакт АЦП) и преобразуем его из аналогового напряжения (0-3.3) в цифровую форму (0-4095).

Поскольку контакты АЦП у нас имеют 12-битное разрешение (диапазон чисел от 0 до 4096), а допустимый угол поворота оси серводвигателя у нас лежит в диапазоне (0-170), то для преобразования из диапазона значений на выходе АЦП (0-4096) в диапазон (0-170) разделим значение с выхода АЦП на 24. Эту задачу можно также выполнить с помощью функции map.

И, наконец, дадим команду серводвигателю на поворот его оси на заданный угол.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
1 431 просмотров

Комментарии

Подключение серводвигателя к STM32F103C8 (Blue Pill) — 2 комментария

  1. Подключение серводвигателя к STM32F103C8 (Blue Pill)
    Все это здорово...а мне надо подключить 8 сервоприводов и четыре шаговика....и как ,выдержит она по питанию или все просядет...Для Ардуино есть специальные доп. платы развязки для подключения серв с отдельным питанием.....

    • Добрый день. Скорее всего, такое количество двигателей по питанию она не выдержит и нужно использовать аналогичные как и для Ардуино схемы развязки, а для управления шаговыми двигателями использовать микросхемы драйверов двигателей или готовые модули на их основе

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

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