Raspberry Pi

Rozšiřující deska pro RasPi - průběžně aktualizováno (15.3.2014)

Dlouhodobější projekt, jehož cílem je vytvořit rozšiřující desku, která se společně s RasPi vejde do krabičky U-KP43B , a která bude mít následující funkce:

Plánované funkce Připraveno Test 1 Test 2 Poznámky
RTC obvod
  včetně záložní baterie
 ANO

ANO

ANO

PCF8583 - s možností vyvedení INT výstupu do systému
Bezpečně oddělená komunikace I2C
  (vyvedená na vnější konektor s volbou 5V / 3V úrovní)
  ANO ANO ANO ADuM1250
Bezpečně oddělené dva obousměrné 
logické vstupy / výstupy (volitelně s 5V, nebo 3V úrovní)
ANO ANO ANO ADuM1250
Možnost připojení maticové klávesnice (4x4 tlačítka)
  
 ANO ANO ANO Přes polovinu expanderu MCP23017
s vyvedeným INT výstupem
Možnost připojení znakového, nebo grafického displeje
  
 ANO ANO ANO Druhá polovina MCP23017 
s rozšířením o několik dalších signálů
16-bitový expander MCP23017
  (plně vyvedený na vnější konektor)
  ANO ANO ANO  
Čítač impulzů
  
 ANO ANO ANO PCF8583 - i tady je vyvedený INT výstup
A/D převodník 
  (8 kanálů)
  ANO ANO ANO MCP3208 se stabilizovanou referencí 2,5V
Nastavitelný stabilní generátor obdélníkových impulzů
(stovky kHz až jednotky Hz) 
 ANO ANO ANO HEF4060 s přepínatelným dělícím poměrem + PCA9685 (PWM)
PWM řízení vnějších periférií 
  (LED nebo serva)
  ANO ANO ANO PCA9685 - nakonec se mi povedlo na desku našlapat jen 8 jeho výstupů
Možnost připojení infračidla 
  (pro ovládání dálkovým ovladačem)
  ANO ANO ANO Jen místečko u kraje plošňáku s GND, 3,3V a jedním propojitelným pinem
Tranzistorový spínač pro nějakou větší zátěž
  (pískák)
  ANO ANO ANO Jeden tranzistor pro spínání pískáku   
  
Signalizace spouštění systému
   (blikací LED)
  ANO ANO ANO Popsáno v článku 19
Několik logických hradel (2x dvouvstupové NAND)
   
  ANO --- ANO Dají se použít pro spouštění čítače jako v článcích: 30 a 39 
... co nejvíce signálů volitelně (pomocí propojek) vyvedených na konektory na krabičce   ANO --- --- Zatím je možno vyvést PWM, jakýkoliv signál z GPIO, generátor, čítač .....
LED signalizace na víku krabičky
  
ANO

---

ANO

Někdy je lepší použít pro signalizaci LEDky místo displeje.
Prostor pro osazení vlastních integrovaných obvodů (SMD 2x8 nohou s možností libovolného připojení vývodů do desky  ANO

---

---

Opět zařazeno do funkcí. Našel jsem ještě trochu místa. Detail
         
 
Zrušené funkce Důvod zrušení
Teploměr pro měření teploty uvnitř krabičky
  (s komunikací přes I2C)
Ukázalo se, že je to zbytečný údaj.
Zabírá hodně místa na desce.

*
 Test 1 = funkce byla otestována na nepájivém poli
 Test 2 = funkce byla otestována na hotovém plošném spoji

 

Už teď je jasné, že se mi to všechno nevejde na jednu desku. Proto budou desky minimálně dvě.
První (hlavní) bude nad raspíčkem a bude zabírat celou plochu krabičky.
Druhá bude v "mezipatře" - v prázdném prostoru nad paměťovou kartou.
Možná ještě využiju prázdný prostor na bocích krabičky, nebo na víku vedle klávesnice (nějaká signalizace s LED)

 


V současné době (začátek prosince 2013) vytvářím návrh plošného spoje a na nepájivém poli zkouším samostatně některé funkce.

Tady je první pokus s papírovým plošňákem - ladím rozměry a uspořádání, aby se to tam všechno vešlo.
Víko s displejem a klávesnicí jsem si zatím půjčil z první krabičky:

    

  

 


25.11.2013

 - Do funkcí byla navrácena možnost připojit vlastní SMD obvod 2x7 vývodů (SOIC14) a připojit je někam do systému. 
Protože je ale druhá strana desky v těch místech již zaplněná, není možné použít pro připojení vývodů běžné dírky.
Dráty se musí k tomuto obvodu připojovat naplocho na cestičky:

 

 

 - K infračidlu byla doplněna signalizace příjmu pomocí LED.

 - K čítači impulzů byla doplněna možnost záložního napájení přes baterii - stejně, jako to má RTC.

 - Posílení některých napájecích cestiček na desce + několik bypassů přes kriticky zúžená místa.

 

 


28.11.2013

Podařilo se mi zprovoznit generátor a dělič frekvence HEF4060 s krystalem 4MHz. Když jsem to zkoušel na nepájivém poli, tak to pořád nechtělo kmitat. Přesněji řečeno, kmitalo to i bez krystalu na "krásných" 50Hz. Tak jsem připájel součástky co nejblíž k obvodu a pak to teprve začalo fungovat. 

 

 

Doufám, že na plošňáku s tím problémy nebudou. 
Snažil jsem se tam o co nejkratší spoje a na závěr jsem ještě spodní stranu kolem těch vysokofrekvenčních součástek "oblil" zemí (GND):

S dělením frekvence žádný problém nebyl. Při použití 4MHz krystalu jsou na výstupech obvodu dostupné frekvence 244Hz až 250kHz.


Signál za prvním hradlem obvodu 4060
(nedělená frekvence krystalu 4MHz)


Signál za posledním stupněm
(14x vydělená frekvence krystalu = 244Hz)

Tuto frekvenci bude možné přivést ještě do PWM obvodu PCA9685, ve kterém jí bude možné ještě dále programově dělit (až milionkrát)


3.12.2013

Testování čítače impulzů (PCF8583). 

Musel jsem trochu upravit zapojení, aby bylo možné počítat impulzy i při vypnutém RasPi. Čítač bude v tomto režimu napájený ze záložní baterie.


9.12.2013

Čekám na nějaké součástky, abych mohl pokračovat v testech.

  

Při vývoji desky mě napadlo, že by bylo dobré vyvést ven ještě komunikační linku RS232, tak jsem se tím pár dní zabýval.
Povedlo se mi rozchodit komunikaci s multimetrem METEX přes oddělovač ADM3232E.
Už začínám o RS232 připravovat další článek (zatím tam mám jen nějaké fotky a odkazy na použité zdroje).

Nakonec to ale vypadá, že se mi asi ten výstup RS232 už do krabičky nevejde (hlavně kvůli konektoru CAN-9). 


12.12.2013

Nepovedlo se mi zprovoznit funkci dvou bezpečně oddělených obousměrných GPIO  s možností volby 3V, nebo 5V napěťové úrovně.

Měl jsem v plánu použít obvod ADuM1250, který slouží ke galvanickému oddělení I2C sběrnice. Obsahuje dva obousměrné kanály (SDA a SCL) a má možnost volby napěťových úrovní na obou stranách.

Zkoušel jsem takovéto zapojení:

Začal jsem testovat výstupní směr (RasPi posílá signály ven - třeba rozsvěcuje LEDku).

Na prázdno (bez zatížení výstupů) to pracovalo dobře.
Při napájení vnější strany napětím 3,3V, se výstupní napětí se přepínalo v závislosti na vstupu, mezi úrovněmi 0V nebo 3,2V.
Při napájení vnější strany napětím 5V, se výstupní napětí se přepínalo v závislosti na vstupu, mezi úrovněmi 0V nebo 4,7V.

Stačilo ale na některý výstup připojit malou LEDku (2mA) přes odpor 1k a výstupní napětí kleslo na 1,6V.
Při takto malém napětí už se LEDka nerozsvítla.

Když jsem místo LEDky s odporem připojil RTC obvod, který komunikuje přes I2C, tak to fungovalo.

Závěr je tedy takový, že se ADuM1250 nedá použít pro spínání větších proudů.

Budu tedy zkoušet ty GPIO oddělit nějak jinak. 


13.12.2013

Odvolávám včerejší výsledek testu. Všechno už je v pořádku. Problém byl v moc velkém Pull-Up odporu na vnější straně převodníku.

Na výstupech jsou tranzistory s otevřenými kolektory, takže když jsou tranzistory rozepnuté (výstup je v logické "1"), teče do připojené LEDky proud z Vdd2 přes Pull-Up odpor.
Původně jsem tam měl ty Pull-Upy 10k. Další odpor, který jsem měl v sérii s LED měl hodnotu 1k .

Vypočetl jsem, že kdybych chtěl přes ty dva oddělené výstupy spínat nějakou zátěž, přes kterou by bylo třeba prohnat proud 20mA, musely by Pull-Up odpory mít hodnotu 250 Ohmů (při napájení 5V).
Trochu problém je v tom, že když bude výstup v logické "0", tak tento proud poteče přes ten sepnutý výstupní tranzistor.  
Podle katalogového listu by to ten tranzistor měl zvládnout (doporučený proud je 30mA, maximální 100mA).
Zdá se mi ale, že je to zbytečný odběr ze zdroje (2 kanály po 20mA). Možná, že tam nakonec ty Pull-Upy vůbec dávat nebudu a budu je připojovat až zvenku podle potřeby.

Na závěr testování této funkce jsem zkusil na jeden z těchto oddělených výstupů připojit teplotní čidlo DS18B20 a také to fungovalo bez problémů. Dokonce bylo možné si zvolit napájení toho čidla 3,3V nebo 5V.

Protože toto čidlo komunikuje pomocí jednoho vodiče obousměrně, je to důkaz, že zamýšlená funkce obousměrného oddělení GPIO signálů funguje.


 

21.12.2013

1) Testování RTC obvodu. Upravil jsem návrh plošňáku, aby bylo možné použít buď obvod PCF8583, nebo PCF8563, který má ještě jeden výstup navíc. Uvažoval jsem i o dříve popisovaném RTC obvodu BQ32000, který má programovatelné doladění frekvence.
Pak jsem ale zjistil, že nedokáže pracovat na 5V. Tahat tam k němu ještě 3V napájení a třívoltovou sběrnici I2C už je nad mé síly.

 

2) Testování displeje. Displej už jsem připojoval v jednom z minulých článků. V tom problém nebude. Dnes jsem se chtěl hlavně zaměřit na možnost podsvícení displeje pomocí jednoho z kanálů PWM obvodu PCA9685. Tím by bylo možné plynule regulovat jas podsvětu. Funguje to skvěle.

 

3) 25.11. jsem přidával možnost osazení vlastního SMD obvodu v pouzdře SOIC14. Dneska jsem to ještě o 2 nohy rozšířil na SOIC16.

 

4) Zkouším doplnit RS232 komunikaci na další destičku. Možná se nakonec do tý krabičky vejde.

 

5) Vnitřní oddělovač I2C sběrnice mám naplánovaný TCA9517. Protože mi ale z Texasu přišel vzorek s pouzdrem VSSOP8 místo SOIC8, nemám na něj připravený plošňák. Zkusím ho sehnat jinde, ale kdyby se to nepovedlo, tak jsem už teď plošňák připravil i pro variantu oddělovače s obvodem ADuM1250.
Liší se jen v jedné noze. TCA9517 má mít tu nohu ve vzduchu (nebo v "1"), ale pro ADuM1250 je to GND.
Taky je prohozené označení SDA/SCL, ale to na funkci nemá vliv:

 

 


29.12.2013

Ověření poslední plánované funkce - ovládání pískáku.

Ještě že jsem to testoval, protože v původním návrhu jsem měl vymyšlené ovládání pískáku z GPIO přes obyčejný NPN tranzistor. Jenže jsem si nějak neuvědomil, že po zapnutí RasPi se na těch GPIO může objevit "1", což způsobuje samovolné pískání při startu RasPi.
Předělal jsem tedy návrh plošňáku na PNP tranzistor. Také jsem ověřil, že je možné spínat buď pískák (BMT1206), který už má v sobě zabudovaný přerušovač, nebo se může použít reproduktorek (KSS1206), který je možné řídit pomocí PWM obvodu a zajistit tak pískání různou frekvencí.

Taky se mi povedlo na plošňák našlapat ještě další 2 výstupy z PWM obvodu (PCA9685).


9.1.2014

Objednal jsem výrobu plošňáku. 
Na cenu se raději ani neptejte. To mě trochu zaskočilo.

Ale co ....  jednou za čas si takovouhle "srandu" můžu dovolit.

Zkoušel jsem oslovit různé výrobce, ale za stejnou práci jsou ty ceny všude podobné.
Někde sice mají ceny výrazně nižší, ale tam zase třeba nejsou schopni vytvořit prokovené díry. Někde dokonce díry ani nevrtají.

Tak mi držte palce, ať to vyjde na první pokus ...

 


21.1.2014

Plošňáky dorazily.
Na první pohled se zdá být všechno tak, jak jsem plánoval. 
Mám teď ještě nějakou jinou práci, takže na pár dní musím tento projekt odložit, ale už se těším na testování funkcí.

I ty nejtenčí cestičky, ze kterých jsem měl docela strach se podařilo vyleptat hezky:

 


24.1.2014

Tak jsem dneska chvíli pracoval na té expanzní desce, ale hned se objevila spousta problémů.

V návrhu jsem absolutně nezvládnul mechaniku. Sice jsem si to všechno nejdřív zkoušel vytisknout na papír a poskládat do krabičky, ale se skutečnými plošňáky to je jiné.

Díry, které jsou o nějaký milimetr ujeté, ani tak nevadily - to se dá srovnat pilníkem.
Trochu horší to bylo s rohy desek. Tam už to ujelo docela hodně. Naštěstí jsem si tam nechával rezervy, takže se to také dalo dopilovat.

Největší chyba ale byla v přechodu mezi horní a dolní deskou. Plánoval jsem ty desky napojovat pomocí konektorové lišty. 
Nevím jak je to možné, ale ty díry jsou posunuté skoro o 5 mm.
Takže nakonec ty desky budu muset propojit nějakým kablíkem, nebo budu muset vymyslet jiný způsob uchycení spodní desky, aby na sebe ty konektory pasovaly.

Hodně zbytečné práce jsem si přidělal také použitím složených 6-pinových dutinkových lišt, místo jedné 26-pinové, která má sloužit k propojení expanzní desky a GPIO konektoru na RasPi.
Protože mám expanzní desku posazenou nad Raspíčkem o trochu výš, než je obvyklé, musel jsem sehnat dutinkové lišty s dlouhými vývody. Nakonec se mi přes e-Bay povedlo takovéto lišty sehnat, ale byly bohužel jen šestipinové. Problém je v tom, že se dvě takovéto lišty nedají nasunout těsně vedle sebe. Takže jsem je musel z boků trochu obrušovat.

Tady jsou nějaké fotky:


Horní deska s vypilovanými rohy.


Pohled z druhé strany.


Na připájení PCA9685 jsem musel použít mikroskop.


Spodní desku bych potřeboval posunout ještě skoro o 5mm směrem k RasPi.


Z takovýchto segmentů jsem skládal 26-pinový GPIO konektor.


Nevypadá to moc hezky - šlo to dost špatně. 
Aby to mechanicky drželo pohromadě, nasunul jsem na vývody ještě plastové části z běžných kolíkových lišt.

 


29.1.2014

Ještě čekám na nějaké součástky, ale velkou část expanzní desky už mám osazenou.

Už jsem zkusil dokonce připojit desku k raspíčku a žádný výbuch se nekonal.
Dokonce i I2C komunikace mezi vnitřními obvody šlapala bez problémů na první pokus.

Našel jsem sice zatím dvě chyby v návrhu, ale všechno se to dalo zvládnout jednoduchým proškrábnutím cestičky, nebo překlenutím drátkem. Čekal jsem, že to dopadne hůř.

Začal jsem také testovat jednotlivé funkční bloky expanzní desky.

Dneska jsem zvládnul otestovat generátor a dělič frekvence s obvodem HEF4060.
Detailní informace zde:
   Generátor a dělič frekvence

 


30.1.2014

Otestována funkce PWM.

Detaily zde:
  PWM - obvod PCA9685


1.2.2014

Otestována funkce logických hradel a čítače impulzů.

Detaily zde:
  Blok logických hradel
  Čítač - PCF8583


2.2.2014

Otestována funkce přijímače dálkového ovládání (infračidlo).

Detaily zde:
  Infračidlo dálkového ovládání


4.2.2014

RTC:

Snažil jsem se navrhnou desku pro různé RTC obvody. Ve výsledku se to ale moc nepovedlo a v původním návrhu bylo možné osadit jen obvody PCF8583, nebo PCF8563.

Ani jeden z těchto obvodů není možné doladit pomocí kalibrační konstanty zapsané do registrů - ladí se pomocí kapacitního trimru. 

Proto jsem ještě trochu vylepšil návrh menší desky, aby bylo možné volitelně použít i další RTC obvody.
Hlavní změna je v tom, že se dají připojit o obvody, které jsou napájené maximálně 3,3V a komunikují pomocí třívoltové I2C sběrnice (například BQ32000).
Nebo je možné použít obvody řady MCP7940, které mají trochu jinak zapojený krystal.

Tento nový návrh ale nemůžu vyzkoušet, protože nemám novou desku vyrobenou.

Starou (aktuální) variantu s obvodem PCF8583 jsem otestoval a funguje: RTC1

Neověřená příprava pro novou (univerzálnější) desku je tady: RTC2


8.2.2014

Testování LED, která bliká při spouštění systému:

Detaily zde:
  Blikací LED


9.2.2014

Testování 16-bitového expanderu MCP23017.

Detaily zde:
  Expander

 


11.2.2014

Testování spínacího tranzistoru pro pískák.

Předpokládal jsem, že tohle bude ta nejjednodušší věc, na které se nedá nic zkazit.
Někde jsem ale udělal chybu a tahle funkce nepracuje tak, jak jsem plánoval.

Funguje například ovládání piezoreproduktorku, ale větší zátěže to nespíná. Budu to muset ještě domyslet a předělat.

Zatím jen ukázka pískání, které je řízené obvodem PCA9685:

 


15.2.2014

Povedlo se mi rozběhnout ten spínací tranzistor pro pískák.

Původní zadání, které jsem si vymyslel, bylo:
===================================
Vytvořit univerzální prostor pro připojení reproduktorku (pískáku) který by bylo možné ovládat buď přímo z GPIO na RasPi (3V logické úrovně), nebo by bylo řízení prováděno z jednoho z PWM výstupů PCA9685, nebo z výstupu expanedru MCP23017 (5V logické úrovně).
Použité reproduktorky mohou být bez vnitřního oscilátoru, nebo se může jednat o piezoměniče s vnitřním oscilátorem.
Zapojení bude možné použít alternativně i pro spínání větších zátěží (relé).

===================================


V první fázi jsem použil obyčejný NPN tranzistor v nejjednodušším zapojení se společným emitorem, který je přes spínaný "spotřebič" napájený z 5V.
Na první pohled se zdálo, že toto zapojení bude bezproblémové. I všechny testy na nepájivém poli dopadly dobře.
Ukázalo se však, že pokud zůstane vstup tranzistoru zapojený na GPIO, dojde při zapínání RasPi k sepnutí tranzistoru.
Toto sepnutí je způsobeno logickou "1", která se automaticky nastaví na GPIO a kterou je možné změnit na "0" až když RasPi naběhne. To trvá několik desítek sekund. Během této doby piezoměnič píská, nebo je relé sepnuté.


Proto jsem místo NPN tranzistoru použil tranzistor PNP. Aby bylo možné tranzistor ovládat 3V logickými úrovněmi i 5V logickými úrovněmi, bylo třeba tranzistor napájet 3V.
Tím jsem si ovšem přidělal víc problémů, než užitku.
Kvůli napájení 3V už nebylo možné spínat větší zátěže (relé), protože z 3V napájecí větve je možné odebírat proud maximálně 50mA.
Vyřešil se tím sice problém spínání pískáku, který byl při startu systému připojený na GPIO, ale v případě, že by byl pískák (nebo relé) připojený na výstup z PCA9685, tak by opět docházelo k sepnutí při startu systému, protože po zapnutí napájení PCA9685 přepne své výstupy automaticky do "0". Takže při použití PNP tranzistoru to znamená jeho sepnutí.

Takže ani použití PNP tranzistoru nebylo vhodné.

Na internetu se mi ale povedlo získat zajímavou informaci:
Některé GPIO se při zapnutí napájení sice přepnou do "1" , ale jiné GPIO se přepnu do "0".
Stačí tedy zajistit, aby pískák (nebo relé) nebylo ovládané z těch GPIO, které startují v "1"
   (konkrétně se jedná o pět GPIO signálů s označením GPIO2 , GPIO3, GPIO4, GPIO7, GPIO8).
Při testování jsem se trefil právě do GPIO7, který startoval v "1".

Detail zde: Tranzistor pro spínání reproduktorku

 


16.2.2014

Testování bezpečně oddělené I2C sběrnice a dvou GPIO kanálů s možností volby napěťové úrovně komunikace.
Detaily :
- I2C shifter
- GPIO shifter

 


18.2.2014

Testování připojení maticové klávesnice.

Detaily zde: klávesnice

 


22.2.2014

Zkouška rozšiřujícího konektoru uvnitř krabičky (například pro LED signalizaci)

Detaily zde: LED-konektor

 


26.2.2014

Testování displeje

Detaily zde: Displej

 

 


8.3.2014

A/D převodník MCP3208 

Základem byl v podstatě tento článek: A/D převodník 

A/D převodník sice funguje, ale z nepochopitelného důvodu jsem při návrhu plošňáku připojil 4 ovládací signály (CLK, Data-IN, Data-OUT a Chip Select) přímo na GPIO, čímž jsem si tyto GPIO "zablokoval" pro použití v jiných aplikacích.

Daleko lepší by bylo říící signály vyvést na kolíky a v případě potřeby je propojit na jakékoliv GPIO (nebo na výstupy některého z expanedrů).

Také jsem v návrhu použil pro stabilizaci referenčního napětí obvod TL431, který je zapojený jen jako Zenerova dioda. Lepší by ale bylo použít ho i se dvěma odpory pro možnost změny referenčního napětí.

Další vylepšení by mohlo být v napájecím napětí, které by bylo možné přepnout na 5V. Tím by bylo umožněno zvětšit referenční napětí o několik voltů a tím by se zvětšil i vstupní rozsah měření. Samozřejmě by v tom případě nebylo možné ovládat A/D převodník přímo přes GPIO konektor na RasPi, který by 5V signály nevydržel, ale bylo by možné řídit převodník přes nějaké 5V výstupy z expanderu. 

Určitě by bylo dobré dodělat na vstupy převodníku děliče napětí.

 

Tady popis té první (vyzkoušené) varianty - A/D převodník V1

Tady je popis připravované novější verze - A/D převodník V2


9.3.2014

Popis několika dalších bloků expanzní desky:

- Napájení

- Převodník komunikace I2C (pro vnitřní obvody)

 


12.3.2014

Další funkce připravované do novější varianty expanzní desky:

- odporové děliče napětí

- 4 vnitřní LED pro signalizaci logických stavů

 


15.3.2014

Popis dalších připravených funkcí nové expanzní desky:

- dvě mikrotlačítka

- popis konektoru pro propojení hlavní desky a desky s RTC + expanderem 

 


 

 


úvodní strana webu AstroMiK.org

poslední úprava stránky 15.3.2014