çimento döken vinçin debi valf sürücü kartı hakkında biligisi olan

Başlatan emrah, 29 Haziran 2012, 21:20:10

pisayisi

O zaman pwm çıktıktan valfe kadar olan sizin modifiye ettiğiniz kısımlara bakmak lazım madem pwm işaretleri arasında fark yok. Sürücü devreyi modifiye ettiniz mi yoksa aslını mı kullanıyorsunuz sorun pic dışında gibi görünüyor...
Murat

emrah

yok hocam benm yazılımı orjınal kart üzerinde denıyorum zaten.  bir valf için bukadar ınce frekans gerekırmı hocam. tek fark benim ürettigim ferkans 250hz. orjınalde bu frekansa yakın tam degerını bilmiyorum. bi öncekı mesajda dedıgım gıbı  duty degerlerı ile oynarken ben yüzde cinsinden deger degstryorum yanı 0-100 arası ayar yapabiliyorum . butonla artırma yaparken farkediliyor  çözünürlük sawiyesi 0-100 arası sonucta. bırda 0 -1000 arası ayar yapılyormus formulde. onu deneyecegım artık

ete

Sorunun kaynağı veya sorun çok açık belli değil. Mademki frekanslar aşağı yukarı eşit gözüküyor o halde artırma kademeleri yani çözünürlük farklıdır.
Bir HPWM sisteminde DUTY değeri iki şekilde işlemciye verilir. Birinde direk Duty registerine verilecek değeri verirsiniz. Diğerinde ise bunu % değeri üzerinden hesaplar verirsiniz.
İkisi arasında ne far var derseniz birinde duty değerinin maksimum değeri kadar kademeniz olur diğerinde yalnızca 100 kademeniz olur.
Şimdi bunların nasıl verildiklerine bakalım.
Siz 4 Mhz kristal ile yaklaşık 250 Hz lik bir frekans veriyorsanız,
- Bölme oranınız 1/16 olmalı
- PR2 değeriniz  249 olmalı
- Maksimum duty değeriniz 1000 olmalıdır. Yani elinizde 10 bitlik bir çözünürlük bulunuyor.

Şimdi diyelimki %50 duty ayarlayacaksınız. Bunu iki şekilde işlemciye vereceğiz.
Birinci şekilde %100 duty de 1000 olan duty registeri otomatikman %50 için 500 değerini alacaktır. O halde duty registerine direk 500 değerini vermemiz gerekiyor. Şöyle,
X=500
Duty değerinin ilk iki biti CCP1CON.4 ve CCP1CON.5 bitlerine verilecektir.
CCP1CON.4=X.0
CCP1CON.5=X.1
Geri kalan 8 bit ise CCPR1L registerine verilecektir.
Bunu yapmak için Duty registerini 2 bit sağa kaydırarak registeri 10 bit den 8 bite indirgeriz. Sonra bunu direk CCPR1L registerine eşitleriz.
CCPR1L=(X>>2)
Bu atama komutlarından sonra sinyalin hemen %50 duty aldığını göreceksiniz.

Şimdi ikinci metod da ki senin kullandığın metod bu oluyor, Duty değerini % cinsinden kullanıp karşılığını duty registerlerine vermek şeklinde uygulanıyor.
Yine sinyalimizi %50 duty değerine geçireceğimizi düşünelim. Formülümüz X=(PR+1) * %Duty/25 şeklindedir. Hemen hesabımızı yapalım.
X=(249+1) * 50/25 = 250 * 2 = 500 gördüğün gibi yukarıda direk hesapladığımız 500 değerini sistem yeniden bu formül ile hesaplayıp ilgili registerlere vermektedir. İşin devamında yeniden;
CCP1CON.4=X.0
CCP1CON.5=X.1
CCPR1L=X>>2
şeklkinde atama komutları olacaktır elbette.

Şimdi bir örnek daha yapalım.
Sen programında duty değerini % cinsinden kullanıp her butona basıldığınd %1 artırım yaparsan iki değer atama arasındaki farkı gözlemleyelim.
Diyelimki Duty=%50 iken butona bastın ve değer %51 oldu bu durumda X değerimizi hesaplayalım.
X=(250) * 51/25 =510   bu değer işlemciye verilmesi gereken değerdir.
Buna karşılık buton kontrolünü direk Duty registeri üzerinden yaparsan X değerinin değişimi ne olacaktır diye düşünürsen;
Duty=500 (Yani X=500) iken butona bastın X=501 olur. Gördünmü birinde direk 510 değerine atlıyorsun zorunlu olarak diğerinde 501 değerine geliyorsun. Direk %1 lik artışlar sende titreşim şeklinde bir karşılık oluşturabilir.
Bu konuyu anladı isen yeniden bir değerlendirme yapıp duty değerini artırma azaltma metodunu % üzerinden değilde direk Duty değeri üzerinden yaparsan belki sorunun düzelir.

Ete

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

emrah

hocam çok sagolun, bu şekilde yazılımı tekrardan düzenleyecegım. kafama takılan sorun, osıloskopta sabit şekilde sinyali izlerken %90 duty oranından sonra şeklin sola dogru kaymasnın mantıgnı anlayamadım . orada frekns felan değişmiyor sonucta.