Ochranný obvod pre WS2812b komunikáciu

No samozrejme sú na to vzorce.
V prvom rade Maxwellove rovnice.

sk.wikipedia.org/wiki/Maxwellove_rovnice

Tými spočítaš úplne všetko :slight_smile:

Ale ak by sa Ti nechceli rátať integrály, derivácie a divergencie, dajú sa použiť aj jednoduchšie vzorce.

V prvom rade je potrebná statická analýza:

Ak máš priamo na pine súčiastky pull up o 5V odpor 10k a súčiastka potrebuje mať na vstupe pre log.L maximálne 0,8V a Tvoj procesor má pre log L na výstupe maximálne 0,3V, potom sériový odpor musí byť menší ako:

(0,8-0,3)/ (( 5 - 0,8)/10k) = 1190ohm

(jedná sa o vymyslený príklad)

Ak by ten odpor nebol 10k, ale 100k, tak Ti vyjde maximálna hodnota sériového odporu v statickej analýze 11,9kohm.

Tu však treba zohľadniť aj vstupný prúd do pinu nasledujúceho obvodu.
Ak je vstuný prúd 1nA, tak ten zodpovedá vstupnému prúdu cca 5Gohm.
Ten paralelne so 100kohm výslednú hodnotu odporu moc neovplyvní. Ale ak by mal byť vstupný prúd 100uA, potom je už vstupný odpor cca 50kohm a vo výsledku so 100kohm je vstupný odpor 33kohm. a s tým by sa pre daný účel 11,9kohm moc nemuselo mať rado.

Takže ak je vstupný prúd do integráča menší ako 100nA pri Ucc 5V, pri použití pull up rezistoru menšom ako 50Mohm môžeš v statickej analýze vstupný odpor zanedbať. Pri výpočte sériového odporu nebude chyba väčšia ako cca 1%.

Napríklad MCU Atmega328 má vstupný prúd 1uA. To pri napájaní 5V zodpovedá vnútornému odporu 5Mohm. Pull up alebo pull down rovný ako 100kohm môže vstupným prúdom do pinu spôsobiť napäťový úbytok cca 2% z Un, takže od 0,1V (pull down) po 4,9V (pull up).
Tieto hodnoty sú prvoplánový kvalifikovaný odhad, takže ma prosím nekameňujte za akceptovateľné nepresnosti a obhrublosti.

Všetko to má slúžiť k tomu, aby si respondent uvedomil súvislosti, či je odpor 100k ako pull up dostatočný alebo nie.

Samozrejme, z výpočtu sériového odporu volíme hodnotu o jeden krok v rozložení hodnôt E12 nižší. Takže ak bude výsledok 329,1R, potom zvolíme dostupnú hodnotu z radu E12 nie 330R ale 270R, alebo nižšiu.

V druhom rade dynamická analýza:

MCu kmitá nožičkou v nejakom rytme. Dôležité je, aby najrýchlejšia zmena na vstupe pinu LED zodpovedala jej katalógovým údajom.
Priebeh napätia na RC člene, kde R je hodnota sériového odporu a C je parazitná kapacita závislá od dĺžky kábla a ostatných parazitných zemí v okolí signálu je daná vzťahom napríklad v zmysle článku na wiki

cs.wikipedia.org/wiki/Doln%C3%AD_propust

samozrejme, že parazitnú kapacitu nepoznáš. Takže najlepšie je pustiť do systému signál s maximálnou frekvenciou aká je rozumná. Napríklad nemá zmysel meniť jas statickej ledky častejšie ako 1x za 10ms-1000ms v závislosti od použitia a zas zmenu svitu LED rýchlejšiu ako 1x za 10 - 20ms ľudksé oko prakticky nezachytí.
Ak posielaš do LED 3x8bitovú informáciu, pri čase zmeny 10ms stačí použiť maximálnu frekvenciu pre jednu led 10ms/24 =416us. Pozor, zmena signálu môže byť najrýchlejšia 208us, lebo je to čas pre polperiodu.

Ak je tých LED 10ks a je nevyhnutné meniť jas 1x za 10ms, potom bude maximálna požadovaná frekvencia cc 20us. To zodpovedá prenosovej frekvencii 50kHz. Aby boli hrany ako tak kolmé, prenosová frekvencia RC clena by nemala byť menšia ako 500kHz. Samozrejme za určitých okolností to môže celé fungovať aj pre nižšiu medznú frekvenciu. Ale ak chceš ísť s návrhom na istotu, moc by som s tým nehýbal. Upozorňujem, že pre správne fungovanie musia byť splnené podmienky statickej analýzy. A to v celom teplotnom pracovnom rozsahu.

No a pre hraničnú frekvenciu 500kHz závisí hodnota R od hodnoty parazitnej kapacity. Tú ale nepoznáš.

Takže tu konečne prichádza priestor pre empirickú skúsenosť toho ktorého zapojenia a tej ktorej hw konštelácie. Najjednoduchšie je poslať na výstup pinu MCU obdĺžnikový signál 1:1, zobrať osciloskop a pozrieť sa na tvar signálu na vstupe DIN LED. Ak je vstupný signál v úrovni log. L dostatočne dlho a to isté platí aj pre signál v úrovni log, H, máš vyhraté. A buď môžeš ďalej zvyšovať hodnotu sériového odporu, alebo sa môžeš s už nastavenou hodnotou uspokojiť.

Zas na druhej strane nemá zmysel zvyšovať hodnotu sériového odporu do aleluja.
Podľa datasheetu k ATmega328 je maximálny prúd per pin 40mA. Ak by si aj škrtol po druhom konci odporu tvrdým zdrojom napätia 24V, na obmedzenie prúdu do procesora ktorý by mal vypnuté napájanie na bezpečnú úroveň, stačí hodnota odporu 600R.

Preto si myslím, že hodnota 1,5kohm pre sériový odpor je prakticky maximálna. Nemá význam ju zvyšovať, pokiaľ nehrozí krátkodobý náhodný dotyk s napätím väčším ako 50V.

Zas na druhej strane, ak Ti signál v mieste pinu DIN LED prichádza tvarovo v poriadku, aj pri 1kohm, nemá zmysel hodnotu sériového odporu znižovať. Nič by to neprinieslo a k ničomu by to neprispelo.

Ako som uviedol, základom je osciloskop.

Ak nemáš, tak by som uviedol typ.
Veľmi sa mi na prácu s MCU osvedčil:

tme.eu/sk/details/410-321-k … scovery-2/

okrem toho, že je dvojkanálový, vie fungovať aj ako generátor a logický analyzátor. Šírka pásma je 30MHz pri 100MSPS, ale pre bežnú prácu bohate postačí.