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
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
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
#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
#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
#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); } }