kolísání hodnot analogRead při různé zátěži

Odpovědět
slavan1
Příspěvky: 4
Registrován: 30 lis 2018, 17:33
Reputation: 0

kolísání hodnot analogRead při různé zátěži

Příspěvek od slavan1 » 30 lis 2018, 18:02

Dobrý den, používám Arduino Nano, na jehož analogové vstupy připojím 5 poenciometrů 10kohm. K 5 digitálním výstupům připojím 5 klasických relé pro Arduino (proud cívkou cca 50 mA při sepnutí). Podmínkami nastavím, že v první půli rozsahu potenciometru je relé vypnuté, ve druhé půli rozsahu se relé sepne (k sepnutí dojde při hodnotě analogRead 500). Pokud jsou relé nesepnuta je možné nastavovat analogRead bez problémů v rozsahu 0-1023 u každého z potenciometrů (k nějakým odchylkám +/- 5 dochází...). Pokud ovšem vzroste proudový odběr Arduina tím, že sepnu např. 3 relé, u zbylých dvou potenciometrů již mohu nastavovat hodnoty analogRead jen mezi cca 80-900. Navíc s každou změnou odběru proudu kolísá i analogRead hodnota každého z potenciometrů (řádově +/- analogRead 30 na každých 50 mA proudového odběru z arduina). Používám kvalitní zdroj 12V (napětí nekolísá ani při zatížení) na pinech VIN,GND a navíc je Arduino připojeno k USB. Zkoušel jsem 2 Nano a 1 Uno modul od jiných výrobců a s týmž výsledkem. Prosí o radu čím to může být způsobeno. Děkuji Marek

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: kolísání hodnot analogRead při různé zátěži

Příspěvek od jankop » 30 lis 2018, 18:55

Nejspíš nesprávně provedený rozvod napájecího napětí, velké přechodové odpory apod. Jsou relé galvanicky oddělena od Arduina, mají svůj samostatný zdroj, nebo máš země propojeny? Co je u tebe kvalitní zdroj 12V? Protože používáš nejspíš nastavení analogReference(DEFAULT), tak s každou změnou napájecího napětí, s každým úbytkem na vodičích Arduina se změní jeho napájecí napětí a courá to. Když dáš měřák na Vcc a GND, je to stabilní?
Za normálních podmínek, kdy je potenciometr zapojen přímo mezi Vcc a GND Arduina by se naměřená hodnota ani měnit moc neměla a měla by být pouze proporcionální natočení potenciometru.

slavan1
Příspěvky: 4
Registrován: 30 lis 2018, 17:33
Reputation: 0

Re: kolísání hodnot analogRead při různé zátěži

Příspěvek od slavan1 » 01 pro 2018, 11:31

Ahoj, díky za odpověď. Jako zdroj používám snad starý zdroj z TV videoher, kterým napájím DC-DC konv. a výstup mám nastaven na 12V. Zdroj je stabilní, napětí nekolísá. 12V tedy připojeno na VIN a GND Arduino. Dle tvé rady jsem blok s relé připojil na další DC-DC, na výstupu 5V a GND jsem propojil s GND arduina - funguje to a analogRead hodnoty jsou stabilní i při různém odběru proudu (analogReference mám nastaveno jako (DEFAULT)). U této aplikace (automatické ovládání akvária) mi 2 DC-DC bloky nevadí, ale při např. kapesním zařízení napájené z baterií je to asi zbytečně složité (napájet např. Arduino z 2x 3,7 V baterií a ještě mít modul pro konv. na 5V z těchto baterií)...

Výstup 5V a GND arduina není tedy vůbec stabilní, tak jako jsem si myslel, při navýšení proudového odběru např. o 150 mA klesne jeho napětí o cca 0,5 V (je to normální stav, když je výrobcem povolen odběr až 1 A ?). To je opravdu potřeba použít externí zdroj 5V i pro ovládání pár relátek?

Nevíš, jak jinak elegantně a jednodešeji docílit stabilních analogRead hodnot i při různém proudovém zatížení? Pomůže v tom např. analogReference? Jak docílit, aby výstup 5V a GND arduina, byl opravdu stabilní...?)

Ještě jednou díky za rady!

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: kolísání hodnot analogRead při různé zátěži

Příspěvek od jankop » 01 pro 2018, 12:46

Tahle problematika je poměrně široká. Naprosto zásadní vliv může mít i délka a průřez vodičů. Je možné použít i externí referenci a kdoví co. Pokud připojím potenciometry opravdu přímo mezi Vcc a GND, tak kolísání napájecího napětí měřenou hodnotu nebude výrazně ovlivňovat. Když jsem mluvil o oddělení zdrojů Arduina a relé, tak jsem nikde neříkal, že máš spojovat země. Proč? Nejdokonalejší eliminace rušení je v případě galvanického a nejlépe optického oddělení.
Pár relé by snad z Vcc napájet šlo, ale tomu bych se já vždy snažil vyvarovat. Ostatně v principu nevidím moc důvodů vcelku nespolehlivá relé používat.
Obecně nedokážu poradit, protože v tomto případě je i schéma nedostatečné, záleží i na tom, kde jsou jednotlivé uzly propojeny. Jinak si nemyslím, že by při dodržování běžných zásad konstrukce a propojování elektronických obvodů byl nějaký problém s převodníkem A/D. A už vůbec by neměl nastat problém při čtení polohy potenciometru, protože když klesne Vcc, tím klesne i napětí na potenciometru a čtu tedy pořád více-méně to samé.

slavan1
Příspěvky: 4
Registrován: 30 lis 2018, 17:33
Reputation: 0

Re: kolísání hodnot analogRead při různé zátěži

Příspěvek od slavan1 » 01 pro 2018, 13:24

Potenciometry mám připojeny na +5V a GND arduina. Zařízení mám na nepájivém poli, všechny propojky stejného průřezu a stejných délek. Spojení zemí arduina a relé tam opravdu být nemusí, propojku jsem odstranil.

Tak jako píšeš: "A už vůbec by neměl nastat problém při čtení polohy potenciometru, protože když klesne Vcc, tím klesne i napětí na potenciometru a čtu tedy pořád více-méně to samé." Proto mě to překvapuje a nevím, kde dělám chybu. I když mi vlivem odběru proudu napětí na +5V a GND kolísá o 0,5V, A-D převodník by to ovlivnit nemělo, ale děje se tak a to zásadně.

Používaná relé:
https://www.aliexpress.com/item/1-2-4-8 ... 4c4deSE6Xs

Z tvé zkušenosti dochází k takovým výkyvům napětí na +5V a GND arduina i při odběrech řádově desítky mA?

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: kolísání hodnot analogRead při různé zátěži

Příspěvek od jankop » 01 pro 2018, 14:37

Každé Arduino používá trochu jiné řešení napájecích obvodů a součástek. Například když budeš napájet některá Arduina z USB a pak z RAW, tak se automaticky dočkáš z principu chyby cca 10%, což není vůbec málo. Při napájení z USB se totiž uplatní implementovaná dioda, které se eufemisticky říká Auto Selector. Tato dioda sníží někdy i tak nízké napětí Vcc o cca 0,5V. Protože se obvykle používá Vcc jako reference, pak se to projeví jako chyba/odchylka měření.
Já bych tvůj problém viděl především v kontaktním poli, tam neobyčejně snadno vznikají přechodové odpory, které mají za důsledek veškeré tyto negativní jevy. Snadno vznikají a o to hůře se hledají a odstraňují.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: kolísání hodnot analogRead při různé zátěži

Příspěvek od pavel1tu » 01 pro 2018, 14:46

Já se jenom zeptám, nenapájíš něco na 5V ? Něco s odběrem nad 500mA nebo třeba ty cívky relé ?
Pokud jsem pochopil, máš zdroj 12V, pak tedy vše na 5V napájíš z Arduina a jeho zdroje ? On ten zdroj je dost na prd vůbec u čínských klonů.

Já řešil jen jednou "přesné měření napětí" a dělal jsem to pomocí ext. destičky.

PS: řízení akva řeším již rok a více, můžeš mi pak napsat mimo toto vlákno, stačí soukromá zpráva, jak to máš namyšlené a co vše budeš řídit ? Já momentálně bojuji s měřením PH, minerální tvrdosti vody a z toho výpočet CO2, ale nějak mi to nefunguje :-)
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

slavan1
Příspěvky: 4
Registrován: 30 lis 2018, 17:33
Reputation: 0

Re: kolísání hodnot analogRead při různé zátěži

Příspěvek od slavan1 » 02 pro 2018, 11:28

Zdravím, jasně, kontaktní pole je kapitola sama pro sebe, ale při vývoji a zkoušení se bez něj neobejdu. Stále něco napevno pájet a pak složitě rozpojovat je nereálné, za cenu toho, že občas hledám volný kontakt...
Zkoušel jsem tedy arduino a periferie různě napájet a sledovat co se děje s analogRead.
Nejvíce se mi osvědčilo přivést napětí 12V nebo 7V (7V je na tom z hlediska efektivity lépe) z DC-DC konv. na VIN a GND arduina (výrobce uvádí 5,8-14,8V). Též postačovalo arduino napájet jen z USB.
Blok s relé, které při sepnutí odebírá cca 0,25 A jsem napájel z ext. 5V zdroje. Pro takový odběr je výstup +5V a GND arduina nepoužitelné, napětí pak kolísá a sním i analogRead (ano, je to arduino z Číny, ale nevím jestli je to tím...). Z +5V a GND arduina jsem napájel jen potenciometry s minimálním odběrem. GND arduina a GND ext. zdroje 5V jsem propojil a hodnoty analogRead stály jak přibité a bylo je možné nastavovat v plném rozsahu bez ohledu na aktuálně odebíraný proud periferiemi.

Co se týče arduina a akvaristiky jsem začátečník. U akvárka (napůl terárko) řeším přes arduino spínání vzduchování, topení, osvětlení, filtrace atd. dle nastaveného časového harmonogramu + nějaké čidla teploty, intenzity osvětlení apod. Do budoucna ovládání online.

Díky za rady!

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 17 hostů