- Потрібні компоненти
- Схема та з'єднання
- Подробиці контактів SMT32F103C8
- Програмування STM32 для сервомотора
В електроніці сервомотори в основному використовуються в робототехнічних проектах завдяки їх точності та простоті в експлуатації. Сервомотори мають менші розміри, вони дуже ефективні та енергоефективні. Вони забезпечують високий крутний момент і можуть використовуватися для підняття або штовхання тягарів відповідно до специфікації двигунів. У цьому підручнику ми дізнаємося про сервомотор та про те, як взаємодіяти серво з платою STM32F103C8. Потенціометр також з'єднаний для зміни положення валу сервомотора, а РК-дисплей відображає значення кута.
Потрібні компоненти
- STM32F103C8 (Блакитна таблетка) дошка
- Сервомотор (SG90)
- РК-дисплей (16x2)
- Потенціометр
- Макет
- Провід перемички
Схема та з'єднання
Подробиці контактів SMT32F103C8
У STM32F103C8 ми маємо 10 висновків АЦП (PA0-PB1), і тут ми використовуємо лише один штифт (PA3) для аналогового зчитування () для встановлення положення вала двигуна за допомогою потенціометра. Також серед 15 ШІМ-контактів STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9), один штифт буде використовуватися для подачі імпульсів на сервопривод ШИМ двигуна (зазвичай він оранжевого кольору).
Ви можете дізнатись більше про ШІМ та АЦП, прочитавши нижче докладні статті:
- Як користуватися АЦП в STM32F103C8
- Широтно-імпульсна модуляція (ШІМ) у STM32F103C8
Зв'язок між STM32F103C8 та РК-дисплеєм
STM32F103C8 | РК-дисплей |
GND | VSS |
+ 5В | VDD |
На PIN-код центру потенціометра | V0 |
PB0 | RS |
GND | RW |
PB1 | Е |
PB10 | D4 |
PB11 | D5 |
ПК13 | D6 |
ПК14 | D7 |
+ 5В | A |
GND | К |
З'єднання між серводвигуном та STM32F103C8
STM32F103C8 |
СЕРВО |
+ 5В |
ЧЕРВОНИЙ (+ 5 В) |
PA0 |
ОРАНЖЕВИЙ (ШІМ-штифт) |
GND |
КОРИЧНИЙ (GND) |
Потенціометри З'єднання
Тут ми використовували ДВА потенціометри
1. Потенціометр праворуч використовується для зміни контрастності РК-дисплея. Він має три штифти, лівий штифт призначений для + 5 В, а правий для 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; Рідкий кристал LCD (rs, en, d4, d5, d6, d7); int servoPin = PA0; int potPin = PA3;
Тут ми створили змінну сервосистему з типом даних Servo та приєднали її до раніше оголошеного ШІМ-контакту.
Серво серво; servo.attach (servoPin);
Потім зчитуйте аналогове значення зі штифта PA3, оскільки це штифт АЦП, він перетворює аналогову напругу (0-3,3) у цифрову форму (0-4095)
analogRead (potPin);
Оскільки цифровий вихід має 12-бітну роздільну здатність, нам потрібно отримати значення в діапазоні градусів (0-170), він ділить значення ADC (0-4096) відповідно до максимального кута 170 град, тому ми ділимося з 24.
кут = (читання / 24);
Нижче наведено сервомотор для обертання валу під заданим кутом.
servo.write (кут);
Повний код наведено нижче і добре пояснено коментарями.