logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] ADS8326 + LPC1769 - duże wahania wyniku przy pomiarze napięcia 1,4764-1,4769 V

Kubbaz 13 Lip 2016 10:58 1419 4
REKLAMA
  • #1 15804575
    Kubbaz
    Poziom 26  
    Posty: 1237
    Pomógł: 9
    Ocena: 30
    Witam wszystkich Elektrodowiczów!

    Mam 16-bitowy przetwornik analogowo-cyfrowy (ADC) ADS8326 firmy Texas Instruments, który komunikuje się z mikrokontrolerem NXP LPC1769 przez SPI (SPI0). Przetwornik ADC zasilany jest z przetwornicy IRM-05-5 Mean Well z kondensatorem elektrolitycznym 1000 µF/25 V na jej wyjściu. Aplikacja przetwornika ADC z kondensatorami 1 µF/50V + 100 nF/100 V bezpośrednio zarówno na zasilaniu ADC (pin 8 to Vcc) jak i na wejściu Uin przetwornika ADC.

    Jako napięcia odniesienia dla ADC używam układu REF193 - daje on na swoim wyjściu referencyjnym 3000 mV.
    Jako napięcia testowego (wejściowego do ADC), które chcę zmierzyć używam dzielnika rezystancyjnego z dwóch rezystorów metalizowanych THT, podłączonego do napięcia wyjściowego 3000 mV z układu REF193. Z dzielnika otrzymuję napięcie 1,4764-1,4769 V (zmierzone 3-ema woltomierzami).

    Spodziewaną wartością otrzymywaną z przetwornika ADC jest:
    ADC rozdzielczość = 2^16 bitów = 65 536 próbek
    1,4764 V / 3,000 V = 0,49213, co daje:
    65 536 próbek x 0,49213 = 32 252 próbek (0x7DFC) ±1,5 LSB (wg dokumentacji producenta), co daje wartości od 32 250 do 32 254 (załóżmy w najgorszym przypadku).

    Wartości odczytane z przetwornika ADC wyrzucam na UART0, konwerter UART-USB FTDI i na terminal portu COM w komputerze.
    Otóż odczytywane wartości z przetwornika ADC mają ogromy rozrzut:


    Wyniki odczytane z terminala portu COM; dane wyjściowe z przetwornika ADCADS8326 napisał:

    00 00 7d 76 ..}v
    00 00 7c cb ..|Ë
    00 00 7e 17 ..~.
    00 00 7c 00 ..|.
    00 00 7e 4b ..~K
    00 00 7c 7b ..|{
    00 00 7e 3b ..~;
    00 00 7c b6 ..|¶
    00 00 7d b0 ..}°
    00 00 7d 0f ..}.
    00 00 7c cd ..|Í
    00 00 7d ab ..}«
    00 00 7c 07 ..|.
    00 00 7e 47 ..~G
    00 00 7c 4f ..|O
    00 00 7e 40 ..~@
    00 00 7c 50 ..|P
    00 00 7d e7 ..}ç
    00 00 7d 28 ..}(
    00 00 7d 1f ..}.
    00 00 7d 90 ..}
    00 00 7c 40 ..|@
    00 00 7e 97 ..~—
    00 00 7c 5f ..|_
    00 00 7e 20 ..~
    00 00 7c 64 ..|d
    00 00 7d c0 ..}Ŕ
    00 00 7d 00 ..}.
    00 00 7d 0f ..}.
    00 00 7d a8 ..}¨
    00 00 7c 2f ..|/
    00 00 7e 2f ..~/
    00 00 7c 53 ..|S
    00 00 7e 27 ..~'
    00 00 7c 6d ..|m
    00 00 7d f4 ..}ô
    00 00 7c c1 ..|Á
    00 00 7d 0b ..}.
    00 00 7d 5f ..}_
    00 00 7c bf ..|ż
    00 00 7e 80 ..~€
    00 00 7c 0b ..|.
    00 00 7e 23 ..~#
    00 00 7c 5f ..|_
    00 00 7e 2b ..~+
    00 00 7c 9b ..|›
    00 00 7d 40 ..}@
    00 00 7d 87 ..}‡
    00 00 7c c0 ..|Ŕ
    00 00 7e 50 ..~P
    00 00 7c 07 ..|.
    00 00 7e 28 ..~(
    00 00 7c 70 ..|p
    00 00 7e 4f ..~O
    00 00 7c ba ..|ş
    00 00 7d 80 ..}€
    00 00 7d 80 ..}€
    00 00 7d 2f ..}/
    00 00 7e 37 ..~7
    00 00 7c 6a ..|j
    00 00 7e 52 ..~R
    00 00 7c 7b ..|{
    00 00 7e 2a ..~*
    00 00 7c b0 ..|°
    00 00 7d c5 ..}Ĺ
    00 00 7d 43 ..}C
    00 00 7c f7 ..|÷
    00 00 7d bd ..}˝
    00 00 7c 20 ..|
    00 00 7e 3b ..~;
    00 00 7c 4f ..|O
    00 00 7e 2f ..~/
    00 00 7c 5b ..|[
    00 00 7d ed ..}í
    00 00 7d 35 ..}5
    00 00 7d 29 ..})
    00 00 7d b3 ..}ł
    00 00 7b f0 ..{đ
    00 00 7e 40 ..~@
    00 00 7c 4d ..|M
    00 00 7e 0b ..~.
    00 00 7c 4b ..|K
    00 00 7d d3 ..}Ó
    00 00 7d 03 ..}.
    00 00 7d 25 ..}%
    00 00 7d bd ..}˝
    00 00 7c 0f ..|.
    00 00 7e 80 ..~€
    00 00 7c 49 ..|I
    00 00 7e 35 ..~5
    00 00 7c 5c ..|\
    00 00 7d d3 ..}Ó
    00 00 7c f2 ..|ň
    00 00 7d 00 ..}.


    Poniżej zamieszczam kod źródłowy (funkcję obsługującą) przetwornik:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    oraz wywołanie tej funkcji w pętli głównej:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Konfiguracja SPI w mikrokontrolerze:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Poniżej również zamieszczam link do dokumentacji technicznej przetwornika ADS8326:
    ADS8326 Texas Instruments

    Próbowałem także z innymi konfiguracjami/trybami SPI (mode0, 1, 2, 3, bity CPOL i CPHA), ale to nie przynosi oczekiwanego rezultatu.

    Co może być przyczyną tak niestabilnej pracy przetwornika?
  • REKLAMA
  • #2 15805358
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • REKLAMA
  • #4 15942403
    Piotr Piechota
    Poziom 22  
    Posty: 519
    Pomógł: 55
    Ocena: 85
    A zwróciłeś uwagę na prawidłowe prowadzenie masy analogowej i cyfrowej. Pokaż jak to zrobiłeś.
REKLAMA