Signalizace do AD vstupu

Uživatelský avatar
Dex
Administrátor
Příspěvky: 1263
Registrován: 16 úno 2013, 14:26

Signalizace do AD vstupu

Příspěvek od Dex » 30 dub 2020, 18:52

Zdravím,

mám na ESP8266 volný (už jenom) AD vstup a z druhého MCU (Arduino) bych do něj potřeboval přenášet pár (tři nebo čtyři postačí) stavových informací.

Napadl mne, vyrábět Arduinem několik napětí, třeba 0 pak 0,5 a 1 V a ty v ESP měřit. Nemusí to být rychlé, ani moc přesné (nebudu porovnávat absolutní hodnotu, ale spíš testovat nějaký rozsah).

Potřeboval bych ale poradit, co zapojit mezi PWM výstup Arduina a AD vstup ESP, aby "se to tvářilo" jako spojitá napěťová úroveň - prostě ty PWM pulzy nějak integrovat dohromady. Tuším, že tam bude asi kondenzátor a odpor, ale s tím bych potřeboval poradit ;)

Předem díky za rady 8-)
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

Uživatelský avatar
jrt
Příspěvky: 1744
Registrován: 17 úno 2013, 17:13

Re: Signalizace do AD vstupu

Příspěvek od jrt » 30 dub 2020, 20:04

Není jednodušší přenášet rovnou PWM (třeba servopuls) a v ESP měřit dobu jeho trvání? To bude rozhodně nejen přesnější, ale i odolnější proto rušení.
jrt
jederobot.cz, hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

Uživatelský avatar
Dex
Administrátor
Příspěvky: 1263
Registrován: 16 úno 2013, 14:26

Re: Signalizace do AD vstupu

Příspěvek od Dex » 30 dub 2020, 20:29

To určitě je, ale na AD vstupu ESP8266 jde podle všeho jen měřit napětí v rozmezí 0 až 1 V. Ty dvě MCU budou od sebe pár cm.
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

DavidO
Příspěvky: 958
Registrován: 01 kvě 2013, 21:27

Re: Signalizace do AD vstupu

Příspěvek od DavidO » 30 dub 2020, 21:09

Myslel jsem, že 3.3V? Tady tě nějaká nelinearita nebo šum, když chceš jen pár diskrétních hodnot, moc nezajímá.
(jo a ty 3.3V by sis taky měl ohlídat, aby ti tam náhodou z Arduina nešlo víc)

Co chceš kromě pinů na ESP minimalizovat? Program na ESP, program na Arduinu, výstupní piny na Arduinu, obvod, ...? A jak rychlá ta komunikace má být? Když se stav změní, jak rychle to má být poznat?
Jestli tě nepálí program, tak kromě toho jak psal Jirka s PWM (obecně můžeš měřit nějaký čas impulsu a v tomhle případě asi i výrazně pomalejší), anebo třeba si udělat něco jako softwarový SPI? Ale jestli chceš využít AD rovnou, když je zadarmo a čte se "okamžitě", tak bych tam jako správný programátor spáchal nějaké zvěrstvo jako zrovna ten filtr co ses ptal. Jako elektrický neplavec, který se neptá na rady zkušených plavčíků a vrhne se do řeky života, bych to viděl nějak takhle:
S kondíkem a odporem uděláš základní "dolní propust" (low-pass filter) - od zdroje k cíli odpor, u cíle k zemi kondík. Vzoreček f=1/(2piRC) říká mezní frekvenci; tu chceš tak 4x vyšší než frekvenci co chceš přenášet, ale přitom aby to bylo podstatně míň než to, co Arduino generuje (to je kolem 500Hz jestli se pamatuju). Odpor tak, aby z Arduina při zapnutí nechtěl do kondíku jít proud vyšší než povolených max 40mA (ale radši výrazně míň). Podívej se, co máš v šuplíku za odpory mezi kilem a deseti a kondíky kolem 0.1u a podle toho si vyber nějakou kombinaci, nejsnáz pomocí nějaké online kalkulačky a okem zkouknout, jestli ti to vyhovuje. No a když se bude komunikace nějak mrvit, tak zanadávej na čínskej šmejd a hoď to do šuplíku :lol:

Uživatelský avatar
Dex
Administrátor
Příspěvky: 1263
Registrován: 16 úno 2013, 14:26

Re: Signalizace do AD vstupu

Příspěvek od Dex » 30 dub 2020, 21:52

DavidO píše:
30 dub 2020, 21:09
Myslel jsem, že 3.3V? Tady tě nějaká nelinearita nebo šum, když chceš jen pár diskrétních hodnot, moc nezajímá.
(jo a ty 3.3V by sis taky měl ohlídat, aby ti tam náhodou z Arduina nešlo víc)
To jsem si myslel taky, ale v tomto konkrétním případě mám v ESP firmware ESP Easy a ten dle dokumentace umí 0 až 1 V s 10bit přesností. Máš pravdu, že ochrana bude potřeba.

Co když dám hned za pin z Arduina k zemi zenerku s odporem? Když se překročí povolená mez, tak to svede k zemi ... asi :)
DavidO píše:
30 dub 2020, 21:09
Co chceš kromě pinů na ESP minimalizovat? Program na ESP, program na Arduinu, výstupní piny na Arduinu, obvod, ...? A jak rychlá ta komunikace má být? Když se stav změní, jak rychle to má být poznat?
Do firmware v ESP šahat nechci, v základu to umí změřit napětí a s hodnotou dále pracovat. Na ESP už mi zbyl jen ten AD vstup. Změna se bude ověřovat jednou za sekundu, takže spousta času. Program v Arduinu také není problém, pinů tam mám dost.

V podstatě jsem potřeboval poradit "low-pass filter", nějak jsem si na to nemohl vzpomenout :) Takže díky, s tímhle už si snad poradím ;) a do šuplíku to nepůjde, nebudu každý večer "zalejvat jak nějakej votrok" :D
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

DavidO
Příspěvky: 958
Registrován: 01 kvě 2013, 21:27

Re: Signalizace do AD vstupu

Příspěvek od DavidO » 01 kvě 2020, 09:05

Ajo, teď jsem se podíval do datasheetu ESP8826 a tam píšou "Hardware Design The input voltage range is 0 to 1.0 V when TOUT is connected to external circuit." Já jsem asi přehlídnul, že to je pro 8826, ono u ESP32 je to klasicky VDD+něco málo. Každopádně to ale není vlastnost firmware ESP easy, ale toho čipu jako takového. Nicméně, tajdle píšou "Note that most ESP-Boards (like the NodeMCU, Wemos,...) already have that voltage devider connected between the ESP-Chip Analog pin and their A0-Pin" tak to by vypadalo, že moduly jsou připravený na ADC až do plnýho napájení. Podívej se, co to vlastně konkrétně máš.
Ale stejně tam nějakou ochranu proti 5V z Arduina budeš muset mít, tak jestli to napájíš ze zásuvky, tak tam klidně vraž ten odporovej dělič.

BTW, v tom datasheetu od ESP32 píšou o ADC docela opatrně, zejména ty poznámky pod tabulkou jsou roztomilý. To by mě zajímalo, co se s tím dá vlastně vůbec změřit :lol:
esp32adc.png
Datasheet ESP32, sec. 4.1.2 Analog-to-Digital Converter (ADC)

Uživatelský avatar
Dex
Administrátor
Příspěvky: 1263
Registrován: 16 úno 2013, 14:26

Re: Signalizace do AD vstupu

Příspěvek od Dex » 01 kvě 2020, 10:17

Dobrá připomínka! Mám tam Wemos D1 Mini Pro (tu starší verzi) a tam je opravdu dělič složený z 220k a 100k, takže je možné připojit až 3,3 V. Dokumentace k ESP Easy je ale obecná pro ESP8266 a tam je max. 1 V.

Pojede to celé ze zásuvky, takže spotřeba mne nijak extra netrápí.

Já popravdě doposud u ESP8266/32 měřil napětí jen málo a to jsem tam dal ADS1115 a bylo ;)
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

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

Re: Signalizace do AD vstupu

Příspěvek od fulda » 01 kvě 2020, 12:35

Moc jsem si nevšiml, kolik je k dispozici pinů na Arduinu?
Že jestli by třeba nestálo za úvahu https://lmgtfy.com/?q=r+2r+ladder ??
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

Uživatelský avatar
Dex
Administrátor
Příspěvky: 1263
Registrován: 16 úno 2013, 14:26

Re: Signalizace do AD vstupu

Příspěvek od Dex » 01 kvě 2020, 14:43

Na Arduinu je pinů dost, taky jsem si říkal, jestli by nefungoval "COVOX" (každý si jistě dle potřeby dohledá sám ;)).
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

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

Re: Signalizace do AD vstupu

Příspěvek od fulda » 01 kvě 2020, 16:22

není náhodou covox implementace R 2R ládera? :)
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

Odpovědět

Kdo je online

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