- PWM (Darbe Genişlik Modülasyonu):
- Servo Motor ve PWM:
- Gerekli Bileşenler:
- Devre şeması:
- Çalışma ve Programlama Açıklaması:
Raspberry Pi, elektronik mühendisleri ve hobiler için tasarlanmış ARM mimarisi işlemci tabanlı bir karttır. PI, şu anda piyasadaki en güvenilir proje geliştirme platformlarından biridir. Daha yüksek işlemci hızı ve 1 GB RAM ile PI, Görüntü işleme ve Nesnelerin İnterneti gibi birçok yüksek profilli proje için kullanılabilir.
Yüksek profilli projelerden herhangi birini yapmak için, PI'nin temel işlevlerini anlamak gerekir. Bu eğitimlerde Raspberry Pi'nin tüm temel işlevlerini ele alacağız. Her öğreticide PI işlevlerinden birini tartışacağız. Bu Raspberry Pi Eğitim Serisinin sonunda, yüksek profilli projeleri kendi başınıza yapabileceksiniz. Aşağıdaki eğiticilere göz atın:
- Raspberry Pi'ye Başlarken
- Raspberry Pi Yapılandırması
- LED Yanıp Sönen
- Raspberry Pi Düğme Arayüzü
- Raspberry Pi PWM üretimi
- Raspberry Pi kullanarak DC Motorun Kontrol Edilmesi
- Raspberry Pi ile Step Motor Kontrolü
- Raspberry Pi ile Vardiya Kaydını Arabirim
- Raspberry Pi ADC Eğitimi
Bu eğitimde Raspberry Pi ile Servo Motoru Kontrol Edeceğiz. Servoya gitmeden önce PWM'den bahsedelim çünkü Servo Motoru kontrol etme kavramı ondan geliyor.
PWM (Darbe Genişlik Modülasyonu):
Daha önce PWM'den ATmega32 ile Darbe Genişliği Modülasyonu, Arduino Uno ile PWM, 555 zamanlayıcı IC ile PWM ve Arduino Due ile PWM hakkında birçok kez konuştuk. PWM, "Darbe Genişliği Modülasyonu" anlamına gelir. PWM, kararlı bir güç kaynağından değişken voltaj elde etmek için kullanılan bir yöntemdir. PWM'yi daha iyi anlamak için aşağıdaki devreyi düşünün,
Yukarıdaki şekilde, anahtar belirli bir süre boyunca sürekli olarak kapatılırsa, LED bu süre boyunca sürekli olarak 'AÇIK' olacaktır. Anahtar yarım saniye için kapatılır ve sonraki yarım saniye için açılırsa, LED yalnızca ilk yarım saniyede AÇIK olacaktır. Artık LED'in toplam süre boyunca AÇIK olduğu oran Görev Döngüsü olarak adlandırılır ve şu şekilde hesaplanabilir:
Görev Döngüsü = Açma süresi / (Açma süresi + Kapatma süresi)
Görev Döngüsü = (0,5 / (0,5 + 0,5)) =% 50
Yani ortalama çıkış voltajı, akü voltajının% 50'si olacaktır.
AÇMA ve KAPAMA hızını bir seviyeye yükselttiğimizde, LED'in AÇIK ve KAPALI olmak yerine kısıldığını göreceğiz. Bunun nedeni, gözlerimizin 25Hz'den yüksek frekansları net bir şekilde yakalayamamasıdır. 100 ms'lik döngüyü düşünün, LED 30 ms için KAPALI ve 70 ms için AÇIK. Çıkışta sabit voltajın% 70'ine sahip olacağız, bu nedenle LED% 70 yoğunlukta sürekli yanacaktır.
Görev Oranı 0'dan 100'e gider. "0" tamamen KAPALI ve "100" tamamen AÇIK anlamına gelir. Bu Görev Oranı Servo Motor için çok önemlidir. Servo Motorun konumu bu Görev Oranı ile belirlenir. LED ve Raspberry Pi ile PWM gösterimi için bunu kontrol edin.
Servo Motor ve PWM:
Bir Servo Motor, DC motor, konum kontrol sistemi ve dişlilerin bir kombinasyonudur. Servoların modern dünyada birçok uygulaması vardır ve bununla birlikte farklı şekil ve boyutlarda mevcutturlar. Biz kullanıyor olacaktır SG90 Servo Motor bu eğitimde, popüler ve en ucuz biri biridir. SG90, 180 derecelik bir servodur. Yani bu servo ile ekseni 0-180 derece arasında konumlandırabiliriz.
Bir Servo Motorun temelde üç kablosu vardır, biri pozitif voltaj, diğeri toprak içindir ve sonuncusu konum ayarı içindir. Kırmızı kablo gücüne bağlı olduğundan, Kahverengi tel zemin ve bağlı olduğu Sarı tel (veya BEYAZ) sinyaline bağlanır.
Servoda, PWM sinyalini Sinyal pininden alan bir kontrol sistemimiz bulunmaktadır. Sinyalin kodunu çözer ve ondan görev oranını alır. Bundan sonra, oranı önceden tanımlanmış konum değerleriyle karşılaştırır. Değerlerde farklılık varsa servonun konumunu buna göre ayarlar. Dolayısıyla, servo motorun eksen konumu, Sinyal pinindeki PWM sinyalinin görev oranına bağlıdır.
PWM (Darbe Genişliği Modülasyonlu) sinyalinin frekansı, servo motor tipine göre değişebilir. SG90 için PWM sinyalinin frekansı 50Hz'dir. Servo'nuzun çalışma sıklığını öğrenmek için, söz konusu modelin Veri Sayfasını kontrol edin. Dolayısıyla, frekans seçildikten sonra, buradaki diğer önemli şey PWM sinyalinin GÖREV ORANI.
Aşağıdaki tablo, söz konusu Görev Oranı için Servo Konumunu gösterir. Değeri buna göre seçerek aradaki herhangi bir açıyı elde edebilirsiniz. Dolayısıyla 45º servo için Görev Oranı '5' veya% 5 olmalıdır.
DURUM |
GÖREV ORANI |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Servo Motoru Raspberry Pi ile Arayüzleştirmeden önce, servo motorunuzu bu Servo Motor Test Devresi yardımıyla test edebilirsiniz. Ayrıca aşağıdaki Servo projelerimizi de kontrol edin:
- Arduino kullanarak Servo Motor Kontrolü
- Arduino Due ile Servo Motor Kontrolü
- 8051 Mikrodenetleyicili Servo Motor Arayüzü
- MATLAB kullanarak Servo Motor Kontrolü
- Flex Sensör ile Servo Motor Kontrolü
- Ağırlıklı Servo Pozisyon Kontrolü (Kuvvet Sensörü)
Gerekli Bileşenler:
Burada Raspbian Jessie OS ile Raspberry Pi 2 Model B kullanıyoruz. Tüm temel Donanım ve Yazılım gereksinimleri daha önce tartışılmıştır, ihtiyaç duyduğumuz dışında bunları Raspberry Pi Giriş bölümünde bulabilirsiniz:
- Bağlantı pimleri
- 1000uF kapasitör
- SG90 Servo Motor
- Breadboard
Devre şeması:
A1000µF, + 5V güç rayına bağlanmalıdır, aksi takdirde PI servo kontrol edilirken rastgele kapanabilir.
Çalışma ve Programlama Açıklaması:
Her şey devre şemasına göre bağlandıktan sonra, programı PYHTON'da yazmak için PI'yi AÇIK hale getirebiliriz.
PYHTON programında kullanacağımız birkaç komuttan bahsedeceğiz, Kütüphaneden GPIO dosyasını içe aktaracağız, aşağıdaki fonksiyon PI'nın GPIO pinlerini programlamamızı sağlar. Ayrıca "GPIO" yu "IO" olarak yeniden adlandırıyoruz, bu nedenle programda GPIO pinlerine başvurmak istediğimizde "IO" kelimesini kullanacağız.
RPi.GPIO'yu IO olarak içe aktar
Bazen kullanmaya çalıştığımız GPIO pinleri başka işlevler yapıyor olabilir. Bu durumda programı çalıştırırken uyarılar alacağız. Aşağıdaki komut PI'ya uyarıları dikkate almamasını ve programa devam etmesini söyler.
IO.setwarnings (False)
PI'nın GPIO pinlerini, kart üzerindeki pin numarasına veya fonksiyon numaralarına göre yönlendirebiliriz. Tahtadaki 'PIN 29' gibi 'GPIO5'. Yani burada ya buradaki pimi '29' veya '5' ile temsil edeceğimizi söylüyoruz.
IO.setmode (IO.BCM)
PIN39 veya GPIO19'u çıkış pini olarak ayarlıyoruz. Bu pinten PWM çıkışı alacağız.
IO. kurulumu (19, IO.OUT)
Çıkış pini ayarladıktan sonra, pini PWM çıkış pini olarak ayarlamamız gerekir, p = IO.PWM (çıkış kanalı, PWM sinyalinin frekansı)
Yukarıdaki komut kanalı kurmak ve ayrıca Kanalın frekansını ayarlamak içindir ”. Burada 'p' bir değişkendir, herhangi bir şey olabilir. GPIO19'u PWM “Çıkış kanalı olarak kullanıyoruz. SG90 çalışma frekansı 50Hz olduğundan "PWM sinyalinin frekansı" 50'yi seçeceğiz.
PWM sinyal üretimini başlatmak için aşağıdaki komut kullanılır. ' DUTYCYCLE ', daha önce açıklandığı gibi 'Açma' oranını ayarlamak içindir, p.start (GÖREV)
Aşağıdaki komut sonsuz döngü olarak kullanılır, bu komutla bu döngü içindeki ifadeler sürekli olarak çalıştırılır.
1 iken:
İşte program Ahududu Pi kullanarak Servo Kontrol GPIO19 bir PWM sinyali sağlar. PWM sinyalinin Görev Oranı, üç saniye için üç değer arasında değiştirilir. Böylece her saniye için Servo, Görev Oranı tarafından belirlenen bir konuma döner. Servo, üç saniye içinde sürekli olarak 0º, 90º ve 180º'ye döner.