Подключение серводвигателя к 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. Соединительные провода.

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

Схема подключения серводвигателя к плате 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.

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

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

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

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

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

Ваш адрес email не будет опубликован.