- Súčasti sú povinné
- Schéma zapojenia a zapojenia
- SMT32F103C8 Podrobnosti o kolíku
- Programovanie STM32 pre servomotor
V elektronike sa servomotory väčšinou používajú v robotických projektoch kvôli ich presnosti a ľahkej manipulácii. Servomotory sú menších rozmerov a sú veľmi účinné a energeticky efektívne. Poskytujú vysoký krútiaci moment a môžu sa použiť na zdvíhanie alebo tlačenie závažia podľa špecifikácie motorov. V tomto výučbe sa dozvieme o servomotore a spôsobe prepojenia servopohonu s doskou STM32F103C8. Je tiež zapojený potenciometer na zmenu polohy hriadeľa servomotora a LCD na zobrazenie hodnoty uhla.
Súčasti sú povinné
- Doska STM32F103C8 (modrá pilulka)
- Servomotor (SG90)
- LCD (16x2)
- Potenciometer
- Nepál
- Prepojovacie drôty
Schéma zapojenia a zapojenia
SMT32F103C8 Podrobnosti o kolíku
V STM32F103C8 máme 10 pinov ADC (PA0-PB1) a tu používame iba jeden pin (PA3) pre analogové čítanie () na nastavenie polohy hriadeľa potenciometrom. Medzi 15 PWM pinmi STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9) bude jeden pin použitý na dodanie impulzov do Servo pin PWM motora (zvyčajne má oranžovú farbu).
Viac informácií o PWM a ADC sa dozviete v podrobných článkoch nižšie:
- Ako používať ADC v STM32F103C8
- Pulzná šírková modulácia (PWM) v STM32F103C8
Prepojenie medzi STM32F103C8 a LCD
STM32F103C8 | LCD |
GND | VSS |
+ 5V | VDD |
Na stredový PIN potenciometra | V0 |
PB0 | RS |
GND | RW |
PB1 | E |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5V | A |
GND | K |
Prepojenie medzi servomotorom a STM32F103C8
STM32F103C8 |
SERVO |
+ 5V |
ČERVENÁ (+ 5 V) |
PA0 |
ORANŽOVÁ (kolík PWM) |
GND |
HNEDÝ (GND) |
Pripojenie potenciometrov
Použili sme tu DVA potenciometre
1. Potenciometer na pravej strane slúži na zmenu kontrastu LCD. Má tri piny, ľavý pin je na + 5 V a pravý na GND a stredový pin je pripojený k V0 LCD.
2. Potenciometer vľavo slúži na zmenu polohy hriadeľa servomotora riadením analógového vstupného napätia, ľavý pin má vstup 3,3 V a pravý GND a stredový výstup je pripojený k (PA3) STM32.
Programovanie STM32 pre servomotor
Rovnako ako náš predchádzajúci návod, programovali sme STM32F103C8 s Arduino IDE cez USB port bez použitia programátora FTDI. Môžeme to programovať ako Arduino. Celý kód je uvedený nižšie na konci projektu.
Najskôr sme zahrnuli knižničné súbory pre funkcie serva a LCD:
#include
Potom deklaroval piny pre LCD displej a inicializoval to. Tiež deklarovaných niekoľko ďalších premenných pre PWM a potenciometer:
const int rs = PB0, en = PB1, d4 = PB10, d5 = PB11, d6 = PC13, d7 = PC14; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int servoPin = PA0; int potPin = PA3;
Tu sme vytvorili premenné servo s dátovým typom Servo a pripojili sme ho k predtým deklarovanému PWM pinu.
Servo servo; servo.attach (servoPin);
Potom prečítajte analógovú hodnotu z kolíka PA3, pretože je to kolík ADC, ktorý prevádza analógové napätie (0-3,3) na digitálnu formu (0-4095)
analogRead (potPin);
Pretože digitálny výstup má 12-bitové rozlíšenie, musíme získať hodnoty v rozsahu stupňov (0-170), rozdeľuje hodnotu ADC (0-4096) podľa maximálneho uhla 170 stupňov, takže delíme 24.
uhol = (čítanie / 24);
Nasledujúce vyhlásenie umožňuje servomotoru otáčať hriadeľom v danom uhle.
servo.písať (uhol);
Celý kód je uvedený nižšie a je dobre vysvetlený komentármi.