- Komponenter kreves
- Kretsdiagram og tilkoblinger
- SMT32F103C8 Pin-detaljer
- Programmering STM32 for servomotor
I elektronikk brukes servomotorer hovedsakelig i robotprosjekter på grunn av nøyaktighet og enkel håndtering. Servomotorer er mindre i størrelse, og de er veldig effektive og energieffektive. De gir høyt dreiemoment og kan brukes til å løfte eller skyve vekter i henhold til motorspesifikasjonen. I denne opplæringen lærer vi om Servo Motor og hvordan man bruker Interface Servo med STM32F103C8-kortet. Et potensiometer er også grensesnitt for å variere posisjonen til servomotorens aksel, og en LCD for å vise vinkelverdien.
Komponenter kreves
- STM32F103C8 (Blue Pill) Board
- Servomotor (SG90)
- LCD (16x2)
- Potensiometer
- Brettbrett
- Jumper Wires
Kretsdiagram og tilkoblinger
SMT32F103C8 Pin-detaljer
I STM32F103C8 har vi 10 ADC-pinner (PA0-PB1), og her bruker vi bare en pinne (PA3) for analoglesing () for å stille motorens akselposisjon med potensiometer. Blant 15 PWM-pinner av STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9), vil en pin brukes til å gi pulser til Servo motorens PWM-pinne (den er vanligvis oransje).
Du kan lære mer om PWM og ADC ved å lese nedenfor for detaljerte artikler:
- Hvordan bruke ADC i STM32F103C8
- Pulsbreddemodulering (PWM) i STM32F103C8
Forbindelse mellom STM32F103C8 og LCD
STM32F103C8 | LCD |
GND | VSS |
+ 5V | VDD |
Til Potentiometer Center PIN | V0 |
PB0 | RS |
GND | RW |
PB1 | E |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5V | EN |
GND | K |
Forbindelse mellom servomotor og STM32F103C8
STM32F103C8 |
SERVO |
+ 5V |
RØD (+ 5V) |
PA0 |
ORANGE (PWM-pinne) |
GND |
BRUN (GND) |
Potensiometreforbindelser
Vi har brukt TO potensiometre her
1. Potensiometeret til høyre brukes til å variere LCD-kontrasten. Den har tre pinner, venstre pinne er for + 5V og høyre er for GND og midtpinnen er koblet til V0 på LCD-skjermen.
2. Potensiometeret til venstre brukes til å variere akselmotoren til servomotoren ved å kontrollere den analoge inngangsspenningen, den venstre pinnen har inngang 3,3V og høyre har GND og senterutgangen er koblet til (PA3) på STM32
Programmering STM32 for servomotor
Som vår forrige opplæring, programmerte vi STM32F103C8 med Arduino IDE gjennom USB-port uten å bruke FTDI-programmerer. Vi kan fortsette å programmere det som en Arduino. Fullstendig kode er gitt nedenfor på slutten av prosjektet.
Først har vi tatt med biblioteksfiler for servo- og LCD-funksjoner:
#inkludere
Deretter erklærte pins for LCD-skjerm og initialiserte den. Også erklært få andre variabler for PWM og potensiometer:
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;
Her har vi laget variabel servo med datatype Servo og festet den til tidligere erklært PWM-pin.
Servo servo; servo.attach (servoPin);
Les deretter Analog verdi fra pin PA3 da det er en ADC-pin den konverterer analog spenning (0-3.3) til digital form (0-4095)
analogRead (potPin);
Ettersom den digitale utgangen har 12-biters oppløsning, må vi få verdier i graden (0-170), den deler ADC (0-4096) -verdien i henhold til maks vinkel 170 grader slik at vi deler med 24.
vinkel = (lesing / 24);
Nedenstående uttalelse gjør at servomotoren roterer akselen i den angitte vinkelen.
servo.write (vinkel);
Komplett kode er gitt nedenfor og godt forklart med kommentarer.