Blikače a běžící světla s LED

Blikače s LED (svítívou diodou) jsou vhodné příklady pro demonstraci jednoduchých el. zapojení. Níže jsou uvedeny ukázky od blikače s použitím tranzistorů, s použitím integrovaného obvodu i s použitím procesoru a obslužného programu. Lze tak snadno pochopit účelnost jednotlivých řešení.


01: Blikač se dvěma tranzistory

Jednoduchý blikač za použití dvou tranzistorů NPN. Využívá se toho, že žádné dva tranzistory nejsou od výroby 100% stejné. V tomto zapojení se chovají skrz nabíjení kondenzátorů jako astabilní klopný obvod. (AKO – nemá žádný stabilní stav). Jinou hodnotou C1 a C2 se změní frekvence blikání. Napájení je 5V až 6V.

Seznam součástek:
 R1 = 39kΩ 
 R2 = 470Ω 
 R3 = 470Ω 
 R4 = 39kΩ 
 C1 = 10uF 
 C2 = 10uF 
 T1 = NPN (BC547C) 
 T2 = NPN (BC547C) 
 LED1 = Standardní LED 
 LED2 = Standardní LED

002



02: Blikač s časovačem, integrovaným obvodem NE555

Základní zapojení časovače NE555 s postupným nabíjením a vybíjením kondenzátoru. Změnou hodnot R1 a R2 lze změnit poměr nabíjení a vybíjení, tedy LOG1 a LOG0 (střídy). Velmi nízká hodnota však zvýší proudový odběr a může zničit časovač NE555. Rychlejšího blikání lze dosáhnout menší hodnotou kondenzátoru C1. Na výstup je připojena standardní LED s do série zapojeným R3 od 120Ω do 250Ω (u čirých LED postačí 1kΩ) . Napájení je 5V až 6V.

Seznam součástek:
 P1 = Potencimetr 1kΩ 
 R1 = 500Ω 
 R2 = 1kΩ 
 R3 = 120Ω 
 C1 = 100uF 
 IO1 = NE555 
 LED = Standardní LED

Blika-555-1LED



03: Běžící světlo se 4 LED a procesorem PIC

V intervalu 1000ms se rozsvěcují všechny LED a pak postupně zhasínají. To je docíleno pauzou mezi povely v podobě příkazu delay (pro složitější programy není vhodný, protože při čekání delay procesor nemůže vykonávat jinou činnost). Cyklus se neustále opakuje. Zapojení procesoru je bez krystalu. Program je napsán v C.

Seznam součástek:
 U1 = PIC16F628
 R1 = 10k
 R2-R5 = 1k
 LED = Standardní LED

Blika-01

#include "PIC16F628.h"
#include "pic.h"

//******************************************************************************

#pragma config CPD = OFF
#pragma config FOSC = INTOSCIO
#pragma config MCLRE = ON
#pragma config WDTE = OFF
#pragma config CP = OFF
#pragma config LVP = OFF
#pragma config PWRTE = OFF
//#pragma config BODEN = ON

#define OUT1 RB0
#define OUT2 RB1
#define OUT3 RB2
#define OUT4 RB3

#define _XTAL_FREQ 4000000

//******************************************************************************

void main()
{
    TRISB0=0;
    TRISB1=0;
    TRISB2=0;
    TRISB3=0;
    OUT1=0;
    OUT2=0;
    OUT3=0;
    OUT4=0;
    
    while(1)
    {
            OUT1=1; 
            __delay_ms(1000);
            OUT2=1; 
            __delay_ms(1000);            
             OUT3=1; 
            __delay_ms(1000);           
            OUT4=1;           
            __delay_ms(1000);          
            OUT1=0; 
            __delay_ms(1000);
            OUT2=0; 
            __delay_ms(1000);            
             OUT3=0; 
            __delay_ms(1000);           
            OUT4=0;           
            __delay_ms(1000);

    }
    
}


04: Běžící světlo se 4 LED a procesorem PIC

V intervalu 200ms se rozsvítí vždy jen jedna LED. Jakmile zhasne, rozsvítí se další v pořadí. Se stejným procesorem a stejným HW zapojením lze tedy snadno docílit změny chování.

Seznam součástek:
 U1 = PIC16F628
 R1 = 10k
 R2-R5 = 1k
 LED = Standardní LED

Blika-01


#include "PIC16F628.h"
#include "pic.h"

//******************************************************************************

#pragma config CPD = OFF
#pragma config FOSC = INTOSCIO
#pragma config MCLRE = ON
#pragma config WDTE = OFF
#pragma config CP = OFF
#pragma config LVP = OFF
#pragma config PWRTE = OFF
//#pragma config BODEN = ON

#define OUT1 RB0
#define OUT2 RB1
#define OUT3 RB2
#define OUT4 RB3

#define _XTAL_FREQ 4000000

//******************************************************************************

void main()
{
    TRISB0=0;
    TRISB1=0;
    TRISB2=0;
    TRISB3=0;
    OUT1=0;
    OUT2=0;
    OUT3=0;
    OUT4=0;
    
    while(1)
    {
            OUT1=1; 
            __delay_ms(200);
            OUT1=0; 
            __delay_ms(1);            
             OUT2=1; 
            __delay_ms(200);           
            OUT2=0;           
            __delay_ms(1);          
            OUT3=3; 
            __delay_ms(200);
            OUT3=0; 
            __delay_ms(1);            
             OUT4=1; 
            __delay_ms(200);           
            OUT4=0;           
            __delay_ms(1);

    }
    
}


05: Běžící světlo s 8 LED a procesorem PIC

V intervalu 200ms se rozsvítí vždy jen jedna LED. Jakmile zhasne, rozsvítí se další v pořadí. Tady je procesor využit pro ovládání 8 výstupů (LED). Změnou kódu lze už předvádět slušné světelné efekty.

Seznam součástek:
 U1 = PIC16F628
 R1 = 10k
 R2-R9 = 1k
 LED = Standardní LED

Blika-02

#include "PIC16F628.h"
#include "pic.h"

//******************************************************************************

#pragma config CPD = OFF
#pragma config FOSC = INTOSCIO
#pragma config MCLRE = ON
#pragma config WDTE = OFF
#pragma config CP = OFF
#pragma config LVP = OFF
#pragma config PWRTE = OFF
//#pragma config BODEN = ON

#define OUT1 RB0
#define OUT2 RB1
#define OUT3 RB2
#define OUT4 RB3
#define OUT5 RB4
#define OUT6 RB5
#define OUT7 RB6
#define OUT8 RB7

#define _XTAL_FREQ 4000000

//******************************************************************************

void main()
{
    TRISB0=0;
    TRISB1=0;
    TRISB2=0;
    TRISB3=0;
    TRISB4=0;
    TRISB5=0;
    TRISB6=0;
    TRISB7=0;
    OUT1=0;
    OUT2=0;
    OUT3=0;
    OUT4=0;
    OUT5=0;
    OUT6=0;
    OUT7=0;
    OUT8=0;
    
    while(1)
    {
            OUT1=1; 
            __delay_ms(200);
            OUT1=0; 
            __delay_ms(1);            
            OUT2=1; 
            __delay_ms(200);           
            OUT2=0;           
            __delay_ms(1);          
            OUT3=3; 
            __delay_ms(200);
            OUT3=0; 
            __delay_ms(1);            
            OUT4=1; 
            __delay_ms(200);           
            OUT4=0;           
            __delay_ms(1);
            OUT5=1; 
            __delay_ms(200);           
            OUT5=0;           
            __delay_ms(1);            
            OUT6=1; 
            __delay_ms(200);           
            OUT6=0;           
            __delay_ms(1);
            OUT7=1; 
            __delay_ms(200);           
            OUT7=0;           
            __delay_ms(1);
            OUT8=1; 
            __delay_ms(200);           
            OUT8=0;           
            __delay_ms(1);            
    }
    
}