- Komponente potrebne
- Kružni dijagram i veze
- Pojedinosti pina SMT32F103C8
- Programiranje STM32 za servo motor
U elektronici se servo motori uglavnom koriste u projektima robotike zbog svoje točnosti i jednostavnog rukovanja. Servo motori su manjih dimenzija, vrlo su učinkoviti i energetski učinkoviti. Omogućuju veliki okretni moment i mogu se koristiti za podizanje ili potiskivanje utega prema specifikaciji motora. U ovom uputstvu naučit ćemo o servo motoru i kako povezati servo s pločom STM32F103C8. Potenciometar je također povezan kako bi se promijenio položaj osovine servo motora, a LCD za prikaz vrijednosti kuta.
Komponente potrebne
- STM32F103C8 (plava pilula) ploča
- Servo motor (SG90)
- LCD (16x2)
- Potenciometar
- Breadboard
- Jumper žice
Kružni dijagram i veze

Pojedinosti pina SMT32F103C8
U STM32F103C8 imamo 10 ADC pinova (PA0-PB1), a ovdje koristimo samo jedan klin ( PA3 ) za analogni čitač () za podešavanje položaja osovine motora potenciometrom. Također među 15 PWM pinova STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9), jedan pin će se koristiti za davanje impulsa servu PWM klin motora (obično je narančaste boje).
Više o PWM-u i ADC-u možete saznati čitajući u nastavku detaljne članke:
- Kako koristiti ADC u STM32F103C8
- Modulacija širine impulsa (PWM) u STM32F103C8
Veza između STM32F103C8 i LCD-a
| STM32F103C8 | LCD |
| GND | VSS |
| + 5V | VDD |
| Na PIN centra potenciometra | V0 |
| PB0 | RS |
| GND | RW |
| PB1 | E |
| PB10 | D4 |
| PB11 | D5 |
| PC13 | D6 |
| PC14 | D7 |
| + 5V | A |
| GND | K |
Veza između servo motora i STM32F103C8
|
STM32F103C8 |
SERVO |
|
+ 5V |
CRVENA (+ 5V) |
|
PA0 |
NARANČASTA (PWM pribadača) |
|
GND |
SMEĐA (GND) |
Potenciometri Priključci
Ovdje smo upotrijebili DVA potenciometra
1. Potenciometar s desne strane koristi se za promjenu kontrasta LCD zaslona. Ima tri nožice, lijevi pin je za + 5V, a desni za GND, a središnji pin povezan je na V0 LCD-a.
2. Potenciometar s lijeve strane koristi se za promjenu položaja osovine servo motora upravljajući analognim ulaznim naponom, lijevi zatik ima ulaz 3,3 V, a desni GND i središnji je izlaz povezan na (PA3) STM32

Programiranje STM32 za servo motor
Kao i naš prethodni vodič, STM32F103C8 programirali smo s Arduino IDE-om putem USB priključka bez upotrebe FTDI programera. Možemo ga nastaviti programirati poput Arduina. Kompletni kod dat je u nastavku na kraju projekta.
Prvo smo uvrstili knjižnične datoteke za servo i LCD funkcije:
#include
Zatim su deklarirane igle za LCD zaslon i inicijalizirane. Također je deklarirano nekoliko drugih varijabli za PWM i potenciometar:
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;
Ovdje smo stvorili varijabilni servo s tipom servo podataka i priključili ga na prethodno deklarirani PWM pin.
Servo servo; servo.attach (servoPin);
Zatim pročitajte Analognu vrijednost s pina PA3 jer je ADC pin pretvara analogni napon (0-3,3) u digitalni oblik (0-4095)
analogRead (potPin);
Kako je digitalni izlaz 12-bitne razlučivosti, moramo dobiti vrijednosti u rasponu stupnja (0-170), on dijeli vrijednost ADC (0-4096) prema maksimalnom kutu 170 stupnjeva, pa dijelimo s 24.
kut = (očitanje / 24);
Ispod navodi servo motor za okretanje osovine pod zadanim kutom.
servo.write (kut);
Kompletni kod dan je u nastavku i dobro objašnjen komentarima.
