0-10 V

Başlatan oguztkn, 31 Ağustos 2013, 23:28:11

oguztkn

Arkadaşlar pice 0-10 volt analog voltajı nasıl girebilirim aklıma gerilim bölücü ile geliyo ama bu seferde 0-10 volt aralığını 0-5v volt aralığına çevirmiş olacağım ama bana 0-10 volt aralığı lazım bunu nasıl yapabilirim ?


Şimdiden Teşekkürler....

Mucit23

Ne fark ediyor ? Sana 0-10v arası giriş lazim değilmi? Tamam işte gelirim bölücü kullanıp senin girdigin 0-10v aralığını 0-5v a dönüştürmüş olacaksın zaten. Sen yine 0-10 v gireceksin....

Gelirimi bi şekilde düşünmekten başka çaren yok.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

oguztkn

Alıntı yapılan: Mucit23 - 01 Eylül 2013, 01:02:52
Ne fark ediyor ? Sana 0-10v arası giriş lazim değilmi? Tamam işte gelirim bölücü kullanıp senin girdigin 0-10v aralığını 0-5v a dönüştürmüş olacaksın zaten. Sen yine 0-10 v gireceksin....

Gelirimi bi şekilde düşünmekten başka çaren yok.

Gerilimi düşürmekten başka yol yok onu biliyorum ben programla 0-10v aralığı gibi bi geniş aralığı 0-5 volta nasıl uyarlayabilirim sorun orda

ete

Çok kolay. Besleme voltajı 10v olan harici bir adc entegresi bulacaksın. 0-10v  aralığını direk olarak onunla okuyacaksın. Çözünürlüğü de 16 veya 24 bit olan bir şey bulursan epey geniş bir aralıkta okuma yapmış olursun. Hemen hangi entegre diye sorduğunu duyar gibi oluyorum. Peşinen söyleyeyim Bilmiyorum. Araştırmak lazım.
Voltaj aralığı ile okuma çözünürlüğünü karıştırmamak gerekir. Sana önerilen yöntemle ben 0-300 v arasını bile okuyorum. Yani 0 -300v aralığını 0-5v aralığına indirgeyip okumayı digital olarak 0-1023 olarak yapıyorum. 1023 okumuş isem voltaj 300v dur diye kabul edebiliyorum. Sen neden takıldınki bu işe?

Basit bir hesap yaparsak 10/1024=0,0097 değerini bulursunki bu sana şunu gösterir. Okuduğun birim adc değerine karşılık gelen voltaj değeridir bu. Epeyce büyük bir çözünürlük bence.
Kısaca 10 v değerini 1024 kademede okuyacaksın anlamınada geliyor bu. Daha nasıl bir çözünürlük bekliyorsun acaba?
Ete

oguztkn

#4
0-10 voltu pice 0-5 olarak girsem programla 0-10 volt arallığını tutturabilirmiyim ?

Aslında benim yapmaya çalıştığım  0-5 v aralığını 5 geldiğinde 99 olsun istiyorum aşağıya doğru indikçe tek tek 98-97-96... 0 a kadar inmesini istiyorum onu beceremedim

ete

#5
Ders notlarımda adc okuma kısmında bu konuda bilgi mevcut yeniden açıklayayım. İstediğini yapmak için basit matematik işlemleri uygulamak gerekiyor o kadar. Pic'e 0-5 v girdiğin zaman karşılığında 0-1023 değerini digital olarak okursun. Ancak sen bunu ekranında 0-10v olarak hatta ondalık kısmıda dikkate alır isek 0-10,0 yada 0-100 olarak göstermek istiyorsun. O halde yapman gerek maksimum değerin olan 100 değerini 1024 de bölmek. 100/1024=0,09765625. Bunu 32 bit matematiğinde yada pic matematiğinde yapmak için 256 ile çarparız. Sonuç 25 çıkacaktır. İşte bu senin sabit çarpan değerin olacaktır. Yani okuduğun adc değerini */ çarpan operatörünü kullanarak 25 ile çarptığında sana sonucu 256 ya bölünmüş olarak verecektir. Baştan çarpan değerimizi 256 ile çarptığımız için eşitlik bozulmamış olacaktır.  Formülümüz volt=(adc +1)*/25 şeklinde olacaktır.
Hemen bir deneme yapalım istersen. 2,5V karşılığını pic adc olarak 511 okur. Bunu pic matematiği ile yaparsak Volt=(511+1)*/25 = 50 olarak bulunacaktır. Bu işlemi hesap makinesi ile yapmak istersen 511+1)*25/256 şeklinde yapman gerekiyor. Böylece 50 değerini bulmuş oldun.
Bu aslında 5v un karşılığıdır. Zira gerilim bölücü ile 0-10v tu 0-5 volta indirgediğin zaman 5v karşılığında 511 okumuş olacaksın. Elde ettiğin 50 sayısını ekranda ;
Lcdout $FE,$80,"Volt=", Dec (volt/10),",",dec1(volt//10) şeklinde yazdırabilirsin. Böylece ekranda Volt= 5,0. Şeklinde ondalıklı olarak voltajını görürsün.
Ete

oguztkn

hocam çok teşekkür ederim sizin sayenizde devreyi çalıştırabildim 2x16 lcd de gördüm değerlerimi ama evde malzemeleri kurcalarken 2 adet display buldum 7 segment acaba bunlarda nasıl gösterebilirim 2 adet sürücü (74ls47) buldum devreye bağladım portb ye sonra programdada direk PORTB=VOLT dedim değerler desimal çıkmıyor bunları nasıl decimale çevirebilirim ? 

ete

Bir 7 segment displayin sayıları nasıl gösterebildiğine biraz kafa yorarsan işin aslında desimal falan olmadığını anlarsın.
7 segment adı üzerinde 7 adet segment den oluşur. Bu segmentler sayıları oluşturur. Direk pice bağlarsan rakamın neyse sen onu 7 segmente göre değiştirp porta vermen gerekir.
Arada 7447 kullanırsan ABCD girişinden gösterilecek rakamın binary kodunu girmen lazım.
Meslea;
ekranda 1 gösterecek isen ABCD girişinden %0001
ekranda 2 gösterecek isen ABCD girişinden %0010
ekranda 3 gösterecek isen ABCD girişinden %0011
ekranda 4 gösterecek isen ABCD girişinden %0100
ekranda 9 gösterecek isen ABCD girişinden %1001
vermen gerekiyor.

Ete

oguztkn

Alıntı yapılan: ete - 02 Eylül 2013, 12:17:19
Bir 7 segment displayin sayıları nasıl gösterebildiğine biraz kafa yorarsan işin aslında desimal falan olmadığını anlarsın.
7 segment adı üzerinde 7 adet segment den oluşur. Bu segmentler sayıları oluşturur. Direk pice bağlarsan rakamın neyse sen onu 7 segmente göre değiştirp porta vermen gerekir.
Arada 7447 kullanırsan ABCD girişinden gösterilecek rakamın binary kodunu girmen lazım.
Meslea;
ekranda 1 gösterecek isen ABCD girişinden %0001
ekranda 2 gösterecek isen ABCD girişinden %0010
ekranda 3 gösterecek isen ABCD girişinden %0011
ekranda 4 gösterecek isen ABCD girişinden %0100
ekranda 9 gösterecek isen ABCD girişinden %1001
vermen gerekiyor.

Ete

O konuyu biliyorum daha önce sayıcı devresi yapmıştım 7447 kullanmayı biliyorum sadece adc nin sonucunu anlık olarak nasıl yansıtacağımı beceremedim

ete

Volt değerin 123 olsun.
Birler hanesi birler=volt dig 0
Onlar hanesi onlar=volt dig 1
Yüzler hanesi yuzler=volt dig 2
Şeklinde alınarak her biri kendi displayine yollanır.
Biraz matematik biliyorsan aynı işlemi ;
Yuzler=volt/100
Volt=volt-yuzler*100
Onlar=volt/10
Volt=volt-onlar*10
Birler=volt

Ete

oguztkn

#10
Artık işin sonuna geldim sanırsam programım şöyle oldu acaba bir eksiklik varmı bakabilirmisiniz ?

BASLA:
      ADCIN 0,HAM  '0 nolu kanaldan Analog değeri oku ve RAW değişkenine aktar.

      Volt=(ham+1)*/25    'Ham ile 1250 yi 32 bit olarak çarp ve 100'böl
     Birler=Volt dig 0
     onlar =Volt dig 1
     
      PAUSE 500
      GOTO BASLA
bana max 99 gerektiği için yuzleri eklemedim ama bu halde çalışmıyor acaba eksik nerde                   

ete

Hiç bir şeyi tam anlamamışsın.
Yazdığın mesajı değiştirdim. Yeniden bak oraya.
Birler ve onlar hanesi rakamlarını elde ettin peki onları displaylere nerede veriyorsun veya nasıl veriyorsun.  Onungöremedim.

Ete

oguztkn

Alıntı yapılan: ete - 02 Eylül 2013, 21:12:22
Hiç bir şeyi tam anlamamışsın.
Yazdığın mesajı değiştirdim. Yeniden bak oraya.
Birler ve onlar hanesi rakamlarını elde ettin peki onları displaylere nerede veriyorsun veya nasıl veriyorsun.  Onungöremedim.

Ete
Hocam kafam biraz yoğun aynı anda bir kaç işle uğraşıyorum ondan tam beceremedim birde daha tam öğrenmiş sayılmam pbp yi sizin ve arkadaşların sayesinde kendimi geliştirmeye çalışıyorum
iki adet display var onlarda portb de 7447 ile bağlı portb 0.1.2.3 te display bir in abcd uçları var 4.5.6.7 de diğer displayin abcd uçları var bunları direk gösteremem sanırsam

oguztkn

Hocam dig1 ve dig0 ı portb de göstermek için şöyle birşey aklıma geldi uyguladım sonuç alamadım acaba yanlış bir mantık yürüttüm

ADCIN 0,HAM 
      Volt=(ham+1)*/25
      pause 50   
      Birler=Volt dig 0
      onlar =Volt dig 1
      swap onlar,onlar 
      B0=%11110000
      B1=onlar and b0
      B2=%00001111
      B3=birler and b2
      B4=b3 or b1     
      PORTB=b4
      B4=PORTB
      pause 500
      GOTO BASLA

ete

Doğruluk testini ancak buraya bir şema koyarsan yada adım adım ne yapmak istediğini ve kimin nereye bağlı olduğunu yazarsan yapabilirim.  Yoksa kodlardanbir şey anlaşılmıyor. Hatalar olduğunu görebiliyorum ama ne yapmak istediğini bilemediğimden nasıl olması gerektiğini söylemem mümkün değil.
7447 ve ona bağlı segment kullanımını biliyorum demiştin ama hiçde bilmediğin görülüyor. Zira ortada şema ve bağlantı şekli olmadan ben sana digitleri ayır yada elde et (üstelik nasıl elde edeceğinide gösterdim) sonra onları kendi displaylerine ver demiştim. Şema olmadan ancak bunu söylerim. Sende bildiğine göre aktarabilmen gerekir idi ama olmuyor işte. Bilmemek ayıp değil ama bilmediğin şeyide biliyorum demek yanlış. Belki biliyorsun ama sabit bir kalıpta ABCD pinleri port başında olursa işin kolay PORTB=BIRLER dersin o displaye birler rakamını yerleştirirsin. Ama ABCD pinleri port sonunda veya ortasında bağlı ise ne yapacaksın. ? Elbette bit kaydırma yaparak onları halletmen lazım. Örnek vermek gerekir ise PORT sonunda bağlı ABCD için
ONLAR=ONLAR<<4 şeklinde bitleri 4 bit kaydırırsan ABCD ye vermen gereken bitler register sonuna geçer. Sende PortB=Onlar dedinmi işlem tamam olur.
Bit bazında işlemler için AND komutunu AND yazarak kullanamayız. Onun yerine & bit bazında AND işlemi operatörü olan & işaretini kullanırız. B1=onlar and b0  işleminde b0 değişkenine önceden değer ataman gerekmiyor idi direk,
B1=Onlar & %11110000  demen yeterli idi. Ancak burada senin birler rakamına ait bitler zaten sağ tarafta yer alıyor. İlk 4 bit o halde bu yaptığın yanlış oluyor. Zira  Onlar=%00000111 şeklinde bir rakam taşıyor ise bu işlemin sonucuna bakalım istersen B1=%00000111 & %11110000=%00000000 olur. Ama içimden bir ses sen Onlar bitlerini sol tarafa aktarmak istiyordun diyor. O halde doğru komut Onlar=ONlar<<4 şeklinde olacaktır. Böylece Onlar=%01110000 şeklini alacaktır.
İkili display sisteminde 2 ayrı 7447 kullanman gerekmiyormu. O halde iki ayrı ABCD pinin olması gerekmezmi. Bunları bir porta bağlayıp portun yarısını Onlar diğer yarısını birler için kullanman gerekirdi. Ama senin kodlarında (yine şema olmadığı için programdan okumaya çalışıyorum) tek bir ABCD pin gurubu gözüküyor. Bu durumda tek digit çalıştırabilirsin.
ANlamadığım bir şey de ;
PORTB=b4  ' önce porta B4 değerini verip ,
B4=PORTB  ' sonra neden Port dan okuduğun aynı değeri yeniden B4 de eşitliyorsun?

Kısaca ortada şema olmadan yorum yapmak imkansız. Seni anlıyorum kestirmeden gidip bir an önce basamağın üstüne ulaşmaya çalışıyorsun ama atladığın basamaklar seni engelliyor. Her zaman söylüyorum. Bilgi altyapı gerektirir. Hiç bir zaman bilginizin çok üstünde olan şeyleri yapmaya heveslenmeyin. Hata yaparsınız. Elbette insan her şeyi yapmak ister ama kendi bilgi seviyenide göz ardı etmemen gerekiyor. Bu işin yolu eksik bilgiyi tamamlayıp sonra o işi yapmaktan geçiyor. Sora sora her şey yapılabilir ama oda zaman ister bilgininde pekişmesi gerekir.

Ete

Powered by EzPortal