PWM Pulse Width Modulation Sinyal Genilik Modlasyonu PWM

  • Slides: 11
Download presentation

PWM (Pulse Width Modulation- Sinyal Genişlik Modülasyonu) • PWM bir sinyal modülasyon tekniği olarak

PWM (Pulse Width Modulation- Sinyal Genişlik Modülasyonu) • PWM bir sinyal modülasyon tekniği olarak tanımlanabilir. • Sinyal bilgisinin aktarım için uygun hale çevirilmesi amacının yanı sıra güç kontrolü sağlamak ve elektrik makineleri, güneş pili şarj üniteleri gibi özel devrelere destek olmak amacı da taşır.

PWM • Digital sinyaller Evet(1) ya da Hayır(0) gibi sadece kesin sonuç verir. •

PWM • Digital sinyaller Evet(1) ya da Hayır(0) gibi sadece kesin sonuç verir. • Analog sinyaller sinyal değerinin şiddetini ifade eder. (Işık parlaklığı, motor hızı gibi. ) • Arduino ile Analog sinyaller gönderemeyiz ama Analog sinyalleri taklit eden Dijital sinyaller gönderebiliriz. Bu yönteme PWM (Pulse-Width Modulation) yöntemi denir.

PWM Çalışma Prensibi • PWM sinyaller kare dalga sinyallerdir. Arduinonun çalışma gerilimi olan 5

PWM Çalışma Prensibi • PWM sinyaller kare dalga sinyallerdir. Arduinonun çalışma gerilimi olan 5 Voltu belirli aralıklarla gönderip – keserek 5 Volttan daha küçük gerilimlerin elde edilmesi sağlanır. Bu yöntemle dijital sinyaller kullanılarak analog sinyaller taklit edilmiş olur.

 • Arduino ile yanıp sönen bir LED devresi kurmak veya Arduino ile DC

• Arduino ile yanıp sönen bir LED devresi kurmak veya Arduino ile DC motor kontrolü gerçekleştirmek için PWM tekniğini kullanmamız gerekiyor. Bu teknik de Arduino'ya gömülen yazılımda yatıyor. "analog. Write(. . . )" fonksiyonu ile görev döngüsünün miktarı belirleniyor ve kare dalga elde ediliyor.

PWM dalgasını elde etmenin yöntemleri ♦ Delta: Delta modülasyonlu PWM sinyali, integral alıcı ve

PWM dalgasını elde etmenin yöntemleri ♦ Delta: Delta modülasyonlu PWM sinyali, integral alıcı ve limitleyici devre yapıları ile elde edilir. İntegral sonucunun limitlere değmesi "off", diğer durumlarda "on" durumu oluştuğu için kare dalga oluşur. ♦ Sigma - Delta: Bu modülasyonda ise çıkış sinyali, referans alınan sinyalden çıkartılır. Böylece hata sinyali elde edilmiş olur. Hata sinyalinin integralinin sonucuna göre eğer limite değiyorsa "off", değmiyorsa "on" durumu oluşturularak kare dalga elde edilir. ♦ Boşluk - Vektör: 3 fazlı AC uygulamalar için algoritma kullanılarak kare dalga elde edilir. ♦ Direkt Tork Kontrol (DTC): AC motorlarda kullanılmak üzere geliştirilen bir PWM tekniğidir. Delta modülasyon tekniğinden üretilmiştir. Motora gönderilen sinyal belirli bir filtreden geçirilir ve motorun torku ile manyetik akı kontrol altında tutulur. ♦ Zaman Bölücü: Özellikle mikroişlemcilerin PWM çıkışları tarafından kullanılırlar. Değişken görev döngüsüne sahip devrelerde de kullanılabilirler.

PWM Uygulama Alanları Haberleşme Sistemleri Güç Aktarımı ve Elektrik Makineleri Voltaj Regülatör Devreleri Ses

PWM Uygulama Alanları Haberleşme Sistemleri Güç Aktarımı ve Elektrik Makineleri Voltaj Regülatör Devreleri Ses Efektleri ve Yükselticiler Güneş enerji sistemlerinde ve rüzgar enerjisi sistemleri • Robotik devrelerde ve servo motor devreleri • • •

DC Motor – H bridge L 293 D ile Kontrolü • • • •

DC Motor – H bridge L 293 D ile Kontrolü • • • • • • • • /* Adafruit Arduino - Lesson 15. Bi-directional Motor */ int enable. Pin = 11; int in 1 Pin = 10; int in 2 Pin = 9; int switch. Pin = 7; int pot. Pin = 0; void setup() { pin. Mode(in 1 Pin, OUTPUT); pin. Mode(in 2 Pin, OUTPUT); pin. Mode(enable. Pin, OUTPUT); pin. Mode(switch. Pin, INPUT_PULLUP); } void loop() { int speed = analog. Read(pot. Pin) / 4; boolean reverse = digital. Read(switch. Pin); set. Motor(speed, reverse); } void set. Motor(int speed, boolean reverse) { analog. Write(enable. Pin, speed); digital. Write(in 1 Pin, ! reverse); digital. Write(in 2 Pin, reverse); }

Servo Motor • • • • • • • • • /* Adafruit Arduino

Servo Motor • • • • • • • • • /* Adafruit Arduino - Lesson 14. Sweep */ #include <Servo. h> int servo. Pin = 9; Servo servo; int angle = 0; // servo position in degrees void setup() { servo. attach(servo. Pin); } void loop() { // scan from 0 to 180 degrees for(angle = 0; angle < 180; angle++) { servo. write(angle); delay(15); } // now scan back from 180 to 0 degrees for(angle = 180; angle > 0; angle--) { servo. write(angle); delay(15); } }

Servo Potansiyometre ile Kontrolü • • • • • • /* Adafruit Arduino -

Servo Potansiyometre ile Kontrolü • • • • • • /* Adafruit Arduino - Lesson 14. Knob */ #include <Servo. h> int pot. Pin = 0; int servo. Pin = 9; Servo servo; void setup() { servo. attach(servo. Pin); } void loop() { int reading = analog. Read(pot. Pin); // 0 to 1023 int angle = reading / 6; // 0 to 180 -ish servo. write(angle); }

Servo Motor Ultrasonic Sensor Kontrolü • • #include <Servo. h> Servo myservo; #define trig.

Servo Motor Ultrasonic Sensor Kontrolü • • #include <Servo. h> Servo myservo; #define trig. Pin 3 #define echo. Pin 2 • • void setup(){ myservo. attach(9); myservo. write(0); Serial. begin(9600); pin. Mode(trig. Pin, OUTPUT); pin. Mode(echo. Pin, INPUT); } • • • • • void loop(){ int duration, distance; digital. Write(trig. Pin, HIGH); delay. Microseconds(100); digital. Write(trig. Pin, LOW); duration = pulse. In(echo. Pin, HIGH); distance = (duration/2) / 29. 1; Serial. print(distance); Serial. println(" cm"); int this. Pitch = map(distance, 0, 2093, 22); tone(4, this. Pitch); delay(50); no. Tone(4); if (distance < 50) { //Distance in cm myservo. write(40); // angle of the servo arm delay (700); myservo. write(0); delay (2000); } }