Lekce 12 - Posuvný registr 74HC595

16.03.2013 19:09

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řeba pouze 3 piny na Arduinu. (pozn. v zapojení posuvných registrů v kaskádě je počet výstupů mohonásobně vyšší - vysvětlíme a ukážemě 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é kontakní 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 registu. 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 vapadat 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álen 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 spupštění můžete, vidět vytvořili jsme si takové běžící světloa. 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 regostu je nezapojen. Jedná se QH'. Z tohoto pinu tzv. přetečou data, která byla v registu. Toho můžeme využít a zapojit další posuvný regist. 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 zakládní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ý regist (nejdrívě se samozřejmně 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 dipleje. Kód, který je pod obrázkem počítá s tím, že číslovky mají společný +, a jednotlivé segmenty se rozsvicují přivedením GND (země) na jednotlivé vývody LED dipleje a samořejmně přes adekvátní odpor. (U mě opět cca 1,3 kOhm).

Na přolož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ě naschledanou.

Zpět

Diskusní téma: Lekce 12 - Posuvný registr 74HC595

Datum
Vložil
Titulek

Jak prectu data pro 74hct595

Potrebuji arfuino poutit presne obracene nez je ve vasem prikladu. Tedy data z jineho zarizeni urcene pro 74hct585 zparcovat arduinem. Pouziji shiftin?? Poprosim o priklad dekuji

Datum
Vložil
Titulek

Re: Jak prectu data pro 74hct595

Pouzij piso shift 74hc166

Datum
Vložil
Titulek

led 8x8x8

http://www.instructables.com/id/Arduino-Mega-8x8x8-RGB-LED-Cube/?ALLSTEPS

Datum
Vložil
Titulek

Paralerní zapojení

Ahoj, chci se zeptat jestli je možné tyto registry zapojit paralerně 1 registr 1 vyvod a takhle to udělat min 3x (RGB LED). Já když to tak udělám tak mi u jednoho registru buďto svítí všechny a nebo žádný, zapojený to mám správně(pokud teda nemůže mít na to vliv různý pin na arduinu)

Datum
Vložil
Titulek

Re: Paralerní zapojení

Tak už jsem chybu našel, chyba byla v "zapojení", zkoušel jsem si to na desce nepájivých spojů a po čase mě napadlo jestli se mezi sebou nemůžou nějak ty konektory zkratovat tak jsem si udělal DPS a to fungovalo takže chyba byla ve špátné desce (nevím jak je ta deska ve vnitř udělaná zda-li to je možný ale bylo to tímto), teď mi to už vše funguje tak jak chci. A to že se registry dají dát i paralerně už vím taky, byla to pouze otázka ze zoufalosti jelikož jsem to měl zapojený jak paralerně tak i sériově ale ani jedno mi nefungovalo.

Datum
Vložil
Titulek

To Opportunity Seekers Who Would Like To grasp earphone But Are unable to Get Rolling
http://www.louisfusco.com/app/pandora3.asp?pandora-animal-bead-gold-rocking-horse-on-sale-p-300.html

Datum
Vložil
Titulek

Funkce mode

Dobrý den.
Je možné použít funkci mode pro několik různých efektů, které by se přepínaly tlačítkem? (něco jako blinkr na kolo).

Datum
Vložil
Titulek

Náhrada za 74HC595

Může být 74HC595 nahrazen CMOS TI TEXAS INSTRUMENTS 4094 DIP16 ?
http://www.gme.cz/cmos-ti-texas-instruments-4094-dip16-p427-083
Díky za odpověď.

Datum
Vložil
Titulek

Re: Náhrada za 74HC595

Myslím, že by to mělo jít. Ale jsou jinak umístěné piny, pozor na to. Přečtěte si dokumentaci :)

Datum
Vložil
Titulek

dotaz

Dobrý den, děkuji za prima návod, pomohl mi pochopit další funkci arduina :-) Chtěl bych se zeptat, jaké je další možné využití registrů? Dají se použít i na něco jiného než na blikání LED diod? Děkuji za Vaši práci. Karel

1 | 2 >>

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.