Lekce 12 – Posuvný registr 74HC595

V dnešním dílu si něco řekneme o posuvném registru 74HC595 (Shift Register). Dále si ukážeme několik příkladů jeho využití. Takže co vůbec posuvný registr dělá? V zásadě je to soustava klopných obvodů, kterými se logická informace posouvá dále pomocí hodinového impulsu. K vysvětlení posuvný registr má celkem má celkem pro nás potřebné 3 vstupy (SER, SRCLK, SCLK)  a celkem v našem případě 8 výstupů (QA – QH).

Z toho již vyplývá trošku, že k ovládání 8 výstupů je zapotřebí pouze 3 piny na Arduinu. (pozn. v zapojení posuvných registrů v kaskádě je počet výstupů mnohonásobně vyšší – vysvětlíme a ukážeme později). K vysvětlení samotné funkce. Když přijde hodinový signál na SRCLK posune se logická hodnota se SER do posuvného registru. Pro naše účely tam pro vysvětlení takto posuneme do obvodu 8 různých hodnot. Takto ovšem můžeme do registru zapisovat pouze když bude na vstupu SCLK logická 0. Po zápisu a přepnutí SCLK do stavu logické 1 se data zobrazí na výstupech.

Pro naše účely si obvod zapojíme. Budeme potřebovat nepájivé kontaktní pole, posuvný registr 74HC595, led diody ( v mém případě jsem použil LED baragraf), odpory k diodám (1,3 kOhm), propojovací kablíky. Nejdříve si na nepájivém kontaktním poli zapojíme napájení posuvného registru. U tohoto typu je to +5V na vývodu 16 a GND na vývodu 8. Potom ještě připojíme vývod 10 na +5V a vývod 13 na GND. Podle obrázku obvodu – zapojení vývodů zapojíme vstup sériových dat na pinu 14 (SER) do Arduina pin 2 (modrý kablík na fotu) a hodinový signál vývod 11 (SRCLK) na Arduino pin 4 a nakonec zapojíme RCLK z vývodu 12 na Arduino pin 3. Výstupy z registru jsou na vývodu 15 (to je Qa) a dále na vývodech 1 – 7 (Qb – Qh). Ty povedou k LED diodám na + a dále přes odpor (nutno spočítat u mě cca 1,3 kOhm – spíš víc než míň). Potřeba je tedy 8 ledek pro jeden registr.

Obrázek zapojení pro ilustraci s Arduinem UNO (pozor na nastavení pinu pro komunikaci v programu !!! (obrázek převzatý ze serveru abs.stijncoppens.com)

Pro větší přehlednost jsem registr zapojil na 2 nepájivé kontaktní pole, ale s přehledem se vejdou i na jedno. Na obrázku níže zapojení napájení.

Zapojení napájení a vývodu 10 a 13

Kompletně zapojený obvod i s LED diodami (LED baragraf), na obrázku je chyba označená oranžovou šipkou – nějakým nedopatřením se vývod obvodu 10 dostal na GND místo na +5V (ač je červený a svou orientaci značí jasně :-). Prosím tedy přepojte pokud nemáte na +5V. V předchozím obrázku tato chyba není.

Na tomto obrázku je jasné, že k ovládání posuvného registru stačí 3 piny z Arduina

Program není složitý, jak sami můžete vidět:

Pokud jste vše správně zapojili, výsledek by měl vypadat jako na obrázku níže. Dle programu jsme do Arduina odeslali hodnotu 10101010, podle které se nám výstupy nastavily.Odeslání proběhlo pomocí funkce ShiftOut, ketrá nám právě sama odešle i s hodinovým signálem data na určený pin. Zkuste si sami změnit binární hodnotu a uvidíte, že i výstup bude jiný.

Na obrázku svítí každá druhá LEDka z prvních 8. Poslední 2 nejsou zapojeny, prože výstupů je jenom 8

Aby jsme neposílali do registruje jen jednu 8 bitovou hodnotu, trošku si program upravíme:

Jak po spuštění můžete, vidět vytvořili jsme si takové běžící světlo. Efekt je uložen v poli data, kde máme uloženo 14 8bitových hodnot. Sami si sekvenci můžete upravit podle svého, nebo jí i rozšířit.

Nyní si vysvětlíme jak zapojit dva registry do kaskády. Jak jste si všimli, jeden vývod tzv. posuvného registru je nezapojen. Jedná se QH’. Z tohoto pinu tzv. přetečou data, která byla v registru. Toho můžeme využít a zapojit další posuvný registr. Data z QH’ budou zapojena do vývodu SER (14) na registru.

Zapojení s Arduinem UNO a 2 registry

Na obrázku je videt modrý vodič z QH’ (9), kterým se posouvají data do druhého registru na SER (14) 

Kód pro toto zapojení se neliší skoro vůbec od našeho základního kódu s jedním posuvným registrem:

Pro efekt běžícího světla je kód zde:

Jak můžete v kódu vidět data do registru pošleme pomocí funkce shiftOut() dvakrát. První pro druhý registr (nejdříve se samozřejmě načtou do prvního) a podruhé pro první registr (při druhém volání funkce se data posunou z prvního do druhého).

Aby, jsme také registry mohli využít také smysluplně zkusíme si připojit k registrům také 2 číslice 7-segmentového displeje. Kód, který je pod obrázkem počítá s tím, že číslovky mají společný +, a jednotlivé segmenty se rozsvěcují přivedením GND (země) na jednotlivé vývody LED displeje a samozřejmě přes adekvátní odpor. (U mě opět cca 1,3 kOhm).

Na přiloženém videu můžete vidět, že jsem připojil v jednom případě také třetí registr. Registrů můžete za sebou zapojit kolik chcete. Dají se využít i v mnoha jiných případech, ale to je už na vás. Tak doufám, že vše bylo pochopeno a příště na shledanou.

Translate »