- Potrebne komponente
- Shema vezja in povezave
- Podrobnosti o zatiču SMT32F103C8
- Programiranje STM32 za servo motor
V elektroniki se servo motorji večinoma uporabljajo v projektih robotike zaradi svoje natančnosti in enostavnega upravljanja. Servo motorji so manjši in so zelo učinkoviti ter energetsko učinkoviti. Zagotavljajo visok navor in se lahko uporabljajo za dviganje ali potiskanje uteži v skladu s specifikacijami motorjev. V tej vadnici bomo izvedeli več o servo motorju in kako povezati servo s ploščo STM32F103C8. Potenciometer je povezan tudi za spreminjanje položaja gredi servo motorja in LCD za prikaz vrednosti kota.
Potrebne komponente
- STM32F103C8 (modra tableta) plošča
- Servo motor (SG90)
- LCD (16x2)
- Potenciometer
- Breadboard
- Jumper žice
Shema vezja in povezave
Podrobnosti o zatiču SMT32F103C8
V STM32F103C8 imamo 10 zatičev ADC (PA0-PB1), tu pa uporabljamo samo en zatič (PA3) za analogno branje () za nastavitev položaja gredi motorja s potenciometrom. Tudi med 15 PWM nožicami STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9) bo en pin uporabljen za oddajanje impulzov servo PWM zatič motorja (običajno je oranžne barve).
Več o PWM in ADC lahko izveste tako, da spodaj preberete podrobne članke:
- Kako uporabljati ADC v STM32F103C8
- Modulacija širine impulza (PWM) v STM32F103C8
Povezava med STM32F103C8 in LCD
STM32F103C8 | LCD |
GND | VSS |
+ 5V | VDD |
Na kodo PIN Potentiometer Center | V0 |
PB0 | RS |
GND | RW |
PB1 | E |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5V | A |
GND | K |
Povezava med servo motorjem in STM32F103C8
STM32F103C8 |
SERVO |
+ 5V |
RDEČA (+ 5V) |
PA0 |
ORANŽNA (PWM zatič) |
GND |
RJAVA (GND) |
Priključki potenciometrov
Tu smo uporabili DVA potenciometra
1. Potenciometer na desni se uporablja za spreminjanje kontrasta LCD. Ima tri zatiče, levi zatič je za + 5V, desni pa za GND, sredinski zatič pa je povezan z V0 LCD.
2. Potenciometer na levi se uporablja za spreminjanje položaja gredi servo motorja z nadzorom analogne vhodne napetosti, levi zatič ima vhod 3,3 V, desni pa GND in sredinski izhod je povezan s (PA3) STM32
Programiranje STM32 za servo motor
Tako kot prejšnja vadnica smo tudi STM32F103C8 z Arduino IDE programirali prek vrat USB brez uporabe programerja FTDI. Lahko ga nadaljujemo s programiranjem kot Arduino. Popolna koda je navedena spodaj na koncu projekta.
Najprej smo vključili knjižnične datoteke za servo in LCD funkcije:
#include
Nato deklarirani zatiči za LCD zaslon in ga inicializirali. Deklarirano je tudi nekaj drugih spremenljivk za PWM in potenciometer:
const int rs = PB0, en = PB1, d4 = PB10, d5 = PB11, d6 = PC13, d7 = PC14; LCD LiquidCrystal (rs, en, d4, d5, d6, d7); int servoPin = PA0; int potPin = PA3;
Tu smo ustvarili spremenljiv servo s podatkovnim tipom Servo in ga pritrdili na predhodno deklarirani PWM pin.
Servo servo; servo.attach (servoPin);
Nato preberite Analogna vrednost iz zatiča PA3, ker je ADC zatič, pretvori analogno napetost (0-3,3) v digitalno obliko (0-4095)
analogRead (potPin);
Ker je digitalni izhod 12-bitne ločljivosti, moramo dobiti vrednosti v območju stopnje (0-170), vrednost ADC (0-4096) deli glede na največji kot 170 stopinj, tako da delimo z 24.
kot = (branje / 24);
Spodnja izjava navaja servo motor za vrtenje gredi pod določenim kotom.
servo.write (kot);
Popolna koda je podana spodaj in dobro pojasnjena s komentarji.