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

Atmega + przetwornik a/c (SPI)

schabik89 12 Paź 2011 20:03 3406 13
REKLAMA
  • #1 10020536
    schabik89
    Poziom 10  
    Witam,

    mam pytanie odnośnie komunikacji ATmegi z 12 bitowym przetwornikiem MCP3201 po SPI.
    Nie mam pojęcia jaki zastosować stopień podziału sygnału zegarowego przy konfiguracji sprzętowej SPI w Bascomie. W nocie katalogowej pisze, że urządzenie jest zdolne dojść do 100ksps przy szybkości SCK równej 1,6 MHZ, jest napisane także, że czas konwersji to 12 cykli zegara. Nie za bardzo wiem jak to interpretować.

    Dostępne dzielniki to 4, 16, 64 i 128. Czy to oznacza, że jeżeli podzielę 16 MHz'owy kwarc Atmegi przez 4 i otrzymam 4 MHz na SCK to będzie to za dużo i z transmisji nici, czy wpłynie to jednak korzystnie, albo czy muszę dobrać taki kwarc i tak go podzielić żeby sie znaleśc w pobliżu tych 1,6 MHz?

    Czy jestem w stanie odczytać Atmegą 100k próbek na sekundę czy muszę tą liczbę podzielić przez 12 ze względu na czas konwersji?

    Zależy mi na prędkości.

    Proszę o pomoc.
  • REKLAMA
  • #2 10020611
    excray
    Poziom 41  
    Ten przetwornik jst bardzo słaby. Gorszy nawet niż wbudowany w atmegę A/C.
    schabik89 napisał:
    Czy jestem w stanie odczytać Atmegą 100k próbek na sekundę czy muszę tą liczbę podzielić przez 12 ze względu na czas konwersji?

    Możesz. Konwersja jest dokonywana jednocześnie w momencie szeregowego przesyłania danych. Zobacz rysunek 5.1 w tym:
    http://dubna.tk/faq/MCP3201.pdf
    pdfie.
  • REKLAMA
  • #3 10021083
    schabik89
    Poziom 10  
    Możecie mi w takim razie polecić coś dostępnego, w miarę taniego i 12 bitowego na SPI(wystarczy jeden kanał)?

    a możecie mi powiedzieć ile ksps mogę odczytać z wewnętrznego ADC ATmegi taktując ją kwarcem 16MHz?
  • REKLAMA
  • #4 10021357
    excray
    Poziom 41  
    Wszystko masz napisane w datasheet atmegi.
  • #5 10022150
    schabik89
    Poziom 10  
    Zastanawia mnie też czemu napisałeś, że ten przetwornik jest słabszy nawet od wewnętrznego w ATmegach. Jest 12 bitowy i ma 100ksps, a w datasheet przykładowo ATmegi16 jest napisane, że to zaledwie 15ksps, nawet te szybkie ATmegi88 nie przekraczają 80ksps zgodnie z notą



    Proszę jeszcze na odpowiedz na pierwsze pytanie:

    schabik89 napisał:

    Dostępne dzielniki to 4, 16, 64 i 128. Czy to oznacza, że jeżeli podzielę 16 MHz'owy kwarc Atmegi przez 4 i otrzymam 4 MHz na SCK to będzie to za dużo i z transmisji nici, czy wpłynie to jednak korzystnie, albo czy muszę dobrać taki kwarc i tak go podzielić żeby sie znaleśc w pobliżu tych 1,6 MHz?
  • #6 10022358
    excray
    Poziom 41  
    schabik89 napisał:
    Zastanawia mnie też czemu napisałeś, że ten przetwornik jest słabszy nawet od wewnętrznego w ATmegach. Jest 12 bitowy i ma 100ksps, a w datasheet przykładowo ATmegi16 jest napisane, że to zaledwie 15ksps, nawet te szybkie ATmegi88 nie przekraczają 80ksps zgodnie z notą

    Bo ma duży rozrzut wyników dla mierzonego stałego napięcia. Mimo 12 bitów rozdzielczości 6 bitów z miejsca możesz do kosza wywalić bo to śmiecie. Wiem to z doświadczenia z tym przetwornikiem.
  • #7 10022611
    zbv
    Poziom 20  
    Ja używałem MCP3304 i nie zauważyłem nic negatywnego, działał bardzo dobrze.
  • #8 10025799
    schabik89
    Poziom 10  
    Moglibyście mi polecić dobrą literaturę podchodzącą do przetworników od strony praktycznej. Chodzi mi o prowadzenie ścieżek, napięcia referencyjne, filtrowanie szumów, oversampling, itp.
    Po prostu coś co pomoże mi zaprojektować układ ze scalakiem a/c.
  • REKLAMA
  • Pomocny post
    #9 10025804
    dondu
    Moderator na urlopie...
    schabik89 napisał:
    Moglibyście mi polecić dobrą literaturę podchodzącą do przetworników od strony praktycznej. Chodzi mi o prowadzenie ścieżek, napięcia referencyjne, filtrowanie szumów, oversampling, itp.


    Zaglądnij tutaj: ADC - Dokładność vs podłączanie
    Wprawdzie nie ma tam przypadku zewnętrznego ADC, ale zasady są identyczne.
    Oprócz oversamplingu znajdziesz tam wszystko, o co pytasz.
  • #10 10026558
    schabik89
    Poziom 10  
    dziękuje naprawdę dobra stronka
  • #11 10035523
    schabik89
    Poziom 10  
    schabik89 napisał:
    Witam,

    Dostępne dzielniki to 4, 16, 64 i 128. Czy to oznacza, że jeżeli podzielę 16 MHz'owy kwarc Atmegi przez 4 i otrzymam 4 MHz na SCK to będzie to za dużo i z transmisji nici, czy wpłynie to jednak korzystnie, albo czy muszę dobrać taki kwarc i tak go podzielić żeby sie znaleśc w pobliżu tych 1,6 MHz?


    Sam sobie odpowiem na to pytanie, bo już poznałem odpowiedz;]

    Otóż wchodzę na notę katalogowa odpowiedniego przetwornika z SPI. Znajduje dwie informacje:
    -max ksps
    -ile cyklów trwa konwersja

    i teraz jeżeli maksymalna szybkość to 100ksps a konwersja trwa 16 cykli to znaczy, że nie można taktować przetwornika szybciej niż 16*100 000 czyli 1,6 MHZ czyli muszę dobrać tak odpowiedni preskaler i kwarc aby sygnał wysyłany na linie SCK nie przekraczał 1,6MHz
  • #13 10037820
    schabik89
    Poziom 10  
    ATmega32
  • #14 10319227
    schabik89
    Poziom 10  
    Wiecie może jak w bascomie poradzić sobie z wysłaniem zmiennej 10 bitowej po spi jeżeli ma ona być poprzedzona 4 bitami ustawiającymi. Wygląda to mniej więcej tak, że w pierwszym bajcie mają sie znaleść 4 bity ustawiające i 4 starsze bity zmiennej 10 bitowej. Następny bajt to 6 mniej znaczących bitów zmiennej 10 bitowej oraz 2 nieistotne.
    P.S
    liczba 10 bitowa jest zadeklarowana jako integer
REKLAMA