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

amtega32 - ADC,błąd pomiaru, powiązane napięcia na różnych kanałach

_pieczas 15 Sty 2014 19:42 1719 11
  • #1 13180672
    _pieczas
    Poziom 12  
    Panowie
    Kombinuje z pomiarem napięcia na potencjometrach z wykorzystaniem atmego32. 4 potencjometry podpięte do 4 kanałów ADC.

    Połączenia nie mogę przedstawić ze względu na problem z wgrywaniem obrazków, lecz jest ono podręcznikowe.


    kod:

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


    Problem w tym, ze gdy wszystkie potencjometry są skręcone na 0 to wszedzie są mierzone 0, a gdy wszystkie mają wartość VCC to jest 1023. Jednak gdy kręce tylko jednym, wówczas jego napięcie zmienia się istotnie, lecz nie w całym zakresie - ok od 0 do 950 bitów. Mało tego w na innych kanałach też rejestrowane jest napięcie. Przyjmują one wartości mniejsze i są to dość stabilne wartości.
    Czy orientuje się ktoś w czym może być problem? Nie sądze aby spadało napięcie źródła, bo na zasilaniu mam 2 kondensatory 2000uF, przez co po odłączeniu od napięcia atmega działa jeszcze kilka sekund.
  • #2 13180732
    as1200
    Poziom 12  
    Witam,

    Nie wiem czy moja informacja coś pomoże ale może sama sugestia nasunie Tobie jakieś przemyślenia co do błędnego działania ADC.

    Nie znam składni języka C gdyż programuje w Bascomie ale spotkałem się tam z takim opisem:

    Cytat:
    Uwaga! Z powodu zmian w kodzie bibliotecznym w wersji 1.11.7.2, funkcję GETADC() najlepiej wywołać dwukrotnie:

    W = Getadc(channel)
    W = Getadc(channel)

    gdyż za pierwszym razem funkcja może zwrócić wartość przetworzoną w kanale o numerze mniejszym o jeden.

    (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005
  • #3 13180800
    _pieczas
    Poziom 12  
    No to mogłoby mieć cos wspolnego z problemem, gdyż najbardziej dzień widoczne zmiany są w kanale sąsiednim. Ale.. Gdy wszystkie potencjometry są skręcone na min lub max to pomiary na każdym kanale wynoszą 0 lub 1023. Gdy któryś jest w poizycji pośredniej to nie dochodzą do maksimum i minimum, aczkolwiek może to przez to, że pomiar idzie w petli . sprawdzę i dam znac , lecz jutro bo nie mam dostępu do układu.
  • #4 13180916
    Konto nie istnieje
    Poziom 1  
  • #6 13181120
    Konto nie istnieje
    Poziom 1  
  • #7 13182389
    _pieczas
    Poziom 12  
    Dziękuje wszystkim za pomoc. Problem najwyraźniej leżał w zbyt szybkim pomiarze. Pomiędzy kolejnymi pomiarami dodałem opóźnienie i to pomogło. Rozwiązanie kolego Marek_Skalski jest z pewnością bardzo rzeczowe, lecz u mnie nie ma takiej konieczności, gdyż tylko na początku programu dokonuje jednorazowego pomiaru i nie zależy mi na szybkości.
  • #8 13185142
    Dar.El
    Poziom 41  
    Wystarczy wyłączyć ADC i zaraz włączyć, bez żadnych opóźnień. Po włączeniu dodaje trochę cykli zegarowych przed próbkowaniem i nie ma problemów.
  • #9 13188930
    Konto nie istnieje
    Poziom 1  
  • #11 13188981
    Konto nie istnieje
    Poziom 1  
REKLAMA