- Nepieciešamās sastāvdaļas
- Shēmas shēma un savienojumi
- SMT32F103C8 tapas detaļas
- STM32 programmēšana servomotoram
Elektronikā Servo motori galvenokārt tiek izmantoti robotikas projektos to precizitātes un ērtas vadāmības dēļ. Servomotori ir mazāka izmēra, un tie ir ļoti efektīvi un energoefektīvi. Tie nodrošina lielu griezes momentu, un tos var izmantot, lai paceltu vai virzītu svaru atbilstoši motora specifikācijai. Šajā apmācībā mēs uzzināsim par servomotoru un kā saskarni Servo ar STM32F103C8 paneli. Saskarne ir arī potenciometrs, lai mainītu servomotora vārpstas stāvokli, un LCD, lai parādītu leņķa vērtību.
Nepieciešamās sastāvdaļas
- STM32F103C8 (Blue Pill) dēlis
- Servomotors (SG90)
- LCD (16x2)
- Potenciometrs
- Maizes dēlis
- Džemperu vadi
Shēmas shēma un savienojumi
SMT32F103C8 tapas detaļas
In STM32F103C8, mums ir 10 ADC piespraudes (PA0-PB1), un šeit mēs izmantojam tikai vienu pin (Pa3) par analogread () iestatīšanai vārpstas pozīcijas motoru ar potenciometru. Arī starp STM32 15 PWM tapām (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9) impulsu nodrošināšanai uz servo tiks izmantota viena tapa motora PWM tapa (parasti tā ir oranžas krāsas).
Jūs varat uzzināt vairāk par PWM un ADC, lasot tālāk detalizētus rakstus:
- Kā lietot ADC programmā STM32F103C8
- Pulsa platuma modulācija (PWM) STM32F103C8
Savienojums starp STM32F103C8 un LCD
STM32F103C8 | LCD |
GND | VSS |
+ 5V | VDD |
Uz potenciometra centra PIN | V0 |
PB0 | RS |
GND | RW |
PB1 | E |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5V | A |
GND | K |
Savienojums starp servomotoru un STM32F103C8
STM32F103C8 |
SERVO |
+ 5V |
Sarkans (+ 5 V) |
PA0 |
ORANGE (PWM tapa) |
GND |
BROWN (GND) |
Potenciometru savienojumi
Mēs šeit esam izmantojuši DIVUS potenciometrus
1. Potenciometru labajā pusē izmanto, lai mainītu LCD kontrastu. Tam ir trīs tapas, kreisā tapa ir paredzēta + 5V, labā - GND, un centrālā tapa ir savienota ar LCD V0.
2. Kreisajā pusē esošo potenciometru izmanto, lai mainītu servomotora vārpstas stāvokli, kontrolējot analogā ieejas spriegumu, kreisajam tapam ir ieeja 3,3 V, labajam - GND, un centrālā izeja ir savienota ar STM32 (PA3)
STM32 programmēšana servomotoram
Tāpat kā mūsu iepriekšējā apmācība, mēs programmējām STM32F103C8 ar Arduino IDE, izmantojot USB portu, neizmantojot FTDI programmētāju. Mēs varam turpināt to programmēt kā Arduino. Pilns kods ir norādīts projekta beigās.
Vispirms mēs esam iekļāvuši bibliotēkas failus servo un LCD funkcijām:
# iekļaut
Pēc tam paziņoja LCD displeja tapas un to inicializēja. Deklarēja arī dažus citus mainīgos lielumus PWM un potenciometram:
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;
Šeit mēs esam izveidojuši mainīgo servo ar datu tipu Servo un pievienojuši to iepriekš deklarētajai PWM tapai.
Servo servo; servo.attach (servoPin);
Pēc tam nolasiet analogo vērtību no tapas PA3, jo tā ir ADC tapa, kas pārveido analogo spriegumu (0-3,3) digitālā formā (0-4095)
analogRead (potPin);
Tā kā digitālajai izejai ir 12 bitu izšķirtspēja, mums jāiegūst vērtības grādu diapazonā (0–170), tā sadala ADC (0–4096) vērtību atbilstoši maksimālajam leņķim 170 grādu, tāpēc mēs dalām ar 24.
leņķis = (nolasījums / 24);
Zemāk teiktais liek servomotoram pagriezt vārpstu dotajā leņķī.
servo.write (leņķis);
Pilns kods ir norādīts zemāk, un tas ir labi izskaidrots ar komentāriem.