DoporučujemeZaložit web nebo e-shop

Měniče a zkoušečky

              Měřiče a zkoušečky

Digitální hodiny s mikroprocesorem

Dnes Vám přinášíme návod na velmi jednoduché digitální hodiny s čipem ATmega8.  Hodiny se hodí jako doplněk LCD a plasmových televizí, které v drtivé většině případů neobsahují digitální hodiny jak bylo zvykem u starých CRT televizí na spodním panelu televize.
Co se týče koncepce jsou hodiny tvořeny 2 deskami plošných spojů k sobě navzájem kolmých.
Pokud se podíváme na schéma, tvoří jej vlastně jen čip, zdroj se stabilizátorem, oscilátor určující takt hodin a displej s ochrannými rezistory (R1-R8 ), které určují jas displeje. Dále není co řešit. 

Pro zvětšení klikněte na obrázky

Schéma zapojení:

Obrazek


Rozpracované hodiny:

Obrazek


Uvedení do provozu:
je jednoduché. Po připojení k vhodnému napájení ( postačí běžný síťový adaptér 9V / 250mA ) se na displeji rozbliká čas " 00:00 ". Požadovaný čas nastavíme tlačítky SW a to tlačítkem  SW1 ( na desce horní tlačítko ) nastavíme minuty a SW2 ( spodní tlačítko ) hodiny. 

Seznam součástek:
R1-R8 - 330R
R9-R11 - 10k
C1,C2 - 22p
C3 - 100nF
C4, C5 - 100uF/16V
IC1 - 7805 / 1A
IC4 - ATmega8-16PU  + patice 28dil
D1 - LED displej viz odkaz: CA56-21SRWA
Q1 - krystal 14.7456 MHz - HC49
SW1, SW2 - mikrotlačítka typu B 6814
 
Celková cena bez krabičky cirka 300 korun .
Napájecí napětí 9- 20 V ss.

DPS v 1:1, rozložení součástek, hex soubor, soubor hodiny.c a schéma v eaglu stáhnete zde

Pokud neumíte programovat a nemůžete sehnat displej, napište mi, dám Vám kontakt na člověka, který Vám mikroprocesor naprogramuje a displej pošle.


Program v jazyce C
 

#include <avr/io.h>//
#include <avr/interrupt.h>//
#include <avr/wdt.h>//
#include <stdio.h>//



#define _s_A  2
#define _s_B  0
#define _s_C  6
#define _s_D  4
#define _s_E  3
#define _s_F  1
#define _s_G  7
#define _s_dot 5

const unsigned char segs[] =
{
_BV(_s_A) | _BV(_s_B) | _BV(_s_C) | _BV(_s_D) | _BV(_s_E) | _BV(_s_F),    //0
_BV(_s_B) | _BV(_s_C),    //1
_BV(_s_A) | _BV(_s_B) | _BV(_s_D) | _BV(_s_E) | _BV(_s_G),    //2
_BV(_s_A) | _BV(_s_B) | _BV(_s_C) | _BV(_s_D) | _BV(_s_G),  //3
_BV(_s_B) | _BV(_s_C) | _BV(_s_F) | _BV(_s_G),    //4
_BV(_s_A) | _BV(_s_C) | _BV(_s_D) | _BV(_s_F) | _BV(_s_G), //5
_BV(_s_A) | _BV(_s_C) | _BV(_s_D) | _BV(_s_E) | _BV(_s_F) | _BV(_s_G), //6
_BV(_s_A) | _BV(_s_B) | _BV(_s_C), //7
_BV(_s_A) | _BV(_s_B) | _BV(_s_C) | _BV(_s_D) | _BV(_s_E) | _BV(_s_F) | _BV(_s_G),//8
_BV(_s_A) | _BV(_s_B) | _BV(_s_C) | _BV(_s_F) | _BV(_s_G),//9

_BV(_s_A) | _BV(_s_B) | _BV(_s_C) | _BV(_s_E) | _BV(_s_F) | _BV(_s_G),    //A
_BV(_s_C) | _BV(_s_D) | _BV(_s_E) | _BV(_s_F) | _BV(_s_G),    //B
_BV(_s_A) | _BV(_s_D) | _BV(_s_E) | _BV(_s_F), //C
_BV(_s_B) | _BV(_s_C) | _BV(_s_D) | _BV(_s_E) | _BV(_s_G), //D
_BV(_s_A) | _BV(_s_D) | _BV(_s_E) | _BV(_s_F) | _BV(_s_G), //E
_BV(_s_A) | _BV(_s_E) | _BV(_s_F) | _BV(_s_G) //F

};



#define _ms(n) (17*n)

void wait(unsigned int a)    //basic wait
{                            
volatile unsigned int b,c;
for(b=0;b!= a; b++)for(c=0;c!= 50;c++);
return;
}



unsigned char prescale=0;
unsigned char sec=0;
unsigned char min_1=0;
unsigned char min_10=0;
unsigned char hour_1=0;
unsigned char hour_10=0;
unsigned char show_t=0;


ISR(TIMER1_OVF_vect)
{
if(++prescale == 225){prescale = 0;sec++;};
if(sec>59){min_1++;sec=0;};
if(min_1>9){min_1=0;min_10++;};
if(min_10>5){min_10=0;hour_1++;};
if(hour_1>9){hour_1=0;hour_10++;};
if(hour_10>1 && hour_1>3){hour_1=0;hour_10=0;};

if(++show_t==4) show_t=0;
switch(show_t)
{
case 0:    //show minutes
PORTC = 0x04;
PORTD = (~segs[min_1]);
break;
case 1:    //show 10 minutes
PORTC = 0x08;
PORTD = (~segs[min_10]);
break;
case 2:    //show hours
PORTC = 0x10;
PORTD = (~segs[hour_1]) & ~_BV(_s_dot);
break;
case 3:    //show 10hours
PORTC = 0x20;
PORTD = (~segs[hour_10]);
break;
default:
show_t = 0;
break;
}    
return; 
}


#define B1() (bit_is_clear(PINB,3))
#define B2() (bit_is_clear(PINB,4))
#define B_WAIT 300

#define nop() asm volatile ("nop;")

int main(void)
{

TIMSK = 0x04;
TCCR1B = 0x01;

DDRD = 0xFF;
DDRC = 0x3F;
DDRB = 0x00;
PORTB = 0xFF;

sei();
while(1)
{
if(B1())
{
wait(_ms(B_WAIT));
min_1++;
sec=0;
}
if(B2())
{
wait(_ms(B_WAIT));
hour_1++;
sec=0;
}
}
}

 

 

Jednoduchá řezačka polystyrenu

 
Na obrázku vidíme schéma jednoduché řezačky polystyrenu. Srdcem zapojení je správně vybraný tyristor. Vyhoví například TIC126. 
Při konstrukci řezačky musíme dát pozor na to, že jedna z elektrod je připojena na chladící plošku tyristoru a tak je nutné izolovat případný chladič tyristroru od kostry zařízení. Jinak zapojení nemá žádné jiné zrádnosti a pracuje na první zapojení. 

Popis zapojení:
Jednoduchou regulací "škrtíme" gate tyristoru a tak měníme proud dodávající na odporový drát. Tyristor jednocestně usměrňuje střídavé napětí přivedené z transformátoru. 

Schéma zapojení:

Obrazek


DPS:

Obrazek


Rozložení součástek:

Obrazek

Odporový drát volíme nejlépe 2,4 Ohm typu kanthal přiměřené délky. Nutno vyzkoušet.
Na svorky J1-1 a J1-2 je přivedeno napětí ze sekundáru trafa, na svorky P1 a P2 je připojen potenciometr. Na svorky J2-1 a J2-2 je připojen odporový drát.

Seznam součástek:
J1, J2 - svorkovnice ARK500/2
C1 -  100nF   keramika
Poj - 3A  5x20 mm
R1 - rezistor 7k5
R2 - rezistor 2k7
R3 - rezistor 1k2
P - 50k
T1 - BC547
T2 - BC557
Tyr - tyristor TIC126.

 

Jednoduchý regulátor otáček ventilátoru

 
Na obrázku vidíme nejspíše nejjednodušší zapojení regulace otáčet ventilátoru na napětí 12V. 
Zapojení umožňuje regulovat napětí od cca 5V do 11,5V z toho důvodu, že ventilátory potřebují větší napětí jen pro svůj rozeběh než pro udržení v chodu. Proto je ve schématu použit kondenzátor, který zajistí rozeběhnutí motorku při připojení napájecího napětí. Výkonová ztráta na tranzistoru závisí na příkonu ventilátoru a nastaveném napětí. Tranzistor je vhodné preventivně osadit menším chladičem.
Obrázek DPS pro jednoduchost neuvádím.
Svorky "Rotace" není nutno zapojovat.

Využití najdete jistě mnoho, ať už jako chlazení počítače nebo zesilovače.

Schéma zapojení:

Obrazek

Pro upřesnění: červená barva vodiče: kladné napájení

                      černá barva vodiče: záporné napájecí napětí

                      modrá barva vodiče: rotace - není nutné zapojovat

Odbasltená deska: 

( žádné zdržování vrtáním apod. :) )

Obrazek

Spolu s větrákem:

Obrazek

V zesilovači :

 

Obrazek


Seznam součástek:
T1 - závisí na proudu ventilátorku, možná vyhoví BD139, KFY34, KFY46, KF506-508 ( já použil KFY46 ) + chladič
Rt - trimr 2k5 ( já použil 5 k )
R1 - 3k3 
C1 - 220u/ 16V

 

 

Časový spínač (- Minutka do kuchyně)

 
Popis zapojení:
Před připojením zdroje jsou kondenzátory C1 a C2 nenabité. Zapneme-li přístroj, přepínačem je na vstupu A klopného obvodu IOa a IOb po určitou dobu log.0, a proto je úroveň log.0 i na výstupu Q. Tím je zablokován multivibrátor, tvořený hradly IOc a IOd. Kondenzátor C1 se nabíjí přes odporový trimr R7 a potenciometr P. 
Zmenší-li se napětí na vstupu B klopného obvodu pod rozhodovací úroveň, obvod se překlopí a multivibrátor začne pracovat. Příliš pomalému přepnutí klopného obvodu zabrání jeho charakteristika.
Signál multivibrátoru zesilují tranzistory T1 a T2 (pro repro s impedancí 8 Ohm).
Celkové schéma viz dolejš.
Po vypnutí přístroje (poloha vypínače jako na obrázku) je kondenzátor C1 rychle vybit přes rezistor R1. Při následném zapnutí na něm proto není žádné zbytkové napětí, které by zkracovalo nastavenou dobu. 

Uvedení do chodu: 
Při nastavování čas. spínače nechte běžec odporového trimru R7 cca uprostřed odporové dráhy a potenciometrem P nastavte dobu, za kterou spínač sepne. Nakonec rozdělte lineárně stupnici kolem hřídelky potencimetru P mezi těmito krajními časovými body.

Obrazek
 

Obrazek

 

Obrazek

Nakonec fotka časovače i v krabičce  ( ještě bez indikační diody )

Obrazek


Seznam součástek: 

R1- 2k2
R2, R3,R4- 1M
R5- 27k
R6- 68-100R
R7- trimr - stojatý, 100k
C1- 1 000u/ 15V
C2- 4,7n keramika
C3, C4- 1n keramika
P- potenciometr 1M / N
IO- MHB4011 -Tesla ( CMOS 4011)
T1- libovolný N-P-N ( BC547, KC509,...použil jsem KF503 )
T2- libovolný N-P-N ( BC547, KC639,... -||- )
D- zenerova dioda 5V1/0,5W
- páčkový přepínač
- reproduktor 8 Ohm