přesnost měření pomocí AD převodníku ATMega8

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
datel12
Příspěvky: 25
Registrován: 12 úno 2009, 00:00
Bydliště: Plzeň

přesnost měření pomocí AD převodníku ATMega8

#1 Příspěvek od datel12 »

Pomocí AD převodníku měřím napětí. Výsledek měření zobrazuji jako hodnotu ADC registrů přímo na displej. Bohužel se mi stává, že naměřená hodnota velmi kolísá (jednotky až desítky bitů). Používám interní referenci. Dá se toto kolísání nějak odstranit, nebo jde o běžnou odchylku?
Uživatelský avatar
nekmil
Příspěvky: 787
Registrován: 06 bře 2005, 00:00
Bydliště: Havířov

#2 Příspěvek od nekmil »

Zkus aritmetický průměr.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#3 Příspěvek od Andrea »

datel12 píše:Pomocí AD převodníku měřím napětí. Výsledek měření zobrazuji jako hodnotu ADC registrů přímo na displej. Bohužel se mi stává, že naměřená hodnota velmi kolísá (jednotky až desítky bitů). Používám interní referenci. Dá se toto kolísání nějak odstranit, nebo jde o běžnou odchylku?

Jak to myslíš desítky bitů, 10 LSB? Musíš mít dobře navržený plošňák, napájení převodníku oddělené LC článkem (je to v datašítu), blokovací kondík na referenci a dobře rozvedenou zem. Případně ještě RC filtr na vstupu převodníku. Pak se ta hodnota při měření stabilního napětí (třeba baterky) mění o 1 LSB.
Uživatelský avatar
datel12
Příspěvky: 25
Registrován: 12 úno 2009, 00:00
Bydliště: Plzeň

#4 Příspěvek od datel12 »

Jak to myslíš desítky bitů, 10 LSB? Musíš mít dobře navržený plošňák, napájení převodníku oddělené LC článkem (je to v datašítu), blokovací kondík na referenci a dobře rozvedenou zem. Případně ještě RC filtr na vstupu převodníku. Pak se ta hodnota při měření stabilního napětí (třeba baterky) mění o 1 LSB.


No někdy je to i více než 10 LSB. Hodnota kolísá v cyklech s periodou několik vteřin. LC článek tam nemám ale zkusím ho tam přidat. Jakou hodnotu by měl mít ten blokovací kond na AREF, to jsem v datasheetu nenašel.

Měření pomocí průměrování hodnot se mi moc nelíbí. Měřené hodnoty zabírají paměť a o tu je většinou nouze.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#5 Příspěvek od Andrea »

datel12 píše:
Andrea píše:Jak to myslíš desítky bitů, 10 LSB? Musíš mít dobře navržený plošňák, napájení převodníku oddělené LC článkem (je to v datašítu), blokovací kondík na referenci a dobře rozvedenou zem. Případně ještě RC filtr na vstupu převodníku. Pak se ta hodnota při měření stabilního napětí (třeba baterky) mění o 1 LSB.


No někdy je to i více než 10 LSB. Hodnota kolísá v cyklech s periodou několik vteřin. LC článek tam nemám ale zkusím ho tam přidat. Jakou hodnotu by měl mít ten blokovací kond na AREF, to jsem v datasheetu nenašel.

Měření pomocí průměrování hodnot se mi moc nelíbí. Měřené hodnoty zabírají paměť a o tu je většinou nouze.

Na ref dávám 4u7 keramiku, ale vyhoví i 100nF + 10uF tantal. Jaké napětí tím měříš, nemění se náhodou? Zkus měřit tužkový monočlánek.
Uživatelský avatar
datel12
Příspěvky: 25
Registrován: 12 úno 2009, 00:00
Bydliště: Plzeň

#6 Příspěvek od datel12 »

Měření pomocí průměrování hodnot se mi moc nelíbí. Měřené hodnoty zabírají paměť a o tu je většinou nouze.

Na ref dávám 4u7 keramiku, ale vyhoví i 100nF + 10uF tantal. Jaké napětí tím měříš, nemění se náhodou? Zkus měřit tužkový monočlánek.


Dík, zkusím. Napětí se nemění, zkoušel jsem tu baterku a když jsem měřil napětí z jiného zdroje tak jsem měl připojený měřák a ten se ani nehnul.
V datasheetu je obrázek, jak se má navrhovat tišťák. Kolem vývodů pro ADC je rozlitá měď s nulou. Předpokládám, že se to tak dělá na dvouvrstvém spoji, kdy se z jedné strany přivedou signály na piny a z druhé strany se rozlije ta měď. Jak toto ale udělat na jednovrstvém spoji?
Uživatelský avatar
radekrd
Příspěvky: 642
Registrován: 21 kvě 2008, 00:00
Bydliště: Moravský Krumlov
Kontaktovat uživatele:

#7 Příspěvek od radekrd »

To chce externí převodník, ty interní vlivem rušení z procesoru jsou na přesná měření nepoužitelné.
Uživatelský avatar
datel12
Příspěvky: 25
Registrován: 12 úno 2009, 00:00
Bydliště: Plzeň

#8 Příspěvek od datel12 »

radekrd píše:To chce externí převodník, ty interní vlivem rušení z procesoru jsou na přesná měření nepoužitelné.


Nepotřebuji měřit až tak přesně ale odchylka +-10LSB mi přijde docela dost.
Uživatelský avatar
tominekk
Příspěvky: 295
Registrován: 16 črc 2004, 00:00
Bydliště: 49°11'30.229"N, 16°35'29.415"E
Kontaktovat uživatele:

#9 Příspěvek od tominekk »

Ad 1.
Mega8 ma pameti az az. RAM myslim 1kB a E2PROM tusim 512B.
Kdyz nameris 10vzorku a zprumerujes, tak ti to pameti moc nevezme.
Kdyz kod pises v C, tak ses v pohode.

Ad 2.
Nejak nerozumim pojmu 10 LSB apod. LSB znaci nejmene vyznamny bit. MSB znaci nejvice vyznamny bit.
Takze nevim o kolik se ti to meni. Ted to nevim jiste, ale prevodnik to ma nejspis 10bit nebo 8bit. Pokud se ti meni dva posledni nejmene vyznamne bity, tak je to OK. Pokud se ti meni vyssi bity, tak je na tom neco spatne. Pokud teda meris stabilizovane napeti ;)

Jak pise Andrea, koukni do datasheetu a snaz se to zapojit stejne. Precti si, jak rychly ten AD prevodnik je apod. Podle toho uzpusob HW a SW.
Chytrej člověk se učí chybama, ale jenom blbec těma svejma!
Uživatelský avatar
datel12
Příspěvky: 25
Registrován: 12 úno 2009, 00:00
Bydliště: Plzeň

#10 Příspěvek od datel12 »

tominekk píše:Ad 2.
Nejak nerozumim pojmu 10 LSB apod. LSB znaci nejmene vyznamny bit. MSB znaci nejvice vyznamny bit.
Takze nevim o kolik se ti to meni. Ted to nevim jiste, ale prevodnik to ma nejspis 10bit nebo 8bit. Pokud se ti meni dva posledni nejmene vyznamne bity, tak je to OK. Pokud se ti meni vyssi bity, tak je na tom neco spatne. Pokud teda meris stabilizovane napeti ;)


Myslím to tak, že se hodnota mění o +-10. Takže např. v rozsahu 240-260.
Uživatelský avatar
radekrd
Příspěvky: 642
Registrován: 21 kvě 2008, 00:00
Bydliště: Moravský Krumlov
Kontaktovat uživatele:

#11 Příspěvek od radekrd »

datel12 píše:
radekrd píše:To chce externí převodník, ty interní vlivem rušení z procesoru jsou na přesná měření nepoužitelné.


Nepotřebuji měřit až tak přesně ale odchylka +-10LSB mi přijde docela dost.


Běžně to ujíždí na posledních dvou bitech, ty se mění zcela náhodně.
Uživatelský avatar
datel12
Příspěvky: 25
Registrován: 12 úno 2009, 00:00
Bydliště: Plzeň

#12 Příspěvek od datel12 »

radekrd píše:
datel12 píše:
radekrd píše:To chce externí převodník, ty interní vlivem rušení z procesoru jsou na přesná měření nepoužitelné.


Nepotřebuji měřit až tak přesně ale odchylka +-10LSB mi přijde docela dost.


Běžně to ujíždí na posledních dvou bitech, ty se mění zcela náhodně.


No to by přesně odpovídalo. Né že by se s tím nedalo žít ale trochu mě to překvapuje. Podle datasheetu by odchylka měla být menší.

Je třeba zapojovat LC článek pokud používám interní napěťovou referenci?
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#13 Příspěvek od Andrea »

datel12 píše:
radekrd píše:
datel12 píše:
radekrd píše:To chce externí převodník, ty interní vlivem rušení z procesoru jsou na přesná měření nepoužitelné.


Nepotřebuji měřit až tak přesně ale odchylka +-10LSB mi přijde docela dost.


Běžně to ujíždí na posledních dvou bitech, ty se mění zcela náhodně.


No to by přesně odpovídalo. Né že by se s tím nedalo žít ale trochu mě to překvapuje. Podle datasheetu by odchylka měla být menší.

Je třeba zapojovat LC článek pokud používám interní napěťovou referenci?

Když se ti to mění o +-10LSB, tak se ti mění 4-5 dolních bitů. Chtělo by si to v tom udělat jasno. :roll:
Uživatelský avatar
MartasBrno
Příspěvky: 131
Registrován: 25 lis 2007, 00:00
Bydliště: Brno

#14 Příspěvek od MartasBrno »

Moje zkušenost s Megou16 je podobná, interní reference, zapojení podle datasheetu, rozlitá měď na oboustranné desce z obou stran vhodně prokovených a v rytmu asi sekundy nebo několika sekund to lítalo. Teď už nevím jak moc, ale určitě to bylo to k zlosti.
Jednoduše jsem udělal průměr - sečetl 8 hodnot a součet bitově posunul o 3 bity. To je sice jedno, ale po zákroku se měření značně zklidnilo. Druhá možnost by byla "filtrovat" - ignorovat zjevně chybné hodnoty.
Uživatelský avatar
datel12
Příspěvky: 25
Registrován: 12 úno 2009, 00:00
Bydliště: Plzeň

#15 Příspěvek od datel12 »

Andrea píše:Když se ti to mění o +-10LSB, tak se ti mění 4-5 dolních bitů. Chtělo by si to v tom udělat jasno. :roll:


Správně to mělo být, že se to mění na 2-4 nejméně významných bitech. Tomu odpovídá odchylka +-10 hodnot z 1024.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“