- Szükséges alkatrészek
- Áramkör és kapcsolatok
- SMT32F103C8 PIN részletek
- STM32 programozása szervomotorhoz
Az elektronikában a szervomotorokat pontosságuk és könnyű kezelhetőségük miatt többnyire a robotprojektekben használják. A szervomotorok kisebb méretűek, nagyon hatékonyak és energiatakarékosak. Nagy nyomatékot nyújtanak, és súlyok emelésére vagy tolására használhatók a motor specifikációjának megfelelően. Ebben az oktatóanyagban megismerkedhetünk a szervomotorral és a szervo interfészének összekapcsolásával az STM32F103C8 táblával. Potenciométer is csatlakozik a szervomotor tengelyének helyzetének megváltoztatásához, valamint egy LCD a szögérték megjelenítéséhez.
Szükséges alkatrészek
- STM32F103C8 (kék tabletta) tábla
- Szervomotor (SG90)
- LCD (16x2)
- Potenciométer
- Kenyérlemez
- Jumper huzalok
Áramkör és kapcsolatok
SMT32F103C8 PIN részletek
Az STM32F103C8-ban 10 ADC - csapunk van (PA0-PB1), és itt csak egy csapot (PA3) használunk az analóg olvasáshoz () a motor tengelyének potenciométerrel történő beállításához. Az STM32 15 PWM csapja (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9) között szintén egy csapot használunk impulzusokhoz a szervóhoz motor PWM csapja (általában narancssárga színű).
Az alábbiakban részletes cikkeket olvashat a PWM-ről és az ADC-ről:
- Az ADC használata az STM32F103C8 fájlban
- Impulzusszélesség-moduláció (PWM) az STM32F103C8-ban
Csatlakozás az STM32F103C8 és az LCD között
STM32F103C8 | LCD |
GND | VSS |
+ 5V | VDD |
A potenciométer középső PIN-kódjához | V0 |
PB0 | RS |
GND | RW |
PB1 | E |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5V | A |
GND | K |
Csatlakozás a szervomotor és az STM32F103C8 között
STM32F103C8 |
SZERVO |
+ 5V |
VÖRÖS (+ 5 V) |
PA0 |
NARANCS (PWM tű) |
GND |
BARNA (GND) |
Potenciométerek csatlakozásai
Itt KÉT potenciométert használtunk
1. A jobb oldali potenciométer az LCD kontrasztjának változtatására szolgál. Három csap van, a bal csap + 5V, a jobb a GND, a középső tű pedig az LCD V0-hoz van csatlakoztatva.
2. A bal oldali potenciométerrel a szervomotor tengelyének helyzetét az analóg bemeneti feszültség szabályozásával lehet megváltoztatni, a bal csap 3,3 V bemenettel, a jobb GND bemenettel és a középső kimenet az STM32 (PA3) csatlakozásával van ellátva.
STM32 programozása szervomotorhoz
Az előző oktatóanyaghoz hasonlóan az STM32F103C8-at az Arduino IDE-vel USB porton keresztül programoztuk, FTDI programozó használata nélkül. Úgy folytathatjuk a programozást, mint egy Arduino. A teljes kódot alább adjuk meg a projekt végén.
Először könyvtári fájlokat mellékeltünk a szervo és az LCD funkciókhoz:
#include
Ezután deklarálta az LCD-kijelző csapjait és inicializálta. Néhány egyéb változó deklarált a PWM és a potenciométer számára is:
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;
Itt hoztunk létre változó szervót a Servo adattípussal, és csatoltuk a korábban deklarált PWM csaphoz.
Szervo szervo; servo.attach (servoPin);
Ezután olvassa el az analóg értéket a PA3 tűről, mivel ez egy ADC tű, amely átalakítja az analóg feszültséget (0-3,3) digitális formává (0-4095)
analogRead (potPin);
Mivel a digitális kimenet 12 bites felbontású, meg kell szereznünk az értékeket a fajtartományban (0-170), az ADC (0-4096) értéket elosztja a maximális 170 fokos szög szerint, így osztjuk 24-vel.
szög = (olvasás / 24);
Az alábbi utasítás arra készteti a szervomotort, hogy a tengelyt a megadott szögben forgassa.
servo.write (szög);
A teljes kódot az alábbiakban adjuk meg, és kommentekkel jól megmagyarázzuk.