PIC ile yavaş değişen DC gerilim çıkışı

Başlatan OG, 29 Ekim 2003, 01:37:02

OG

PIC konusunda tam bir cahil olmam sebebiyle bir konuda danışmak, yardımınızı istemek mecburiyetinde kaldım.

Öncelikle ihtiyacım olan hususu açıklayayım.

R G B renklerinden oluşan ledler ile bir devre yapmam gerekiyor. Ledleri değişik miktarlarda yakıp karışımından değişik renkler elde etmem gerekiyor. Ledleri PWM ile süreceğim. Yani üzerinden geçen akımı analog olarak değiştirerek değil de (ki bu sağlıklı bir metod olmuyor), ledleri değişik duty-cycle oranında sürerek ışık şiddetini değiştirmek istiyorum. Bunlarında ışık karışımı ile değişik renklere ulaşmak. Bu husus benim için kolay. Sabit bir üçgen dalga üretiyorum ve bunu ayarlı bir DC gerilim ile karşılaştırıp değişik genişlikte palsler üretip sürmek gibi. Buna bir örnek http://www.solorb.com/elect/solarcirc/pwm1/ adresinde var. Aşağıdaki devre bu adrese ait.



Burada VR1 potu ile elde edilen değişken DC gerilim için pot değil de ararken bulduğum http://www.antrak.org.tr/gazete/122000/barbar.htm pic devresini kullanmak istiyorum. Yani aşağıdaki devre;



Neden bunu kullanmam gerekir derseniz, bu ayarlanan DC gerilimi (VR1 ile elde edilen gerilim gibi) çok yavaş değiştirmem (yükseltmem veya alçaltmam) gerekiyor. Bu değişimi  EPROM'a yazacağım bir sıra ile yapmam gerekiyor. EPROM adres sayıcısı çok düşük frekanslı olacak ve EPROM dataları çok yavaş adımlar ile değişecek. Üstteki PIC devresinde "Aşağı-Yukarı" kontak süreleri kısa olması gerektiği için EPROM çıkışında uzun süre bekleyecek olan 1 veya 0 bilgisini PIC devresine kısa süreli vermek için de bir AND GATE kullanacağım. Bu AND kapısının bir girişi EPROM datasını alacak diğer girişi de gereken süre kadar geçişe izin verecek, örneğin 100ms. Bu geçişe izin vereceği zamanı da EPROM'un her adres değiştirişi ile bir kez vereceğim. Buraya kadar tamam. Ancak PIC de bilgisizliğim sebebiyle takıldığım noktalar şunlar;

1-) Bu PIC devresi ve programı ile "Aşağı-Yukarı" kontaklarına 3-5 dakikada vereceğimiz bir komut ile çıkıştaki gerilimi değiştireceğiz, ancak arada geçecek 3-5 dakikalık sürede PIC çıkışındaki gerilimi koruyacakmı?. Zira çıkıştaki kondansatördeki gerilimin sönmemesi için bu gerilimin tazelenmesi ancak son değerde tutulması gerektiğini düşünüyorum (Çıkışı mecburen gereği kadar yüksek empedanslı bir buffer ile süreceğiz).

2-) Kullanmam gereken 3 ayrı renk (R G B) olması sebebiyle ayrı ayrı PIC kullanmak yerine tek bir PIC ile her renk için ayrı komut girişleri ( 3renk x 2 komut = 6 giriş), ve bunların ayrı kontrol edilmiş 3 ayrı çıkış elde etmek mümkünmüdür? Toplam 8  I/O oluyor herhalde.

Bu konuda yardımcı olabilirseniz sevinirim.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

OG

Arkadaşlar, aşağıdaki devrenin http://www.antrak.org.tr/gazete/122000/picpwm.gif hex'inde küçük bir modifikasyon mümkünmüdür?

Devre komut aldıkça up veya down olarak çıkış gerilimini değiştiriyor. Up komutu ile çıkş gerilimi max olunca (5V) orada kalmayıp 0V'a zıplayarak düşüyor. Veya tersi, Down komutu ile inerken 0Volt'a geldi ise birden max gerilime (5Volt) sıçrıyor.

İnişte son konum olarak 0Volt da kalmasını, çıkışta ise son konum olarak  5V da kalmasını temin etmek mümkünmüdür?

Yardımınızı bekliyorum.

Devrenin bahsettiğim hali ile çalışan hexi http://www.antrak.org.tr/gazete/122000/Picpwm.zip  veya http://168.144.5.94/file/Picpwm.zip adresindedir.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

DumrulBey

Merhaba,

Tam anlayamadım ama yardımcı olmak istedim. Bunu bir japon amcamın sitesini vererek yapabileceğimi düşündüm. Sitenin tamamı Japonca olmasına rağmen iş görür. Benim en favori adreslerimden biridir: http://nonchansoft.at.infoseek.co.jp/mokuji.htm

Burada öyle projeler var ki, amcam oturmuş Excel'de voltaj hesaplamaları yapmış. Üstelik bu hesaplamalarda dahil tüm kodları vermiş. Ancak projeyi bulamadım, o kadar çok var ki şaşırdım  kaldım. Güzel ışıklı sunumlarda hazırlamış. Dolayısıyla seni işini çok ilgilendiriyor. Hepsini bir incele istersen.

Başarılar,
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

OG

DumrulBey
Teşekkür ederim, bir üstteki mesajıma bakabilirseniz orada anlattığım gibi bir mecburiyetim var. Devreyi değiştirme imkanım şu andan itibaren yok. Şu sıçrama olayını halletsem iş bitecek.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mmengi

dostum antrak taki devreyi birde aşağıda verdiğim kodlarla dene istersen artış hızı fazla ise ayarlarız 8) . aşağıdaki kodları yeni bir metin belgesine kopyala ve adını pwm.hex olarak değiştir. buradan barbaros beyin kulaklarını çınlatıyorum projeleri hex dosyası olarak veriyor milleti uğraştırıp duruyor.


--------------------------------------------------------------------------------------
:100000005328A4000C080D0403194E2848208F0122
:10001000900124091F20841350200E088F07000828
:100020002404031C24068000900A03198C0A031977
:100030008D0F0C2824081C28841780044E28841750
:1000400080054E288D018F018E00023031288D01F0
:100050008F018E00013031288D018F018E00043018
:10006000312894000F080D02031D38280E080C02D9
:10007000043003180130031902301405031DFF304A
:100080004E280038031DFF300405031DFF304E28A5
:100090008C098D098C0A03198D0A08008313031338
:1000A0008312640008008316FF30850086018312E6
:1000B0000030051801308C00003022209E002808F6
:1000C0008C00FF302C20A0001E0884002008412056
:1000D000A000A10064002008210403197028A80AC8
:1000E0000030851801308C00003022209E00280846
:1000F0008C0000302720A0001E088400200841202A
:10010000A000A10064002008210403198828A80386
:1001100028088E000A308C008D01063084000130E2
:08012000012058286300922819
:02400E00F93F78
:00000001FF
------------------------------------------------------------------------------------

   @ DEVICE pic16F84A, WDT_OFF
         ' Watchdog Timer
   @ DEVICE pic16F84A, PWRT_OFF
         ' Power-On Timer


define osc 4
TRISA=255
TRISB=0

DEGER   VAR BYTE

BASLA:
   IF PORTA.0=0 AND DEGER<255 THEN DEGER=DEGER+1
   IF PORTA.1=0 AND DEGER>0 THEN DEGER=DEGER-1
   PWM PORTB.0,DEGER,10
   GOTO BASLA
   
   END
------------------------------------------------------------------------

OG

mmengi Hocam

Yani kıvranıp durduğum olayı 2 dakikada hallediverdin. Allah razı olsun. Denedim, çok güzel çalışıyor. Şu bilgilere ihtiyacım var;

Çıkış değişimini 256 step de mi hallediyor, ona göre digital palsler ile süreceğim. Bir adım yükseltmek/alçaltmak için  yani 1/256 lık değişim için girişten max ne kadar süre kontrol palsi vermemiz gerekiyor. Yani uzun basarsak 2/256 , 3/256 , 25/256 gibi stepler ile ilerleyebilir. İstediğimiz tek adım için max ne kadar süre giriş kontrol palsi vermemiz gerekir, bunun min bir alt sınırı varmıdır. Kullandığım kristal 4MHz ve kontak debounce olayına gerek yok, kontrol palslerini devre üretecek.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.