- Wymagane składniki
- Schemat obwodu i połączenia
- Szczegóły pinów SMT32F103C8
- Programowanie STM32 dla serwomotoru
W elektronice serwomotory są najczęściej używane w projektach robotyki ze względu na ich dokładność i łatwą obsługę. Serwomotory są mniejsze i są bardzo wydajne i energooszczędne. Zapewniają wysoki moment obrotowy i mogą być używane do podnoszenia lub pchania ciężarów zgodnie ze specyfikacją silnika. W tym samouczku dowiemy się o silniku serwo i jak połączyć serwo z płytą STM32F103C8. Potencjometr jest również połączony, aby zmieniać położenie wału serwomotoru oraz wyświetlacz LCD do wyświetlania wartości kąta.
Wymagane składniki
- Płyta STM32F103C8 (niebieska pigułka)
- Silnik serwo (SG90)
- LCD (16x2)
- Potencjometr
- Płytka prototypowa
- Przewody połączeniowe
Schemat obwodu i połączenia
Szczegóły pinów SMT32F103C8
W STM32F103C8 mamy 10 pinów ADC (PA0-PB1), a tutaj używamy tylko jednego pinu (PA3) do odczytu analogowego () do ustawiania położenia wału silnika za pomocą potencjometru. Również wśród 15 pinów PWM STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9), jeden pin będzie używany do dostarczania impulsów do serwa pin PWM silnika (zwykle jest w kolorze pomarańczowym).
Możesz dowiedzieć się więcej o PWM i ADC, czytając poniżej szczegółowe artykuły:
- Jak korzystać z ADC w STM32F103C8
- Modulacja szerokości impulsu (PWM) w STM32F103C8
Połączenie między STM32F103C8 a LCD
STM32F103C8 | LCD |
GND | VSS |
+ 5V | VDD |
Do środka PIN potencjometru | V0 |
PB0 | RS |
GND | RW |
PB1 | mi |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5V | ZA |
GND | K. |
Połączenie między silnikiem serwo a STM32F103C8
STM32F103C8 |
SERVO |
+ 5V |
CZERWONY (+ 5 V) |
PA0 |
POMARAŃCZOWY (pin PWM) |
GND |
BRĄZOWY (GND) |
Połączenia potencjometrów
Użyliśmy tutaj DWÓCH potencjometrów
1. Potencjometr po prawej stronie służy do zmiany kontrastu wyświetlacza LCD. Ma trzy piny, lewy pin jest dla + 5V, a prawy dla GND, a środkowy pin jest podłączony do V0 LCD.
2. Potencjometr po lewej stronie służy do zmiany położenia wału serwomotoru poprzez sterowanie analogowym napięciem wejściowym, lewy pin ma wejście 3,3 V, a prawy ma GND, a wyjście środkowe jest podłączone do (PA3) STM32
Programowanie STM32 dla serwomotoru
Podobnie jak w naszym poprzednim samouczku, zaprogramowaliśmy STM32F103C8 z Arduino IDE przez port USB bez użycia programatora FTDI. Możemy kontynuować programowanie jak Arduino. Pełny kod jest podany poniżej na końcu projektu.
Najpierw dołączyliśmy pliki biblioteczne dla funkcji serwo i LCD:
#zawierać
Następnie zadeklarowano piny do wyświetlacza LCD i zainicjowałem go. Zadeklarowano również kilka innych zmiennych dla PWM i potencjometru:
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;
Tutaj stworzyliśmy zmienne serwo z typem danych Servo i dołączyliśmy je do wcześniej zadeklarowanego pinu PWM.
Serwo serwo; servo.attach (servoPin);
Następnie odczytaj wartość analogową z pinu PA3, ponieważ jest to pin ADC, który przekształca napięcie analogowe (0-3,3) na postać cyfrową (0-4095)
analogRead (potPin);
Ponieważ wyjście cyfrowe ma rozdzielczość 12 bitów, musimy uzyskać wartości z zakresu stopni (0-170), dzieli wartość ADC (0-4096) zgodnie z maksymalnym kątem 170 stopni, więc dzielimy przez 24.
kąt = (odczyt / 24);
Poniższe stwierdzenie powoduje, że serwomotor obraca wał pod podanym kątem.
servo.write (kąt);
Pełny kod jest podany poniżej i dobrze wyjaśniony komentarzami.