Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

pwm yöntemi

Başlatan cann, 21 Haziran 2012, 23:05:58

cann

tek bir pot ile hız ve yön kontrolü yapacağı. ETE hocanın dökümanlarında pwm için hpwm dahil 4 yöntem var. hepsinin +, _ yönleride belirtilmiş. frekans sabit olacak duty değişkeni üzerinden hız ve yön kontrolü yapacağım. hangi pwm yöntemi daha uygun olur.
ayrıca invert pwm konusunu anlayabileceğim bir döküman varmı? invert pwm kullanabilirsem yön kontrolü daha pratik oluyoranladığım kadarıyla.
Teşekkürler

ete

PWM konusunda en kullanışlı olanı yine HPWM dır. Sebebi çözünürlüğün 10 bit olmasıdır. HPWM komutu ise 8 bit çözünürlükle çalışır.
10 bit olanda 1024 kademede duty değiştirebilirsiniz. AMa diğerinde yalnızca 256 adet değiştirebilirsiniz.

Invert PWM işlemi gelen sinyalin ters çevrilmesidirki yön konusunda etkili olacağını sanmıyorum.
Yön değiştirme olayı daha farklı yöntemlerle elde edilir.
Bir sinyal düşünün HIGH seviyesi 10 ms Low seviyesi ise 5 ms. Bunu invert ettiğiniz zaman, HIGH seviyesi 5ms olur LOW seviyesi ise 10 ms olur. Bu bir newi duty değiştirmek gibi bir şeydir. Yön konusunda nasıl etkili olabilirki? olamaz elbette.
Yön dediğin şey bir motorun ters yönde döndürülmesi ise H-Köprü devresi yada röle kontrolü kullanman gerekiyor.
Motorda yön değişikliği besleme çlarına veridğin voltajın ters çevrilmesi ile mümkün olur. PWM sinyalinin invert edilmesi bu değişikliği sağlamaz yalnızca duty değeri üzerinde etkili olur. Biraz daha araştır.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

cann

bir diagramda gördüm şimdi bulamadım, 74LS00 girişlerine pwm vermiş, çıkışı H köprüsüne, terslenmiş pwm yi de doğrudan H köprüsünün diğer yön girişine vermiş, oradan çıktı bu terslenmiş pwm.
potansiyometre 255, yani 8 bit. bu durumda 1024 kademe tercih etmesem. en basiti pauses 500 ile 2000 Hz yapsam, program aynı döngü içinde pot değerlerini yön değerlerini alıp pwm üretse, bu işlemleride yaparken geçen süre nedeniyle gerçekten 2000 Hz olurmu, yada pot değerini çevirirken yada C1, C2 ve yön pinlerini oluştururken geçen sürede pwm durmuş olurmu bir anlamda teşekkürler.

ete

Komut kullanılarak elde edilen PWM sinyallerinin frekansını tutturmak zordur. Çünki her bir komutun kendi uygulama gecikmesi vardır.
Donanımsal PWM sinyali geri planda çalışır ve ana programı etkilemeden gerçek değeirnde bir frekans üretir. Bu nedenle o şeklide bir sinyal kullanmanızı öneririm.

ADC okumada sinyal durmaz elbette ama gecikmeye uğrar. Koyduğunuz pauseus ler ise ekstra bir gecikme yaratır.
Bu nedenle tavsiyem HPWM kullanmanız yönündedir.

Ete

Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

cann


ankyra

firat dede nin yayinladigi bir dokumanda (tsunami ve japon sumolari) robot programini incelemistim. sanirim istedigin sey o robotta yapilmisti. emin olamiyorum ama ilginc gelmisti kullanimi.  bulabilirsen bir incele derim...

cann

pot değerleri ile HPWM üretiyorum, sinyaller isis osiloskopta izliyorum değişebiliyor ama 2 kanal eşit dalga üretmiyor

denemek için duty ve frekans ı aşağıdaki gibi sabit verdim yinede eşit değil 2 kanal pwm leri oldukca farklı, osiloskop ayarları eşit olduğu halde.

HPWM 0,100,1000
HPWM 1,100,1000
verdiğim tanımlar şunlar:
DEFINE CCP1_REG PORTC 'HPWM PORTC.1
DEFINE CCP2_REG PORTC 'HPWM PORTC.2
DEFINE CCP1_BIT 2 'CCP1 PİNİ PORTC.2
DEFINE CCP2_BIT 1 'CCP1 PİNİ PORTC.1

bana ters gelen diğer husus HPWM 0, C2 den;   HPWM 1, C1 den çıktı veriyor,

yardımcı olursanız sevinirim
teşekkürler

cann

ters çıkışları düzelttim
bit 2 ile bit 1 in yerini değiştirdim.

osiloskop çıktısında 2 kanalaın eşit olmaması sorunu devam ediyor ne yazıkki

ete

HPWM komutu birinci parametresi kanal numarasıdır. Hiç bir işlemcide 0 nolu HPWM kanalı yoktur. Bu nedenle Bu komut için kullanacağın kanal numaraları 1 den başlayacaktır.
16F628'i ele alırsak yalnızca 1 kanalı vardır (CCP1) O halde bu işlemci için yalnızca HWPM 1,100,1000 şeklinde komut kullanabilirsin.

16F877 ' ile çalışırsak 2 adet kanalı vardır. Bu entegre için HPWM 1,100,1000 ve HPWM 2.100,1000 şeklinde komutu kullanabiliriz.

Muhtemelen iki kanalın farklı olmasının sebebide budur. Yalnızca 1 nolu kanala gereken emri veriyorsun ama 2 ci kanbala emir veremiyorsun.
Komutu düzelt yeniden kontrol et bakalım.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

cann

evet kodlar yanlış düzelttim. 1 ve 2 yer değiştirmiş. bu sistemde pwm bağımsız çalışıyormu acaba, yani duty değeri pot giriş değeri adc gibi işlemler döngü içerisinde yaparken, pwm üretimi devam edermi o anda yoksa yine kesintiye uğrar mı? uğrarsa 20 mhz işlemcide bu önemsenmeyecek düzeyde midir?artır azalt gibi  2 buton komutu daha aklemekten başka bir ek olmayacak programda.

teşekkürler

ete

Her iki kanalın frekansı aynı olmak zorunda ama duty değerleri farklı olabilir.
Değiştireceğin ana kadar sinyalde hiç bir kesinti olmaz değiştirme anında da kesinti olmadan yeni değerle sistem çalışmaya devam eder.  İsis de bile bu dediklerimi izleyebilirsin.
HPWM geri planda çalışan bir sinyaldir. Ana programda yapılan işlemlerden hiç etkilenmez.

Ete

Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

cann

teşekkürler, sayenizde programı tamamladım.
emeği geçen herkese teşekkürler