Arduino a analogový šum

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Cust
Příspěvky: 7239
Registrován: 17 led 2007, 00:00
Bydliště: Milotice u Kyjova

Arduino a analogový šum

#1 Příspěvek od Cust »

Zdravím,
postavil jsem si zařízení, kde potřebuju měřit hodnoty o velikosti promile maxima.
Pro převod do PC jsem použil Arduino UNO a vše pracovalo správně. Minimální naměřená hodnota je 0 až 0.1 % z maxima a šum v průměru (10 vzorků) odpovídá cca 0.02 %.
Problém nastal, když jsem do Arduina doprogramoval web server. Došla paměť!
Koupil jsem tedy Arduino ZERO (Seeedstudio), kde s pamětí problém není a navíc získám 12 bit ADC. Juchů.
Zklamání přišlo při testech šum narostl na 0.4 % i když jsem ho očekával někde na 0.04 % a průměrování s tím nic nenadělá - jeden vzorek jako druhý. Prostě šumí ADC respektive multiplexor dělá bordel.

Otázka tedy zní: Víte někdo jak na Arduino Zero (ARM Cortex+ M0) ovládat multiplexer z Arduino IDE. Jde mi o buď výrazné snížení přepínání multiplexoru či přímo výběr jednoho konkrétního kanálu. Funkce Delay před funkcí analogRead nic neřeší.
Díky Čust
Uživatelský avatar
ZdenekHQ
Významný člen
Příspěvky: 25519
Registrován: 21 črc 2006, 00:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#2 Příspěvek od ZdenekHQ »

To vypadá, že se jedná o rozšířený mor.

U NRF9E5 jsem například zjistil, že když se přepne jádro na čtyřnásonek, abych z toho vyrazil na UART 56kbit, tak 12bit převodník ukazuje asi o 10% méně. Což o to, to se dá zkalibrovat, ale u serie 10ks jsem našel 5, co byly dost výrazně nelineární.

Přeju příjemný zážitky.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Uživatelský avatar
Zaky
Příspěvky: 7050
Registrován: 30 říj 2010, 00:00
Bydliště: Praha

#3 Příspěvek od Zaky »

Jak se začne potřebovat pořádně měřit, tak se skončí u externího převodníku. Ono v jednočipu nepanuje zrovna z hlediska rušení přátelské prostředí. Také se stačí podívat, co stojí běžný jednočip a co slušný převodník, rozdíl je celkem markantní. Pak se to samozřejmě nesmí zabít layoutem desky.
Krátce před tím, než se to rozbilo, tak to ještě fungovalo...
termit256
Příspěvky: 10029
Registrován: 06 pro 2007, 00:00

#4 Příspěvek od termit256 »

Prostuduj datasheet k tomu obvodu. Byva tam napsane co vsechno se ma povypinat v prubehu mereni, jak rychle se ma merit apod. aby se redukoval sum. Ale obecne jsou ty integrovane prevodniky dost tragedie.
Uživatelský avatar
Cust
Příspěvky: 7239
Registrován: 17 led 2007, 00:00
Bydliště: Milotice u Kyjova

#5 Příspěvek od Cust »

první vlašťovka - průměrovaný šum pod 0.02 % zatím jen na jednom kanále
ostatní mlčí
asi bude dluhá noc :-)
Uživatelský avatar
ZdenekHQ
Významný člen
Příspěvky: 25519
Registrován: 21 črc 2006, 00:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#6 Příspěvek od ZdenekHQ »

Zaky to napsal přesně. Taky jsem skončil externím převodníkem. Jo ten můj slavnej zákazník, ten nezná ani slovo kalibrace. Pak nadává, ale mně...

Stochastické chyby se bohužel sčítají.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Uživatelský avatar
samec
Příspěvky: 6670
Registrován: 19 pro 2017, 00:00

#7 Příspěvek od samec »

Tiež som si kedysi na začiatku kúpil arduino zero, že ho použijem na nejaké sofistikované veci, ale nakoniec som skončil pri neoficiálnom arduino pro micro, čo je zmenšená verzia arduino leonardo s čipom mega32u4. Za tie tri doláre z ebay by som v tomto prípade použil aj dve arduina. Jedno na meranie a druhé na internet.
Uživatelský avatar
Cust
Příspěvky: 7239
Registrován: 17 led 2007, 00:00
Bydliště: Milotice u Kyjova

#8 Příspěvek od Cust »

Hmmm
já bych raději potřeboval vyřešit to ZERO... Něco málo jsem vylepšil, ale
nicméně šum stále je! něco jsem měl špatně... předchozí příspěvek je error
PO HODINĚ PRÁCE:
Každopádně, Zero má vlastní offset cca 0.15 % rozsahu i po zapnutém HW průměrování, u mě tedy cca 3.7 mV. Pak se šum zmenšuje s impedancí zdroje, logicky - vyhodil jsem RC článek (dolní propust) a zapojil jsem výstupní OZ natvrdo (přes odpor 47 Ohm) do ADC.
Další kus práce:
Nyní mám šum s offsetem OZ (a po odečtení offsetu ADC) na hodnotě 0.17 %.
Po odečtení offset OZ (dle měření osciloskopem 250 uV) jsem na hodnotě šumu 0.16 %.

Řekněme, že tomu věřím a ukončuji akci improve ADC!
Signál budu asi 4x zesilovat, takže se mi šum projeví jako 0.04 %. To už je lepší než 60 dB a s tím se dá pracovat!
Uživatelský avatar
Cust
Příspěvky: 7239
Registrován: 17 led 2007, 00:00
Bydliště: Milotice u Kyjova

#9 Příspěvek od Cust »

příští akce bude externí ADC :-)
Uživatelský avatar
Cust
Příspěvky: 7239
Registrován: 17 led 2007, 00:00
Bydliště: Milotice u Kyjova

#10 Příspěvek od Cust »

Ještě jsem si cvičně koupil STM32... Přesněji desku Nucleo G071RB. Je to dokonce levnější než to Arduino.
Tam ten šum na AD převodníku je mnohonásobně lepší naž na procesoru SAMD21.
Takže pokud budete chtít měřit analogové hodnoty Arduino Zero není nejlepší volba.
Zatím nejlepší výsledky mám na Arduinu Due.
Uživatelský avatar
Cust
Příspěvky: 7239
Registrován: 17 led 2007, 00:00
Bydliště: Milotice u Kyjova

#11 Příspěvek od Cust »

Tak to Arduino Due beru zpět. Sice moc nešumí, ale offset dle datasheetu nic moc (můj kus je zrovna OK). Tedy spíše bych šel do toho STM, když už teda interní ADC. A číst chvilku po přepnutí kanálů...
Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“