Rozšiřující deska pro Raspberry Pi Návod Dva obousměrné, bezpečně oddělené GPIO kanály
Tak, jako je možné vyvést z expanzní desky bezpečně oddělenou I2C sběrnici, tak je možné bezpečně oddělit i dva libovolné GPIO kanály. I zde lze zvolit vnější napěťovou úroveň
logických stavů 3V nebo 5V. Směr těchto dvou kanálů (vstup nebo výstup) se řídí pouze softwarově. Takže je možné kanály použít například pro připojení teploměru DS18B20, který komunikuje s RasPi po jednom drátu obousměrně (chvíli je směr přepnutý na vysílání požadavku z RasPi do čidla a pak se směr obrátí a po stejném drátu RasPi přijímá údaj o teplotě). R24 je tam jako Pull-Up právě kvůli teploměru DS18B20. Na GPIO na RasPi je sice možné softwarově připnout vnitřní Pull-Upy, které jsou přímo v procesoru, ale starší ovladač pro DS18B20 s tím nepočítal, takže je nutné ten Pull-Up připojit zvenku. Hodnota odporu R24 je v tom případě 4k7. Pro oddělení běžných signálů se ten odpor R24 neosazuje. Kolíky P29 a P30 nejsou součástí první vyrobené verze expanzní desky, ale ukázalo se, že je vhodné mít oddělené signály dostupné i uvnitř krabičky. Obvod se pak může používat pro převod 5V logických signálů z výstupů expanderů, nebo hradel na 3V úrovně, které zvládá RasPi. K testování funkce jsem vytvořil takovéto zapojení:
V raspíčku běžel program, který čekal na změnu stavu na GPIO8 a podle tohoto změněného stavu nastavil výstup GPIO7 na logickou "0", nebo "1". Program je tady: gpioshift.py Na vnější straně oddělovače ADuM1250 jsem pak měl připojený
dvoukanálový osciloskop a zaznamenával jsem odezvu v na stisk tlačítka. Tento pokus jsem opakoval s různými nastaveními úrovně vnějšího napětí (3V / 5V) pomocí propojky na trojici kolíků s označením K17. Výsledek je tady:
Na závěr jsem ještě zkoušel, jaký je přenos signálu skrz jeden kanál oddělovače:
|
úvodní strana webu AstroMiK.org |
|
poslední úprava stránky 16.2.2014 |