Documente Academic
Documente Profesional
Documente Cultură
RELOJ,
CODEVISION
AVR
CALENDARI
O,
TEMPERATU
RA Y
HUMEDAD
http://relojcalendariotemyhum.blogspot.com/
Pgina 1
CONTENIDO
INTRODUCCIN........................................................................ 1
QU
NECESITAMOS?................................................................1
D ESARROLLO ........................................................................4
DESPLAZAMIENTO O BARRIDO....................................................................4
BCD A 7 SEGMENTOS................................................................................ 5
HORA Y FECHA.......................................................................................... 5
SENSOR DE TEMPERATURA.........................................................................5
SENSOR DE HUMEDAD................................................................................ 6
ESQUEMTICOS.......................................................................1
DISEO
DE
PCB......................................................................1
C ODIGO ...............................................................................4
I MGENES
INTRODUCCIN
Un visualizador de reloj de tiempo real y variables de clima, se utiliza para
visualizar el tiempo y fecha en curso con temperatura y humedad en el
ambiente seleccionado.
Este proyecto deliberar la visualizacin del tiempo en el formato hh:mm:ss de
24 horas, fecha en un formato de DD:MM:AA, temperatura en grados celcius
[C] y humedad relativa [%H]. El microcontrolador utilizado es el Atmega32A
que enva los datos a visualizar a 16 display de 7 segmentos nodo comn. Los
16 displays son encendidos individualmente uno seguido de otro y cada
conjunto de 8 displays son conectados a un chip decodificador BCD a 7
segmentos (7447) con el propsito de ahorrar puertos conectados al Atmega,
mientras que cada comn de los displays son conectados con un transistor
http://relojcalendariotemyhum.blogspot.com/
Pgina 2
2N3904 a un puerto del Atmega. Para la hora y fecha se usa una RTC (DS1307),
para la temperatura un termistor (TTC103) y humedad un sensor HH10D cuya
salida es un valor de frecuencia. El programa del microcontrolador dispone una
velocidad de desplazamiento o de barrido entre displays por cada 1ms, as
como los datos a visualizar que vamos de mostrar.
Para la visualizacin dispone un una funcin para configurar la fecha y hora a
travs de 3 pulsadores.
Q U
NECESITAMOS ?
1 Atmega32A
1 termistor TTC103
16 resistencias de 1 KOhms
5 resistencias de 10 KOhms
http://relojcalendariotemyhum.blogspot.com/
Pgina 3
16 transistores 2N3904
1 cristal 32.768KHZ
3 pulsadores
4 jumpers.
http://relojcalendariotemyhum.blogspot.com/
Pgina 4
Atemga32A
Termistor TTC10
HH10D
Displays en par
Display
Display mediano
Decodificadores BCD
a 7 segmentos
74LS47
Resistencias.
Potencimetro lineal
Ttransistores
Cristal 32.768KHZ
2N3904
DS1307
http://relojcalendariotemyhum.blogspot.com/
Pgina 5
Batera de botn 3V
Condensadores
con su porta-pila
electrolticos
Pulsadores
Jumpers
Espadines hembra y
Regulador de
macho
voltaje LM317
Condensadores cermicos
D ESARROLLO
DESPLAZAMIENTO O BARRIDO
El barrido de los displays es bsicamente una manera de activar uno por uno
en un instante a una frecuencia elevada.
Un display de 7-segmentos es una manera de visualizar datos obtenidos por
el uC enviados a travs de 8 puertos por lo que equivale a utilizar todo un
puerto del uC para poder manejar un solo 7-segmentos.
http://relojcalendariotemyhum.blogspot.com/
Pgina 6
BCD A 7 SEGMENTOS
Uno de los problemas mencionados anteriormente es el nmero de puertos
limitados del uC, por lo que se utiliza un chip para decodificar datos BCD de 4
bits a 7 segmentos correspondiente a cada display,
Cada conjunto de 8 displays son conectados a un chip decodificador BCD a
7-segmentos, por lo que es necesario el uso de 2 chip 74LS47. El nmero total
de puertos utilizados para la presentacin de datos son de 8 puertos, y para el
barrido de los displays son de 16 puertos uno por display conectado al comn,
por lo tanto los puertos utilizados por el uC son de 24 puertos para un total de
16 displays.
HORA Y FECHA
La presentacin de hora y fecha se la realiza mediante un el dispositivo
DS1307, Por la simple razn de trabajar con eventos ms precisos, puntuales y
exactos a lo largo del tiempo. Este pequeo dispositivo es uno de los ms
populares en relojes RTC (Real Time Clock) por su sencillez de uso y por su
http://relojcalendariotemyhum.blogspot.com/
Pgina 7
SENSOR DE TEMPERATURA
Uno de los principales objetivos de este proyecto es el uso de un sensor de
temperatura analgica para la visualizacin de temperatura en grados celcius
en dos displays.
El sensor utilizado es el TTC103 de salida de voltaje analgico, por la nica
razn de disponer este dispositivo, la opcin de utilizar otro sensor es opcional,
pero yo dispongo del termistor.
Las caractersticas del termistor son las siguientes:
Caractersticas
Valor
utilizada
4050 [K]
por
el
fabricante
Para la lectura de los datos del sensor se utiliza un puerto analgico del uC el
cual es el puerto ADC7, y para obtener la temperatura real se utiliza la frmula
propuesta el fabricante en grados Kelvin, y para obtener en grados celcius
como se lo ha propuesto solo se usa una simple ecuacin C = K - 273.15.
SENSOR DE HUMEDAD
Otro de los objetivos de este proyecto es el uso de un sensor de humedad
para la visualizacin de humedad relativa en dos displays.
El sensor utilizado es el HH10D cuya salida es un valor de frecuencia que
vara entre los 5 y 10 kHz dependiendo de la humedad entre el 1 y 99 %
respectivamente.
http://relojcalendariotemyhum.blogspot.com/
Pgina 8
de
frecuencia
una
memoria
EEPROM
usada
para
el
Parmetro
Mnimo
nominal
Mximo
Rango de humedad
1%
99 %
exactitud
-3 %
+3 %
-10 C
+60 C
Rango
de
temperatura
Voltaje de operacin
2.7 V
estabilidad vs tiempo
3V
3.3 V
1 % por ao
Corriente de consumo
120 uA
150 uA
180 uA
Rango de frecuencia
5 kHz
6.5 kHz
10 kHz
de salida
Para la lectura de humedad correcta, dos factores de calibracin deben ser
ledos desde la EEPROM en la direccin 10 y 12 por un bus i2C para la
sensibilidad y compensacin respectivamente. Una vez calibrado el modulo, se
mide la frecuencia de salida del sensor, entonces el valor de humedad correcto
puede ser calculada mediante la siguiente expresin:
12
HR ()=(compensacionFout )sens/2
http://relojcalendariotemyhum.blogspot.com/
Pgina 9
Para la lectura de los factores de calibracin puedes usar otro programa en el mismo circuito
del proyecto o como prefieras para saber qu factores corresponden a tu sensor. Para mi
sensor son: sens = 377 y compensacin = 7792.
PULSADORES
Con el objeto de realizar un reloj con funciones bsicas, se incorpor 3
pulsadores con el propsito de igualar la hora o cambiar la fecha.
El pulsador Men realiza la funcin de cambiar de modo normal a modo
minutos, horas, aos, meses y das:
Menu
Menu
Menu
Menu
Menu
Menu
Menu
=
=
=
=
=
=
=
0;
1;
2;
3;
4;
5;
6;
modo
modo
modo
modo
modo
modo
modo
normal
de igualar minutos
de igualar horas
de igualar Aos
de igualar meses
de igualar das
de guardar en memoria tiempo y fecha actualizada
ESQUEMTICOS
Esquema del reloj calendario, temperatura y humedad.
http://relojcalendariotemyhum.blogspot.com/
Pgina 10
30
32
CONN-H2
DS1307
SCL
SDA
SCL
SDA
X1
C2
0.1u
0.1u
R4
1k
CRYSTAL
SOUT
2
VBAT X2
DS1307
1 - 74LS47N
7
1
2
6
4
5
3
BCD_1_A
BCD_1_B
BCD_1_C
BCD_1_D
A
B
C
D
BI/RBO
RBI
LT
QA
QB
QC
QD
QE
QF
QG
13
12
11
10
9
15
14
R27
R28
R29
R30
R31
R32
R33
13
12
11
10
9
15
14
R34
R35
R36
R37
R38
R39
R40
A_1
B_1
C_1
D_1
E_1
F_1
G_1
330
330
330
330
330
330
330
7447
HH10D
2 - 74LS47N
HH10D
R25
7
1
2
6
4
5
3
BCD_2_A
BCD_2_B
BCD_2_C
BCD_2_D
R24
560
R23
10uF
330
120
C1
C9
47uF
32.768KHZ
3 VOLTS
C8
R42
1
1
6
5
DISPLAY_2_MES
DISPLAY_1_DIA
INCREMENTO
DECREMENTO
DISPLAY_2_DIA
DISPLAY_1_TEMPERATURA
DISPLAY_2_TEMPERATURA
DISPLAY_1_HUMEDAD
DISPLAY_2_HORA
LED-RED
R1
AVCC
AREF
D1
R3
4.7k
NTC-TT103
1
2
TERMISTOR
ATMEGA32
14
15
16
17
18
19
20
21
4.7k
Refe_comparador
560
A
B
C
D
BI/RBO
RBI
LT
QA
QB
QC
QD
QE
QF
QG
A_2
B_2
C_2
D_2
E_2
F_2
G_2
330
330
330
330
330
330
330
DISPLAY_2_DIA
PB0/XCK/T0
PB1/T1
PB2/INT2/AIN0
PB3/OC0/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/OC1B
PD5/OC1A
PD6/ICP
PD7/OC2
R2
CONN-H2
DISPLAY_2_HUMEDAD
MENU
HH10D
Refe_comparador
BCD_2_A
BCD_2_B
BCD_2_C
BCD_2_D
1
2
3
4
5
6
7
8
PA0/ADC0
PA1/ADC1
PA2/ADC2
PA3/ADC3
PA4/ADC4
PA5/ADC5
PA6/ADC6
PA7/ADC7
SCL-RTC
CONN-H2 SDA-RTC
40
39
38
37
36
35
34
33
SCL
SDA
DISPLAY_2_MIN
DISPLAY_1_HORA
DISPLAY_2_HORA
DISPLAY_1_AO
DISPLAY_2_AO
DISPLAY_1_MES
BCD_1_A
BCD_1_B
BCD_1_C
BCD_1_D
DISPLAY_1_SEG
DISPLAY_2_SEG
DISPLAY_1_MIN
TERMISTOR
XTAL1
XTAL2
22
23
24
25
26
27
28
29
1
2
13
12
PC0/SCL
PC1/SDA
PC2/TCK
PC3/TMS
PC4/TDO
PC5/TDI
PC6/TOSC1
PC7/TOSC2
1
2
RESET
ATMEGA32A
9
Reset
R10
7447
1k
10k
SCL-HH10D
CONN-H2 SDA-HH10D
LM317T
LM317T
CONN-H2
2
VO
R26
220
C3
100uF
3Vcc
1
2
ADJ
VI
SCL
SDA
C4
10k
HH10D
3Vcc
10nF
HH10D
1
2
RV1
5
4
3
2
1
MENU
R41
TIME_1
TIME_2
TIME_3
TIME_4
TIME_5
TIME_6
A_1
B_1
C_1
D_1
E_1
F_1
G_1
TEMP_1
TEMP_2
A_1
B_1
C_1
D_1
E_1
F_1
G_1
CONN-H5
INCRE
DECRE
2
10k
MENU
INCREMENTO
DECR
Reset
RESET
C5
R20
C6
10k
R21
C7
10k
10nF
R22
10k
10nF
DATA_1
DATA_2
DATA_3
DATA_4
DATA_5
DATA_6
A_2
B_2
C_2
D_2
E_2
F_2
G_2
HUME_1
HUME_2
A_2
B_2
C_2
D_2
E_2
F_2
G_2
10nF
RTC
BYRON
GANAZHAPA
SERVOMOTOR
_COMUNICACION
Nota: no existe una librera en Proteus para el HH10D por lo que se usa un generador de onda
cuadrada y se lo conecta con espadines.
Se usa un Lm317 por la razn de utilizar componentes disponibles a mi alcance, si prefieres
puedes usar un Lm1117 y modificar el esquema para obtener 3.3V.
http://relojcalendariotemyhum.blogspot.com/
Pgina 11
DISEO DE PCB
DISEO
PLACA DOBLE
http://relojcalendariotemyhum.blogspot.com/
Pgina 12
PCB
DE
http://relojcalendariotemyhum.blogspot.com/
Pgina 13
http://relojcalendariotemyhum.blogspot.com/
Pgina 14
C ODIGO
El programa fue desarrollado en CodevisionAVR versin 2.05.0
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date
:
Author :
Company :
Comments:
Chip type
:
Program type
:
AVR Core Clock frequency:
Memory model
:
External RAM size
:
Data Stack size
:
ATmega32A
Application
8,000000 MHz
Small
0
512
http://relojcalendariotemyhum.blogspot.com/
Pgina 15
*****************************************************/
#include
#include
#include
#include
#include
#include
<mega32a.h>
<math.h>
<stdio.h>
<stdlib.h>
<delay.h>
<bcd.h>
DISPLAY_1_SEG
DISPLAY_2_SEG
DISPLAY_1_MIN
DISPLAY_2_MIN
DISPLAY_1_HORA
DISPLAY_2_HORA
DISPLAY_1_DIA
DISPLAY_2_DIA
DISPLAY_1_MES
DISPLAY_2_MES
DISPLAY_1_ANYO
DISPLAY_2_ANYO
0x01
0x01
0x01
0x01
0x01
0x01
0x01
0x01
0x01
0x01
0x01
0x01
#define
#define
#define
#define
DISPLAY_1_TEMPERATURA
DISPLAY_2_TEMPERATURA
DISPLAY_1_HUMEDAD
DISPLAY_2_HUMEDAD
0x01
0x01
0x01
0x01
int Menu=0;
int dig_1_temp, dig_2_temp;
int dig_1_hum, dig_2_hum;
// variables
unsigned int
float
float
float
int
http://relojcalendariotemyhum.blogspot.com/
Pgina 16
de tempoeratura
// [V]
Voltage de entrada en el divisor de
// [ohm]
// [ohm]
//
//
//
//
//
//
//
//
[K] (25C)
[V]
Voltage given by the Voltage-Divider
[ohm]
Resistencia actual del Termistor (NTC)
[K]
Parametro Beta
[K]
Temperatura de salida en grados Kelvin
[C]
Temperatura de salida en grados Celsius
[ohm]
Parametros Rinf
Contador de ciclos, par el calculo de la temperatura
//47
http://relojcalendariotemyhum.blogspot.com/
Pgina 17
if(mes>12) mes = 0;
}
if(Menu == 5){ // igualar dia
dia = dia + 1;
delay_ms(100);
if(dia>31) dia = 0;
}
http://relojcalendariotemyhum.blogspot.com/
Pgina 18
http://relojcalendariotemyhum.blogspot.com/
Pgina 19
=
=
=
=
=
=
get_hora;
get_minu;
get_seg;
get_dia;
get_mes;
get_anyo;
rtc_set_time(hora,minu,seg);
rtc_set_date(dia,mes,anyo);
// Global enable interrupts
#asm("sei")
while (1){
/*
Menu = 0;
Menu = 1;
Menu = 2;
Menu = 3;
Menu = 4;
Menu = 5;
modo
modo
modo
modo
modo
modo
normal
de igualar
de igualar
de igualar
de igualar
de igualar
minutos
horas
Aos
meses
das
http://relojcalendariotemyhum.blogspot.com/
Pgina 20
if (PINB.1 == 1){
// Botn de Men
Menu = Menu + 1; // menu en modo de igualar hora y fecha
delay_ms(500); // retrazo para evitar rebotes
}
if (Menu == 6){
rtc_set_time(hora,minu,seg); // menu en modo de grabar en memoria del
DS1307 el tiempo y fecha actualizada.
rtc_set_date(dia,mes,anyo);
delay_ms(1000);
Menu = 0;
}
PORTD.6 = DISPLAY_2_TEMPERATURA & 0x00;
PORTB.0 = DISPLAY_2_HUMEDAD & 0x00;
if(Menu == 0){ // obtener el tiempo y fecha en modo normal
rtc_get_time(&hora,&minu,&seg);
rtc_get_date(&dia,&mes,&anyo);
}
cTemp1=0;
if (iCont<=50000){
Rinf=R0*exp(-beta/T0); // = 0.0126079
adc_data=read_adc(7); // leo el canal ADC 7
// Clculo del valor de la resistencia termistor (NTC) actual (a
travs de Vout)
Vout = Vin*(adc_data)/1023.0;
Rout = (Raux*Vout/(Vin-Vout));
// Calculo de la temperatura en grados Kelvin
TempK=log(Rout/Rinf);
TempK=(beta/TempK);
// Calculo de la temperatura en grados Celsius
TempC=TempK-273.15;
// Almacenamos la temperatura (grados Celsuis) actual para despues
obtener la media
cTemp1 = cTemp1 + TempC;
delay_us(10);
iCont ++;
}
else{
// Calculamos la temperatura media
TempC = (int)(cTemp1/iCont);
delay_us(10);
iCont=0;
}
// Convierto los digitos a BCD y los divido en dos partes de 4 bits para
cada display.
seg_BCD
= bin2bcd(seg);
dig_2_seg = (seg_BCD&0xF0)>>4;
dig_1_seg
= seg_BCD&0x0F;
minu_BCD = bin2bcd(minu); dig_2_min = (minu_BCD&0xF0)>>4; dig_1_min
= minu_BCD&0x0F;
hora_BCD = bin2bcd(hora); dig_2_hora = (hora_BCD&0xF0)>>4; dig_1_hora
= hora_BCD&0x0F;
TempC
= bin2bcd(TempC); dig_2_temp = (TempC&0xF0)>>4;
dig_1_temp
= TempC&0x0F;
http://relojcalendariotemyhum.blogspot.com/
Pgina 21
dia_BCD = bin2bcd(dia);
(dia_BCD&0x0F)<<4;
mes_BCD = bin2bcd(mes);
(mes_BCD&0x0F)<<4;
anyo_BCD = bin2bcd(anyo);
(anyo_BCD&0x0F)<<4;
Humedad = bin2bcd(H);
(Humedad&0x0F)<<4;
dig_2_dia
= dia_BCD&0xF0;
dig_1_dia
dig_2_mes
= mes_BCD&0xF0;
dig_1_mes
dig_2_anyo = anyo_BCD&0xF0;
dig_1_anyo =
dig_2_hum
dig_1_hum
= Humedad&0xF0;
http://relojcalendariotemyhum.blogspot.com/
Pgina 22
PORTB
= dig_2_hum;
PORTD.6 = DISPLAY_2_TEMPERATURA;
PORTB.0 = DISPLAY_2_HUMEDAD;
delay_ms(1);
}
I MGENES
http://relojcalendariotemyhum.blogspot.com/
Pgina 23
http://relojcalendariotemyhum.blogspot.com/
Pgina 24
http://relojcalendariotemyhum.blogspot.com/
Pgina 25
http://relojcalendariotemyhum.blogspot.com/
Pgina 26
http://relojcalendariotemyhum.blogspot.com/
Pgina 27
http://relojcalendariotemyhum.blogspot.com/
Pgina 28
Time
Hora
Dia
Minu.
Mes
Seg.
Ao
H[%]
Date
Byron O.
Ganazhapa J.
Men
http://relojcalendariotemyhum.blogspot.com/
ON
Pgina 29
http://relojcalendariotemyhum.blogspot.com/
Pgina 30
http://relojcalendariotemyhum.blogspot.com/
Pgina 31
http://relojcalendariotemyhum.blogspot.com/
Pgina 32