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

Przetwornik A/C w ATMegach, napięcie odniesienia, kalibracja

Xaveri 27 Gru 2007 23:15 2415 10
  • #1 4630222
    Xaveri
    Poziom 17  
    Posty: 460
    Pomógł: 13
    Ocena: 77
    Czy mógłby ktoś mi przybliżyć kwestię zastosowania przetworników A/C zawartych w uP ATMega? Chodzi mi o:
    1) Jak powinna wyglądać procedura kalibracji? Wiadomo, że wbudowane w procek wewnętrzne napięcie odniesienia różni się w zależności od egzemplarza uP...
    2) Czy ma sens zastosowanie zewnętrznego napięcia odniesienia w przypadku, gdy chcę mierzyć temperaturę przy pomocy LM35 z rozdzielczością 0,1°C w jak najszerszym zakresie?

    Na chwilę obecną te dwa pytania...

    Pozdrawiam!
  • #2 4630428
    k4be
    Poziom 31  
    Posty: 2129
    Pomógł: 102
    Ocena: 333
    Napięcie najprościej zmierzyć i na jego podstawie wyliczyć funkcję obliczającą temp. Przy korzystaniu z wewnętrznego źródła odniesienia uzyskasz 0.25ºC na najmniej znaczącym bicie (dla napięcia równego 2.56V; im mniej tym lepiej), ale można symulować większą dokładność odpowiednio napisanym algorytmem. LM35 można 'podnieść do góry' przy użyciu LM385-1.2, które mają bardzo powtarzalne parametry.
    Pamiętaj, że błąd LM35 też wynosi 0.25ºC...
  • #3 4630785
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Witaj
    Jeśli interesuje Cię tylko rozdzielczość to nie ważne czy Vref bedzie 2,50V czy 2,56V. Jeśli chodzi o dokładność to LM35 nie jest najlepszym pomysłem, ale za to w miarę tanim. Jeśli Twój układ będzie produkowany w dużych albo chociaż średnich seriach to użycie zewnętrznego Vref ma sens. Jeśli w małych ilościach to raczej nie. Napięcie w Atmelach jest bardzo powtarzalne, z tego co zauważyłem przewaznie wynosi ok 2,50-2,52V i chyba nie znalazłem egzemplarza mocno odbiegającego od tej wartości.
    Pozdrawiam
  • #4 4630876
    kamyczek
    Poziom 38  
    Posty: 3994
    Pomógł: 394
    Ocena: 573
    Wygodnie jest takie dopasowanie Vref aby było ono nieznacznie większe od maksymalnego wskazania i tu 1,2V powinno sie najlepiej sprzwdzić bo lm35 ma maks 1,2V przy 120 st. da ci to największą dokłasność pomiaru 1.2/256 dla 0,01V/st łatwo policzyć raster a przetwornik ma 10 bitową rozdzielczość w praktyce 9 więc to można jeszcze dokładniej 1,2/512 lub 1,2/1024 ...
  • #5 4631099
    Xaveri
    Poziom 17  
    Posty: 460
    Pomógł: 13
    Ocena: 77
    Efektywnie 9 bit. 2^9 = 512 więc chcąc mierzyć z rozdzielczością 0,1°C mam zakres jedynie 51,2°...
    Żeby pokryć zakres 160° (od około -30 do 130°) co 0,1 potrzebuję przetwornika który ma efektywnie 11 bitów... więc ten wbudowany niestety nie da rady. Gdybym zszedł z rozdzielczością do 0.5 to może... ale ja właśnie chcę dokładniej... Rozdzielczość do 0,2° jeszcze by mi odpowiadała, ale to wymaga przetwornika efektywnie 10 bitowego. Jakieś pomysły?

    Jakie znacie jeszcze sensowne sensory ;) temperatury (z dobrą liniowością w całym zakresie) ?
  • #6 4631257
    Dr_DEAD
    Poziom 28  
    Posty: 829
    Pomógł: 126
    Ocena: 3
    Xaveri napisał:
    Efektywnie 9 bit. 2^9 = 512 więc chcąc mierzyć z rozdzielczością 0,1°C mam zakres jedynie 51,2°...
    Żeby pokryć zakres 160° (od około -30 do 130°) co 0,1 potrzebuję przetwornika który ma efektywnie 11 bitów... więc ten wbudowany niestety nie da rady.

    Spokojnie da redę poprzez zastosowanie oversamplingu. Może brzmi to groźnie ale jest bardzo proste w realizacji (właśnie dzięki temu jest proste że ADC szumi na ostatnim bicie, albo nawet dwóch, sam z siebie i nie trzeba wprowadzać dodatkowego sztucznego szumu). Chcąc uzyskać dodatkowe 3 bity traktujesz wyniki ADC jako 11-sto bitowe i liczysz średnią z 8-miu ostatnich wyników, najnowszy wynik wchodzi do średniej, najstarszy wynik wypada - taka średnia krocząca.

    Dodano po 3 [minuty]:

    Na stronie Atmela znajdziesz notę tego się tyczącą, są tam nawet przykładowe programy.

    Dodano po 4 [minuty]:

    PS. Na to pytanie:
    Xaveri napisał:

    Jakie znacie jeszcze sensowne sensory ;) temperatury (z dobrą liniowością w całym zakresie) ?

    Posypią sie pewno odpowiedzi z DS18B20.
  • #7 4631475
    Xaveri
    Poziom 17  
    Posty: 460
    Pomógł: 13
    Ocena: 77
    DS18B20 heh teoretycznie 0.1°C bo ma 12 bitowy przetwornik. Tylko szumy ma straszne ;).
  • #8 4631587
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    i każdy układ jaki znajdziesz będzie miał podobne
    zagłeb się w oversampling
    Ja to robię tak:
    1 puszczam ADC
    2 czyszcze R0:R1 i dodaje wynik do tego rejestru, mnoze przez dwa (lub wiecej) by zwiekszyć rozdzielczośc obliczeń
    3 puszczam ADC
    4 mnożę przez dwa (lub wiecej) i dodaje wynik do R0:R1 i dziele przez dwa
    5 powtarzam punkty 3-4 tyle razy ile trzeba (z reguły 62 iteracje, co zapewnia 13bitową precyzję pomiarów)
    6 dzielę wynik przez dwa (lub wiecej) by uzyskać wymaganą liczbę

    Oczywiście uzyskana częstotliwośc pomiarów nie jest fascynująca, ale wcale nie jest mi niezbędna większa. 100Hz mnie zadawala :)
  • #9 4631697
    Xaveri
    Poziom 17  
    Posty: 460
    Pomógł: 13
    Ocena: 77
    Czyli tak:
    - zastosować wewnętrzny ADC ATMegi + oversampling
    - napięcie odniesienia 1,2V z LM385-1.2
    - jako sensor LM35 (zależy mi na kasie ale też na dokładności)

    Jak są jeszcze jakieś propozycje to słucham... :).
  • #10 4631842
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Nie napisałeś jakiego procka chcesz użyć: niektóre mają 2 źródła Vref do wyboru. Jeśli zakres 1,1V (110st.C) jest wystarczający to nie fatyguj się o zewnętrzny układ Vref. Najważniejsze w Twoim przypadku to płytka drukowana z dobrze rozprowadzoną masą i kondensatorami oraz "twardy" układ zasilania procka i LM35. Oczywiście samo połączenie LM35 z prockiem też będzie miało zasadniczy wpływ na stabilność wskazań.
  • #11 4632183
    Xaveri
    Poziom 17  
    Posty: 460
    Pomógł: 13
    Ocena: 77
    Chciałbym użyć ATMega128 i wykorzystać wszystkie jej 8 ADC (8 sensorów). Oczywiście pomiar temperatury to tylko taki wstępniak...

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy zastosowania wbudowanych przetworników A/C w mikrokontrolerach ATMega, ze szczególnym uwzględnieniem kalibracji i wyboru napięcia odniesienia przy pomiarze temperatury za pomocą czujnika LM35. Wskazano, że napięcie odniesienia wewnętrzne w ATMegach jest dość stabilne (około 2,50-2,56 V), ale różni się między egzemplarzami, co wymaga kalibracji poprzez pomiar napięcia odniesienia i dostosowanie algorytmu obliczeniowego. Zastosowanie zewnętrznego stabilnego napięcia odniesienia, np. LM385-1.2 o wartości 1,2 V, jest korzystne przy pomiarach temperatury w szerokim zakresie z wysoką rozdzielczością, ponieważ LM35 generuje sygnał do 1,2 V przy 120°C, co pozwala na optymalne dopasowanie zakresu ADC.

Wbudowany przetwornik ADC ma efektywną rozdzielczość około 9 bitów, co ogranicza pomiar do około 0,25°C na bit, a przy wymaganej rozdzielczości 0,1°C i szerokim zakresie temperatur (ok. -30 do 130°C) konieczne jest zwiększenie rozdzielczości. Proponowanym rozwiązaniem jest oversampling i uśrednianie wyników ADC, co pozwala na uzyskanie efektywnej rozdzielczości do 11-13 bitów kosztem szybkości pomiarów. Wskazano, że oversampling jest prosty do implementacji i dostępne są przykłady w dokumentacji Atmela.

Alternatywnie, jako czujnik temperatury wymieniono DS18B20, który ma 12-bitowy przetwornik, ale charakteryzuje się większym poziomem szumów. Podkreślono również znaczenie stabilnego zasilania, odpowiedniego uziemienia i dobrej konstrukcji płytki PCB dla stabilności pomiarów. W planach jest użycie ATMega128 z 8 kanałami ADC do pomiaru temperatury z wielu sensorów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA