Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

pcf8591 odczyt wejsc

rysiusaper
-
-
Posty:1
Rejestracja:6 lis 2005, o 13:22
Lokalizacja:Gorzow
pcf8591 odczyt wejsc

Postautor: rysiusaper » 6 lis 2005, o 13:25

mam taki programik:

Cursor Off Noblink ' Kursor
Cls ' LCD Clean

Declare Sub Odczyt_pcf8591(kanal As Byte )

Dim Pomiar As Byte , Pomiar1 As Integer
Dim Kanal As Byte
'Dim Read_ad As Const 145 , Write_ad As Const 144
Const Read_ad = 145
Const Write_ad = 144
Dim U0 As Integer , U1 As Integer , U2 As Integer , U3 As Integer

Do
Call Odczyt_pcf8591(0) 'Kanał 0
U0 = Pomiar1
Call Odczyt_pcf8591(1) 'Kanał 1
U1 = Pomiar1
Call Odczyt_pcf8591(2) 'Kanał 2
U2 = Pomiar1
Call Odczyt_pcf8591(3) 'Kanał 3
U3 = Pomiar1

Waitms 200
Cls
Upperline
Lcd "U0= " ; U0 'U 0
Locate 1 , 10
Lcd "U1= " ; U1 'U 1
Lowerline
Lcd "U2= " ; U2 'U 2
Locate 2 , 10
Lcd "U3= " ; U3 'U 3

Loop
End

Sub Odczyt_pcf8591(kanal As Byte)
Dim Kanal1 As Byte
I2cstart ' I2C start
I2cwbyte Write_ad ' Wpis adresu PCF8591
I2cwbyte Kanal1 ' Kanał
I2cstart
I2cwbyte Read_ad ' Odczyt adresu PCF8591
I2crbyte Pomiar , Ack ' Odczyt kilku bajtów
I2crbyte Pomiar , Nack ' Odczyt ostatniego bajtu
I2cstop
Pomiar1 = Pomiar
Pomiar1 = Pomiar1 * 128
Pomiar1 = Pomiar1 / 133
End Sub

I niebardzo rozumiem dlaczego jak niemam zadnego napiecia podlaczonego na wejscie przetwornika wyswietla jakies wartosci. A tak naprawde to chce zrobic bardzo prosty woltomierz z dokladnoscia do 2 miejsc po przecinku. Prosze o pomoc :)

szymel
-
-
Posty:212
Rejestracja:16 sty 2005, o 16:42
Lokalizacja:Włocławek

Postautor: szymel » 6 lis 2005, o 15:27

Sam się wpuściłeś w "kanał" :D
mam taki programik:

Kod: Zaznacz cały

... Sub Odczyt_pcf8591(kanal As Byte) Dim Kanal1 As Byte 'ta zmienna , jest Ci raczej zbędna I2cstart ' I2C start I2cwbyte Write_ad ' Wpis adresu PCF8591 I2cwbyte Kanal1 ' Kanał w który właśnie wpadłeś ;) 'informacja , o n-rze kanału do odczytu znajduje się, ' w zmiennaj "kanal" , a "kanal1" zapewne równy jest "0" ...
... A tak naprawde to chce zrobic bardzo prosty woltomierz z dokladnoscia do 2 miejsc po przecinku. Prosze o pomoc :)
Masz na myśli chyba rozdzielczość :?:

Piotrek

Fredy
-
-
Posty:141
Rejestracja:27 mar 2005, o 21:45
Lokalizacja:Małopolska

Postautor: Fredy » 30 lis 2005, o 21:54

Uzyskasz dokładność 8 bitową, czyli zakres pomiarowy / 256. Jeśli będziesz mierzył od 0 do 5 V to będziesz miał dokładność około 20mV.
Błąd tkwi tak jak wspomniał kolega Szymel w tej zmiennej kanal1.
A tak poza tym to nie zostawiaj nie podłączonego wejścia przetwornika.

astony
-
-
Posty:9
Rejestracja:15 sty 2006, o 14:15
Lokalizacja:jaworzno

Postautor: astony » 12 wrz 2006, o 11:02

Witam
Chciałbym wiedziec, czy procedura zastosowana przez ciebie działała w twoim układzie. :568:
Zmodyfikowałem ją dla odczytu jednego kanału i nic. Ani w symulacji (avr bascom 4.12),
ani na uruchomieniówce(LCD pokazuje U0=0)
:566:

Kod: Zaznacz cały

Cursor Off Noblink ' Kursor Cls ' LCD Clean Declare Sub Odczyt_pcf8591 Dim Pomiar As Byte , Pomiar1 As Integer Dim Kanal As Byte Const Read_ad = 145 Const Write_ad = 144 Dim U0 As Byte , Do Call Odczyt_pcf8591 U0 = Pomiar1 Waitms 200 Cls Upperline Lcd "U0= " ; U0 'U 0 Loop End Sub Odczyt_pcf8591 I2cstart ' I2C start I2cwbyte Write_ad ' Wpis adresu PCF8591 I2cwbyte Kanal ' Kanał I2cstart I2cwbyte Read_ad ' Odczyt adresu PCF8591 I2crbyte Pomiar , Ack ' Odczyt ostatniego bajtu I2cstop End Sub [code] Daj znać jak ci poszło :564: Powodzenia

Fredy
-
-
Posty:141
Rejestracja:27 mar 2005, o 21:45
Lokalizacja:Małopolska

Postautor: Fredy » 18 wrz 2006, o 16:48

Co to znaczy nie ma żadnego napięcia na wejściu? Zawsze jakies jest. Daj rezystor np. 1M do masy to będziesz pewien że ma ono wartość 0V.
Pamiętaj też o rezystorach podciągających szynę I2C.
No i nap. referencyjne powinno być np zwarte do masy.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości