- Komponen Diperlukan
- Diagram dan Sambungan Litar
- Butiran Pin SMT32F103C8
- Pengaturcaraan STM32 untuk Servo Motor
Dalam elektronik, motor Servo banyak digunakan dalam Projek Robotik kerana ketepatan dan pengendaliannya yang mudah. Motor servo bersaiz lebih kecil dan ia sangat berkesan dan menjimatkan tenaga. Mereka memberikan tork yang tinggi dan dapat digunakan untuk mengangkat atau mendorong berat mengikut spesifikasi motor. Dalam tutorial ini kita akan belajar mengenai Servo Motor dan Bagaimana untuk menghubungkan Servo dengan papan STM32F103C8. Potensiometer juga dihubungkan untuk mengubah posisi poros motor servo, dan LCD untuk menampilkan nilai sudut.
Komponen Diperlukan
- Papan STM32F103C8 (Pil Biru)
- Motor Servo (SG90)
- LCD (16x2)
- Potensiometer
- Papan roti
- Wayar Pelompat
Diagram dan Sambungan Litar
Butiran Pin SMT32F103C8
Di STM32F103C8, kami memiliki 10 pin ADC (PA0-PB1), dan di sini kami hanya menggunakan satu pin (PA3) untuk analogread () untuk menetapkan kedudukan poros motor oleh potensiometer. Juga di antara 15 pin PWM STM32 (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9), satu pin akan digunakan untuk menyediakan denyutan kepada Servo pin PWM motor (biasanya berwarna oren).
Anda boleh mengetahui lebih lanjut mengenai PWM dan ADC dengan membaca artikel terperinci di bawah ini:
- Cara menggunakan ADC di STM32F103C8
- Modulasi lebar nadi (PWM) dalam STM32F103C8
Sambungan antara STM32F103C8 dan LCD
STM32F103C8 | LCD |
GND | VSS |
+ 5V | VDD |
Ke PIN Pusat Potensiometer | V0 |
PB0 | RS |
GND | RW |
PB1 | E |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5V | A |
GND | K |
Sambungan antara motor Servo dan STM32F103C8
STM32F103C8 |
SERVO |
+ 5V |
MERAH (+ 5V) |
PA0 |
ORANGE (pin PWM) |
GND |
BROWN (GND) |
Sambungan potensiometer
Kami telah menggunakan DUA potensiometer di sini
1. Potensiometer di sebelah kanan digunakan untuk mengubah kontras LCD. Ia mempunyai tiga pin, pin kiri adalah untuk + 5V dan kanan untuk GND dan pin tengah disambungkan ke V0 dari LCD.
2. Potensiometer di sebelah kiri digunakan untuk mengubah kedudukan poros motor servo dengan mengawal voltan input analog, pin kiri mempunyai input 3.3V dan kanan mempunyai GND dan output tengah dihubungkan ke (PA3) STM32
Pengaturcaraan STM32 untuk Servo Motor
Seperti tutorial sebelumnya, kami memprogram STM32F103C8 dengan Arduino IDE melalui port USB tanpa menggunakan pengaturcara FTDI. Kita boleh terus memprogramnya seperti Arduino. Kod lengkap diberikan di bawah pada akhir projek.
Mula-mula kami memasukkan fail perpustakaan untuk fungsi servo dan LCD:
#sertakan
Kemudian dinyatakan pin untuk paparan LCD dan memulakannya. Juga menyatakan beberapa pemboleh ubah lain untuk PWM dan 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;
Di sini kami telah membuat servo berubah-ubah dengan datatype Servo dan melampirkannya ke pin PWM yang dinyatakan sebelumnya.
Servo servo; servo.attach (servoPin);
Kemudian baca nilai Analog dari pin PA3 kerana pin ADC ia menukar voltan analog (0-3.3) menjadi bentuk digital (0-4095)
analogRead (potPin);
Oleh kerana output digital beresolusi 12-bit, kita perlu mendapatkan nilai dalam julat darjah (0-170), ia membagi nilai ADC (0-4096) mengikut sudut maksimum 170 deg sehingga kita membahagi dengan 24.
sudut = (bacaan / 24);
Pernyataan di bawah menjadikan motor servo memutar batang pada sudut yang diberikan.
servo.write (sudut);
Kod lengkap diberikan di bawah dan dijelaskan dengan baik oleh komen.