Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[c] Problem z wyświetleniem napięcia z przetwornika PCF8591

07 May 2010 01:12 2407 3
  • #1
    User removed account
    User removed account  
  • #2
    soft.sc
    Level 16  
    Dla napięcia referencyjnego 2.56V, maksymalne napięcie pomiarowe to... 2,55V. Każde inne podłączamy przez odpowiednio dobrany dzielnik. Czyli osiągnięte wyniki są prawie dobre.
  • #3
    User removed account
    User removed account  
  • #4
    Kolin16
    Level 2  
    Witam

    Zgłaszam się do Was z problemem dotyczącym przetwornika pcf8591.
    Jestem początkującym programistom w języku Baskom. Uczę się z książki prof. Góreckiego. Do wykonywania ćwiczeń korzystam z płytki ZL11AVR z procesorem attiny2313. Jedno z ćwiczeń dotyczy programowania woltomierza przy użyciu kostki pcf8591. Niestety układ działa niewłaściwie (program z książki). Przetwornik D/A działa poprawnie natomiast zastrzeżenia mam do precyzji przetwornika A/D. By przetestować kostkę pcf napisałem program
    w którym stałe stabilne napięcie jest odczytywane z wejście I0 (A/D), a następnie wysyłane do wyjścia OUT (D/A). Przy ustawieniu napięcia referencyjnego 2,56V rozdzielczość przetwornika powinna wynosić 0,01V. Po zadaniu napięcia np 0,3V z portu OUT odczytuję zmieniające się losowo napięcia z zakresu 0,3V+-0,1 (sprawdzone multimetem i miliwoltomierzem analogowym). Podwyższając napięcie np do 1V układ zachowuje się tak samo odczyt: 1V +-0,1. Wykluczyłem uszkodzenie przetwornika, ponieważ sprawdziłem dwie kostki pcf i wyniki były takie same. Sprawdziłem także różne proponowane na forum warianty komunikacji I2C jednak bez pozytywnych rezultatów.
    
    $regfile = "attiny2313.dat" 
    Config Sda = Portd.6 
    Config Scl = Portd.5 
    Dim Odczyt As Byte 
    Config Timer0 = Timer , Prescale = 64 
    Config Timer1 = Timer , Prescale = 64 
    Enable Interrupts 
    Enable Timer0 
    Enable Timer1 
    On Timer0 Nadaj 
    On Timer1 Odczytaj 
    
    Do : Loop : End 
    
    Odczytaj: 
    I2cinit 
    I2cstart 
    I2cwbyte 145 
    I2crbyte Odczyt , Nack 
    I2cstop 
    Return 
    
    Nadaj: 
    I2cinit 
    I2cstart 
    I2cwbyte 144 
    I2cwbyte 64 
    I2cwbyte Odczyt 
    I2cstop 
    Return
    


    Ostatnia rzecz jaka przychodzi mi do głowy tj. wpływ na precyzję działania przetwornika mają momenty wykonywania podprogramów wywoływanych przez timer'y, ponieważ program uproszczony do postaci
    
    $regfile = "attiny2313.dat" 
    Config Sda = Portd.6 
    Config Scl = Portd.5 
    Dim Odczyt As Byte 
    
    Do 
    I2cinit 
    I2cstart 
    I2cwbyte 145 
    I2crbyte Odczyt , Nack 
    I2cstop 
    I2cstart 
    I2cwbyte 144 
    I2cwbyte 64 
    I2cwbyte Odczyt 
    I2cstop 
    Loop 
    End
    

    daje wartości napięcia pod względem stabilności zadowalające w granicach rozdzielczości przetwornika, natomiast występuje błąd offsetu ok. 50mV (tyle też wynosi max błąd offsetu bodany w instrukcji). Jak wyjaśnić takie zachowanie układu porównując różnice w kodach? Proszę o pomoc doświadczonych forumowiczów.


    Pozdrawiam

    [c] Problem z wyświetleniem napięcia z przetwornika PCF8591