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

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

Datum
Vložil
Titulek

Krokový motor

Šlo by s pomocí těchto registrů ovládat krokové motorky? S tím, že by na každém výstupu byl tranzistor jako spínač? Je mi teď vcelku jedno o jaký typ motoru by se konkrétně jednalo - u všech spočívá princip funkce v tom, že se střídavě přivádí napětí na konkrétní vinutí a to by se tímto způsobem udělat dalo, ne?

Datum
Vložil
Titulek

Re: Krokový motor

Krokovy motor ovladat timhle je kravina. Tyto motory se vetsinou napaji proudem. Pohledej na ebay stepper Motor Driver, koupis je za babku a mas jistotu ze budou fungovat spravne. Tohle opravdu nema cenu stavet.

Datum
Vložil
Titulek

Re: Re: Krokový motor

vždyť on říkal že by to spínal tranzistory...teoreticky by to tranzistory šlo :) ale je to zbytečné a složité, když můžete použít již zmíněný driver, prodávají se kolem 200kč :)

Datum
Vložil
Titulek

RGB matrix

Ahoj,
slo by pres tyhle posuvny registry ovladat treba RGB 8x8 matici? S tim, ze by se ale michaly barvy... :)

Datum
Vložil
Titulek

Re: RGB matrix

Ano šlo, návod k tomu můžu někdy v budoucnu publikovat i s mícháním barev :-D

Datum
Vložil
Titulek

Re: RGB matrix

Ano šlo, jednoduše vezmeš tři posuvné registry, Ty připojíš na řádek, každý pro jednu barvu a budeš to multiplexovat se sloupci + ještě softvérová pwm :-) Youtube je toho plno i z kódy.

Datum
Vložil
Titulek

Re: Re: RGB matrix

softvérová pwm pro míchání barev

<< 241 | 242 | 243 | 244 | 245

Vyhledávání

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