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.
Na rozdíl od I2C oddělovače není možné tyto dva GPIO kanály úplně galvanicky oddělit.

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. 
Ve skutečnosti to tlačítko nebylo, jen jsem ručně spojoval dva dráty, takže je na průbězích vidět zakmitávání. Budu o tom ale psát jako o tlačítku.

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:


Výstupní úroveň napětí nastavena na 5V.
Červený signál je tlačítko, žlutý je výstup.
Hezky je vidět zakmitání "tlačítka".
Zpoždění odezvy je způsobeno GPIO pollingem a programem.

 


Výstupní úroveň napětí nastaveno na 3V.

 

 


Na závěr jsem ještě zkoušel, jaký je přenos signálu skrz jeden kanál oddělovače:


Červený signál je tlačítko (vnější napětí je nastaveno na 5V). 
Žlutý signál je GPIO8 (vstup do RasPi).
Záměrně jsem se snažil "tlačítkem" vyvolat zákmity, aby byl vidět přenos signálu.
Ze signálů je vidět, jak se 5V úroveň v obvodu ADuM1250 sníží na 3V, se kterými je schopné pracovat RasPi.
Z obrázků se může zdát, že jsou signály stejně vysoké, ale kanál 1 má poloviční zesílení (2V/dílek), než kanál 2 (1V/dílek)
Zpoždění signálů je neměřitelné.

 

 


Stejné zapojení, jako v předchozím případě, ale výstupní napětí je nastaveno na 3V.

 


úvodní strana webu AstroMiK.org

poslední úprava stránky 16.2.2014