Velmi přesné (setiny voltu) sledování napětí s ATMega8

Chtel bych se zeptat zda by bylo tezke udelat pomoci tohoto procesoru aplikaci, která by velmi presne (na setiny voltu) sledovala napeti na Lipol baterii a pri dane hodnote (6,1V) by odpojila zatez…??
Dekuji za odpoved a pripadne navrhy jak na to. Jistou predstavu mam, ale jelikoz jsem novacek, radsi si asi vyslechnu rady nez tu zvatlat blbosti.
Dekuji Vasek

:arrow_right: administrator: přejmenováno z "Sledování napětí s ATMega8"

nebolo…a vramci presnosti by bolo mozne sledovat kazdu bateriu zvlast…

Taky bych doporucil sledovat kazdej clanek zvlast, Lipolky sou haklyvy na podvybiti, a 6,1V nebo 3,05V na clanek je uz docela malo , pri napeti 3.2V na clanek pri zatizeni zacina napeti dost klesat , pod 3V uz je to na ukor zivotnosti,zacina se nafukovat,vysicha, 3.4V je akorat sice nevicucnes z ni max kapacitu ale vydrzi dyl,
jak pouzit AD prevodnik ti poradi nekdo s uzivatelu AT

Ja prave videl cut off pro lipolky za par kacek, kde byla baterie sledovana na napeti 6V. Napeti jednotlivych clanku budu merit na servisnim konektoru…??
Ted uz jen zjistit jak se pracuje s AD prevodnikem.

heh, cutoff sem si nekupoval , i kdyz z ciny je fakt za par kacek, udelal sem si ho sam, hlidam napeti na servisnim konektoru , kazdej clanek zvlast, zapipa my to kdyz my spadne napeti pod 3.4V na clanek

Ten procesor má mimo jiné i analogový komparátor, tam bys ovšem měl tu vypínací mez nastavenou napevno.
S přesností na setiny při rozsahu řekněme 8V bych radši nepočítal, ten převodník není žádnej zázrak, do 0.03V by ses ale vejít mohl. Bude to však možná potřebovat kalibraci, ta interní reference má poměrně velkou toleranci a napájení taky nebývá moc přesné. Lze využít externí referenci.
Další zpřesnění bys dostal kdybys měřil každý článek zvlášť. Měřený rozsah by šel na polovinu, od napětí horního článku lze pomocí OZ dolní článek odečíst a teprve pak to převádět.
Nejdřív to však zkus jen nějak polepit a pak se uvidí.

Co se týká práce s převodníkem:
-vybrat/aktivovat referenci
-nastavit hodiny pro převodník (50-200 kHz pro max. rozlišení)
-vybrat kanál
-podle zapojení (požadovaná přesnost, impedance na vstupu) počkat dobu “settling time”
-spustit převod
-vyzvednout si výsledek

Takze pokud bych zvolil vnejsi referenci 4,2V (1čl lipol) a 8b prevodnik, tak mam presnost na 0,017V, coz asi pro hlidani pomerne presne hodnoty neni nic moc, takze by se dal pouzit 10b prevodnik se kterym bych dosahl presnosti 0,004V, coz uz je pro moje ucely vice nez postacujici.

-podle zapojení (požadovaná přesnost, impedance na vstupu) počkat dobu “settling time” - tento bod znamena co, moc jsem ho nepochopil.

No a ve finale si podle stavu registru, do ktereho se uklada aktualni stav prevodniku budu provadet akce s baterkou (pisknuti, pripadne pres nejaky tranzistor odpojeni).

Settling time je doba potřebná pro ustálení S/H obvodu převdníku. V podstatě doba, za kterou se nabije RC článek na napětí odpovídající požadovaný přesnosti.
Ts=ln(2^n/SA)RC
n = počet bitů převodníku
SA (settling accuracy) = přesnost ustálení, zlomek LSB. Např. 0.25 pro 1/4 LSB
C = vzorkovací kapacita (pro megu8 C = 14pF)
R = impedance zdroje signálu + vstupní impedance analog. multiplexeru v mcu. Koukám, že soudruzi z atmelu se tu impedanci neobtěžovali do ds uvést :unamused:. Jen napsali, že máš použít nízkoimpedanční(pod 10kOhm) zdroj signálu a bude ta doba zanedbatelná. To bych blil.
Počítal bych aspoň 5k vnitřní impedanci + impedance zdroje signálu (u děliče to bude paralelní kombinace dělících odporů).

Ahoj pls nemněl bys zapojení na ty Li-Po jak sis postavil?
Chtěl bych si to taky postavit. Díky

Ahoj, mam zprovozneny AD prevodnik s ATmega8. Hodnotu napeti zobrazuji na sedmisegmentovce. Potreboval bych vsak merit napriklad 2 hodnoty analogoveho napeti a rekneme po 5sec je ukazovat na segmentovce.
Jak na to?

Mam zvolenou vnitrni referenci 2,56V, napeti merim na pinu PC0 (ADC0). Podle navodu a datasheetu jsem to pochopil tak, ze bud muzu merit jedno napeti na ADCx a nebo dve napeti a vysledek bude jejich rozdil. To ale nepotrebuji, potrebuji merit realne hodnoty obou napeti.

V hlave mam ruzna zbytecne slozita reseni, ale urcite to jde i jednoduse, doufam ze poradite, dik Vasek

Prostě si jen přepínej kanály převoníku. Změříš ADC0, uložíš, změříš ADC1, uložíš…

Stydim se za sve dotazy, dnes uz jsem asi pretazenej .)
Uz to samozrejmne bezi, diky!

linearity AD v ATmega by som sa absolutne nebal. Velmi dobre spraveny prevodnik. Na tvrdenie vyrobcu o 0.5LSB INL sa da spolahnut. Takze 10V mas s rozlisenim 10mV. Co sa teplotnej stability tyka, pre rozsah -15 + 60ma interna referencia “presnost” zodpovedajucu 8b AD. Pouzi nejaku lepsiu externu referenciu s 10-20ppm/°C, alebo kalibraciu nameranej AD hodnoty na teplotu okolia. Co sa referencie tyka, je to vseobecna vec i pre pouzitie externeho AD prevodnika. Kukni vzdy do datasheetu a zistis, ze velka cast AD nema internu referenciu. Cena externej referencie splnujucej povolenu zmenu hodnoty povedzme o +/-0.25LSB v danom teplotnom rozsahu (-10 + 50°C) napriklad pre 16 bitovy AD je pomaly taka, ze sa Ti skor oplati termostatovanie AD casti. Ak vsak chces pouzivat meranie pri izbovej teplote (22 +/-5°C), stabilitou Ti bude v pohode sluzit aj ta interna v ATmega.

Na co si vsak daj pozor, aby si mal spravne navrhnute cesticky na plosaku s AD vstupmi a hlavne zeme, aby si nemal spolocne useky s napajanim. Zmenou odoberaneho prudu by si si vytvaral fantomove “vstupne” napatie na AD. To sa tyka uplne vsetkych AD prevodnikov.

Druha vec je dobre nastavenie hodin AD v MCU. Dobre pisem preto, ze ak potrebujes mat jeden prevod napr. 1x za 2ms, nastav si deliaci pomer na co najpomalsi prevod. Potom ani nebudes musiet procesor uspavat pocas AD prevodu (kto je na spanok MCU zvedavy. MCU ma makat a nie spat :slight_smile: ) a vysledok budes mat stabilny.