Nastavování vstupů ADC

Odpovědět
daton
Příspěvky: 664
Registrován: 16 bře 2013, 16:12

Nastavování vstupů ADC

Příspěvek od daton »

Zdravím
mám zde jeden technický dotaz, ohlwedně ADC vstupů a jejich nastavování v průmyslu.
Jde o to že každý ADC vstup je zpravidla opatřen nějakým vstupním ochranným děličem a nějakým tim dalším množstvím ochranných prvků okolo. Ty se zpravidla na snímaném průběhu nijak neuplatnůjí nebo by alespoň neměly. Hlavní problém je tedy v odporech děliče. Ty se zřejmě kupují s ostatními s určitou přesností netuším kolik to je ale odhaduji na méně než jedno procento.
Avšak když je třeba dělič kde se snímá napětí podstatné vyšší hodnoty než zvládně ADC (ten zpravidal zvládá 5V max a snímá se třeba 300V) pak i jedno procento začne hrát poměrně značnou roli a chyba v měření je potom nezanedbatelná. A ted se dostávám k jádru pudla... jak se to dá ošetřit v programu, když on ani neví že tam ta chyba je?
Nechce se mi věřit že by například v řídící jednotce motoru nastavovali jednotlivé hodnoty u každého kusu v základním firmware.
Tato otázka mne napadla ted když jsem spojil tři adc převodníky a získal 12 stejných vstupů osazených stejnými součástkami jako dělič. Ten mám v poměru cca 1:4. Při stejných odporech jsem musel hodnotu z každého vstupu upravit ve výpočtu protože všechny vstupy byly různě rozhozené oproti sobě o několik desetin voltu. V průmyslovém měřítku by to takto nešlo řešit. Ani přesné odpory by zřejmě nezaručily zcela stejné hodnoty. Třeba si neumím představit řešit to jen přesnými odpory například v balancérech akumulátoru elektromobilů, kde se porovnávají naptí na desetitisíciny.
Jak to tedy řeší hardwarově nebo i softwarově?
aladin
Příspěvky: 337
Registrován: 12 kvě 2013, 06:43

Re: Nastavování vstupů ADC

Příspěvek od aladin »

fischertip.cz, Stavebnice.com, MerkurRobot.cz, KlubTechniku.cz
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Nastavování vstupů ADC

Příspěvek od gilhad »

Dovedl bych si predstavit i "autokalibraci", kdy by se pri testovani (ktere se stejne delat musi) desce na zacatku nejak nekam privedl signal "kalibruj", pak by se na merenych vstupech na nejakou dobu objevila standardizovana napeti (klidne postupne serie), obvod si prechroustal co nameril (294V misto 300V, 49V misto 50V a podobne), narval si to do EEPROM a pri dalsim pokracovani zkousky a v realnem provozu uz pouzival nejakym vtipnym zpusobem prepoctene namerene hodnoty - pokud by to nebylo moc divoce zavisle na dalsich vecech (treba teplu), tak pouha nepresnost soucastek (i v radu desitek procent) by se tak dala velmi dobre eliminovat. Pomerne rychla a plne automaticka procedura.

A pri pokracovani zkousky se tam pak da projet treba menici se napeti od MIN po MAX a sledovat, zda obvodem vracena hodnota odpovida a nema divne skoky ...

(A jestli se nepletu, tak snad i arduina maji uvnitr neco na nejake kalibrovani (ale imho spis kmitoctu), co jim nastavuje uz vyrobce)
daton
Příspěvky: 664
Registrován: 16 bře 2013, 16:12

Re: Nastavování vstupů ADC

Příspěvek od daton »

Jo ta autokalibrace ještě na výrobní lince to by asi šlo. Ale jak by to třeba matematicky vypadalo v programu? Nezeslozitel by firmware o několik řádů.??
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Nastavování vstupů ADC

Příspěvek od gilhad »

Nemyslim si,
- jednak nejspis pujde o linearni zavislost (proste blbe hodnoty odporu), takze se proklada primkou a i kdyz se bude delat vic mereni a prumerovat, tak je to par radku (samozrejme by se to asi v prototypu ozkouselo dukladneji aby se tato hypoteza potvrdila ci vyvratila)
- i kdyby do toho lezly hodnoty soucastek okolo, tak by to nejspis byla nejaka hladka a relativne jednoducha funkce

V ramci prototypu by se udelalo nekolik "typicky vadnych" desek, kde by ty odpory (a treba i jine soucastky okolo) byly "mimo" o alespon par desitek procent, a mereni by se delalo ve spouste bodu a opakovane, takze prubeh funkce a odchylky mereni by byly predem znamy docela presne.

V ramci ostre vyroby by se to uz omezilo na potrebny pocet bodu, pokud by to melo byt trochu slozitejsi, tak by patrne ta deska jen namerila a nahlasila a nasledne velky pocitac by spocital a poslal vysledky pro ulozeni do EEPROM.

Taky bych se vubec nedivil, kdyby na otestovani a zahoreni desky byl pouzity jiny program(y), nez vysledny (proste jedna ci nekolik dlouhych sad testu), ktere by zkousely i hodne divoke kombinace bez pripojenych periferii (pouze simulovanych) a sledovalo by se, zda se da jit i kus za bezpecne hranice vystupu (otocit "serva" o vic, nez dovoli mechanika, roztocit "motor" nad maximalni povolene otacky, narvat do audiovystupu zesileni takove, ze to uz oreze prenaseny signal ... atd atd aby se overilo, ze to nekde u kraje nekrachne na deleni nulou ci jinou kravinu) a stejne tak i u vstupu (kdyz je motor na omezovaci, ale auto jede z prudkeho kopce, tak muze zrychlit i bez plynu - vstupy musi byt schopny nacist hodnoty i mimo provozni rozsah, stejne jako kdyz nejaka soucastka namahanim rupne, tak ridici jednotka nemuze hodit modrou obrazovku, nebo vyhoret, ale naopak to musi detekovat a zkusit nejak nouzove zachranit co se da)
A po uspesnych testech a dopocitani bulharskych konstant a jejich ulozeni do eeprom by tam teprve sel "ostry" program, tentokrat bez ladicich vystupu a internich testu a dalsiho a jen si nacetl korekce z EEPROM. (a projel si finalni sadu testu, ze je dobre nahrany a zkalibrovany a dela co skutecne ma - nejen testy)

A samozrejme, ze "ostry program" by na cteni ADC nepouzival digitalRead(A1) na 100 mistech a vypocty taky na tech 100 mistech, ale jednu specializovanou funkci, ktera by vracela uz spravnou (zkorigovanou a vselijak prepoctenou) hodnotu ve tvaru prijemnem pro vysledny program.


Pokud by to bylo neco duleziteho (ridici jednotka auta), kde ty nepresnosti hraji velkou roli, tak holt i to testovani tomu musi odpovidat.
Pokud by to byl jen kapesni multimetr, tak se to zase nafituje prumerem a v manualu bude presnost na 3 mista a chyba v posledni platne cislici a basta fidli, jednoduchy pruchod, 2 testy na pin a prolozeni primkou, hotovo.
daton
Příspěvky: 664
Registrován: 16 bře 2013, 16:12

Re: Nastavování vstupů ADC

Příspěvek od daton »

Ahoj
no jak to tady píšeš to vypadá velice jednoduše a logicky. Je fakt že pokud bude linka nastavená tak jak to říkáš tedy se dvěma rozdílnými firmware ź čehož první je testovací a druhý ostrý který doladí hlavní PC u linky pak to je jasné ale taky z toho vyplývá, že taková jednotka nemůže být flashovaná, protože by nová flash nezohlednovala ty dopočítané hodnoty. Leda že by se ty konstanty ukládaly do jiné části paměti , kde by si je nový firmware přebral a korigoval by výpočty. Třeba právě řídící jednotky motorů jsou sice málo flashovanou jednotkou ale jde to a třeba ODIS což je diagnostika vozidle koncernu VW to umožnuje. A tam se sbírá opravdu mnoho napětových hodnot.
Ale mne to zajímalo hlavně v souvislosti s těmi dvanácti vstupy a korekci pomalu každého výpočtu. Což jsem udělal ale taky je fakt že pokud budu program měnit musím stále vkládat tytéž rovnice, což mi ale ve finále nijak nevadí. Hlavní je aby i jiní konstruktéři co třeba čtou tento článek, nepodcenily testování svých výrobku a vždy si napsaly testovací program na vstupy , které nejen následně otestují ale i zkalibrují.

Ještě mám jeden dotaz na chytré lidičky na tomto foru. Arduinem sbírám na z adc modulů ADS 1015 hodnoty přes sběrnici I2C. Následně je přes webový modul 5100 posílám do své sítě. Problém je že jednou za čas (obvykle půl roku někdy déle) je třeba modul resetovat a někdy i vypnutím napájení. Problém je že vstupy těch ADC převodníku jsou pevně připojeny například k akumulátorům a další technologii solárního systému, který už tak lehce odpojit nelze a z datasheetu je jasné že odpojit napájení od adc převodníku při připojených vstupních napětí není nejlepší nápad , rozdíl může být max 0,3V a spolehat na ochrannou diodu co tam sice mám asi taky není nejlepší nápad. Proto jsem udelal napájení adc převodníku přímé, kdežto napětí Arduina a W5100 vypínatelné. NO ale to zase narážím na vstupy A4 a A5 SDA SCL, které zůstanou pod napětím a tedy zase budou ohroženy tyto vstupy arduina. Nejprve jsem si trochu pohrával s myšlenkou dát tam odpory co by napětí srazily a vnitřní ochrana vstupu arduina by tu ochranu zajistily. Ale nakonec jsem tam dal vypinač což je sice opravdu nepříjemné řešení protože když budu restartovat w5100 s arduinem, pak musím nejprve odpojit sbernici pak vypnout napájeni Arduina a W5100 a následně zapojit v opačném pořadí. Jde to ale je to ..... Neměl by někdo nápad jak to vypnout bez nutnosti odpojovat sběrnici nebo odepínat i ADC převodníky? Jak se tot řeší v průmyslu?
micer
Příspěvky: 180
Registrován: 12 čer 2014, 19:14

Re: Nastavování vstupů ADC

Příspěvek od micer »

Není to sice k tomu, jak se kalibrace (spíše adjustace) vstupů dělá v průmyslu, ale trochu k tématu to je. Donedávna jsem nevěřil, že je něco takového u hromadně vyráběných a prodávaných obvodů možné, bohužel je. Podívejte se pro zajímavost na následující odkazy týkající se ESP32, ono klasické arduino UNO je na tom sice lépe, ale úplně dobře taky ne:

* https://www.esp32.com/viewtopic.php?t=2881

* https://www.instructables.com/Do-You-Kn ... djustment/

Reálně je situace ještě horší, protože chyby se liší kus od kusu a některé metody autokalibrace využívají DAC a počítají s tím, že pracuje správně. Jenže to bohužel taky neplatí.
Vladimir66
Příspěvky: 385
Registrován: 02 dub 2014, 15:30

Re: Nastavování vstupů ADC

Příspěvek od Vladimir66 »

Uživatelský avatar
fulda
Příspěvky: 1359
Registrován: 04 led 2016, 17:18

Re: Nastavování vstupů ADC

Příspěvek od fulda »

daton píše: 18 úno 2021, 16:02 Hlavní problém je tedy v odporech děliče. Ty se zřejmě kupují s ostatními s určitou přesností netuším kolik to je ale odhaduji na méně než jedno procento.
Nerad bych rušil tuto diskuzi, ale i ty nejobyčejnější rezistory určené pro hobby děliče se prodávají s přesností 0,5%.
To při děliči 1:100 bude v nejhorším případě 1,51V na vysokonapěťové straně => 0,0151V na nízkonapěťové straně.
Arduino má 10bit převodník, referující k napájecímu napětí. Pokud budeme předpokládat, že máš pravé arduino a ne čínské a že napájecí napětí je opravdu 5,0V, pak je jeden dílek 0,0048828125. To znamená, že celková chyba měření je 3,09248 dílku. Obávám se, že to je v řádu, kterej je mimo možnosti zobrazení.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
daton
Příspěvky: 664
Registrován: 16 bře 2013, 16:12

Re: Nastavování vstupů ADC

Příspěvek od daton »

Ahoj
No tak já nevím, koupil jsme blistr se 100 odpory 20k z číny a deklarovaná přesnost je +-1% ale z měření 20ks vyplívá přesnost spíše -2% tak že se reálná hodnota pohybuje kolem 19,95 až 19,66. No a hodnota odporu 4k7 z blistru je ne tom podobně.
Pokud tedy počítám správně pak na děliči mohu dostat rozptyl až 0,4Vcož už je docela dost a vzhledem k tomu, že to měřím na ACS modulech které jsou přesnější než vstupy arduina pak mi to nepřijde jako banalita.
Odpovědět