PİC İLE DİRENC KONTROL

Başlatan yusufrov, 06 Ekim 2015, 23:32:12

yusufrov

Merhaba Degerli Arkadaşlar,

pic 16f877a ile direnc degeri okuyup bu degere gore farklı işlemler yaptırmam gerekiyor.
bu konuda kullanbilecegim bir komut varmıdır yada önerebileceginiz bir baglantı şeması varmıdır.

Ben;
kucukten buyuge dogru dirençleri sıralayıp pot ile de karsı kutp ayar yaparak sırayla direnc yukseldikce portların 1 e donmesini saglamayı dusunuyorum. Yapılabilirliği konusunda da herhangi bir bilgim yok.
Sizlerin degerli fikirleri benim için bu aşamada cok önemli.

Saygılarımla,
Yusuf KILIÇ

İlyas KAYA

Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

yusufrov

o komut zaman la alakalıydı diye hatırlıyorum ben fakat bakayım genede.

ete

Direk direnç değerini okuyupta sana değeri şudur diye söyleyecek bir komut yok maalesef.
Bu işi yapmanın türlü yolu mevcut. Türlü derken bana göre toplam 3 yolu var. Bunlar,
Pot komutu, Rctime komutu son olarak da adc ölçüm metodu ile.
İlk iki metod da bir kondansatörün önce şarj edilip sonra ölçülecek direnç üzerinden deşarj olması için geçen sürenin ölçülmesi temeline dayanır. Ölçülen süre uygun formül kullanılarak direnç değerine dönüştürülmelidir. Son metod ise ölçülecek direnç ile oluşturulan bir gerilim bölücü nün çıkışının adc girişine bağlanarak girişten verilen 5v un adc girişinde kaç volta düştüğünün ölçülmesi ve ölçülen değerin direnç değerine dönüştürülmesi esasına dayanır.

Ete

yusufrov

#4
ALINTI: Son metod ise ölçülecek direnç ile oluşturulan bir gerilim bölücü nün çıkışının adc girişine bağlanarak girişten verilen 5v un adc girişinde kaç volta düştüğünün ölçülmesi ve ölçülen değerin direnç değerine dönüştürülmesi esasına dayanır.

DEGERLİ HOCAM:

Yukarıda yazdıgınız metodun uygulaması hakkında yardımcı olabilir misiniz acaba. yada herhangi benzer bir kaynak sitemizde var mı ben bulamadım.

İlginiz için çok teşekkürler.

Benim yapmak istedigim işlem bir direnç ile direnç yukseldikce 5 farklı işlem yapmak direnc çevirdikce 2-3-4 gibi işlemleri başlatıp kapatmak.




ete

Önce sınırları belirlemek gerek. Minimum direnç değeri ile maksimum direnç değeri ne olacak?
Umarım bunlar bellidir. Bu değerleri bilirsek bölen direnci öyle ayarlarızki adc girişimize direncin her değerinde ölçülebilir bir voltaj gelebilsin.

Bu konu ike ilgili örnek arama. Bir şey arayacak isen gerilim bölme ve adc okuma konularını araştır. Zira senin konu bu ikisi ile alakalı.

Ete

yusufrov

#6
ETE hocam bu konuda cok bir bilgiye ulaşamadım özelliklede basıc dilinde.

ufak bi örnek program yazılabilirmi burada yada site içerisinde bulamadım.

potansiyometre ile direnc degeri yukseldikce 6 farklı ledi yakanve tekrar kapatan bir programa ihtiyacım var.
pic ile gerilim okumayı daha önce hiç yapmadım bi tane örnek bulsam halledebilirim.

bu konuda yardımınız olur mu aceba.

ete

Sitede yer alan Basic Dersleri ne bak Ders-5 (ADC okuma) konusunu aç. O konu içinde verilmiş olan TERMİSTOR ile ilgili bir program ve devre var. Bu tamda senin aradığın şey. Hem gerilim bölme var hem değişen termistör direnci var. Termistör yerine senin değişken direncini koy gerisini istediğin şekilde hallet.
Bu sitede isteğe bağlı özel program yazmıyoruz maalesef. Akıl veririz , yol gösteririz, hatta örnek kod parçalarıda veririz. Yeri gelince bilginin nereden bulunacağını söyleriz ama hazır kod yazmayız. Orada dersler var. Normal olarak derleri birinci dersten itibaren okuyup uygulama yapman gerekir. Böylece Programlama işini ve az da olsa devre tasarım konusunda bilgini geliştirmiş olursun. Bu derleri bitiren birisi senin ihtiyacın olan projeyi anında yapacak hale gelebilir. Bunu tecrübelerime ve yapacağın işe bakarak söylüyorum.

Ete

onurinci

Ete hocamında yardı ile buna benzer bir devre yapmıştım ,küçük değişikliklerle işini görebilir.fakat kendini geliştirmeyi ihmal etme.

yusufrov

#9
Onurinci kardeşim cok teşekkur ederim senin program ilk basta biraz kafamı karıştırdı fakat ETE hocamızın pic ile analog dijital cevirici isimli bir egitim yazısını ve örnek programını buldum onuda okuduktan sonra senin programı anladım ve su an kendim yazmaya calışıyorum. Muhemelen takıldıgım yerler olacaktır dosyayı yukler tekrar yardım isterim.

Tekrar cok teşekkur ederim.

Saygılarımla;
Yusuf KILIÇ

bilsisco

Alıntı yapılan: yusufrov - 08 Ekim 2015, 12:00:56
Benim yapmak istedigim işlem bir direnç ile direnç yukseldikce 5 farklı işlem yapmak direnc çevirdikce 2-3-4 gibi işlemleri başlatıp kapatmak.
Bunu rotary encoder ile yapabilirsiniz

yusufrov

ARKADAŞLAR ETE HOCANIN  PROGRAMININ AYNISINI YAZDIM ONUN UZERİNDE BİRAZ DEGİŞİKLİKLER YAPIP OYNAYIP ÖGRENMEYE CALIŞIYORUM FAKAT İLLEGAL OPCODE DİYE BİR HATA İLE KARŞILAŞIYORUM SEBEBİ NE OLABİLİR ACEBA.

SİGORTA AYARLARINI BAYA KARIŞTIRDIM DEGİŞİK DEGİŞİK YAZDIM.

ete

Öncelikle büyük harf ile mesaj yazma. Büyük harf site dilinde kızarak bağırarak mesaj yazma anlamına geliyor.
İkincisi, sorun yine sigorta ayarı veya makinanın 32 bit yada 64 bit olması ile alakalı.
Makinan 64 bit ise derlemeyi Mpasm lullanarak yapman gerek. Bu durumda programdaki sigorta ayarın doğru. Makinan 32 bit ise derlemeyi mpasm olmadan (pm assembler) ile yapman gerekiyor. Bu durumda sigorta ayarın yanlış oluyor.
Aşağıdaki linki oku,
http://etepic.com/index.php/topic,1687.0.html

Ete

yusufrov

Sigorta ayarlarını hallettim.

ölçülen voltaj 2v-3v arasında ise 3-4 volt arasında ise gibi bir program yazmam gerekiyor.

If volt>2 then cıkıs1
ıf volt>3 then cıkış2
ıf volt>4 then cıkıs3

gibi yaptıgımda 2 den buyuk oldugu için hep çıkış 1 e yonlenecek onu 3 e kadar sınırlamak için nasıl yazmam gerekiyor.

ete

If volt<3 then cikis1. Bunu If Volt>2 and Volt<3 then cikis1 şeklinde daha garanti olur.
If volt volt>3 and Volt<4 then cikis2
If Volt>4 then cikis3

Senin yazdığın şekilde de olur ama if lerin sıralamasını değiştirmen gerek. Şöyle,
If Volt>4 then cikis3
If Volt>3 then cikis2
If Volt>2 then cikis1
Böylece önce 4 den büyük değerleri test ederiz. Sonra 3 den büyükleri ve sonunda 2 den büyükleri test ederek bahsini ettiğin olumsuz durumdan kurtulmuş oluruz.

Ete

Powered by EzPortal