Kontrol DS1803

Başlatan beauharlan, 15 Ağustos 2024, 07:22:13

beauharlan

Merhaba, DS1803'ü kullanan, talimat verebilecek veya referans örneğini benimle paylaşabilecek olan var mı? Yeniyim ve hala ne yapacağımı merak ediyorum. Teşekkür etmek.

ete

Bu bir digital potansiyometre. Aynı kılıf içinde iki adet potansiyometre mevcut.
Komut seti kullanılarak yalnızca birinden okuma ve birine yazma yapabileceğin gibi her ikisinede aynı anda yazma ve okuma yapabiliyorsun.
Kullanımı çok zor olmasa gerek. Ne yazıkki simulasyon programında model dosyası yok. Olsa deneyerek bilgi verirdim. Bu durrumda yalnızca data sheet'ine bakıp ne olması gerektiğine karar vereceğim. Elinde potansiyometre var ise dener sonucu bildirirsin umarım.
Bilgileri Basic dili üzerinden vereceğim. Data sheet de direk olarak bahsedilmemiş ama haberleşme protokolü I2C ye çok benziyor yada aynısı diyebiliriz. Bu nedenle bizde I2C komutlarını kullanacağız.
------------------------------------------------------------------------------------------------
This is a digital potentiometer. There are two potentiometers in the same case.
Using the command set, you can only read from one and write to one, or you can write and read to both at the same time.
It should not be very difficult to use. Unfortunately there is no model file in the simulation programme. In this case, I will only look at the data sheet and decide what it should be. If you have a potentiometer, I hope you will try it and report the result.
I will givee you the information based on Basic language. It is not indicated directly in Data Sheet but the communication protocol looks like I2C protocol. Even it is same with I2C. For that reason we sill use I2C commands for comunication.
------------------------------------------------------------------------------------------------
Device address :%01010000 (for write)  %01010001(for read)
Write to POT-0 :%10101001  (yalnızca Pot-0 a yazma komutu)
Write to POT-1 :%10101010  (Yalnızca Pot-1 e yazma komutu)
Write to both  :%10101111  (her iki pot'a aynı anda yazma komutu)

Pot Değerlerini Okuma: Reading pot's value
SDA ve CLK hatları 10K hatta daha düşük değerli bir direnç ile pullup yapılmalıdır.
(SDA and CLK lines should be pullup'ed 10K or beter lower resistance)

I2CREAD SDA, CLK, %01010001,[POT0,POT1]

POT-0' a değer yazma : Write to the POT-0
I2CWRITE SDA, SCL, %01010000, %10101001, [POT0]
POT0 isimli değişkende yazılacak değer yer almalıdır
Variable POT0 should contain the value which will be written to the pot-0

POT-1'e değer yazma Write to the POT-1
I2CWRITE SDA, SCL, %01010000, %10101010, [POT1]

Her iki pot'a değer yazma: Write to both pot

I2CWRITE SDA, SCL, %01010000, %10101111 , [POT0,POT1]

Ete

onurinci

my archive Proton Basic sample..

' test DS1803 I2C digital pots 21-02-03
' uses BUSOUT command to send data to chip
' modified 4-11-03 to test how fast it would run with a LOOKUP or CDATA table

Device 16F877A : Xtal 4
Config FOSC_XT, WDTE_OFF, PWRTE_ON, BOREN_OFF, LVP_OFF, CPD_OFF, WRT_OFF, DEBUG_OFF, CP_OFF

;All_Digital = True
' -------------------------------------------------------- declares etc here
Declare SCL_Pin PORTD.0
Declare SDA_Pin PORTD.1
' ------------------------------------------------------ declare variables
Dim Pots	As	 Word
Dim Pot0	As	 Pots.HighByte
Dim Pot1	As	 Pots.LowByte
Dim PotVal	As	 Word
Dim SELECT_ As Byte
Dim X As Byte
Dim Y As Byte
Dim Control As %01010100	  			' device type = pot
SELECT_ = %10101001						' internal address selects pot
' -------------------------------------------------------------- Setup PIC
TRISB= 0
PORTD= 0 : TRISD= 0						' all output
' ------------------------------------------------------------- start of prog
DelayMS 100
' ------------------------------------------------------------- main loop
Start:
	For X = 0 To 20
		Pot0 = CRead ADDRESS + X		' write POT 0 only
		BusOut Control,SELECT_,[Pot0]			'
		DelayUS 100
	Next
	GoTo Start
Pot_Out:
'	Busout Control,Select_,[Pots]		' write both pots with same command
'	Busout Control,Select_[Pot0]			' or individually
'	Select_ = Select_ + 1
'	Busout Control,Select_,[Pot1]
'	Select_ = Select_ - 1
'	Return
End
' 176,184,192,200,208,216,224,232,240,248,255 ' 256
Stop

ADDRESS:  CData 0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168

Powered by EzPortal