- Необходимые компоненты
- Принципиальная схема и подключения
- SMT32F103C8 Информация о контакте
- Программирование STM32 для серводвигателя
В электронике серводвигатели в основном используются в робототехнических проектах из-за их точности и простоты использования. Серводвигатели меньше по размеру, они очень эффективны и энергоэффективны. Они обеспечивают высокий крутящий момент и могут использоваться для подъема или толкания грузов в соответствии со спецификацией двигателей. В этом руководстве мы узнаем о серводвигателе и о том, как связать сервопривод с платой STM32F103C8. Потенциометр также подключен для изменения положения вала серводвигателя и ЖК-дисплей для отображения значения угла.
Необходимые компоненты
- Плата STM32F103C8 (Blue Pill)
- Серводвигатель (SG90)
- ЖК-дисплей (16x2)
- Потенциометр
- Макетная плата
- Перемычки
Принципиальная схема и подключения
SMT32F103C8 Информация о контакте
В STM32F103C8 у нас есть 10 контактов АЦП (PA0-PB1), и здесь мы используем только один контакт (PA3) для analogread () для установки положения вала двигателя с помощью потенциометра. Также среди 15 выводов PWM STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9) один вывод будет использоваться для подачи импульсов на сервопривод. вывод ШИМ двигателя (обычно оранжевого цвета).
Вы можете узнать больше о ШИМ и АЦП, прочитав подробные статьи ниже:
- Как использовать АЦП в STM32F103C8
- Широтно-импульсная модуляция (ШИМ) в STM32F103C8
Соединение между STM32F103C8 и LCD
STM32F103C8 | ЖК-дисплей |
GND | VSS |
+ 5В | VDD |
К центральному контакту потенциометра | V0 |
PB0 | RS |
GND | RW |
PB1 | E |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5В | А |
GND | K |
Соединение между серводвигателем и STM32F103C8
STM32F103C8 |
СЕРВО |
+ 5В |
КРАСНЫЙ (+ 5В) |
PA0 |
ОРАНЖЕВЫЙ (вывод ШИМ) |
GND |
КОРИЧНЕВЫЙ (ЗЕМЛЯ) |
Подключение потенциометров
Здесь мы использовали ДВА потенциометра
1. Потенциометр справа используется для изменения контрастности ЖК-дисплея. Он имеет три контакта, левый контакт для + 5V, правый для GND, а центральный контакт подключен к V0 ЖК-дисплея.
2. Потенциометр слева используется для изменения положения вала серводвигателя путем управления аналоговым входным напряжением, левый контакт имеет вход 3,3 В, а правый - GND, а центральный выход подключен к (PA3) STM32.
Программирование STM32 для серводвигателя
Как и в предыдущем руководстве, мы запрограммировали STM32F103C8 с помощью Arduino IDE через порт USB без использования программатора FTDI. Мы можем продолжить программировать его как Arduino. Полный код приведен ниже в конце проекта.
Сначала мы включили файлы библиотеки для функций сервопривода и ЖК-дисплея:
#включают
Затем объявил контакты для ЖК-дисплея и инициализировал его. Также объявлено несколько других переменных для ШИМ и потенциометра:
const int rs = PB0, en = PB1, d4 = PB10, d5 = PB11, d6 = PC13, d7 = PC14; ЖК-дисплей LiquidCrystal (RS, EN, D4, D5, D6, D7); int servoPin = PA0; int potPin = PA3;
Здесь мы создали сервопривод переменной с типом данных Servo и прикрепили его к ранее объявленному выводу PWM.
Серво сервопривод; servo.attach (сервопин);
Затем считайте аналоговое значение с вывода PA3, поскольку это вывод АЦП, он преобразует аналоговое напряжение (0-3,3) в цифровую форму (0-4095).
analogRead (potPin);
Поскольку цифровой выход имеет разрешение 12 бит, нам нужно получить значения в диапазоне градусов (0-170), он делит значение АЦП (0-4096) в соответствии с максимальным углом 170 градусов, поэтому мы делим на 24.
угол = (чтение / 24);
Приведенное ниже утверждение заставляет серводвигатель вращать вал на указанный угол.
servo.write (угол);
Полный код приведен ниже и хорошо объяснен комментариями.