- Erforderliche Komponenten
- Schaltplan und Anschlüsse
- SMT32F103C8 Pin Details
- Programmierung STM32 für Servomotor
In der Elektronik werden Servomotoren aufgrund ihrer Genauigkeit und einfachen Handhabung hauptsächlich in Robotikprojekten eingesetzt. Servomotoren sind kleiner und sehr effektiv und energieeffizient. Sie bieten ein hohes Drehmoment und können zum Heben oder Schieben von Gewichten gemäß Motorspezifikation verwendet werden. In diesem Tutorial erfahren Sie mehr über den Servomotor und die Schnittstelle zwischen Servo und STM32F103C8-Karte. Ein Potentiometer ist ebenfalls angeschlossen, um die Position der Welle des Servomotors zu variieren, und ein LCD, um den Winkelwert anzuzeigen.
Erforderliche Komponenten
- STM32F103C8 (Blue Pill) Board
- Servomotor (SG90)
- LCD (16x2)
- Potentiometer
- Steckbrett
- Überbrückungsdrähte
Schaltplan und Anschlüsse
SMT32F103C8 Pin Details
In STM32F103C8 haben wir 10 ADC-Pins (PA0-PB1), und hier verwenden wir nur einen Pin (PA3) für analogreadread () zum Einstellen der Wellenposition des Motors mit einem Potentiometer. Auch unter 15 PWM-Pins von STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9) wird ein Pin zum Bereitstellen von Impulsen an den Servo verwendet PWM-Pin des Motors (normalerweise orange).
Weitere Informationen zu PWM und ADC finden Sie in den folgenden ausführlichen Artikeln:
- Verwendung von ADC in STM32F103C8
- Pulsweitenmodulation (PWM) in STM32F103C8
Verbindung zwischen STM32F103C8 und LCD
STM32F103C8 | LCD |
GND | VSS |
+ 5V | VDD |
Zur Potentiometer-Center-PIN | V0 |
PB0 | RS |
GND | RW |
PB1 | E. |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5V | EIN |
GND | K. |
Verbindung zwischen Servomotor und STM32F103C8
STM32F103C8 |
SERVO |
+ 5V |
ROT (+ 5V) |
PA0 |
ORANGE (PWM-Pin) |
GND |
BRAUN (GND) |
Potentiometeranschlüsse
Wir haben hier ZWEI Potentiometer verwendet
1. Mit dem Potentiometer rechts können Sie den LCD-Kontrast variieren. Es hat drei Pins, der linke Pin ist für + 5V und der rechte ist für GND und der mittlere Pin ist mit V0 des LCD verbunden.
2. Das Potentiometer auf der linken Seite dient zum Variieren der Wellenposition des Servomotors durch Steuern der analogen Eingangsspannung. Der linke Pin hat einen Eingang von 3,3 V und der rechte hat GND und der mittlere Ausgang ist mit (PA3) von STM32 verbunden
Programmierung STM32 für Servomotor
Wie in unserem vorherigen Tutorial haben wir den STM32F103C8 mit Arduino IDE über den USB-Anschluss ohne Verwendung des FTDI-Programmiergeräts programmiert. Wir können es wie ein Arduino programmieren. Der vollständige Code ist unten am Ende des Projekts angegeben.
Zuerst haben wir Bibliotheksdateien für Servo- und LCD-Funktionen hinzugefügt:
#einschließen
Dann deklarierte Pins für LCD-Anzeige und initialisiert es. Außerdem wurden einige andere Variablen für PWM und Potentiometer deklariert:
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;
Hier haben wir ein variables Servo mit dem Datentyp Servo erstellt und es an den zuvor deklarierten PWM-Pin angehängt.
Servo Servo; servo.attach (servoPin);
Lesen Sie dann den Analogwert von Pin PA3 ab, da es sich um einen ADC-Pin handelt, der die analoge Spannung (0-3,3) in die digitale Form (0-4095) umwandelt.
analogRead (potPin);
Da der digitale Ausgang eine Auflösung von 12 Bit hat, müssen wir Werte im Gradbereich (0-170) erhalten. Er teilt den ADC-Wert (0-4096) gemäß dem maximalen Winkel von 170 Grad, sodass wir mit 24 teilen .
Winkel = (Lesen / 24);
Die folgende Anweisung veranlasst den Servomotor, die Welle unter dem angegebenen Winkel zu drehen.
servo.write (Winkel);
Der vollständige Code ist unten angegeben und wird durch Kommentare gut erklärt.