dijital potansiyometreler max5414-ds1804

Başlatan chailuck, 06 Ağustos 2010, 19:49:28

chailuck

selam herkese,
arkadaşlar ben bi power suplly yapıcam edasında dijital potansiyometre araştırdım.
yazılımlarına uğraşayım dedim tabi datasheetlerini inceledim.
max 5414 için bir program yazdım

INCLUDE "modedefs.bas"
DEFINE SHIFT_PAUSEUS 1
OPTION_REG.7=0 ;PULLUP ACIK
TRISB.0=1
TRISC=0
DIN VAR PORTC.0
CLK VAR PORTC.1
CS  VAR PORTC.2
BUTON VAR PORTB.0
;****************************************************************
A VAR WORD : A=245
;****************************************************************
;|0|0|0|0|0|0|0|X||X|X|X|X|X|X|X|X|
;****************************************************************
MAIN:
A=A+1
;IF A=256 THEN A=0
GOSUB YAZMA
DIN=0
CLK=0
CS=1
PAUSE 1000
GOTO MAIN 
;****************************************************************
YAZMA:
CS=0
SHIFTOUT DIN,CLK,1,[A]
CS=1
RETURN
;****************************************************************
END

lm317 devresın cıkısına da bır voltmetre bagladım tabı tamamen sımulasyon gercekte belkıde calısır 0v dan baslıyor 6.25 V kadar gelıyor sonra yukselmıyor.
şimdi 1868 in datasheetini inceliyorum da yahu adam bi örnek yazılım koyar ıcıne dıye cok kızıyorum :P

yapan varmı bu ikisini kullanıp çalıştıran mantığı nedir paylasabılecegınız bır program parcası varmıdır ?
tesekkurler :)
İmkanın sınırlarını görmek için imkansızı denemek lazım. (Fatih Sultan Mehmet)  Ayıplarını gördüğünüz komşuyu kınamayınız. Sırlarını açıklamayınız.Çünkü gördüğünüz bu sır size emanettir, emanete hıyanet kötü ve çirkin bir filldir. (Hacı Bayramı Veli )  meyve veren ağacın taşlanması çok hoş ;)

ete

Max5414 9 255 konumlu bir pot olmasına rağmen içinde 2 adet ayrı pot ihtiva ettiği için bir adet adres biti kullanılıyormuş.
8 bitlik pot değerinin yanısıra hangi pota bilgi vereceğini de 9 bit ile seçmen gerekiyor. Toparlarsak;
diyelimki A potuna 127 (pot değerininin tam yarısı) vereceğiz.
POTDEGER=127 diyorsun buna  Pot_A yı seçersen 9 . bit sıfır (Low) olmalı. Pot_B yi seçersen 9. bit 1  (High) olmalı.
Bilginin yollanma şekli ise,  MSB first yani en yüksek duyarlıklı bit ilk olarak yollanacak anlamınadır.

Gelelim Basic de bu anlatılanların komut olarak karşılığına;

Önce CS ucu LOW yapılıyor Sonra bilgi shift registere yollanıyor ve CS ucu Low dan High'a geçirilince yollanan bilgi pota yerleşmiş oluyor.
POTDEGER=127 'POTDEGER WORD tipinde bir değişken olmalı.
CS=0
SHIFTOUT  PortB.0 , PortB.1,1, [POTDEGER\9] 
CS=1

Aynı kodu bu seferde Pot_B ye yollayalım.
POTDEGER=127
POTDEGER.8=1
CS=0
SHIFTOUT PORTB.0, PortB.1, 1,[POTDEGER\9]
CS=1


Hepsi bu kadar,

DS1868 dijital pot ise benzer şekilde çalışmaktadır. Onu daha önce kullanmıştım.
Örnek değer yazma kodu aşağıdadır.
POTYAZ:      HIGH RST:PAUSE 1
             HIGH BILGI
             PULSOUT CLK,1
             SHIFTOUT BILGI,CLK,1,[P_BIR]
             SHIFTOUT BILGI,CLK,1,[P_SIF]    'Dpot1868-1
             LOW RST:PAUSE 1

Kolay Gelsin

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

chailuck

POTYAZ:     
HIGH RST
PAUSE 1
HIGH BILGI
PULSOUT CLK,1
SHIFTOUT BILGI,CLK,1,[P_BIR]
SHIFTOUT BILGI,CLK,1,[P_SIF]    'Dpot1868-1
LOW RST
PAUSE 1

hocam maxı cok ıyı anladım cunku kac gundur benzer bır kod yapısıyla ugrasmısım ancak ds yi tam olarak anlamadım
pbir p sıf da word tipinde olacak degıl mı ?
shift register io bit sayısı 17 bu bitlerden biri stack select biti geri kalan 16 bit potların durum bitleri.
stack select bitine dair olan bir açıklama var datasheette (s.3)
derki:
eğer stack select bitinin değeri 1 ise, multiplexed çıkışı yani sout pot1in wiper ucu olacak, bit değeri 0 sa pot0 ın wiper ucu olacak.
stack biti ne olursa olsun içerideki iki direnci seri düşünebiliriz demek olmuyor mu bu ?
ben tek tek kullanmak istersem stack bitine ne yazmam gerek doğrusu anlamadım ?
verdiğiniz örnek porgramda bu biti nasıl seçtiniz?

İmkanın sınırlarını görmek için imkansızı denemek lazım. (Fatih Sultan Mehmet)  Ayıplarını gördüğünüz komşuyu kınamayınız. Sırlarını açıklamayınız.Çünkü gördüğünüz bu sır size emanettir, emanete hıyanet kötü ve çirkin bir filldir. (Hacı Bayramı Veli )  meyve veren ağacın taşlanması çok hoş ;)

rercan

pt2258 6 kanal ses volume control chip  i2c ile haberleşiyor. işinize yarayabilir. ;)

chailuck

Alıntı yapılan: whyliving - 08 Ağustos 2010, 12:17:34
pt2258 6 kanal ses volume control chip  i2c ile haberleşiyor. işinize yarayabilir. ;)


voltaj kontrolü yapıyorsa kendi kendine benim işime yaramaz ama yok mekanik potlar gıbı davranıyorsa olur o zaman, hangisi ?
şimdi anlasılmazsa eger nasıl yanı voltaj kontrolü diye,
acıklayayaım ad5220 denedım a pini vccb pını gnd deyken w pinine voltmetre baglarsan gayet 0-5v arası voltaj ayarı yapabılıyorsun. ancak a ıle w pınını  bırbırıne baglayıp lm 317 de kullanınca voltaj ayarı yapamıyorsun bunu anlatmak ıstedım yanı mekanık pot gıbı davranır mı bu pt??
İmkanın sınırlarını görmek için imkansızı denemek lazım. (Fatih Sultan Mehmet)  Ayıplarını gördüğünüz komşuyu kınamayınız. Sırlarını açıklamayınız.Çünkü gördüğünüz bu sır size emanettir, emanete hıyanet kötü ve çirkin bir filldir. (Hacı Bayramı Veli )  meyve veren ağacın taşlanması çok hoş ;)

ınsert

Ete hocam bende 5 potlu bir devre var.Ben bu devreyi Dijital potansiyometre entegreleri ile sürmek istiyorum.Fakat bir türlü ds1868 veya max5414 entgresinin programını yazamadım.Bize örnek olması açısından ufak bir programı baştan gösterebilirmisiniz.Yukarıda çok güzel göstermişsiniz fakat ben yine anlamadım. :)Yardımlarınız için çok teşekkürler.İyi çalışmalar.

ete

Pot ile haberleşme örneği verdim. Açıklamasıda var. Daha neyi anlamadın. Anlaman için ne yapmalıyım acaba?.
Her halde lazım olan programı yazmamı bekliyorsun o zaman anlayacaksın belki.

Bu kadar hazırcı olmayın. Biraz araştırın. Benim yaptığım kafanızdaki bilgiyi tetiklemek olmalı. Bunuda yaptım zaten.
Gerisini halletmen gerek. Çalış  biraz.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

ınsert

Ete hocam bir hata yaptıysam kusura bakmayın.Bu işlerden altyapım olmadığı için anlamadım.Bende kendi çapımda birşeylerle uğraşıp bilmediklerimi anlamaya çalışıyorum.Hata yaptıysam affola.Kusuruma bakmayın.

Dediğiniz gibi devreyi isiste kurdum.Programıda örnekte vermiş olduğunuz gibi yazdım.İsiste gayet güzel çalıştı.Fakat devreyi gerçekte kurunca ds1868-10 çalışmadı.Picin çalıştığını kontrol etmek için bir led bağlamıştım.Pic düzgün çalışıyor.Ds1868 in 1-7. ayaklarını birbirine bağlayıp eksiye verdim.14. ayağına ise +5v. verdim.Ds1868 in pice olan 3 bağlantısını yaptım.Ds1668 in 9 ve 13. ayaklarını boşta bıraktım..Programda pot değerini yarısını yani 127 olarak verdim.Fakat çıkışları ölçtüğümde değeri alamıyorum.İsiste gayet düzgün çalışıyor.Fakat gerçekte çalışmıyor.Programın Pot yazma kısmı vermiş olduğunuz örneğin aynısı.Hatamı bir türlü bulamadım.Nerede yanlış yapıyor olabilirim.
Yardımlarınız için teşekkürler. 

ete

Yaptıklarını simulasyon dosyasıda dahil olmak üzere bir yere yükle bakayım yada mail at.
İsis de çalışan bir şey gerçekte de çalışması gerekir. Mutlaka bir hata yapıyorsundur.
Genelde isis in bazı ön kabulleri vardır. Örneğin kristal bağlamasan çalışır. MCLR bacağına bir şey bağlamasan çalışır buna benzer kabulleri kontrol etmen gerek. Her şeyi usulüne uygun yapıyrosan ve devre yine çalışmıyor ise o zaman kullandığın malzemelerde kusur aramak gerekir.

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

ınsert

Ete hocam erol.erdal@gmail.com adresine mail attım.Yardımlarınız için çok teşekkür ederim.İyi akşamlar.
   

ete

İki kişi birden DS1868 ile ilgilenince yeniden data sheet'e bakmak zorunda kaldım.
Normal Pot olarak kullanım şeklinde her bir pot için 8'er bitlik pot değeri ve birde stack seçme biti yollanıyor bu alete.
Stack Seçme biti yalnızca alet içindeki iki pot seri bağlandığı zaman orta uçlarının hangisinin SOUT ucundan çıkış vereceğine karar verdiriyor. Bunun dıında normal pot kullanımında her iki pot'a da bilgi yazma zorunluluğu var.
Stack biti ile birlikte toplam 17 bit bilgi yazılması gerekiyor.
Yazma işi stack biti ile başlanıyor ve MSB first olarak yazılıyor.
Ben ilk projemde ;
HIGH DATA
PULSOUT CLK,1
şeklinde bir komut vererek stack bitini önce yollamışım.
Ardından 2 ayrı shiftout komutu ile 8 er bitlik pot verilerini yollamışım. Bu iş böyle yapılabileceği gibi aşağıdaki şekillerde de yapılabilir.
ALternatif-1:
Stack biti için 8 bitlik bir değişken A olsun
Pot-1 verisi için 8 bitlik 2. değişken B olsun
ve Pot-0 verisi için 8 bitlik 3. değişken kullanalım.
Yazma işlemi şöyle olmalı
HIGH RESET
SHIFTOUT BILGI,CLK,1,[A\1,B,C]
LOW REST
şeklinde 3 satırla halledilebilir.  A\1 komutu 8 bitlik A değişkeninden yalnızca 1 bit yollanmasını sağlar.
Şayet veri değişkenleri 16 bitlik olursa yalnızca 8 bitlik parçanın yollanmasını sağlamanız gerekir.
SHIFTOUT BILGI,CLK,1,[A\1,B\8,C\8]  şeklinde yazılabilir.
Burada 3 ayrı shift komut kullanılabileceği gibi tek komut içinde 3 adet bilgi de birlikte yollanabilir.

Hepsi bu kadar.
Ete

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

ınsert

Ete hocam yardımlarınız için çok teşekkürler.Allah sizden razı olsun.

chailuck

sorununu cözdünmü insert ?
oldumu yani ?
İmkanın sınırlarını görmek için imkansızı denemek lazım. (Fatih Sultan Mehmet)  Ayıplarını gördüğünüz komşuyu kınamayınız. Sırlarını açıklamayınız.Çünkü gördüğünüz bu sır size emanettir, emanete hıyanet kötü ve çirkin bir filldir. (Hacı Bayramı Veli )  meyve veren ağacın taşlanması çok hoş ;)

ınsert

Hayır arkadaşım tüm denemelerime rağmen bir türlü çalıştıramadım.Sen çalıştırabildin mi?

chailuck

Alıntı yapılan: ınsert - 12 Ağustos 2010, 18:35:26
Hayır arkadaşım tüm denemelerime rağmen bir türlü çalıştıramadım.Sen çalıştırabildin mi?

valla ne yalan soyleyım hala datasheetdekı su 17 bıt varya oraya takıldım
ıkıncısı
bu potların mekanık potlar gıbı davranmalarını beklıyoruz acayıp bır yanılgı ıcındeyız belkı cunku hanı potları baglarken ıkı ucunu bırlestırırz uc tane pınden sonuc olarak ıkı pın elde ederız babalar gıbı calısır hanı. bunlarda olmuyor ancak bunlarda olan olay su a ve b uclarını beslemeye baglarsan wiper pininden de olcum yaparsan gonderdıgın degere gore voltajı degıstırıyor.
vel hasılı kelam benim kullanım yerim olan lm 317 nin ayar kısmında kullanmam şimdilik uygun değil. ancak yeni bir tasarım üzerindeyim.
denemelerim sonunda başarılı olursam anlatırım.
ama yok yani çalışmıyor :)
İmkanın sınırlarını görmek için imkansızı denemek lazım. (Fatih Sultan Mehmet)  Ayıplarını gördüğünüz komşuyu kınamayınız. Sırlarını açıklamayınız.Çünkü gördüğünüz bu sır size emanettir, emanete hıyanet kötü ve çirkin bir filldir. (Hacı Bayramı Veli )  meyve veren ağacın taşlanması çok hoş ;)