- Gerekli Bileşenler
- Devre Şeması ve Bağlantılar
- SMT32F103C8 Pin Detayları
- Servo Motor için STM32'nin Programlanması
Elektronikte, Servo motorlar, doğruluğu ve kolay kullanımı nedeniyle çoğunlukla Robotik Projelerinde kullanılmaktadır. Servo motorlar daha küçük boyuttadır ve çok etkili ve enerji tasarrufludur. Yüksek tork sağlarlar ve motor özelliklerine göre ağırlıkları kaldırmak veya itmek için kullanılabilirler. Bu eğitimde Servo Motor ve Servo ile STM32F103C8 kartı arasındaki arayüz hakkında bilgi edineceğiz. Servo motor şaftının konumunu değiştirmek için bir potansiyometre ve açı değerini görüntülemek için bir LCD de arabirim vardır.
Gerekli Bileşenler
- STM32F103C8 (Mavi Hap) Kurulu
- Servo Motor (SG90)
- LCD (16x2)
- Potansiyometre
- Breadboard
- Atlama Telleri
Devre Şeması ve Bağlantılar
SMT32F103C8 Pin Detayları
In STM32F103C8, biz 10 var ADC işaretçilerine (PA0-PB1), ve işte için tek pimi (PA3) kullanan () analogread potansiyometre ile motorun mili pozisyonunu ayarlamak için. Ayrıca STM32'nin 15 PWM pini (PA0, PA1, PA2, PA3, PA6, PA7, PA8, PA9, PA10, PB0, PB1, PB6, PB7, PB8, PB9) Servo'ya pals sağlamak için bir pim kullanılacaktır. motorun PWM pini (genellikle turuncu renktedir).
Aşağıdaki ayrıntılı makaleleri okuyarak PWM ve ADC hakkında daha fazla bilgi edinebilirsiniz:
- STM32F103C8'de ADC nasıl kullanılır
- STM32F103C8'de Darbe Genişliği Modülasyonu (PWM)
STM32F103C8 ve LCD arasındaki bağlantı
STM32F103C8 | LCD ekran |
GND | VSS |
+ 5V | VDD |
Potansiyometre Merkez PIN'ine | V0 |
PB0 | RS |
GND | RW |
PB1 | E |
PB10 | D4 |
PB11 | D5 |
PC13 | D6 |
PC14 | D7 |
+ 5V | Bir |
GND | K |
Servo motor ve STM32F103C8 arasındaki bağlantı
STM32F103C8 |
SERVO |
+ 5V |
KIRMIZI (+ 5V) |
PA0 |
TURUNCU (PWM pimi) |
GND |
KAHVERENGİ (GND) |
Potansiyometre Bağlantıları
Burada İKİ potansiyometre kullandık
1. Sağdaki potansiyometre, LCD kontrastını değiştirmek için kullanılır. Üç pimi vardır, sol pini + 5V ve sağ pini GND içindir ve orta pini LCD'nin V0'ına bağlanır.
2. Soldaki potansiyometre, analog giriş voltajını kontrol ederek servo motorun şaft konumunu değiştirmek için kullanılır, sol pim 3.3V girişine sahiptir ve sağdaki GND'ye sahiptir ve merkez çıkışı STM32'nin (PA3) 'e bağlıdır.
Servo Motor için STM32'nin Programlanması
Önceki eğitimimizde olduğu gibi, STM32F103C8'i FTDI programlayıcı kullanmadan USB portu üzerinden Arduino IDE ile programladık. Onu bir Arduino gibi programlamaya devam edebiliriz. Proje sonunda eksiksiz kod aşağıda verilmiştir.
İlk olarak, servo ve LCD işlevleri için kitaplık dosyalarını dahil ettik:
#Dahil etmek
Sonra LCD ekran için pinler ilan etti ve başlattı. Ayrıca PWM ve potansiyometre için birkaç başka değişken açıkladı:
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;
Burada veri türü ile değişken servo oluşturduk Servo ve daha önce beyan edilen PWM için bunu ekli.
Servo servo; servo.attach (servoPin);
Daha sonra PA3 pininden Analog değeri okuyun, bir ADC pinidir, analog voltajı (0-3.3) dijital forma (0-4095) çevirir.
analogRead (potPin);
Dijital çıkış 12 bit çözünürlük olduğundan derece aralığında (0-170) değerler almamız gerekiyor, ADC (0-4096) değerini maksimum 170 derece açısına göre böldüğü için 24'e bölüyoruz .
açı = (okuma / 24);
Aşağıdaki ifade, servo motorun şaftı verilen açıyla döndürmesini sağlar.
servo.write (açı);
Kodun tamamı aşağıda verilmiştir ve yorumlarla açıklanmıştır.