Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: hilmi - 17 Mayıs 2017, 11:23:01

Başlık: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: hilmi - 17 Mayıs 2017, 11:23:01
Merhaba arkadaşlar,
Arduino ile frekans: 20 khz duty cycle: %50 olan PWM sinyali üretmek istiyorum. Duty cycle ve frekansı nasıl ayarlıyorum.Yardımcı olursanız sevinirim.
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: mehmet - 17 Mayıs 2017, 18:45:05
http://forum.arduino.cc/index.php?topic=118494.0
http://eleccelerator.com/avr-timer-calculator/
http://playground.arduino.cc/Main/TimerPWMCheatsheet
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: hilmi - 18 Mayıs 2017, 11:10:47
Teşekkür ederim fakat aşagıdaki kodları kullandığımda osiloskoptan pin 3 ten çıkış sinyalini göremiyorum

void setIrModOutput(){  // sets pin 3 going at the IR modulation rate
  pinMode(3, OUTPUT);
  TCCR2A = _BV(COM2B1) | _BV(WGM21) | _BV(WGM20); // Just enable output on Pin 3 and disable it on Pin 11
  TCCR2B = _BV(WGM22) | _BV(CS22);
  OCR2A = 51; // defines the frequency 51 = 38.4 KHz, 54 = 36.2 KHz, 58 = 34 KHz, 62 = 32 KHz
  OCR2B = 26;  // deines the duty cycle - Half the OCR2A value for 50%
  TCCR2B = TCCR2B & 0b00111000 | 0x2; // select a prescale value of 8:1 of the system clock
}
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: mehmet - 18 Mayıs 2017, 23:07:27

void setIrModOutput(void)
{
  pinMode(3, OUTPUT);
  TCCR2A = _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
  TCCR2B = _BV(WGM22) | _BV(CS22);
  OCR2A = 99;
  OCR2B = 50; 
  TCCR2B = TCCR2B & 0b00111000 | 0x2;
}

void setup(void)
{
  setIrModOutput();
}

void loop(void)
{
 
}
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: mr.selim - 19 Mayıs 2017, 00:01:07
@mehmet Hocam 3 ayrı pwm kullanmak istediğimizde 3 farklı timer dan mı almamız gerekiyor ? Anladığım kadarı ile duty oranlarında OCR2A yükselirse OCR2B düşüyor dimi. Bende bu şekilde pwm üretmek istiyorum fakat değişken duty oranı ve 3 pwm olacak. Öğrenemedim gitti :)
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: mehmet - 19 Mayıs 2017, 09:04:20
https://playground.arduino.cc/Main/TimerPWMCheatsheet
https://playground.arduino.cc/Code/PwmFrequency
https://forum.arduino.cc/index.php?topic=355825.0
https://github.com/fizcris/PWM_frequency_Arduino_change
https://arduino-info.wikispaces.com/Arduino-PWM-Frequency
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: hilmi - 31 Mayıs 2017, 14:31:25
Alıntı yapılan: mehmet - 18 Mayıs 2017, 23:07:27

void setIrModOutput(void)
{
  pinMode(3, OUTPUT);
  TCCR2A = _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
  TCCR2B = _BV(WGM22) | _BV(CS22);
  OCR2A = 99;
  OCR2B = 50; 
  TCCR2B = TCCR2B & 0b00111000 | 0x2;
}

void setup(void)
{
  setIrModOutput();
}

void loop(void)
{
 
}


@mehmet yukarı kodları kullandığımda pin 3 çıkışından sinyal alamıyorum sinyalı yazdırmak için kod mu eklemek gerekir yukarıdaki koda
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: mehmet - 31 Mayıs 2017, 15:10:44
Yazdırmak derken???


  (http://www.zimagez.com/miniature/ekrangrnts2017-05-3115-10-02.php)
(http://www.zimagez.com/zimage/ekrangrnts2017-05-3115-10-02.php)
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: hilmi - 31 Mayıs 2017, 16:37:31
Arduino Mega 2560 kullanıyorum sizin vermiş olduğunuz kodlar ile pin 3 çıkışından osiloskop ile PWM sinyalini göremiyorum. Multimetre ile pin 3 çıkışının gerilimi ölçtüğümde de değer göremiyorum.Çıkış sinyalini alamıyorum.İlginiz için teşekkür ederim.
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: hilmi - 05 Haziran 2017, 11:15:03
void setup() {
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM20);
TCCR2B = _BV(CS20);
  OCR2A = 90;
  OCR2B = 180;
TCCR2B = (TCCR2B & 0xF8) | 0x01 ;
}

void loop() {
  // put your main code here, to run repeatedly:

}


yukarıdaki kod ile 30 khz PWM sinyali ürettim fakat osiloskop ile incelediğimde voltaj aralığı 0-5 volt arasında olmuyor eksi değere düşüyor. Osiloskop göruntusu aşağıdaki gibidir.0-5 volt aralığında nasıl üretebilirim.Yardımcı olursanız sevinirim arkadaşlar.

(https://image.ibb.co/nkEina/unnamed_1.jpg)

Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: mehmet - 05 Haziran 2017, 11:41:37
CH1 gerilim ayarını AC den DC ye
çeviriniz.
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: hilmi - 05 Haziran 2017, 12:21:12
Alıntı yapılan: mehmet - 05 Haziran 2017, 11:41:37
CH1 gerilim ayarını AC den DC ye
çeviriniz.

@mehmet Teşekkür ederim düzeldi. Duty cycle oranı %37 olarak görünüyor. Duty cycle oranını  OCR2A = 90;  OCR2B = 180; den mi ayarlıyoruz. Duty cycle oranını nasıl belirliyoruz.
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: cann - 05 Haziran 2017, 13:25:51
bu konu çok gizli bir konu değil.
gerekli olduğunda da tekrar baştan araştırmak gerekiyor.

kodları tam yazsanız, forumda ihtiyacı olan kullanır, tekrar gündeme geldiğinde bu konu linki verilir.

30 Khz fazla değilmi 16-20 KHz için kodda nasıl değişiklik yapmak gerek?
Teşekkürler
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: mehmet - 05 Haziran 2017, 13:26:08
OCR2B değeri ile.
OCR2B = 130; yaklaşık %50...

Ek:
Hepsi zaten burada...
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: crazy - 05 Haziran 2017, 13:43:00
Sayfanın en alt kısmında aradığın kod açıklamaları detaylı olarak var.
http://sinanbir.com/arduino-timer-kullanimi-kesmeler-avr-8-bit/
Başlık: Ynt: Arduino ile 20khz PWM üretme ve duty cycle orani belirleme
Gönderen: cann - 05 Haziran 2017, 21:31:14
OCR2A = 90;   //(90+1)/256
  OCR2B = 180;//(180+1)/256   duty değerini veriyor.

bunu öğrendim ama register ayarlarının nasıl 30 khz olduğunu çözemedim. 16kHz i 256 ve en az 8 e bölünmek zorunda ve bu kHz değeri vermiyor

nerede yanlış düşünüyorum