DS1868 Digital Pot PBP Okuma Yazma Kodları

Başlatan ete, 27 Ağustos 2004, 09:58:15

ete

Arkadaşlar,

DS1868 digital pot kullanan oldumu?. Oldu ise Basic de kontrol kodlarını buraya verebilirmi?. Yoksa epeyce uğraşmam gerekecek.

Yalnızca kontrol mantığını versenizde olur gerisini ben hallederim.

Şimdiden teşekkürler

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

peko

Ete merhaba ;

http://www.turkengineers.com/metin.php?metin=47

umarım bu link işini görür.

Bende sana voltmetre için ADC çevrim formulünü nasıl hesapladığını soracaktım. Mesela 0-30 değilde 0-50 istesem ne yapmam gerekiyor ? Mantığı nedir.?

kolay gelsin
" Bazıları zeka'sını iş'i zorlaştırmak için, bazıları ise kolaylaştırmak için kullanır.. "

ete

Peko,

Verdiğin linkte Hex dosyası var ancak pek bir şey anlaşılmıyor. Uzunca incelenirse birşeyler anlaşılabilir. Ama çok vakit alacak. Sorun gerçek datasheet'ini bulamamış olmam. Bulduklarım hep application note ve çok fazla açıklama yok. Her neyse araştırıyorum. Bu arada yardımcı olan çıkarsa sevineceğim.

Senin soruna gelince; Bu gibi durumlarda yaptığım iş şöyle;
İsis te kurduğum bir devre var. 0-50 için picin ADC girişi ne (VEYA BİZİM ÖRNEKTE COMPARATÖR GİRİŞİNE) bir voltaj bölücü ayarlaman gerekiyor. Neticede bu iki adet dirençten oluşuyor. Bunu yaptıktan sonra
voltajın adc (ham) değerini her bir volt için okuyorum. 0-50 volt için sanırım iyi bir formül yakalamak için her bir volt değerine karşılık gelen ham değeri okumak ve bunu sonra ADC hesap (Excel dosyası) dosyasında formüle çeviriyorum. Bununla iligli açıklama zaten ADC hesap dosyasında var. Bunu daha önce vermiştim. Dosya Yahooda bir yerde kayıtlı linkini şimdi hatırlamıyorum. Ancak Voltmetre başlığını takip edersen bir yerde açıklanmış idi. Hatırladığım kadarı ile başka bir arkadaşa dosyayı göndermiştim oda yahooda bir yere koymuş idi. Bulamaz isen e_mail bildir sana göndereyim.

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

birumher

Birkan.Herguner

birumher

Data göndermek için 3 uç kullanacaksın. RST , clock ve data in
aşağıda basic için örnek kod var ama bu sadece deneme için yapılmış seri port protokollerini kullanmıyor onun yerine kendi oluşturuyor...
PORTB.6 Clock
PortB.5   RST
PortB.7   Data

17 bit gönderiyoruz ilk 8 i 1. Potun Degeri 2. si 2.pot un bir de select bitimiz var (Datasheeti okuyunca daha iyi anlarsın) onu gönderiyoruz. Aşağıdaki kod veri değişkeni içindeki bitleri sırasıyla PortB.7 den çıkartıyor bu sırada da clock olarak kullandığımız Port6 dan puls yolluyor.
Pulsout ve Pause komutlarıyla oynayarak hız ayarlaması yapabilirsin ben bu şekilde DS1868 i çalıştırdım ama zamanlamaları falan ayarlama işlemini yapmadım...

DataGonder:

   PortB.5 = 1
   PortB.7 = 1
   PulsOut   PortB.6,1
   Gosub   Seri
   Gosub   Seri
   PortB.7 = 1
   PulsOut   PortB.6,1
   PortB.5 = 0
               Pause 50

   return

Seri:
   PortB.7 = veri.7
      PulsOut   PortB.6,1
   PortB.7 = veri.6
      PulsOut   PortB.6,1
   PortB.7 = veri.5
      PulsOut   PortB.6,1
   PortB.7 = veri.4
      PulsOut   PortB.6,1
   PortB.7 = veri.3
      PulsOut   PortB.6,1
   PortB.7 = veri.2
      PulsOut   PortB.6,1
   PortB.7 = veri.1
      PulsOut   PortB.6,1
   PortB.7 = veri.0
      PulsOut   PortB.6,1
   Return
Birkan.Herguner

ete

@Birumher,

Bilgi için teşekkürler. Datasheeti iyice inceledim. Önce senin kod da bana ters gelen bazı hususlar var şöyleki;
- Select biti tek bit olarak gönderiyorsun. Halbuki datasheetinde bunun byte olarak gönderileceği ve registerin ilk 7 biti shift-out yapacağı belirtiliyor.
- Son Bytı gönderdikten sonra tekrar select biti gönderiyorsun. Datasheet de böyle bir şey görmedim.
- Select biti tek bit olarak gönderirsen ikinci byte ın kalan bitleri select byte'ına aitmiş gibi görülmezmi?.
Potu çalıştırdım diyorsun gerçekten çalıştımı?.

Bana göre doğru komut aşağıdaki gibi olmalı;

High RST
Shiftout Datapin,Clockpin,1,[1]              'Byte0 -select bitine ait byte bilgisi
shiftout Datapin,clockpin,1,[Pot1_Deger] ' Byte1
Shiftout Datapin,Clockpin,1,[Pot0_Deger]' Byte2
Low RST

Bu şekilde çalışacağını düşünüyorum. Elimde henüz DS 1468 olmadığı için deneyemiyorum.

Diğer bir konuda select biti, sanki select biti ni sıfır verirsen yalnızca pot0 'a değer yazarsın gibi geliyor. Acaba doğrumu?

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

birumher

evet ben kodu ters yazmışım . Bir sürü yerden copy paste yaptığım için sıralarını karıştırmışım yani önce select biti sonra pot1 sonra pot0 olacak. Ama select bitini 1 bit olarak gönderiyordum sonuçta senin yazdığın kod da çalışacaktır çünkü select bitini byte olarak göndersen de diğer 2 byte ı gönderince son 7 biti zaten dışarıda kalacaktır.
Bu arada bu yöntemle pot u çalıştırdım ve gayet güzel çalışıyor...
Birkan.Herguner

birumher

Yalnız şunu söylemeyi unutmuşum select bitini byte olarak gönderirsen cascading de sorun yaşarsın gibi geliyor. Yani her halikarda her pota 17 bit bilgi düşmeli gibi geliyor bana.
Birkan.Herguner

hkalaycioglu

ETE hocam sizde bunda zorlandıysanız biz bununla hiç uğraşmayalım

bunları yazalı aradan bayağı bir zaman geçmiş bir sonuca ulaşabildinizmi
bende 1 haftadır uğraşıyorum data sheetini okudum ama şu 17 bit datayı nasıl gönderip olayı cözebileceğimi bulamadım

elimde ds 1868 var, bayağı zaman harcattı, elinde bununla ilgili pic basic kodu olan varsa buraya koyarsa çok sevinirim teşekkürler