Analog(D-PWM)out do> AnalogRead(Analog pin) filtr

Anthlon
Příspěvky: 13
Registrován: 21 kvě 2019, 19:47
Reputation: 0

Analog(D-PWM)out do> AnalogRead(Analog pin) filtr

Příspěvek od Anthlon » 25 srp 2020, 12:21

Zdravím,
potřebuji poradit s DC Low pass filtrem. Z jiných důvodů mířím cestou komunikace cca sedmistavové informace na jednom drátu (žádné sběrnice, žádná komunikace prostě jen dva příkazy). Mám v plánu odeslat jedním arduinem pseudo-analogovou hodnotu přes digitální PWM output a na druhém si ji na analogovém vstupu přečíst a přiřadit k jednomu ze sedmi stavů (víc jich nebude, spíše méně). Společná zem obou arduin pochopitelně, vpodstatě i společné napájení když to tak vezmu. Dopředu uvádím, že jednotlivé stavové hodnoty mohou být přizpůsobeny a v kódu počítám, že každá čtená hodnota bude mít celý rozsah možností (např 0-200 / 220 - 420 / 450-660.. na přesných hodnotách nesejde), které budou spadat pod jeden ze zjišťovaných stavů, což mam v plánu ošetřit softwarem v přijímací části hodnoty. Citlivost na změnu neni kritériem, a maximální čas mezi novou vstupní hodnotou a jejím projevem na výstupu filtru 0,5s by byl optimální. Zkuste poradit v tomto směru, děkuji.

Otázka: " Jaké součástky / hodnoty, použít pro filtr"
Našel jsem toto zapojení:
RC Filtr Arduino PWM
RC Filtr Arduino PWM
RC_filter.png (5.7 KiB) Zobrazeno 4405 x
Souhlasíte s hodnotami?

analytik
Příspěvky: 148
Registrován: 26 čer 2020, 12:48
Reputation: 0
Bydliště: Děčín

Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr

Příspěvek od analytik » 25 srp 2020, 13:31

Na první pohled budí obrázek dojem filtru napájecího zdroje a tomu bude odpovídat i napětí na výstupu filtru.
Odhadem se bude po exponenciální křivce limitně blížit špičkovému napětí z vysílací strany.
Žádnou jinou informaci bych tam asi nenašel. Určitě by se daly použít spolehlivější a přesnější metody přenosu dat, ale nechci vás tím odradit.
Jen pro zajímavost - jaká bude přenosová vzdálenost?

Anthlon
Příspěvky: 13
Registrován: 21 kvě 2019, 19:47
Reputation: 0

Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr

Příspěvek od Anthlon » 25 srp 2020, 13:43

analytik píše:
25 srp 2020, 13:31
Na první pohled budí obrázek dojem filtru napájecího zdroje a tomu bude odpovídat i napětí na výstupu filtru.
Odhadem se bude po exponenciální křivce limitně blížit špičkovému napětí z vysílací strany.
Žádnou jinou informaci bych tam asi nenašel. Určitě by se daly použít spolehlivější a přesnější metody přenosu dat, ale nechci vás tím odradit.
Jen pro zajímavost - jaká bude přenosová vzdálenost?
Velmi malá až minimální. Jednotlivá arduina budou prakticky vedle sebe. Existuje nějaké lepší řešení v tomto způsobu (jeden drát, okamžitá několikastavová informace) než podobný filtr?

analytik
Příspěvky: 148
Registrován: 26 čer 2020, 12:48
Reputation: 0
Bydliště: Děčín

Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr

Příspěvek od analytik » 25 srp 2020, 14:03

Kdyby se jednalo o stovky metrů, doporučil bych PWM modulovaný laserový paprsek a na přijímací straně fotobuňku a filtr. To by bylo originální řešení.
Skalní arduinisti by to řešili digitálním přenosem jediného signálního bajtu po dvou drátech. Proč přenášet digitální informaci analogově a opět ji převádět na digitální?

analytik
Příspěvky: 148
Registrován: 26 čer 2020, 12:48
Reputation: 0
Bydliště: Děčín

Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr

Příspěvek od analytik » 25 srp 2020, 14:35

Stačilo by z jednoho digitálního pinu vysílače poslat 1 až 7 impulsů a digitálním pinem přijímače je číst a počítat než nastane pausa.
Přenos by byl rychlý a přesný, po jednom drátu a bez sběrnice. Navýšení počtu informací nad 7 by nebyl problém.

Anthlon
Příspěvky: 13
Registrován: 21 kvě 2019, 19:47
Reputation: 0

Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr

Příspěvek od Anthlon » 25 srp 2020, 14:36

Popřemýšlím a případně přehodnotím. Spíš jde o to že vlastně použiju jeden drát na kterém se bude "vykazovat" jeden ze sedmi stavů, a v momentě kdy to druhé arduino bude mít zrovna zájem si zjistit tento stav, jen si přečte co v daný okamžik na tom drátě je. Bez sběrnice, bez navazování komunikace, bez vyrovnávací paměti, bez adresace - tam kam to vede tam si lze hodnotu zjistit, prostě nic extra. Jeden pin pro výstup a jinde jeden pin do vstupu rozlišující 7 stavů, které si pak přeložím např. do čísel 1-7. Ona ta informace neni ani tak digitální jako sedmistavová a je téměř jedno jakou podobu má během přenášení, spíš jen aby byla co nejjednodušší na zformulování do přenosu a zněj. Normální seriovou sběrnici bych si nechal pro debug. Pokud je nějaké vyloženě jednoduché podobné řešení, zkuste mi poslat odkaz na příklad.

Cílem je mít pochopitelně více takovýchto arduin za sebou v řetězu / Daisy Chain.. posléze., přičemž ten přenos je vždycky jen jedním směrem, (stále blízko sebe a po drátě).Vždycky je to o tom se přiučit, možnost jednoho drátu pro tuto funkci za cenu čtyř součástek navíc mi nepřipadala tak drahá. Pořád si myslím že si to zapojit, zkusmo nastavit, přečíst a zapsat hodnoty (dát jim nějaky bezpečný okraj) bude pořád funkční. Celková spolehlivost zařízení není až takovou obavou. Nejedná se o řídící jednotku rakety. Nechci se v tomto případě pouštět do různých adresací cílových modulů, a kdoví čeho. Ano, někdo je v tom sběhlý a vyhodnotí jiné řešení jako snadnější, možná i šikovnější a odolnější, v moji situaci by se mi hodilo toto řešení, proto se takto ptám.

Anthlon
Příspěvky: 13
Registrován: 21 kvě 2019, 19:47
Reputation: 0

Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr

Příspěvek od Anthlon » 25 srp 2020, 14:37

analytik píše:
25 srp 2020, 14:35
Stačilo by z jednoho digitálního pinu vysílače poslat 1 až 7 impulsů a digitálním pinem přijímače je číst a počítat než nastane pausa.
Přenos by byl rychlý a přesný, po jednom drátu a bez sběrnice. Navýšení počtu informací nad 7 by nebyl problém.
:idea:
Stavů víc jak 7 nebude, ale tohle mě zajímá, mohlbyste poskytnout zkušební kod pro přijímač a vysílač? (nebo odkázat na příklad).

analytik
Příspěvky: 148
Registrován: 26 čer 2020, 12:48
Reputation: 0
Bydliště: Děčín

Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr

Příspěvek od analytik » 25 srp 2020, 14:55

Vysílač by pracoval v režimu "blink". Střídavě by v cyklu FOR s počtem cyklů odpovídajícím přenášené informaci (tedy 1 až 7)
digitalWrite(OutPin, HIGH); delay(t);digitalWrite(OutPin, LOW); delay(t); a přijímač by počítal přijaté impulsy než dorazí pausa delší než dohodnutá délka. Časové prodlevy u přijímače a vysílače by musely odpovídat.
Jednodušší řešení by poskytl přenos jediného bytu (až 16 možností) po sběrnici, ale to by nevyhovělo vašemu zadání.

analytik
Příspěvky: 148
Registrován: 26 čer 2020, 12:48
Reputation: 0
Bydliště: Děčín

Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr

Příspěvek od analytik » 25 srp 2020, 15:04

Analogové řešení je neprůchodné, protože došlé informace ve tvaru PWM se vám budou hromadit na těch elektrolytech, které nejsou vybíjeny.
Velkou roli tam hraje i časová konstanta daná kombinacemi sériový odpor + paralelní kapacita a s uvedenými hodnotami nepřichází 0,5 s vůbec v úvahu.

Anthlon
Příspěvky: 13
Registrován: 21 kvě 2019, 19:47
Reputation: 0

Re: Analog(D-PWM)out do> AnalogRead(Analog pin) filtr

Příspěvek od Anthlon » 25 srp 2020, 15:05

analytik píše:
25 srp 2020, 14:55
Vysílač by pracoval v režimu "blink". Střídavě by v cyklu FOR s počtem cyklů odpovídajícím přenášené informaci (tedy 1 až 7)
digitalWrite(OutPin, HIGH); delay(t);digitalWrite(OutPin, LOW); delay(t); a přijímač by počítal přijaté impulsy než dorazí pausa delší než dohodnutá délka. Časové prodlevy u přijímače a vysílače by musely odpovídat.
Jednodušší řešení by poskytl přenos jediného bytu (až 16 možností) po sběrnici, ale to by nevyhovělo vašemu zadání.
Ano , tam počítám s tím že vpodstatě říkám vysílač a přijímač ale bude se jednat o 2x (Nx) totožné zařízení (daisy chain), a ta hodnota kterou čas od času změním a prohlásím za vysílanou by tam měla byt bez nutnosti mi okupovat program, tedy by se měla dít, a projevovat na vystupu i když bych zrovna na tom řekněme vysílacím arduinu řešil něco jiného..

Na (řekněme) přijímacím opět běží nějaky proces a ve svůj /nesynchronizovaný moment si zjistí a započítá tu aktuálně přijímanou hodnotu do vlastního procesu vyhodnocení, v procesu vyhodnotí pro sebe a zase dál předá jeden z těch sedmi stavů podle vlastního názoru/procesu uvnitř.

Odpovědět

Kdo je online

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