- Tarvittavat komponentit
- Piirikaavio ja liitännät
- SMT32F103C8 nastan tiedot
- STM32: n ohjelmointi servomoottorille
Elektroniikassa servomoottoreita käytetään enimmäkseen robotiikkaprojekteissa niiden tarkkuuden ja helppokäyttöisyyden vuoksi. Servomoottorit ovat kooltaan pienempiä ja erittäin tehokkaita ja energiatehokkaita. Niillä on suuri vääntömomentti, ja niitä voidaan käyttää painojen nostamiseen tai työntämiseen moottorin spesifikaation mukaisesti. Tässä opetusohjelmassa opitaan Servomoottorista ja kuinka Servoa voidaan liittää STM32F103C8-korttiin. Potentiometri on myös liitetty servomoottorin akselin sijainnin vaihtamiseen, ja LCD näyttää kulma-arvon.
Tarvittavat komponentit
- STM32F103C8 (sininen pilleri) -levy
- Servomoottori (SG90)
- LCD (16x2)
- Potentiometri
- Leipälauta
- Neulalangat
Piirikaavio ja liitännät
SMT32F103C8 nastan tiedot
In STM32F103C8, meillä on 10 ADC nastat (PA0-PB1), ja tässä käytämme vain yksi tappi (PA3) varten analogread () asettamiseksi akselin asennon moottorin potentiometrillä. Myös STM32: n 15 PWM-nastaa (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9) käytetään yhtä nastaa pulssien tarjoamiseksi Servolle moottorin PWM-tappi (yleensä se on väriltään oranssi).
Voit oppia lisää PWM: stä ja ADC: stä lukemalla alla yksityiskohtaiset artikkelit:
- Kuinka käyttää ADC: tä STM32F103C8: ssa
- Pulssinleveyden modulointi (PWM) mallissa STM32F103C8
Yhteys STM32F103C8: n ja LCD: n välillä
STM32F103C8 | LCD-näyttö |
GND | VSS |
+ 5 V | VDD |
Potentiometrin keskikoodiin | V0 |
PB0 | RS |
GND | RW |
PB1 | E |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5 V | A |
GND | K |
Servomoottorin ja STM32F103C8: n yhteys
STM32F103C8 |
SERVO |
+ 5 V |
PUNAINEN (+ 5 V) |
PA0 |
ORANSSI (PWM-tappi) |
GND |
RUSKEA (GND) |
Potentiometrien liitännät
Olemme käyttäneet täällä kahta potentiometriä
1. Oikealla olevaa potentiometriä käytetään nestekidenäytön kontrastin muuttamiseen. Siinä on kolme nastaa, vasen nasta on + 5 V ja oikea GND: lle ja keskitappi on kytketty nestekidenäytön V0: een.
2. Vasemmanpuoleisella potentiometrillä muutetaan servomoottorin akselin asemaa säätämällä analogista tulojännitettä, vasemmassa tapissa on tulo 3,3 V ja oikealla on GND ja keskilähtö on kytketty STM32: n (PA3)
STM32: n ohjelmointi servomoottorille
Kuten edellinen opetusohjelma, ohjelmoimme STM32F103C8: n Arduino IDE: llä USB-portin kautta ilman FTDI-ohjelmoijaa. Voimme jatkaa sen ohjelmointia kuin Arduino. Täydellinen koodi annetaan alla projektin lopussa.
Ensin olemme sisällyttäneet kirjastotiedostot servo- ja LCD-toimintoja varten:
#sisältää
Sitten ilmoitti nastat LCD-näytölle ja alustaa sen. Ilmoitettu myös muutama muuttuja PWM: lle ja potentiometrille:
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;
Tässä olemme luoneet muuttuvan servon tietotyyppisellä Servolla ja liittäneet sen aiemmin ilmoitettuun PWM-nastaan.
Servo-servo; servo.attach (servoPin);
Lue sitten analoginen arvo tapista PA3, koska se on ADC-nasta, joka muuntaa analogisen jännitteen (0-3,3) digitaaliseksi muodoksi (0-4095)
analogRead (potPin);
Koska digitaalilähtö on 12-bittinen resoluutio, meidän on saatava arvot asteikolla (0-170), se jakaa ADC (0-4096) -arvon enimmäiskulman 170 asteen mukaan, joten jaamme 24: llä.
kulma = (lukema / 24);
Alla oleva lause saa servomoottorin pyörittämään akselia annetussa kulmassa.
servo.write (kulma);
Täydellinen koodi on annettu alla ja selitetty hyvin kommenteilla.