Blinkenlichten a úloha drzosti v elektronice.

1. června 2014 v 5:37 | Petr |  Elektro
Dnešní článek by klidně mohl vyjít ve vidlákovu elektru pod seriozním názvem "Rošíření počtu pinů mikrokontrolérů" a mohl by se tvářit šíleně věděcky, ale dnes to nebude jenom o blikání LED diodami, ale spíše o tom jaká složitost elektrického obvodu je "přiměřená složitost".

Vždy je totiž možné postupovat "akademicky" vzít "učebnicové zapojení" a to prostě okopírovat. výsledkem budou elektrické obvody důkladné a seriozní, ve velké krabici s velikými přepínači, konektory atd.
Pak můžeme postupovat cestou "čínské hračky" kdy vyhazujeme z elektrického obvodu komponenty tak dlouho až to přestane fungovat. Proč stavět harmonický oscilátor, když z antény RC autíčka poleze i hradlem vyrobený pravoúhlý signál ? Proč dávat krystal i do přijímače, když stačí udělat místo něho RC oscilátor a mezifrekvenční filtr nahradit kondenzátorem aby i "ujetá mezifrekvence nějak prolezla" ne?

Je vám jasné, že s oběma přístupy se neztotožňuju a místo toho razím teorii "geniální jednoduchosti" kdy obvody podávají výkon jako "školní zapojení" ale přitom jsou jednoduché jako "RC autíčko ze Shangaje". Tedy tato jednoduchost není totéž co "ošizenost". A taky jednoduché obvody tohoto typu nebudete produkovat tím, že budetě o problému vědět méně než učebnice. Smutné je že jednoduchost tothoto typu se rodí přes zkušenosti, které často přesahují učebnicové kapitoly a jsou lemovány nefungujícími prototypy. Příkladem budiž kmitočtová ústředna a "dva oscilátory na jednom čipu" které jsem tam vestavěl (poté co 2 předchozí prototypy byly úplná katastrofa).


Dnes tedy zabrousíme do oblasti "blinkenlicten" alias LEDek, které má mít každý robot aby jejich velevědeckým blikáním zaujal dětičky a páníčkovi už na dálku signalizoval své "vnitřní stavy". Když nastudujete učebnicové zapojení, dozíte se, že pokud nemáme dost pinů procesoru, na které můžete připojit LEDky přímo dělá se to takto: Vezme se 74HC595 - posuvný registr, který má 3 vstupy DATA, CLOCK a OUTPUT_ENABLE. Nejprve se to které LEDky mají svítit "naclockuje" do posuvného registru a pak se pinem OUTPUT_ENABLE uložená data vypustí ven a tím se nová kombinace LEDek bleskově
rozsvítí.


Pokud tedy máte mít někde na vnějším povrchu robota LEDky musíme k nim přivést 3 žíly datového kabelu + 2 žíly napájení. Což není kompatibilní s nejoblíbenějším stylem "USB drátů" kde jdou robotem kablely s +5V, ZEMí, DATA A a DATA B. Jak tedy z toho ven ? Vykašlat se na bleskové přepínání - zapomeňte na 74HC595 a místo toho použijte 74HC164 - ten nemá žádný pin OUTUT_ENABLE - a tedy změny v datech se projevují okamžitě. To znamená, že při "clockování" dat do registru budou LEDky ošklivě blikat !
napíšeme si tedy v AVR Assembleru clockovací proceduru abychom měli představu jak ošlivé to bude :

LED_Write: ;Vystup bytu do posuvneho registru LED na predku robota Vstup je R16 (LEDINPUT)
ldi count, 8 ; prenos 8 bitu
push LEDINPUT
com LEDINPUT ; negace bitu - DIODA SVITI KDYZ JE BIT NULA
LED_Write1:
cbi LEDDataPORT, LEDDataBit
ror LedInput
brcc LED_Write2 ; je li bit nulovy skoc
sbi LEDDataPort, LEDDataBit ; nastav datovy bit
LED_Write2:
sbi LEDClockPort, LEDClockBit ; nastav hodinovy bit
nop ; cekej
cbi LEDClockPort, LEDClockBit ; vymaz hodinovy bit
cbi LEDDataPort, LEDDataBit ; vymaz datovy bit
dec count
brne LED_Write1 ; dalsi bit

pop LEDINPUT
ret

Ať počítám jak počítám - vychází mi něco kolem 100 taktů na AVR což při 16 MHz je 6,25 mikrosekund. Myslíte že "ošklivé blikání" v délce 6 mikrosekund bude lidské oko vnímat ?
Pokud potřebujete 16 LEDek - prostě zřetězíte dva posuvné registry za sebou a "ošlkivé blikání" bude trvat celých 13 mikrosekund atd. Viz schémátko kdychličky LEDEk velikosti 5x5x5 řízenýchmi 7 piny. Šlo by to i méně piny, mám doma displej kde spínání řádků i sloupců řídí posuvné registry. jediná limitace je, že s rostoucím počtem LEDek se dostáváme k množství kdy "ošklivé blikání" stane se opravdu zřetelným, ale to je až při stovkách LEDek - což je více než váš robot pro okouzlení dětiček na robotické soutěži potřebuje.

Pro dnešek jsme skončili, zbývá už jenom rada pro brunety - než nějakého pomatence s trafopájkou odsoudíte jako "nemožného"- zkuste si představit jak stejnou trafopájkou staví hračky pro vaše (společné) dětičky.
 

Buď první, kdo ohodnotí tento článek.

Komentáře

1 kolemjdoucí kolemjdoucí | 1. června 2014 v 10:17

Pokud bude oblíbených USB kabelů více než jeden, je nutné aby +U vedlo všemi?

Jinak u 74HC595 je potřeba 4 vodiče - DATA, CLK, /OE a STROBE, ale dvou z nich se lze „elegantně zbavit” tím, že se zapojí natrvalo, a tím onen obvod funkčně degradujeme na tu 74HC164 (což se občas může i tak vyplatit, protože 74HC595 je schopna dodat na výstupních pinech větší proud)

K těm 6µs asi takhle: Zkušené oko elektronikovo to možná uvidí, dětské oko asi nikoliv - záleží hlavně na tom, jak často by to mělo být obnovováno (případný „smoothing” - prosvěcování)?

2 Karel Karel | 2. června 2014 v 7:10

Když už takový demultiplex, tak se dají použít RGB ledky a nejdřív na dekádě si zkusmo namixovat pěkné barvičky.

3 petr-kubac petr-kubac | 2. června 2014 v 8:45

Tahání napájení spolu s daty výrazně ulehčje konstruci čidel typu "tykadlo s malým procesorem někam čouhá a něco tam snímá" A tahání napájení i na desky ktetré jsou napájeny odjinud - to je jenom otázka jednotného řešení pro celého robota.

Otázka obnovovací frekvence a eventuleně řízení RGB diod - to vysoko nad problémy, které se v robotech řeší - tam to typicky je úloha - typu "slyšíš li Echo zleva rozsviť levou modrou LEDku" -  tedy obnovovací frekvence vychází z updatu dat 10-50 Hz a žádně PWM - k tomu je "čtyřdírkový modul" s 8 ledkami a jedním 74HC164 - úplně ideální.

4 Karel Karel | 2. června 2014 v 10:01

Ty RGB jsem myslel ve statickém režimu, žádné řízení, jen ovládání přes tři odpory. A dá se to pěkně namixovat.

5 Anri ... Anri ... | 6. června 2014 v 17:14

... v tomto případě (/při tomto množství LEDek) bych asi raději volil řešení pomocí "charlieplexingu" ... odpadnou tak všechny spínací tranzistory (+ dokonce se sníží počet odporů) a celá elektronika se smrskne do jediného MCU, což cenově vyjde laciněji (/ menší prostorové nároky na šváby)  ... klasika: HW nahradí kusem software ...   http://en.wikipedia.org/wiki/Charlieplexing ... ";o) ...

6 Balů Balů | 17. června 2014 v 22:17

Dětské oko asi problikávání LEDek podle nasouvajících se dat neuvidí, ale elektronik to pozná určitě. Moje zkušenosti s multiplexním řízením 7-segmentového displeje jsou takové, že je na LEDkách vidět i podstatně kratší rozsvícení, než 6us. Pokud přepnu číslici a hned další instrukcí přepíšu data pro segmenty, tak na té druhé číslici je znát "stín" té předchozí. Odstranit to lze pouze tak, že buď zhasnu segmenty nebo vypnu číslici, zapíšu/přepíšu data a zapnu následující číslici.

7 kuba kuba | E-mail | 25. července 2014 v 1:10

Dobry den vím že to sem nepatři ale potřeboval bych poradit koupil sem si RGB pásek a na jeho ovladani potřebuji vymyslet vykonovou elektroniku s MOSFETy nevím jak nato mužeté mi nějak poradit jaky budič pro mosfet

Děkují

Komentáře jsou uzavřeny.


Aktuální články

Reklama