- PWM Sinyali nedir?
- PWM sinyalini Analog voltaja nasıl dönüştürebilirim?
- Devre şeması:
- PWM sinyali için MSP'yi programlama:
- PWM ile LED'in Parlaklığını Kontrol Etme:
Bu eğitim, Texas Instruments'tan MSP430G2 LaunchPad'i kullanmayı öğrendiğimiz MSP430G2 LaunchPad eğitimleri serisinin bir parçasıdır. Şimdiye kadar kartın temellerini öğrendik ve analog voltajı nasıl okuyacağımızı, MSP430G2 ile LCD arayüzünü vb. Ele aldık. Şimdi MSP430G2'de PWM'yi öğrenmenin bir sonraki adımına geçiyoruz. Bunu potansiyometreyi değiştirerek bir LED'in parlaklığını kontrol ederek yapacağız. Bu nedenle potansiyometre, analog voltajını okumak için MSP430'un bir analog pinine eklenecektir, bu nedenle devam etmeden önce ADC öğreticisinin üzerinden geçmenin bilinmesi önerilir.
PWM Sinyali nedir?
Darbe Genişlik Modülasyonu (PWM), en yaygın olarak kontrol devrelerinde kullanılan dijital bir sinyaldir. Bu sinyal, önceden tanımlanmış bir süre ve hızda yüksek (3.3v) ve düşük (0v) olarak ayarlanır. Sinyalin yüksek kaldığı süreye "açık kalma süresi" ve sinyalin düşük kaldığı süre "kapalı kalma süresi" olarak adlandırılır. Aşağıda tartışıldığı gibi bir PWM için iki önemli parametre vardır:
PWM'nin görev döngüsü:
PWM sinyalinin YÜKSEK (açık kalma süresi) kaldığı sürenin yüzdesi görev döngüsü olarak adlandırılır. Sinyal her zaman AÇIK ise% 100 görev döngüsündedir ve her zaman kapalıysa% 0 görev çevrimidir.
Görev Döngüsü = Açma süresi / (Açma süresi + Kapatma süresi)
Bir PWM'nin Frekansı:
Bir PWM sinyalinin frekansı, bir PWM'nin bir periyodu ne kadar hızlı tamamladığını belirler. Bir Periyot, yukarıdaki şekilde gösterildiği gibi bir PWM sinyalinin AÇIK ve KAPALI durumudur. Eğitimimizde frekans, Energia IDE tarafından ayarlanan varsayılan değer olduğu için 500Hz'dir.
Gerçek zamanlı olarak PWM sinyalleri için çok sayıda uygulama vardır, ancak size bir fikir vermek için PWM sinyali servo Motorları kontrol etmek için kullanılabilir ve ayrıca bir LED'in parlaklığının parlaklığını kontrol edebilen Analog voltaja dönüştürülebilir. Bunun nasıl yapılabileceği hakkında biraz bilgi alalım.
İşte diğer Mikroişlemci ile birkaç PWM örneği:
- MPLAB ve XC8 ile PIC Mikrodenetleyiciyi kullanarak PWM oluşturma
- Raspberry Pi ile Servo Motor Kontrolü
- PWM kullanarak Arduino Tabanlı LED Dimmer
PWM ile ilgili tüm projeleri buradan kontrol edin.
PWM sinyalini Analog voltaja nasıl dönüştürebilirim?
PWM sinyallerini Analog voltaja dönüştürmek için RC filtresi adı verilen bir devre kullanabiliriz. Bu, bu amaç için en çok kullanılan ve basit bir devredir. Devre, aşağıdaki devrede gösterildiği gibi sadece bir Direnç ve seri olarak bir kapasitör içerir.
Yani burada temelde olan şey, PWM sinyali yüksek olduğunda, kapasitör dirençten şarj olur ve PWM sinyali azaldığında, kapasitör depolanan şarj yoluyla deşarj olur. Bu şekilde, çıkışta her zaman PWM görev döngüsü ile orantılı olacak sabit bir gerilime sahip olacağız.
Yukarıda gösterilen grafikte, Sarı renkli olan PWM sinyalidir ve mavi renkli olan analog çıkış voltajıdır. Gördüğünüz gibi çıkış dalgası saf bir DC dalgası olmayacak, ancak bizim uygulamamız için çok iyi çalışması gerekiyor. Diğer uygulama türleri için saf DC dalgasına ihtiyacınız varsa, bir anahtarlama devresi tasarlamalısınız.
Devre şeması:
Devre şeması oldukça basittir; sadece bir potansiyometre ve bir Direnç ve bir RC devresi ve Led'in kendisini oluşturmak için bir kapasitör vardır. Potansiyometre, PWM sinyal görev döngüsünün kontrol edilebileceği bir analog voltaj sağlamak için kullanılır. Potun çıkışı analog voltajları okuyabilen Pin P1.0'a bağlanır. Daha sonra P1.2 pinini kullanarak yapılabilen bir PWM sinyali üretmeliyiz, bu PWM sinyali daha sonra PWM sinyalini Analog Voltaja dönüştürmek için RC filtre devresine gönderilir ve daha sonra LED'e verilir.
MSP kartındaki tüm pinlerin analog voltajı okuyamayacağını veya PWM pinleri üretemeyeceğini anlamak çok önemlidir. Belirli görevleri yerine getirebilecek özel pimler aşağıdaki şekilde gösterilmektedir. Bunu, programlama için pinlerinizi seçmek için daima bir kılavuz olarak kullanın.
Devrenin tamamını yukarıda gösterildiği gibi birleştirin, bir devre tahtası ve birkaç jumper kablosu kullanabilir ve bağlantıları kolayca yapabilirsiniz. Bağlantılar yapıldıktan sonra panom aşağıdaki gibi görünüyordu.
PWM sinyali için MSP'yi programlama:
Donanım hazır olduğunda programlamaya başlayabiliriz. Bir programdaki ilk şey kullanacağımız pinleri ilan etmektir. Burada PWM üretme özelliğine sahip olduğu için çıkış pinimiz olarak 4 numaralı pini (P1.2) kullanacağız. Bu nedenle, bir değişken oluşturuyoruz ve pim adını programda daha sonra başvurmak kolay olacak şekilde atıyoruz. Programın sonunda tam program verilmektedir.
int PWMpin = 4; // MSP modülünün 4. pinini PWM pin olarak kullanıyoruz
Ardından kurulum işlevine geliyoruz . Ne olursa olsun buraya yazılan şifreyi burada, sadece bir kez çalıştırılacaktır biz bu 4 kullanmakta olduğunu beyan inci PWM çıkışı işlevselliği olduğundan bir çıkış pini olarak pimini. Kodun daha anlamlı görünmesi için burada 4 rakamı yerine PWMpin değişkenini kullandığımıza dikkat edin.
geçersiz kurulum () { pinMode (PWMpin, OUTPUT); // PEMpin olarak ayarlanır Outptut }
Sonunda döngü işlevine giriyoruz . Burada yazdıklarımızı defalarca idam edilir. Bu programda analog voltajı okuyup buna göre bir PWM sinyali oluşturmalıyız ve bu tekrar tekrar yapılmalıdır. O halde önce potansiyometreye bağladığımız için önce A0 pininden analog voltajı okuyarak başlayalım.
Burada AanalogRead işlevini kullanarak değeri okuyoruz , bu işlev pime uygulanan voltaj değerine bağlı olarak 0-1024 arasında bir değer döndürecektir. Daha sonra bu değeri aşağıda gösterildiği gibi "val" adlı bir değişkene saklarız
int val = analogRead (A0); // ADC değerini A0 pininden okuyun
Biz zorundayız 0 255 değerlerine ADC 1024 0 değerlerini dönüştürmek PWM fonksiyonlu bunu vermek. Bunu neden dönüştürmeliyiz? Bunu kısaca anlatacağım, ancak şimdilik sadece dönüştürmemiz gerektiğini unutmayın. Bir değer kümesini başka bir değer kümesine dönüştürmek için Energia, Arduino'ya benzer bir harita işlevine sahiptir. Bu yüzden 0-1204 değerlerini 0-255'e çevirip tekrar "val" değişkenine kaydediyoruz.
val = harita (val , 0, 1023, 0, 255); // ADC, 0-1023 değerini verir ve 0-255'e çevirir
Şimdi potansiyometrenin konumuna bağlı olarak 0-255 değişken bir değerimiz var. Tek yapmamız gereken, bu değeri PWM pininde kullanmak, bu aşağıdaki satırı kullanarak yapılabilir.
analogWrite (PWMpin, val); // Bu değeri PWM pinine yazın.
PWM pinine neden 0-255 yazıldığı sorusuna geri dönelim. Bu 0-255 değeri, PWM sinyalinin görev döngüsünü belirler. Örneğin, sinyalin değeri 0 ise, görev döngüsü 127 için% 0,% 50 ve 255 için bu makalenin başında gösterilen ve açıklandığı gibi% 100 olduğu anlamına gelir.
PWM ile LED'in Parlaklığını Kontrol Etme:
Donanımı ve kodu anladıktan sonra, devrenin çalışmasıyla biraz eğlenmenin zamanı gelmiştir. Kodu MSP430G2 kartına yükleyin ve potansiyometre düğmesini çevirin. Düğmeyi çevirdiğinizde, pim 2'deki voltaj değişecektir ve bu, mikro denetleyici tarafından okunacaktır ve voltaja göre pim 4'te PWM sinyalleri üretilecektir. Voltaj ne kadar büyükse, görev döngüsü o kadar büyük olacaktır ve bunun tersi de geçerlidir.
Bu PWM sinyali daha sonra bir LED'i yakmak için analog voltaja dönüştürülür. LED'in parlaklığı PWM sinyalinin görev süresi ile doğru orantılıdır. Devre tahtasındaki LED'in yanı sıra, breadboard ledine benzer şekilde parlaklığını değiştiren smd LED'in (kırmızı renk) da fark edebilirsiniz. Bu LED de aynı pime bağlı, ancak RC ağına sahip değil, bu yüzden aslında çok hızlı yanıp sönüyor. Titreşen yapısını kontrol etmek için karanlık bir odada panoyu sallayabilirsiniz. Çalışmanın tamamı aşağıdaki videoda da görülebilir.
Hepsi bu kadar millet, MSP430G2 kartında PWM sinyallerinin nasıl kullanılacağını öğrendik, bir sonraki eğitimimizde aynı PWM sinyallerini kullanarak bir servo motoru kontrol etmenin ne kadar kolay olduğunu öğreneceğiz. Herhangi bir şüpheniz varsa, bunları aşağıdaki yorum bölümünde veya teknik yardım için forumlarda yayınlayın.