Jste zde

Zapojení s PIC - běžící světlo

Jednoduchá konstrukce s PICem - ukázka pro začátečníky.

V elektronických zapojeních stále více se začínají používat mikrokontroléry. S těmito obvody se budeme stále častějí setkávat v různých zapojeních, protože jejích hlavní přednosti je velmi široké využití v oblastí ovládaní, řízení, měření, zábavy, apod. Tyto výkonné (co se týče možností) součástky podle typu obsahuji v jednom pouzdře vstupně-výstupní porty, převodník A/D, D/A, synchronní seriový port, .... Při návrhu obvodu je třeba zvážit, které z těchto zařízení budeme potřebovat a podle toho vybrat typ mikrokontroléru.

Veškerá činnost prováděná mikrokontrolérem je řízená programem, který je uložen v mikrokontroléru. Uživatel si tedy sám určí, který vývod se bude používat jak vstup a který vývod jako výstup, rychlost měření A/D převodníku atd. Tento řídící program si vytváří uživatel sám v libovolném programovacím jazyce. Vytvořený program je z PC do mikrokontroléru "přenesen" pomocí programátoru mikrokontroléru. Příklady takových programátorů můžete najít ZDE na HW serveru, nebo na stránkách autora. Rychlost běhu programu je daná rychlostí připojeného oscilátoru k mikrokontroléru. Tento oscilátor je možno realizovat i pomocí RC obvodu.

Po tomto naprogramování je mikrokontrolér připraven k práci v obvodu. V případě vývoje nebo chybně napsaného programu je možné obvod znovu naprogramovat. Toto lze opakovat zhruba tisíckrát. Tato další skvělá vlastnost předurčuje tyto obvody pro amatérské využití a experimentovaní.

Pro lepší představu jsem připravil zapojení "běžící světlo" s mikrokontrolérem PIC 16F84, které vyrábí firma Microchip.Katalogový list pro tento mikrokontrolér je možno si stáhnout zde.

Základní vlastnosti PIC 16F84:

  • Rychlost až 10 Mhz 
  • 14-ti bitové instrukce 
  • 8-mi bitová data 
  • 15 speciálních hardwarových registru (umožňují ovládat hardware) 
  • 8-mi úrovňový stack (umožňuje 8x zavolat instrukci CALL) 
  • Umožňuje 1.000.000x zapsat/vymazat datovou EEPROM paměť
  • Záruka uchování dat v EEPROM je >40 let !!!
  • 13 I/O pinu s individuálním ovládáním směru (vstupní/výstupní)
  • TMR0 - 8-mi bitové počitadlo (časovač) s programovatelným děličem
  • POR - Power on Reset - automaticky reset procesoru při spuštění
  • PWRT - Power-up Timer - používá se při pomalém nárůstu napětí
  • OST - Oscillator Start-up Timer - při startu chvíli čeká na naběhnuti oscilátoru
  • WDT - WatchDog Timer - interní počitadlo (časovač) s interním RC obvodem
  • Ochrana kódu
  • Sleep mode - uvedeni chipu do úsporného režimu
  • Sériová programovací metoda - po dvou drátech
  • Nízká spotřeba (CMOS)
  • Široka oblast operačního napětí (2-6V)

Tento typ mikrokontroléru jsem vybral pro jeho dostupnost na trhu a možnost elektricky smazat a znovu jej naprogramovat. Celkové zapojení běžícího světla je na obr.1. Toto zapojení spolu s programem v ASM vytváří postupně změnu napětí na jednotlivých výstupech RB. Po dosažení krajní hodnoty RB je "pohyb" vykonáván zpět. Jednotlivé změny na výstupech v závislosti na čase jsou patrné z diagramu na obr. 2. S využitím klasických elektronických součástek v zapojení, které by vykonávalo tutéž činnost by bylo složitější a vyžadovalo více součástek. Při malých změnách v řídicím programu lze vytvořit libovolné blikající efekty.

Zapojeni PIC - běžící světlo

obr. 1 - běžící světlo

Časové průběhy běžícího světla

obr. 2 - časové průběhy na výstupu

 

Zde je jedno z možných řešení programu "běžící světlo". Tento program je napsán v ASM a je možné si jej stáhnout v první verzi, nebo druhou verzi programu, která je sice delší ale na pochopení jednodušší.

Pro představu zde uvádím kompletní výpis programu v ASM:
 

PORTB 
TRISB 
OPTION 
STATUS 
CARRY 
RP0 
POCET 
 
 
 
 
 
 
 
 

VLEVO 
 
 

VPRAVO
 
 

 

LIST

EQU
EQU
EQU
EQU
EQU
EQU
EQU

CLRF
BSF 
CLRF
MOVLW
MOVWF
BCF
BCF
INCF
SLEEP 
RLF
BTFSS
GOTO
SLEEP 
RRF
BTFSS
GOTO
GOTO
END

P=16C84


86H
81H
3
0
5

PORTB 
STATUS,RP0
TRISB 
0AH
OPTION 
STATUS,RP0
STATUS,CARRY
PORTB 

PORTB 
PORTB,POCET
VLEVO 

PORTB 
PORTB,0 
VPRAVO 
VLEVO 


 
 
 
 
 
 

;určuje počet blikajících LED

;všechny LED vypnuty
;BANK 1
;nastav PORTB jako výstupní (všechno)
;předělička pro WDT (1:4)
;BANK 0
;vymazaní CARRY
;posuň vpravo o jednu LED
;čekej až přeteče WDT
;posuň vlevo o jednu LED
;je dosaženo levé strany ?
;přeskoč jestliže není pravda
;čekej až přeteče WDT
;posuň vpravo o jednu LED
;je dosaženo pravého okraje
;přeskoč jestliže není pravda
;start nového cyklu

Toto zapojení pochopitelně ani zdaleka nevyužívá všech možnosti PIC 16F84, zapojení jsem vybral pro jednoduchost a přehlednost řídicího programu. Některá jiná složitější zapojení lze nalézt na mé adrese http://www.elnes.cz. Cílem tohoto článku bylo nastínit možnosti využití mikrokontroléru v elektronických zapojeních a předvést návštěvníkům HW.CZ serveru jak jednoduše lze vytvořit zapojení blikače - běžící světlo s mikrokontrolérem.

Hodnocení článku: