- Požadované komponenty
- Schéma zapojení a zapojení
- SMT32F103C8 Podrobnosti o kolíku
- Programování STM32 pro servomotor
V elektronice se servomotory většinou používají v robotických projektech kvůli jejich přesnosti a snadné manipulaci. Servomotory mají menší rozměry a jsou velmi účinné a energeticky účinné. Poskytují vysoký točivý moment a lze je použít ke zvedání nebo tlačení závaží podle specifikace motoru. V tomto tutoriálu se dozvíme o servomotoru a jak propojit servo s deskou STM32F103C8. Potenciometr je také propojen pro změnu polohy hřídele servomotoru a LCD pro zobrazení hodnoty úhlu.
Požadované komponenty
- Deska STM32F103C8 (modrá pilulka)
- Servomotor (SG90)
- LCD (16x2)
- Potenciometr
- Nepájivá deska
- Propojovací dráty
Schéma zapojení a zapojení
SMT32F103C8 Podrobnosti o kolíku
V STM32F103C8 máme 10 pinů ADC (PA0-PB1) a zde používáme pouze jeden pin (PA3) pro analogový () pro nastavení polohy hřídele motoru potenciometrem. Také mezi 15 PWM piny STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9) bude jeden kolík použit pro poskytování pulsů servu pin PWM motoru (obvykle má oranžovou barvu).
Další informace o PWM a ADC naleznete v podrobných článcích níže:
- Jak používat ADC v STM32F103C8
- Pulzní šířková modulace (PWM) v STM32F103C8
Propojení mezi STM32F103C8 a LCD
STM32F103C8 | LCD |
GND | VSS |
+ 5V | VDD |
Na středový PIN potenciometru | V0 |
PB0 | RS |
GND | RW |
PB1 | E |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5V | A |
GND | K. |
Spojení mezi servomotorem a STM32F103C8
STM32F103C8 |
SERVO |
+ 5V |
ČERVENÁ (+ 5 V) |
PA0 |
ORANŽOVÁ (kolík PWM) |
GND |
HNĚDÝ (GND) |
Připojení potenciometrů
Použili jsme zde dva potenciometry
1. Potenciometr vpravo slouží ke změně kontrastu LCD. Má tři piny, levý kolík je pro + 5 V a pravý pro GND a středový kolík je připojen k V0 LCD.
2. Potenciometr vlevo slouží ke změně polohy hřídele servomotoru ovládáním analogového vstupního napětí, levý kolík má vstup 3,3 V a pravý GND a střední výstup je připojen k (PA3) STM32
Programování STM32 pro servomotor
Stejně jako náš předchozí výukový program jsme programovali STM32F103C8 s Arduino IDE přes USB port bez použití programátoru FTDI. Můžeme to programovat jako Arduino. Celý kód je uveden níže na konci projektu.
Nejprve jsme zahrnuli soubory knihovny pro funkce serva a LCD:
#zahrnout
Poté deklaroval piny pro LCD displej a inicializoval to. Také deklarováno několik dalších proměnných pro PWM a potenciometr:
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;
Zde jsme vytvořili variabilní servo s datovým typem Servo a připojili jsme jej k dříve deklarovanému PWM pinu.
Servo servo; servo.attach (servoPin);
Poté načtěte analogovou hodnotu z pinu PA3, protože je to pin ADC, který převádí analogové napětí (0-3,3) do digitální podoby (0-4095)
analogRead (potPin);
Protože digitální výstup má 12bitové rozlišení, musíme získat hodnoty v rozsahu stupňů (0-170), rozděluje hodnotu ADC (0-4096) podle maximálního úhlu 170 stupňů, takže dělíme 24.
úhel = (čtení / 24);
Níže uvedené prohlášení umožňuje servomotoru otáčet hřídel pod daným úhlem.
servo.write (úhel);
Kompletní kód je uveden níže a dobře vysvětlen komentáři.