KralMurat
Üye
- Katılım
- 14 Tem 2011
- Mesajlar
- 22
- Puanları
- 1
- Yaş
- 34
Merhabalar,
Pic programlama konusunda biraz yeniyim, belki basit bir soru olacak ama fikrinizi almak istedim.
Şimdi elimde bir devre var, Pic16f628 ile yapılmış bir devre. Devrede 1 adet röle var, fakat ben devreyi ve kaynak kodunu biraz modifiye ederek 2 röleyi kontrol edecek şekilde düzenlemek istiyorum. Fakat 2. röle için hiçbir I/O portu kalmıyor maalesef. PORTA'nın tüm pinleri sensörler ve birkaç buton için kullanımda. PORTB ise Ortak katotlu bir DIGIT (8 şeklindeki display) sürmek için kullanılmakta. PORTB'nin 8 pini, digit'in ABCDEFG ve (dot) olmak üzere 8 pinini sürüyor. Burda (dot) sürmek gereksiz, yani PORTB.7'inci bitini 2. röle için kullanabilirim, pic'den veri almaya gerek yok digit'in nokta led'ini yakmak için, bunu iptal edebiliriz.
Fakat söyle bir sorunla karşılaşabileceğimi düşünüyorum, eğer PORTB.7'ye röle bağlarsam, digit'e veri sürüldüğü zaman (örneğğin digit'te 3 yazmasını istediğim zaman) gönderdiğim veri röleyi etkileyecektir, çünkü digit'e veriyi direk PORTB'ye aktararak sürüyorum. Buda 8. pin'e bağlı 2. röleyi etkileyecektir değil mi? Birinci sorum bu.
Bunu engellemek için söyle birşey geldi aklıma, PORTA'ya bağlı butonlardan birini PORTB.7'ye bağlasam, yani TRISB'ye '10000000' atsam ve PORTB.7'yi input yapsam, ve geri kalan 7 bite de digit'i aynı şekilde bağlasam, digit'e veri gönderdiğim zaman (yani örneğin 3 bilgisini direk PORTB'ye aktardığım zaman) program hata verir mi? İkinci sorumda bu. Eğer hata vermezse, butonlardan birini PORTB'deki (dot)'tan arttırdığımız pine taşırım, PORTA'daki aktarılan butonun yerine de kontrol etmek istediğim 2. rölemi bağlamış olurum.
Olabildiğince basit anlatmaya çalıştım umarım karışmamıştır. Bu konudaki yardımlarınızı bekliyorum (aslında multiplexer kullanarak 8 bir yerine 3-4 bitle digit sürüp fazladan 4-5 bit arttırılabilir, veya PORTA'daki 4 buton pic'de 2 portla kontrol edilebilir belki ama bunları teorik olarak biliyorum, devreye uyarlayacak kadar bilgi sahibi değilim, o yüzden en basit şekilde 1 pin arttırıp digit'e sayı bilgisi göndermemi etkilemeyecek şekilde 1 röle daha bağlayabilmem gerekiyor
PORA'da arttırılacah hiç pin yok, o yüzden mecburen digit'in bağlı olduğu PORTB2den arttırmam gerekiyor) Zaman ayırdığını için teşekkürler
cevaplarınızı bekliyorum
- - - Updated - - -
Aslında ben tam olarak ne yapmak istediğimi anlatayım, 2. röle olayını çözdükten sonra kodlama kısmında da yardıma ihtiyacım olabilir çünkü
hem devreyi gördüğünüzde 2. röle için anlattıklarımı da daha iyi görebilir ve yardımda bulunabilirsiniz diye düşündüm.
Modifiye etmek istediğim devre şu :
http://320volt.com/ayarlanabilir-termometre-devresi-16f628-ds18b20-picbasic-pro/
Bu devre sadece ısıtıcı bağlanarak ortam ısısını belirli bir seviyede tutmayı sağlayan bir termostat. Ben bunu peltier kullanarak hem ısıtıcı hemde soğutucu elemanı kontrol eden bir devreye dönüştürmek istiyorum. Bu yüzden 2 röleye ihtiyacım var. Tek röleylede peltieri kontrol edebilirim aslında ama peltier'in sürekli çalışması gerekiyor ozamanda. Rölenin 2 konumu olduğu için birisinde ısıtıcı birisinde soğutucu olarak çalışması gerekecek, buda çok verimsiz olacak, belli bir ısı aralığında peltier'in çalışmadan durması gerekiyor.
Mevcut devrenin çalışması şu şekilde, bir sıcaklık değeri set ediyoruz, birde tolerans değeri veriyoruz. ortam sıcaklığı Set edilen değere (örneğin 27 dereceye) gelene kadar röleyi sürüyor (ısıtıcıyı çalıştırıyor). 27 dereceye gelince röleyi kesiyor. ve tolerans değerinin altına düşene kadar (örneğin tolerans değeri 0.5 derece ise 26.5'e gelene kadar) ısıtıcıyı çalıştırmıyor, 26.5'in altına düştüğü anda tekrar 27 olana kadar röleyi sürüyor.
Benim modifiye etmek istediğim devrenin ise çalışma prensibi şu şekilde olmalı, yine sıcaklığı 27 dereceye set ettiğimizi ve toleransın 0.5 derece olduğunu varsayarsak, eğer sıcaklık 26.5'in altında ise 1. röleyi sürerek ısıtıcıyı çalıştıracak, 27 dereceye gelince 1. röleyi (ısıtıcıyı) kesecek. Eğer sıcaklık 27.5'in üzerine çıkarsa da soğutucuyu çalıştıracak, 27 dereceye kadar soğutunca da 2. röleyi (soğutucuyu) kesecek. Yani sıcaklık 26.5-27.5 arasında tutulmuş olacak. ve peltier devamlı çalışmak zorunda kalmayacak. Sıcaklığı 27 dereceye getirince peltier çalışmayı bırakacak, 26.5'un altına düşünceye kadar veya 27.5'un üzerine çıkıncaya kadar çalışmayacak.
Eğer bu mevcut devreyi dediğim şekilde modifiye etmeyi başarabilirsek harika bir termostat devresi ortaya çıkarmış oluruz, devreyi tasarlayan arkadaşa fikir önerisinde bulunduk bir arkadaşımla birlikte ama tasarlayan arkadaş pek oralı olmadı
buna ayıracak zamanı olmadığını söyleyince bizde şansımızı forumlarda deneyelim dedik
İnternette de buna benzer bir proje (hem ısıtıcıyı hem soğutucuyu kontrol eden) bulamadım, var ama şöyle var, ısı 27 dereceye set edilmişse tolerans değeri kadar aşağı inince ısıtıcıyı çalıştırıyor, set edilen değerin üzerine çıkar çıkmaz soğutucuyu çalıştırıyor, yani tolerans değeri kadar üstüne çıkmasını beklemiyor. O yüzden bu önerdiğim devreyi yapabilirsek çok daha kullanışlı ve internette olmayan (veya bulamadığım) bir devre tasarlamış olacağız. Durum genel olarak bu
Pic programlama konusunda biraz yeniyim, belki basit bir soru olacak ama fikrinizi almak istedim.
Şimdi elimde bir devre var, Pic16f628 ile yapılmış bir devre. Devrede 1 adet röle var, fakat ben devreyi ve kaynak kodunu biraz modifiye ederek 2 röleyi kontrol edecek şekilde düzenlemek istiyorum. Fakat 2. röle için hiçbir I/O portu kalmıyor maalesef. PORTA'nın tüm pinleri sensörler ve birkaç buton için kullanımda. PORTB ise Ortak katotlu bir DIGIT (8 şeklindeki display) sürmek için kullanılmakta. PORTB'nin 8 pini, digit'in ABCDEFG ve (dot) olmak üzere 8 pinini sürüyor. Burda (dot) sürmek gereksiz, yani PORTB.7'inci bitini 2. röle için kullanabilirim, pic'den veri almaya gerek yok digit'in nokta led'ini yakmak için, bunu iptal edebiliriz.
Fakat söyle bir sorunla karşılaşabileceğimi düşünüyorum, eğer PORTB.7'ye röle bağlarsam, digit'e veri sürüldüğü zaman (örneğğin digit'te 3 yazmasını istediğim zaman) gönderdiğim veri röleyi etkileyecektir, çünkü digit'e veriyi direk PORTB'ye aktararak sürüyorum. Buda 8. pin'e bağlı 2. röleyi etkileyecektir değil mi? Birinci sorum bu.
Bunu engellemek için söyle birşey geldi aklıma, PORTA'ya bağlı butonlardan birini PORTB.7'ye bağlasam, yani TRISB'ye '10000000' atsam ve PORTB.7'yi input yapsam, ve geri kalan 7 bite de digit'i aynı şekilde bağlasam, digit'e veri gönderdiğim zaman (yani örneğin 3 bilgisini direk PORTB'ye aktardığım zaman) program hata verir mi? İkinci sorumda bu. Eğer hata vermezse, butonlardan birini PORTB'deki (dot)'tan arttırdığımız pine taşırım, PORTA'daki aktarılan butonun yerine de kontrol etmek istediğim 2. rölemi bağlamış olurum.
Olabildiğince basit anlatmaya çalıştım umarım karışmamıştır. Bu konudaki yardımlarınızı bekliyorum (aslında multiplexer kullanarak 8 bir yerine 3-4 bitle digit sürüp fazladan 4-5 bit arttırılabilir, veya PORTA'daki 4 buton pic'de 2 portla kontrol edilebilir belki ama bunları teorik olarak biliyorum, devreye uyarlayacak kadar bilgi sahibi değilim, o yüzden en basit şekilde 1 pin arttırıp digit'e sayı bilgisi göndermemi etkilemeyecek şekilde 1 röle daha bağlayabilmem gerekiyor
- - - Updated - - -
Aslında ben tam olarak ne yapmak istediğimi anlatayım, 2. röle olayını çözdükten sonra kodlama kısmında da yardıma ihtiyacım olabilir çünkü
Modifiye etmek istediğim devre şu :
http://320volt.com/ayarlanabilir-termometre-devresi-16f628-ds18b20-picbasic-pro/
Bu devre sadece ısıtıcı bağlanarak ortam ısısını belirli bir seviyede tutmayı sağlayan bir termostat. Ben bunu peltier kullanarak hem ısıtıcı hemde soğutucu elemanı kontrol eden bir devreye dönüştürmek istiyorum. Bu yüzden 2 röleye ihtiyacım var. Tek röleylede peltieri kontrol edebilirim aslında ama peltier'in sürekli çalışması gerekiyor ozamanda. Rölenin 2 konumu olduğu için birisinde ısıtıcı birisinde soğutucu olarak çalışması gerekecek, buda çok verimsiz olacak, belli bir ısı aralığında peltier'in çalışmadan durması gerekiyor.
Mevcut devrenin çalışması şu şekilde, bir sıcaklık değeri set ediyoruz, birde tolerans değeri veriyoruz. ortam sıcaklığı Set edilen değere (örneğin 27 dereceye) gelene kadar röleyi sürüyor (ısıtıcıyı çalıştırıyor). 27 dereceye gelince röleyi kesiyor. ve tolerans değerinin altına düşene kadar (örneğin tolerans değeri 0.5 derece ise 26.5'e gelene kadar) ısıtıcıyı çalıştırmıyor, 26.5'in altına düştüğü anda tekrar 27 olana kadar röleyi sürüyor.
Benim modifiye etmek istediğim devrenin ise çalışma prensibi şu şekilde olmalı, yine sıcaklığı 27 dereceye set ettiğimizi ve toleransın 0.5 derece olduğunu varsayarsak, eğer sıcaklık 26.5'in altında ise 1. röleyi sürerek ısıtıcıyı çalıştıracak, 27 dereceye gelince 1. röleyi (ısıtıcıyı) kesecek. Eğer sıcaklık 27.5'in üzerine çıkarsa da soğutucuyu çalıştıracak, 27 dereceye kadar soğutunca da 2. röleyi (soğutucuyu) kesecek. Yani sıcaklık 26.5-27.5 arasında tutulmuş olacak. ve peltier devamlı çalışmak zorunda kalmayacak. Sıcaklığı 27 dereceye getirince peltier çalışmayı bırakacak, 26.5'un altına düşünceye kadar veya 27.5'un üzerine çıkıncaya kadar çalışmayacak.
Eğer bu mevcut devreyi dediğim şekilde modifiye etmeyi başarabilirsek harika bir termostat devresi ortaya çıkarmış oluruz, devreyi tasarlayan arkadaşa fikir önerisinde bulunduk bir arkadaşımla birlikte ama tasarlayan arkadaş pek oralı olmadı
İnternette de buna benzer bir proje (hem ısıtıcıyı hem soğutucuyu kontrol eden) bulamadım, var ama şöyle var, ısı 27 dereceye set edilmişse tolerans değeri kadar aşağı inince ısıtıcıyı çalıştırıyor, set edilen değerin üzerine çıkar çıkmaz soğutucuyu çalıştırıyor, yani tolerans değeri kadar üstüne çıkmasını beklemiyor. O yüzden bu önerdiğim devreyi yapabilirsek çok daha kullanışlı ve internette olmayan (veya bulamadığım) bir devre tasarlamış olacağız. Durum genel olarak bu