SlideShare uma empresa Scribd logo
1 de 31
http://relojcalendariotemyhum.blogspot.com/ Página 0
http://relojcalendariotemyhum.blogspot.com/
5-2-2015
Por: Byron Ganazhapa
CODEVISIONAVR
RELOJ,
CALENDARIO,
TEMPERATURA
Y HUMEDAD
http://relojcalendariotemyhum.blogspot.com/ Página 1
CONTENIDO
INTRODUCCIÓN..................................................................................................................1
¿QUÉ NECESITAMOS?........................................................................................................1
DESARROLLO....................................................................................................................4
DESPLAZAMIENTO O BARRIDO .............................................................................................4
BCD A 7 SEGMENTOS ........................................................................................................5
HORA Y FECHA.................................................................................................................5
SENSOR DE TEMPERATURA..................................................................................................5
SENSOR DE HUMEDAD.......................................................................................................6
ESQUEMÁTICOS..................................................................................................................1
DISEÑO DE PCB.................................................................................................................1
DISEÑO DE LA TARJETA DE CONTROL PARA SU ELABORACIÓN EN PCBDE PLACA DOBLE .......................1
DISEÑO DE LA TARJETA DE DISPLAY Y VISUALIZACIÓN EN PCB.......................................................2
DISEÑO EN 3D DE LAS PLACAS PCB.......................................................................................3
CODIGO...........................................................................................................................4
IMÁGENES DEL PROYECTO CONCLUIDO.....................................................................11
http://relojcalendariotemyhum.blogspot.com/ Página 1
INTRODUCCIÓN
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 visualización 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 envía los datos a visualizar a 16 display de
7 segmentos Ánodo común. 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
propósito de ahorrar puertos conectados al Atmega, mientras que cada
común de los displays son conectados con un transistor 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 visualización dispone un una función para configurar la fecha y
hora a través de 3 pulsadores.
http://relojcalendariotemyhum.blogspot.com/ Página 1
¿QUÉ NECESITAMOS?
Para este proyecto es muy indispensable disponer de un conjunto de
herramientas básicas de un laboratorio de electrónica: un soldador,
alambre de estaño, unos alicates de punta de aguja y cables.
Para el desarrollo de nuestro proyecto dispondremos de los siguientes
materiales:
 1 Atmega32A
 1 termistor TTC103
 1 sensor de Humedad HH10D
 16 displays de 7 segmentos Ánodo común (a su color preferido) 6
displays en par pequeños, 2 individuales pequeños y 2 individuales
medianos.
 2 Decodificadores BCD a 7 segmentos 74LS47.
 15 resistencias de 330 Ohms.
 16 resistencias de 1 KOhms
 5 resistencias de 10 KOhms
 2 resistencias de 4.7 KOhms
 2 resistencias de 560 Ohms
 1 resistencia de 120 Ohms
 1 resistencia de 220 Ohms
 1 potenciómetro lineal de 10 KOhms
 16 transistores 2N3904
 1 Real Time Clock DS1307
 1 cristal 32.768KHZ
http://relojcalendariotemyhum.blogspot.com/ Página 2
 1 batería de botón 3V con su porta-pila
 2 condensadores electrolíticos de 47uF
 1 condensador electrolítico de 100uF
 2 condensadores cerámicos de 0.1uF
 4 condensadores cerámicos de 10nF
 1 Led rojo de 3mm
 3 pulsadores
 4 jumpers.
 1 regleta de espadines hembra y macho
 1 regulador de voltaje LM317
 Jack DC para PCB.
 Placa doble PCB
Atemga32A Termistor TTC10 HH10D
Displays en par Display Display mediano
http://relojcalendariotemyhum.blogspot.com/ Página 3
Decodificadores BCD
a 7 segmentos 74LS47
Resistencias. Potenciómetro lineal
Ttransistores 2N3904 Real Time Clock
DS1307
Cristal 32.768KHZ
Batería de botón 3V
con su porta-pila
Condensadores
electrolíticos
Condensadores cerámicos
Led rojo de 3mm Pulsadores Jumpers
http://relojcalendariotemyhum.blogspot.com/ Página 4
Espadines hembra y
macho
Regulador de
voltaje LM317
Jack DC para PCB
DESARROLLO
DESPLAZAMIENTO O BARRIDO
El barrido de los displays es básicamente 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 través de 8 puertos por lo que equivale
a utilizar todo un puerto del uC para poder manejar un solo 7-
segmentos.
Pero en esta ocasión nos encontramos con la necesidad de utilizar
más de un display pero a la vez no disponemos de la cantidad
suficiente de puertos para ser utilizados. Por la falta de puertos es
imposible conectar y encender todo un conjunto de 16 dispalys, para
ello se utiliza el método de barrido que consiste en encender y apagar
cada display seguido de otro cada 1ms, entonces no la vemos
encenderse y apagarse, porque la frecuencia de es imperceptible al
ojo humano.
Consideramos encender y apagar en 4 puertos del uC para un
conjunto de 8 (displays de tiempo y temperatura), y otros 4 puertos para
un conjunto de 8 (displays de fecha y humedad). El propósito de esta
http://relojcalendariotemyhum.blogspot.com/ Página 5
división es mejorar el rendimiento durante el proceso de barrido; por
ejemplo durante el encendido y apagado del primer y último display
hay que considerar el tiempo que demora e barrer hasta el último
display, en este caso es una frecuencia de aproximadamente de 8ms
sin considerar tiempos muertos del uC.
BCD A 7 SEGMENTOS
Uno de los problemas mencionados anteriormente es el número 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 número total de puertos utilizados para la presentación
de datos son de 8 puertos, y para el barrido de los displays son de 16
puertos uno por display conectado al común, por lo tanto los puertos
utilizados por el uC son de 24 puertos para un total de 16 displays.
HORA Y FECHA
La presentación de hora y fecha se la realiza mediante un el
dispositivo DS1307, Por la simple razón de trabajar con eventos más
precisos, puntuales y exactos a lo largo del tiempo. Este pequeño
dispositivo es uno de los más populares en relojes RTC (Real Time Clock)
por su sencillez de uso y por su confiabilidad a largo plazo. Preparado
para ofrecerte la hora hasta el año 2100 y bisiestos.
Para la lectura de hora y fecha se usa el bus I2C entre el uC y RTC
que brinda hora con minutos y segundos y calendario que contempla
los años bisiestos hasta fin de siglo.
SENSOR DE TEMPERATURA
Uno de los principales objetivos de este proyecto es el uso de un
sensor de temperatura analógica para la visualización de temperatura
en grados celcius en dos displays.
http://relojcalendariotemyhum.blogspot.com/ Página 6
El sensor utilizado es el TTC103 de salida de voltaje analógico, por la
única razón de disponer este dispositivo, la opción de utilizar otro sensor
es opcional, pero yo dispongo del termistor.
Las características del termistor son las siguientes:
Características Valor
Valor de resistencia nominal del
termistor (NTC) a 25ºC
10000 [ohm]
Parámetro beta 4050 [K]
Fórmula utilizada por el fabricante 𝑅 ( 𝑇 ) = 𝑅25 𝑒𝑥𝑝 (𝐵/𝑇 − 𝐵/𝑇25)
Para la lectura de los datos del sensor se utiliza un puerto analógico
del uC el cual es el puerto ADC7, y para obtener la temperatura real se
utiliza la fórmula propuesta el fabricante en grados Kelvin, y para
obtener en grados celcius como se lo ha propuesto solo se usa una
simple ecuación °C = °K - 273.15.
SENSOR DE HUMEDAD
Otro de los objetivos de este proyecto es el uso de un sensor de
humedad para la visualización de humedad relativa en dos displays.
El sensor utilizado es el HH10D cuya salida es un valor de frecuencia
que varía entre los 5 y 10 kHz dependiendo de la humedad entre el 1 y
99 % respectivamente.
El modulo del HH10D consiste en un sensor capacitivo tipo CMOS,
convertidor de frecuencia y una memoria EEPROM usada para el
almacenamiento de los factores de calibración y para el cálculo de la
humedad. Debido a las características del sensor de humedad de tipo
condensador, el sistema puede responder a los cambios de humedad
muy rápido.
Las características del sensor de humedad son las siguientes:
http://relojcalendariotemyhum.blogspot.com/ Página 7
Parámetro Mínimo nominal Máximo
Rango de humedad 1 % 99 %
exactitud -3 % +3 %
Rango de temperatura -10 °C +60 °C
Voltaje de operación 2.7 V 3 V 3.3 V
estabilidad vs tiempo 1 % por año
Corriente de consumo 120 uA 150 uA 180 uA
Rango de frecuencia de
salida
5 kHz 6.5 kHz 10 kHz
Para la lectura de humedad correcta, dos factores de calibración
deben ser leídos desde la EEPROM en la dirección 10 y 12 por un bus i2C
para la sensibilidad y compensación 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 expresión:
𝐻𝑅(%) = (𝑐𝑜𝑚𝑝𝑒𝑛𝑠𝑎𝑐𝑖𝑜𝑛 − 𝐹𝑜𝑢𝑡) ∗ 𝑠𝑒𝑛𝑠/2^12
La dirección física de la EEPROM está fijada a 81.
Dirección de la sensibilidad 10.
Dirección de la compensación 12.
Para la lectura de los factores de calibración 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 compensación = 7792.
http://relojcalendariotemyhum.blogspot.com/ Página 8
PULSADORES
Con el objeto de realizar un reloj con funciones básicas, se incorporó
3 pulsadores con el propósito de igualar la hora o cambiar la fecha.
El pulsador Menú realiza la función de cambiar de modo normal a
modo minutos, horas, años, meses y días:
 Menu = 0; modo normal
 Menu = 1; modo de igualar minutos
 Menu = 2; modo de igualar horas
 Menu = 3; modo de igualar Años
 Menu = 4; modo de igualar meses
 Menu = 5; modo de igualar días
 Menu = 6; modo de guardar en memoria tiempo y fecha
actualizada
Los pulsadores de disminuir (-) y aumentar (+) realizar la simple función
de cambiar los valores de los datos para obtener los deseados o
igualados con respecto a un reloj o calendario actual.
http://relojcalendariotemyhum.blogspot.com/ Página 1
ESQUEMÁTICOS
Esquema del reloj calendario, temperatura y humedad.
Nota: no existe una librería 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 razón de utilizar componentes disponibles a mi alcance, si prefieres puedes usar un Lm1117 y modificar el esquema para obtener 3.3V.
SERVOMOTOR _COMUNICACION SERIAL
SCL
SDA
BCD_1_A
BCD_1_B
BCD_1_C
BCD_1_D
DISPLAY_1_SEG
DISPLAY_2_SEG
DISPLAY_1_MIN
TERMISTOR
RTC
R2
4.7k
R3
4.7k
SCL
SDA
VBAT
3
X1
1
X2
2
SCL
6
SDA
5
SOUT
7
DS1307
DS1307
12
32.768KHZ
CRYSTAL
12
3 VOLTS
3
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
1 - 74LS47N
7447
R4
1k
Q1
2N3904
PA0/ADC0
40
PA1/ADC1
39
PA2/ADC2
38
PA3/ADC3
37
PA4/ADC4
36
PA5/ADC5
35
PA6/ADC6
34
PB0/XCK/T0
1
PB1/T1
2
PB2/INT2/AIN0
3
PB3/OC0/AIN1
4
PB4/SS
5
PB5/MOSI
6
PB6/MISO
7
PB7/SCK
8
PA7/ADC7
33
RESET
9
XTAL1
13
XTAL2
12
PC0/SCL
22
PC1/SDA
23
PC2/TCK
24
PC3/TMS
25
PC4/TDO
26
PC5/TDI
27
PC6/TOSC1
28
PC7/TOSC2
29
PD0/RXD
14
PD1/TXD
15
PD2/INT0
16
PD3/INT1
17
PD4/OC1B
18
PD5/OC1A
19
PD6/ICP
20
PD7/OC2
21
AVCC
30
AREF
32
ATMEGA32A
ATMEGA32
DISPLAY_2_MIN
DISPLAY_1_HORA
DISPLAY_2_HORA
DISPLAY_1_AÑO
DISPLAY_2_AÑO
DISPLAY_1_MES
DISPLAY_2_MES
DISPLAY_1_DIA
DISPLAY_2_DIA
DISPLAY_1_TEMPERATURA
DISPLAY_2_TEMPERATURA
DISPLAY_1_HUMEDAD
BCD_2_A
BCD_2_B
BCD_2_C
BCD_2_D
DISPLAY_2_HUMEDAD
HH10D
Refe_comparador
INCREMENTO
DECREMENTO
MENU
C1
0.1u
C2
0.1u
R1
120
BCD_1_A
BCD_1_B
BCD_1_C
BCD_1_D
A_1
B_1
C_1
D_1
E_1
F_1
G_1
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
2 - 74LS47N
7447
BCD_2_A
BCD_2_B
BCD_2_C
BCD_2_D
A_2
B_2
C_2
D_2
E_2
F_2
G_2
A_1
B_1
C_1
D_1
E_1
F_1
G_1
TIME_1
R5
1k
Q2
2N3904
TIME_2
R6
1k
Q3
2N3904
TIME_3
R7
1k
Q4
2N3904
TIME_4
R8
1k
Q5
2N3904
TIME_5
R9
1k
Q6
2N3904
TIME_6
TIME_1
TIME_2
TIME_3
TIME_4
TIME_5
TIME_6
R10
1k
Q7
2N3904
DATA_1
R11
1k
Q8
2N3904
DATA_2
R12
1k
Q9
2N3904
DATA_3
R13
1k
Q10
2N3904
DATA_4
R14
1k
Q11
2N3904
DATA_5
R15
1k
Q12
2N3904
DATA_6
DATA_1
DATA_2
DATA_3
DATA_4
DATA_5
DATA_6
R16
1k
Q13
2N3904
TEMP_1
R17
1k
Q14
2N3904
TEMP_2
R18
1k
Q15
2N3904
HUME_1
R19
1k
Q16
2N3904
HUME_2
TEMP_1
TEMP_2
A_2
B_2
C_2
D_2
E_2
F_2
G_2
HUME_1
HUME_2
DISPLAY_1_SEG
DISPLAY_2_SEG
DISPLAY_1_MIN
DISPLAY_2_MIN
DISPLAY_1_HORA
DISPLAY_2_HORA
DISPLAY_1_AÑO
DISPLAY_2_AÑO
DISPLAY_1_MES
DISPLAY_2_MES
DISPLAY_1_DIA
DISPLAY_2_DIA
DISPLAY_1_TEMPERATURA
DISPLAY_2_TEMPERATURA
DISPLAY_1_HUMEDAD
DISPLAY_2_HUMEDAD
12
MENU
R20
10k
MENU
12
INCRE
R21
10k
INCREMENTO
12
DECRE
R22
10k
DECREMENTO
A_2
B_2
C_2
D_2
E_2
F_2
G_2
A_1
B_1
C_1
D_1
E_1
F_1
G_1
12
RESET
R41
10k
Reset
Reset
HH10D
HH10D
R23
10k
TERMISTOR
R24
560
R25
560
Refe_comparador
VI
3
VO
2
ADJ
1
LM317T
LM317T
R26
220
C3
100uF
C4
10nF
R27
330R28
330R29
330R30
330R31
330R32
330R33
330
R34
330R35
330R36
330R37
330R38
330R39
330R40
330
1 3
2
RV1
10k
1
2
3
4
5
HH10D
CONN-H5
HH10D
3Vcc
3Vcc
SCL
SDA
1
2
SCL-HH10D
CONN-H2
1
2
SDA-HH10D
CONN-H2
1
2
SCL-RTC
CONN-H2
1
2
SDA-RTC
CONN-H2
C5
10nF
C6
10nF
C7
10nF
1
2
NTC-TT103
CONN-H2
AK
D1
LED-RED
R42
330
C8
47uF
C9
10uF
BYRON GANAZHAPA
Bloque del Sensor de Humedad
http://relojcalendariotemyhum.blogspot.com/ Página 1
DISEÑO DE PCB
DISEÑO DE LA TARJETA DE CONTROL PARA SU ELABORACIÓN EN PCB
DE PLACA DOBLE
Placa superior de la PCB.
Placa inferior de la PCB.
http://relojcalendariotemyhum.blogspot.com/ Página 2
DISEÑO DE LA TARJETA DE DISPLAY Y VISUALIZACIÓN EN PCB.
Placa superior de la PCB.
http://relojcalendariotemyhum.blogspot.com/ Página 3
Placa inferior de la PCB.
DISEÑO EN 3D DE LAS PLACAS PCB
Se fabricarán 2 placas para evitar realizar una sola grande y para
empotrar una sobre otra. Si prefieres puedes usar componentes
superficiales o SMD y modificando el diseño en PCB.
http://relojcalendariotemyhum.blogspot.com/ Página 4
CODIGO
El programa fue desarrollado en CodevisionAVR versión 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 : Reloj, Temperatura y Humedad
Version : 1.0
Date : 30/09/2014
Author : Byron Ganazhapa
Company : UTPL
Comments:
Chip type : ATmega32A
Program type : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
*****************************************************/
#include <mega32a.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
#include <bcd.h>
// Variables de tiempo y fecha
unsigned char hora;
unsigned char minu;
unsigned char seg;
unsigned char dia;
unsigned char mes;
unsigned char anyo;
unsigned char hora_BCD;
unsigned char minu_BCD;
unsigned char seg_BCD;
unsigned char dia_BCD;
unsigned char mes_BCD;
unsigned char anyo_BCD;
unsigned char dig_2_seg, dig_1_seg;
unsigned char dig_2_min, dig_1_min;
unsigned char dig_2_hora, dig_1_hora;
unsigned char dig_2_dia, dig_1_dia;
unsigned char dig_2_mes, dig_1_mes;
unsigned char dig_2_anyo, dig_1_anyo;
unsigned char get_hora, get_minu, get_seg;
unsigned char get_dia, get_mes, get_anyo;
#define DISPLAY_1_SEG 0x01
http://relojcalendariotemyhum.blogspot.com/ Página 5
#define DISPLAY_2_SEG 0x01
#define DISPLAY_1_MIN 0x01
#define DISPLAY_2_MIN 0x01
#define DISPLAY_1_HORA 0x01
#define DISPLAY_2_HORA 0x01
#define DISPLAY_1_DIA 0x01
#define DISPLAY_2_DIA 0x01
#define DISPLAY_1_MES 0x01
#define DISPLAY_2_MES 0x01
#define DISPLAY_1_ANYO 0x01
#define DISPLAY_2_ANYO 0x01
#define DISPLAY_1_TEMPERATURA 0x01
#define DISPLAY_2_TEMPERATURA 0x01
#define DISPLAY_1_HUMEDAD 0x01
#define DISPLAY_2_HUMEDAD 0x01
int Menu=0;
int dig_1_temp, dig_2_temp;
int dig_1_hum, dig_2_hum;
// variables para sensor de humedad
unsigned int count = 0;
float temp;
float frecuencia;
float H = 0.0;
int Humedad;
// variables para sensor de tempoeratura
float Vin = 5.0; // [V] Voltage de entrada en el divisor
de tension
float Raux = 10000; // [ohm] Valor de la resistencia
secundaria del divisor de tension
float R0 = 10000; // [ohm] Valor de resistencia nominal
del termistor (NTC) a 25ºC
float T0 = 298.15; // [K] (25ºC)
float Vout = 0.0; // [V] Voltage given by the Voltage-
Divider
float Rout = 0.0; // [ohm] Resistencia actual del
Termistor (NTC)
float beta = 4050.0; // [K] Parametro Beta
float TempK = 0.0; // [K] Temperatura de salida en grados
Kelvin
int TempC = 0; // [ºC] Temperatura de salida en grados
Celsius
float Rinf; // [ohm] Parametros Rinf
long iCont = 0; // Contador de ciclos, par el calculo de la
temperatura media
float cTemp1; // Variable temporal para acumular las
temperaturas leidas
// variables para ADC
unsigned int adc_data;
#define ADC_VREF_TYPE 0x40 //47
// I2C Bus functions
#asm
.equ __i2c_port=0x15 ;PORTC
.equ __sda_bit=1
.equ __scl_bit=0
http://relojcalendariotemyhum.blogspot.com/ Página 6
#endasm
#include <i2c.h>
// DS1307 Real Time Clock functions
#include <ds1307.h>
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if(Menu == 1){ // igualar minutos
minu = minu + 1;
delay_ms(100);
if(minu>59) minu = 0;
}
if(Menu == 2){ // igualar horas
hora = hora + 1;
delay_ms(100);
if(hora>24) hora = 0;
}
if(Menu == 3){ // igualar año
anyo = anyo + 1;
delay_ms(100);
if(anyo>99) anyo = 0;
}
if(Menu == 4){ // igualar mes
mes = mes + 1;
delay_ms(100);
if(mes>12) mes = 0;
}
if(Menu == 5){ // igualar dia
dia = dia + 1;
delay_ms(100);
if(dia>31) dia = 0;
}
}
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
if(Menu == 1){ // igualar minutos
minu = minu - 1;
delay_ms(100);
if((signed char)minu<0) minu = 59;
}
if(Menu == 2){ // igualar horas
hora = hora - 1;
delay_ms(100);
if((signed char)hora<0) hora = 23;
}
if(Menu == 3){ // igualar año
anyo = anyo - 1;
delay_ms(100);
if((signed char)anyo<0) anyo = 99;
}
http://relojcalendariotemyhum.blogspot.com/ Página 7
if(Menu == 4){ // igualar mes
mes = mes - 1;
delay_ms(100);
if((signed char)mes<0) mes = 12;
}
if(Menu == 5){ // igualar dia
dia = dia - 1;
delay_ms(100);
if((signed char)dia<0) dia = 31;
}
}
// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
TCNT1H = 0x00;
TCNT1L = 0x00;
temp = (float)count;
frecuencia = temp*1.02554; //constante de calibración =
1.02354. Cálculo de humedad
H = (7792-frecuencia)*(0.09204);
Humedad = (int)H;
count = 0;
}
// Analog Comparator interrupt service routine
interrupt [ANA_COMP] void ana_comp_isr(void)
{
count = count+1; // Cálculo de frecuencia.
}
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
PORTA=0x00;
DDRA=0x7F;
PORTB=0x00;
DDRB=0xF1;
PORTC=0x00;
http://relojcalendariotemyhum.blogspot.com/ Página 8
DDRC=0xFC;
PORTD=0x00;
DDRD=0xF3;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 31,250 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x0C;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1A=(31250-1);
OCR1BH=0x00;
OCR1BL=0x00;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: On
// INT1 Mode: Falling Edge
// INT2: Off
GICR|=0xC0;
MCUCR=0x0A;
MCUCSR=0x00;
GIFR=0xC0;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x10;
// Analog Comparator initialization
// Analog Comparator: On
// Interrupt on Rising Output Edge
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x0B;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 500,000 kHz
// ADC Voltage Reference: AVCC pin
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
// I2C Bus initialization
i2c_init();
// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
http://relojcalendariotemyhum.blogspot.com/ Página 9
rtc_init(0,0,0);
rtc_get_time(&get_hora,&get_minu,&get_seg);
rtc_get_date(&get_dia,&get_mes,&get_anyo);
delay_ms(100);
hora = get_hora;
minu = get_minu;
seg = get_seg;
dia = get_dia;
mes = get_mes;
anyo = get_anyo;
rtc_set_time(hora,minu,seg);
rtc_set_date(dia,mes,anyo);
// Global enable interrupts
#asm("sei")
while (1){
/*
Menu = 0; modo normal
Menu = 1; modo de igualar minutos
Menu = 2; modo de igualar horas
Menu = 3; modo de igualar Años
Menu = 4; modo de igualar meses
Menu = 5; modo de igualar días
Menu = 6; modo de guardar en memoria tiempo y fecha actualizada
*/
if (PINB.1 == 1){ // Botón 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
// Cálculo del valor de la resistencia termistor (NTC)
actual (a través de Vout)
Vout = Vin*(adc_data)/1023.0;
Rout = (Raux*Vout/(Vin-Vout));
// Calculo de la temperatura en grados Kelvin
http://relojcalendariotemyhum.blogspot.com/ Página 10
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;
dia_BCD = bin2bcd(dia); dig_2_dia = dia_BCD&0xF0;
dig_1_dia = (dia_BCD&0x0F)<<4;
mes_BCD = bin2bcd(mes); dig_2_mes = mes_BCD&0xF0;
dig_1_mes = (mes_BCD&0x0F)<<4;
anyo_BCD = bin2bcd(anyo); dig_2_anyo = anyo_BCD&0xF0;
dig_1_anyo = (anyo_BCD&0x0F)<<4;
Humedad = bin2bcd(H); dig_2_hum = Humedad&0xF0;
dig_1_hum = (Humedad&0x0F)<<4;
// Realizo la miltiplexación de displays.
PORTA = dig_1_seg;
PORTB = dig_1_anyo;
PORTA.4 = DISPLAY_1_SEG;
PORTC.5 = DISPLAY_1_ANYO;
delay_ms(1);
PORTA.4 = DISPLAY_1_SEG & 0x00;
PORTC.5 = DISPLAY_1_ANYO & 0x00;
PORTA = dig_2_seg;
PORTB = dig_2_anyo;
PORTA.5 = DISPLAY_2_SEG;
PORTC.6 = DISPLAY_2_ANYO;
delay_ms(1);
PORTA.5 = DISPLAY_2_SEG & 0x00;
PORTC.6 = DISPLAY_2_ANYO & 0x00;
PORTA = dig_1_min;
PORTB = dig_1_mes;
PORTA.6 = DISPLAY_1_MIN;
PORTC.7 = DISPLAY_1_MES;
delay_ms(1);
PORTA.6 = DISPLAY_1_MIN & 0x00;
PORTC.7 = DISPLAY_1_MES & 0x00;
PORTA = dig_2_min;
PORTB = dig_2_mes;
PORTC.2 = DISPLAY_2_MIN;
http://relojcalendariotemyhum.blogspot.com/ Página 11
PORTD.0 = DISPLAY_2_MES;
delay_ms(1);
PORTC.2 = DISPLAY_2_MIN & 0x00;
PORTD.0 = DISPLAY_2_MES & 0x00;
PORTA = dig_1_hora;
PORTB = dig_1_dia;
PORTC.3 = DISPLAY_1_HORA;
PORTD.1 = DISPLAY_1_DIA;
delay_ms(1);
PORTC.3 = DISPLAY_1_HORA & 0x00;
PORTD.1 = DISPLAY_1_DIA & 0x00;
PORTA = dig_2_hora;
PORTB = dig_2_dia;
PORTC.4 = DISPLAY_2_HORA;
PORTD.4 = DISPLAY_2_DIA;
delay_ms(1);
PORTC.4 = DISPLAY_2_HORA & 0x00;
PORTD.4 = DISPLAY_2_DIA & 0x00;
PORTA = dig_1_temp;
PORTB = dig_1_hum;
PORTD.5 = DISPLAY_1_TEMPERATURA;
PORTD.7 = DISPLAY_1_HUMEDAD;
delay_ms(1);
PORTD.5 = DISPLAY_1_TEMPERATURA & 0x00;
PORTD.7 = DISPLAY_1_HUMEDAD & 0x00;
PORTA = dig_2_temp;
PORTB = dig_2_hum;
PORTD.6 = DISPLAY_2_TEMPERATURA;
PORTB.0 = DISPLAY_2_HUMEDAD;
delay_ms(1);
}
}
IMÁGENES DEL PROYECTO CONCLUIDO
http://relojcalendariotemyhum.blogspot.com/ Página 12
http://relojcalendariotemyhum.blogspot.com/ Página 13
http://relojcalendariotemyhum.blogspot.com/ Página 14
http://relojcalendariotemyhum.blogspot.com/ Página 15
http://relojcalendariotemyhum.blogspot.com/ Página 16
http://relojcalendariotemyhum.blogspot.com/ Página 17
http://relojcalendariotemyhum.blogspot.com/ Página 18
http://relojcalendariotemyhum.blogspot.com/ Página 19
Si deseas descargar el proyecto completa visita el siguiente blog:
http://relojcalendariotemyhum.blogspot.com/

Mais conteúdo relacionado

Mais procurados

Intel galileo gen1
Intel galileo gen1Intel galileo gen1
Intel galileo gen1miltonam
 
Manual Caldera Condensación Junkers Cerapur Smart ZWB 28
Manual Caldera Condensación Junkers Cerapur Smart ZWB 28Manual Caldera Condensación Junkers Cerapur Smart ZWB 28
Manual Caldera Condensación Junkers Cerapur Smart ZWB 28Precio Calderas
 
Controlador autom
Controlador automControlador autom
Controlador automraiverfx
 
Brazo robotico ksr10 ps2 x mayo 2015 a 9v_version_3
Brazo robotico ksr10 ps2 x  mayo 2015 a 9v_version_3Brazo robotico ksr10 ps2 x  mayo 2015 a 9v_version_3
Brazo robotico ksr10 ps2 x mayo 2015 a 9v_version_3joaquinin1
 
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2
Proyecto brazo robotico ksr10  enero marzo 2015 a 9 v-version_2Proyecto brazo robotico ksr10  enero marzo 2015 a 9 v-version_2
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2joaquinin1
 
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, END DEVICE + Free RTOS (2020 PAO 1)
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, END DEVICE + Free RTOS (2020 PAO 1)⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, END DEVICE + Free RTOS (2020 PAO 1)
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, END DEVICE + Free RTOS (2020 PAO 1)Victor Asanza
 
Proyecto brazo robotico ksr10 enero marzo 2015
Proyecto brazo robotico ksr10  enero marzo 2015Proyecto brazo robotico ksr10  enero marzo 2015
Proyecto brazo robotico ksr10 enero marzo 2015joaquinin1
 
Control de temperatura con el plc s7 200 (4)
Control de temperatura con el plc s7 200 (4)Control de temperatura con el plc s7 200 (4)
Control de temperatura con el plc s7 200 (4)Moi Torres
 
Reporte 1 ultrasonico
Reporte 1 ultrasonicoReporte 1 ultrasonico
Reporte 1 ultrasonicoIsaac Hil
 

Mais procurados (20)

2logger
2logger2logger
2logger
 
Reloj digital
Reloj digitalReloj digital
Reloj digital
 
Intel galileo gen1
Intel galileo gen1Intel galileo gen1
Intel galileo gen1
 
U control 01
U control 01U control 01
U control 01
 
Manual Caldera Condensación Junkers Cerapur Smart ZWB 28
Manual Caldera Condensación Junkers Cerapur Smart ZWB 28Manual Caldera Condensación Junkers Cerapur Smart ZWB 28
Manual Caldera Condensación Junkers Cerapur Smart ZWB 28
 
Informe dav
Informe  davInforme  dav
Informe dav
 
Contador binario
Contador binarioContador binario
Contador binario
 
Ts esp me-es
Ts esp me-esTs esp me-es
Ts esp me-es
 
Controlador autom
Controlador automControlador autom
Controlador autom
 
Junkers cerapur zwbc 24 28-2 c_jm
Junkers cerapur zwbc 24 28-2 c_jmJunkers cerapur zwbc 24 28-2 c_jm
Junkers cerapur zwbc 24 28-2 c_jm
 
Brazo robotico ksr10 ps2 x mayo 2015 a 9v_version_3
Brazo robotico ksr10 ps2 x  mayo 2015 a 9v_version_3Brazo robotico ksr10 ps2 x  mayo 2015 a 9v_version_3
Brazo robotico ksr10 ps2 x mayo 2015 a 9v_version_3
 
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2
Proyecto brazo robotico ksr10  enero marzo 2015 a 9 v-version_2Proyecto brazo robotico ksr10  enero marzo 2015 a 9 v-version_2
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2
 
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, END DEVICE + Free RTOS (2020 PAO 1)
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, END DEVICE + Free RTOS (2020 PAO 1)⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, END DEVICE + Free RTOS (2020 PAO 1)
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, END DEVICE + Free RTOS (2020 PAO 1)
 
Proyecto brazo robotico ksr10 enero marzo 2015
Proyecto brazo robotico ksr10  enero marzo 2015Proyecto brazo robotico ksr10  enero marzo 2015
Proyecto brazo robotico ksr10 enero marzo 2015
 
Manual de plc
Manual de plcManual de plc
Manual de plc
 
Control de temperatura con el plc s7 200 (4)
Control de temperatura con el plc s7 200 (4)Control de temperatura con el plc s7 200 (4)
Control de temperatura con el plc s7 200 (4)
 
Material proyecto co2.docx
Material proyecto co2.docxMaterial proyecto co2.docx
Material proyecto co2.docx
 
Clase - Temporizadores
Clase - TemporizadoresClase - Temporizadores
Clase - Temporizadores
 
Reporte 1 ultrasonico
Reporte 1 ultrasonicoReporte 1 ultrasonico
Reporte 1 ultrasonico
 
PLC: practica 7 shift registers
PLC: practica 7 shift registersPLC: practica 7 shift registers
PLC: practica 7 shift registers
 

Destaque (9)

Veleta
VeletaVeleta
Veleta
 
La estacion meteorologica
La estacion meteorologicaLa estacion meteorologica
La estacion meteorologica
 
sensores de humedad
sensores de humedadsensores de humedad
sensores de humedad
 
Sensor de humedad
Sensor de humedadSensor de humedad
Sensor de humedad
 
Humedad
HumedadHumedad
Humedad
 
Sensores de humedad
Sensores de humedadSensores de humedad
Sensores de humedad
 
Presentacion sensores de temperatura
Presentacion sensores de temperaturaPresentacion sensores de temperatura
Presentacion sensores de temperatura
 
Instrumentos meteorologicos
Instrumentos meteorologicosInstrumentos meteorologicos
Instrumentos meteorologicos
 
INSTRUMENTOS PARA MEDIR EL CLIMA Y LA HUMEDAD
INSTRUMENTOS PARA MEDIR EL CLIMA Y LA HUMEDADINSTRUMENTOS PARA MEDIR EL CLIMA Y LA HUMEDAD
INSTRUMENTOS PARA MEDIR EL CLIMA Y LA HUMEDAD
 

Semelhante a Reloj calendario con temperatura y humedad

Manual caldera Junkers Cerapur Smart ZWB 28
Manual caldera Junkers Cerapur Smart ZWB 28Manual caldera Junkers Cerapur Smart ZWB 28
Manual caldera Junkers Cerapur Smart ZWB 28ClimAhorro
 
Monografia contador digital
Monografia contador digitalMonografia contador digital
Monografia contador digitalJuanito Edgar
 
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 
Adquisición de señales con Scilab/Xcos - Arduino.
Adquisición de señales con Scilab/Xcos - Arduino. Adquisición de señales con Scilab/Xcos - Arduino.
Adquisición de señales con Scilab/Xcos - Arduino. Lenin Jiménez
 
Proyecto micro
Proyecto microProyecto micro
Proyecto microjhompix
 
Dispositivos y componentes electronicos
Dispositivos y componentes electronicosDispositivos y componentes electronicos
Dispositivos y componentes electronicosUniversidad Telesup
 
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 

Semelhante a Reloj calendario con temperatura y humedad (20)

uControl Nº _ 01-.pdf
uControl Nº _ 01-.pdfuControl Nº _ 01-.pdf
uControl Nº _ 01-.pdf
 
uControl Nº _ 01-.pdf
uControl Nº _ 01-.pdfuControl Nº _ 01-.pdf
uControl Nº _ 01-.pdf
 
Ucontrol revista 0001
Ucontrol revista 0001Ucontrol revista 0001
Ucontrol revista 0001
 
Manual caldera Junkers Cerapur Smart ZWB 28
Manual caldera Junkers Cerapur Smart ZWB 28Manual caldera Junkers Cerapur Smart ZWB 28
Manual caldera Junkers Cerapur Smart ZWB 28
 
Monografia contador digital
Monografia contador digitalMonografia contador digital
Monografia contador digital
 
Proyecto1
Proyecto1Proyecto1
Proyecto1
 
EDUARDO CAHUAZA CISNEROS_(8).pdf
EDUARDO CAHUAZA CISNEROS_(8).pdfEDUARDO CAHUAZA CISNEROS_(8).pdf
EDUARDO CAHUAZA CISNEROS_(8).pdf
 
Universidad tecnologica equinoccial
Universidad tecnologica equinoccialUniversidad tecnologica equinoccial
Universidad tecnologica equinoccial
 
01 Programacion M221 Basic II.pptx
01 Programacion M221 Basic II.pptx01 Programacion M221 Basic II.pptx
01 Programacion M221 Basic II.pptx
 
ENTRENAMIENTO_IMMULITE.ppt
ENTRENAMIENTO_IMMULITE.pptENTRENAMIENTO_IMMULITE.ppt
ENTRENAMIENTO_IMMULITE.ppt
 
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Practica 1 de capeto
Practica 1 de capetoPractica 1 de capeto
Practica 1 de capeto
 
Adquisición de señales con Scilab/Xcos - Arduino.
Adquisición de señales con Scilab/Xcos - Arduino. Adquisición de señales con Scilab/Xcos - Arduino.
Adquisición de señales con Scilab/Xcos - Arduino.
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Proyecto micro
Proyecto microProyecto micro
Proyecto micro
 
yineth
yinethyineth
yineth
 
ELECTRÓNICA INDUSTRIAL.pdf
ELECTRÓNICA INDUSTRIAL.pdfELECTRÓNICA INDUSTRIAL.pdf
ELECTRÓNICA INDUSTRIAL.pdf
 
Dispositivos y componentes electronicos
Dispositivos y componentes electronicosDispositivos y componentes electronicos
Dispositivos y componentes electronicos
 
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Mas de proyectos
Mas de proyectosMas de proyectos
Mas de proyectos
 

Mais de Byron Ganazhapa

Mais de Byron Ganazhapa (8)

Automodelo_IP
Automodelo_IPAutomodelo_IP
Automodelo_IP
 
Acoplador en cuadratura
Acoplador en cuadraturaAcoplador en cuadratura
Acoplador en cuadratura
 
Sintetizadores
SintetizadoresSintetizadores
Sintetizadores
 
Antena helicoidal 2.4 Ghz Diseño
Antena helicoidal 2.4 Ghz DiseñoAntena helicoidal 2.4 Ghz Diseño
Antena helicoidal 2.4 Ghz Diseño
 
Proyecto Mano Robotica
Proyecto Mano RoboticaProyecto Mano Robotica
Proyecto Mano Robotica
 
Diseño de un Amplificador de Audio
Diseño de un Amplificador de AudioDiseño de un Amplificador de Audio
Diseño de un Amplificador de Audio
 
Simulacion de Condensadores
Simulacion de CondensadoresSimulacion de Condensadores
Simulacion de Condensadores
 
Paper De Fisica
Paper De FisicaPaper De Fisica
Paper De Fisica
 

Último

Hitos de la Historia de la universidad de Cartagena 2024
Hitos de la Historia de la universidad de Cartagena 2024Hitos de la Historia de la universidad de Cartagena 2024
Hitos de la Historia de la universidad de Cartagena 20242024 GCA
 
PPT - EFECTO NETFLIX.pptx ..........................
PPT - EFECTO NETFLIX.pptx ..........................PPT - EFECTO NETFLIX.pptx ..........................
PPT - EFECTO NETFLIX.pptx ..........................RebecaVera12
 
Diseño y concepto DOC-20240412-WA0023..pdf
Diseño y concepto DOC-20240412-WA0023..pdfDiseño y concepto DOC-20240412-WA0023..pdf
Diseño y concepto DOC-20240412-WA0023..pdfSharonSmis
 
CARACTERIZACIÓN MEDICINA ALTERNATIVA Y TERAPIAS COMPLEMENTARIAS.pdf
CARACTERIZACIÓN MEDICINA ALTERNATIVA Y TERAPIAS COMPLEMENTARIAS.pdfCARACTERIZACIÓN MEDICINA ALTERNATIVA Y TERAPIAS COMPLEMENTARIAS.pdf
CARACTERIZACIÓN MEDICINA ALTERNATIVA Y TERAPIAS COMPLEMENTARIAS.pdfsolidalilaalvaradoro
 
Partes-de-la-noticia como aspecto de gran importancia en el Diseño Editorial ...
Partes-de-la-noticia como aspecto de gran importancia en el Diseño Editorial ...Partes-de-la-noticia como aspecto de gran importancia en el Diseño Editorial ...
Partes-de-la-noticia como aspecto de gran importancia en el Diseño Editorial ...collagedesign18
 
669852196-Manejo-de-Las-Principales-Cuentas-Contables-pptx.pdf
669852196-Manejo-de-Las-Principales-Cuentas-Contables-pptx.pdf669852196-Manejo-de-Las-Principales-Cuentas-Contables-pptx.pdf
669852196-Manejo-de-Las-Principales-Cuentas-Contables-pptx.pdfyolandavalencia19
 
dia del niño peruano para cartulina.pdf.
dia del niño peruano para cartulina.pdf.dia del niño peruano para cartulina.pdf.
dia del niño peruano para cartulina.pdf.JimenaPozo3
 
658953840-5-Etapas-Del-Proyecto-de-Emprendimiento.pdf
658953840-5-Etapas-Del-Proyecto-de-Emprendimiento.pdf658953840-5-Etapas-Del-Proyecto-de-Emprendimiento.pdf
658953840-5-Etapas-Del-Proyecto-de-Emprendimiento.pdfSSIETETO
 
INSTRUCTIVO PARA RIESGOS DE TRABAJO SART2 iess.pdf
INSTRUCTIVO PARA RIESGOS DE TRABAJO SART2 iess.pdfINSTRUCTIVO PARA RIESGOS DE TRABAJO SART2 iess.pdf
INSTRUCTIVO PARA RIESGOS DE TRABAJO SART2 iess.pdfautomatechcv
 
Diseño ( concepto-caracteristicas y herramientas para el diseño.pdf
Diseño ( concepto-caracteristicas y herramientas para el diseño.pdfDiseño ( concepto-caracteristicas y herramientas para el diseño.pdf
Diseño ( concepto-caracteristicas y herramientas para el diseño.pdfSharonSmis
 
PLANTILLA POWER POINT EL NUEVO ECUADOR EC
PLANTILLA POWER POINT EL NUEVO ECUADOR ECPLANTILLA POWER POINT EL NUEVO ECUADOR EC
PLANTILLA POWER POINT EL NUEVO ECUADOR ECESTADISTICAHDIVINAPR
 
trabajo de Texto Escrito y Cómo Aplicarlas.pdf
trabajo de Texto Escrito y Cómo Aplicarlas.pdftrabajo de Texto Escrito y Cómo Aplicarlas.pdf
trabajo de Texto Escrito y Cómo Aplicarlas.pdfcpachecot
 
Plantilla árbol de problemas psico..pptx
Plantilla árbol de problemas psico..pptxPlantilla árbol de problemas psico..pptx
Plantilla árbol de problemas psico..pptxYasmilia
 
Miriam Tello / Interdisciplinariedad en el diseño / tfm uned 2015
Miriam Tello / Interdisciplinariedad en el diseño / tfm uned 2015Miriam Tello / Interdisciplinariedad en el diseño / tfm uned 2015
Miriam Tello / Interdisciplinariedad en el diseño / tfm uned 2015Miriam Tello
 
Que es un sistema integrado de Seguridad.pptx
Que es un sistema integrado de Seguridad.pptxQue es un sistema integrado de Seguridad.pptx
Que es un sistema integrado de Seguridad.pptxYeissonRINCONRIVERA
 
abecedario cursiva para imprimir y colorear
abecedario cursiva para imprimir y colorearabecedario cursiva para imprimir y colorear
abecedario cursiva para imprimir y colorearNoemiCARABAJAL
 
Material de Apoyo - Acelerador de Carrera con Power BI.pdf
Material de Apoyo - Acelerador de Carrera con Power BI.pdfMaterial de Apoyo - Acelerador de Carrera con Power BI.pdf
Material de Apoyo - Acelerador de Carrera con Power BI.pdfTpicoAcerosArequipa
 
INFORME SOBRE EVALUACIÓN DIAGNÓSTICA MARZO 2024 TERCERO.pdf
INFORME SOBRE EVALUACIÓN DIAGNÓSTICA MARZO 2024 TERCERO.pdfINFORME SOBRE EVALUACIÓN DIAGNÓSTICA MARZO 2024 TERCERO.pdf
INFORME SOBRE EVALUACIÓN DIAGNÓSTICA MARZO 2024 TERCERO.pdfFlorMezones
 
TÉCNICAS GRÁFICAS PARA ARQUITECTOS Y DISEÑADORES.pdf
TÉCNICAS GRÁFICAS PARA ARQUITECTOS Y DISEÑADORES.pdfTÉCNICAS GRÁFICAS PARA ARQUITECTOS Y DISEÑADORES.pdf
TÉCNICAS GRÁFICAS PARA ARQUITECTOS Y DISEÑADORES.pdfkevinramirezd069bps
 
Arquetipos de Jung ejemplos en el diseño
Arquetipos de Jung ejemplos en el diseñoArquetipos de Jung ejemplos en el diseño
Arquetipos de Jung ejemplos en el diseñosindyaldana1
 

Último (20)

Hitos de la Historia de la universidad de Cartagena 2024
Hitos de la Historia de la universidad de Cartagena 2024Hitos de la Historia de la universidad de Cartagena 2024
Hitos de la Historia de la universidad de Cartagena 2024
 
PPT - EFECTO NETFLIX.pptx ..........................
PPT - EFECTO NETFLIX.pptx ..........................PPT - EFECTO NETFLIX.pptx ..........................
PPT - EFECTO NETFLIX.pptx ..........................
 
Diseño y concepto DOC-20240412-WA0023..pdf
Diseño y concepto DOC-20240412-WA0023..pdfDiseño y concepto DOC-20240412-WA0023..pdf
Diseño y concepto DOC-20240412-WA0023..pdf
 
CARACTERIZACIÓN MEDICINA ALTERNATIVA Y TERAPIAS COMPLEMENTARIAS.pdf
CARACTERIZACIÓN MEDICINA ALTERNATIVA Y TERAPIAS COMPLEMENTARIAS.pdfCARACTERIZACIÓN MEDICINA ALTERNATIVA Y TERAPIAS COMPLEMENTARIAS.pdf
CARACTERIZACIÓN MEDICINA ALTERNATIVA Y TERAPIAS COMPLEMENTARIAS.pdf
 
Partes-de-la-noticia como aspecto de gran importancia en el Diseño Editorial ...
Partes-de-la-noticia como aspecto de gran importancia en el Diseño Editorial ...Partes-de-la-noticia como aspecto de gran importancia en el Diseño Editorial ...
Partes-de-la-noticia como aspecto de gran importancia en el Diseño Editorial ...
 
669852196-Manejo-de-Las-Principales-Cuentas-Contables-pptx.pdf
669852196-Manejo-de-Las-Principales-Cuentas-Contables-pptx.pdf669852196-Manejo-de-Las-Principales-Cuentas-Contables-pptx.pdf
669852196-Manejo-de-Las-Principales-Cuentas-Contables-pptx.pdf
 
dia del niño peruano para cartulina.pdf.
dia del niño peruano para cartulina.pdf.dia del niño peruano para cartulina.pdf.
dia del niño peruano para cartulina.pdf.
 
658953840-5-Etapas-Del-Proyecto-de-Emprendimiento.pdf
658953840-5-Etapas-Del-Proyecto-de-Emprendimiento.pdf658953840-5-Etapas-Del-Proyecto-de-Emprendimiento.pdf
658953840-5-Etapas-Del-Proyecto-de-Emprendimiento.pdf
 
INSTRUCTIVO PARA RIESGOS DE TRABAJO SART2 iess.pdf
INSTRUCTIVO PARA RIESGOS DE TRABAJO SART2 iess.pdfINSTRUCTIVO PARA RIESGOS DE TRABAJO SART2 iess.pdf
INSTRUCTIVO PARA RIESGOS DE TRABAJO SART2 iess.pdf
 
Diseño ( concepto-caracteristicas y herramientas para el diseño.pdf
Diseño ( concepto-caracteristicas y herramientas para el diseño.pdfDiseño ( concepto-caracteristicas y herramientas para el diseño.pdf
Diseño ( concepto-caracteristicas y herramientas para el diseño.pdf
 
PLANTILLA POWER POINT EL NUEVO ECUADOR EC
PLANTILLA POWER POINT EL NUEVO ECUADOR ECPLANTILLA POWER POINT EL NUEVO ECUADOR EC
PLANTILLA POWER POINT EL NUEVO ECUADOR EC
 
trabajo de Texto Escrito y Cómo Aplicarlas.pdf
trabajo de Texto Escrito y Cómo Aplicarlas.pdftrabajo de Texto Escrito y Cómo Aplicarlas.pdf
trabajo de Texto Escrito y Cómo Aplicarlas.pdf
 
Plantilla árbol de problemas psico..pptx
Plantilla árbol de problemas psico..pptxPlantilla árbol de problemas psico..pptx
Plantilla árbol de problemas psico..pptx
 
Miriam Tello / Interdisciplinariedad en el diseño / tfm uned 2015
Miriam Tello / Interdisciplinariedad en el diseño / tfm uned 2015Miriam Tello / Interdisciplinariedad en el diseño / tfm uned 2015
Miriam Tello / Interdisciplinariedad en el diseño / tfm uned 2015
 
Que es un sistema integrado de Seguridad.pptx
Que es un sistema integrado de Seguridad.pptxQue es un sistema integrado de Seguridad.pptx
Que es un sistema integrado de Seguridad.pptx
 
abecedario cursiva para imprimir y colorear
abecedario cursiva para imprimir y colorearabecedario cursiva para imprimir y colorear
abecedario cursiva para imprimir y colorear
 
Material de Apoyo - Acelerador de Carrera con Power BI.pdf
Material de Apoyo - Acelerador de Carrera con Power BI.pdfMaterial de Apoyo - Acelerador de Carrera con Power BI.pdf
Material de Apoyo - Acelerador de Carrera con Power BI.pdf
 
INFORME SOBRE EVALUACIÓN DIAGNÓSTICA MARZO 2024 TERCERO.pdf
INFORME SOBRE EVALUACIÓN DIAGNÓSTICA MARZO 2024 TERCERO.pdfINFORME SOBRE EVALUACIÓN DIAGNÓSTICA MARZO 2024 TERCERO.pdf
INFORME SOBRE EVALUACIÓN DIAGNÓSTICA MARZO 2024 TERCERO.pdf
 
TÉCNICAS GRÁFICAS PARA ARQUITECTOS Y DISEÑADORES.pdf
TÉCNICAS GRÁFICAS PARA ARQUITECTOS Y DISEÑADORES.pdfTÉCNICAS GRÁFICAS PARA ARQUITECTOS Y DISEÑADORES.pdf
TÉCNICAS GRÁFICAS PARA ARQUITECTOS Y DISEÑADORES.pdf
 
Arquetipos de Jung ejemplos en el diseño
Arquetipos de Jung ejemplos en el diseñoArquetipos de Jung ejemplos en el diseño
Arquetipos de Jung ejemplos en el diseño
 

Reloj calendario con temperatura y humedad

  • 2. http://relojcalendariotemyhum.blogspot.com/ Página 1 CONTENIDO INTRODUCCIÓN..................................................................................................................1 ¿QUÉ NECESITAMOS?........................................................................................................1 DESARROLLO....................................................................................................................4 DESPLAZAMIENTO O BARRIDO .............................................................................................4 BCD A 7 SEGMENTOS ........................................................................................................5 HORA Y FECHA.................................................................................................................5 SENSOR DE TEMPERATURA..................................................................................................5 SENSOR DE HUMEDAD.......................................................................................................6 ESQUEMÁTICOS..................................................................................................................1 DISEÑO DE PCB.................................................................................................................1 DISEÑO DE LA TARJETA DE CONTROL PARA SU ELABORACIÓN EN PCBDE PLACA DOBLE .......................1 DISEÑO DE LA TARJETA DE DISPLAY Y VISUALIZACIÓN EN PCB.......................................................2 DISEÑO EN 3D DE LAS PLACAS PCB.......................................................................................3 CODIGO...........................................................................................................................4 IMÁGENES DEL PROYECTO CONCLUIDO.....................................................................11
  • 3. http://relojcalendariotemyhum.blogspot.com/ Página 1 INTRODUCCIÓN 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 visualización 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 envía los datos a visualizar a 16 display de 7 segmentos Ánodo común. 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 propósito de ahorrar puertos conectados al Atmega, mientras que cada común de los displays son conectados con un transistor 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 visualización dispone un una función para configurar la fecha y hora a través de 3 pulsadores.
  • 4. http://relojcalendariotemyhum.blogspot.com/ Página 1 ¿QUÉ NECESITAMOS? Para este proyecto es muy indispensable disponer de un conjunto de herramientas básicas de un laboratorio de electrónica: un soldador, alambre de estaño, unos alicates de punta de aguja y cables. Para el desarrollo de nuestro proyecto dispondremos de los siguientes materiales:  1 Atmega32A  1 termistor TTC103  1 sensor de Humedad HH10D  16 displays de 7 segmentos Ánodo común (a su color preferido) 6 displays en par pequeños, 2 individuales pequeños y 2 individuales medianos.  2 Decodificadores BCD a 7 segmentos 74LS47.  15 resistencias de 330 Ohms.  16 resistencias de 1 KOhms  5 resistencias de 10 KOhms  2 resistencias de 4.7 KOhms  2 resistencias de 560 Ohms  1 resistencia de 120 Ohms  1 resistencia de 220 Ohms  1 potenciómetro lineal de 10 KOhms  16 transistores 2N3904  1 Real Time Clock DS1307  1 cristal 32.768KHZ
  • 5. http://relojcalendariotemyhum.blogspot.com/ Página 2  1 batería de botón 3V con su porta-pila  2 condensadores electrolíticos de 47uF  1 condensador electrolítico de 100uF  2 condensadores cerámicos de 0.1uF  4 condensadores cerámicos de 10nF  1 Led rojo de 3mm  3 pulsadores  4 jumpers.  1 regleta de espadines hembra y macho  1 regulador de voltaje LM317  Jack DC para PCB.  Placa doble PCB Atemga32A Termistor TTC10 HH10D Displays en par Display Display mediano
  • 6. http://relojcalendariotemyhum.blogspot.com/ Página 3 Decodificadores BCD a 7 segmentos 74LS47 Resistencias. Potenciómetro lineal Ttransistores 2N3904 Real Time Clock DS1307 Cristal 32.768KHZ Batería de botón 3V con su porta-pila Condensadores electrolíticos Condensadores cerámicos Led rojo de 3mm Pulsadores Jumpers
  • 7. http://relojcalendariotemyhum.blogspot.com/ Página 4 Espadines hembra y macho Regulador de voltaje LM317 Jack DC para PCB DESARROLLO DESPLAZAMIENTO O BARRIDO El barrido de los displays es básicamente 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 través de 8 puertos por lo que equivale a utilizar todo un puerto del uC para poder manejar un solo 7- segmentos. Pero en esta ocasión nos encontramos con la necesidad de utilizar más de un display pero a la vez no disponemos de la cantidad suficiente de puertos para ser utilizados. Por la falta de puertos es imposible conectar y encender todo un conjunto de 16 dispalys, para ello se utiliza el método de barrido que consiste en encender y apagar cada display seguido de otro cada 1ms, entonces no la vemos encenderse y apagarse, porque la frecuencia de es imperceptible al ojo humano. Consideramos encender y apagar en 4 puertos del uC para un conjunto de 8 (displays de tiempo y temperatura), y otros 4 puertos para un conjunto de 8 (displays de fecha y humedad). El propósito de esta
  • 8. http://relojcalendariotemyhum.blogspot.com/ Página 5 división es mejorar el rendimiento durante el proceso de barrido; por ejemplo durante el encendido y apagado del primer y último display hay que considerar el tiempo que demora e barrer hasta el último display, en este caso es una frecuencia de aproximadamente de 8ms sin considerar tiempos muertos del uC. BCD A 7 SEGMENTOS Uno de los problemas mencionados anteriormente es el número 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 número total de puertos utilizados para la presentación de datos son de 8 puertos, y para el barrido de los displays son de 16 puertos uno por display conectado al común, por lo tanto los puertos utilizados por el uC son de 24 puertos para un total de 16 displays. HORA Y FECHA La presentación de hora y fecha se la realiza mediante un el dispositivo DS1307, Por la simple razón de trabajar con eventos más precisos, puntuales y exactos a lo largo del tiempo. Este pequeño dispositivo es uno de los más populares en relojes RTC (Real Time Clock) por su sencillez de uso y por su confiabilidad a largo plazo. Preparado para ofrecerte la hora hasta el año 2100 y bisiestos. Para la lectura de hora y fecha se usa el bus I2C entre el uC y RTC que brinda hora con minutos y segundos y calendario que contempla los años bisiestos hasta fin de siglo. SENSOR DE TEMPERATURA Uno de los principales objetivos de este proyecto es el uso de un sensor de temperatura analógica para la visualización de temperatura en grados celcius en dos displays.
  • 9. http://relojcalendariotemyhum.blogspot.com/ Página 6 El sensor utilizado es el TTC103 de salida de voltaje analógico, por la única razón de disponer este dispositivo, la opción de utilizar otro sensor es opcional, pero yo dispongo del termistor. Las características del termistor son las siguientes: Características Valor Valor de resistencia nominal del termistor (NTC) a 25ºC 10000 [ohm] Parámetro beta 4050 [K] Fórmula utilizada por el fabricante 𝑅 ( 𝑇 ) = 𝑅25 𝑒𝑥𝑝 (𝐵/𝑇 − 𝐵/𝑇25) Para la lectura de los datos del sensor se utiliza un puerto analógico del uC el cual es el puerto ADC7, y para obtener la temperatura real se utiliza la fórmula propuesta el fabricante en grados Kelvin, y para obtener en grados celcius como se lo ha propuesto solo se usa una simple ecuación °C = °K - 273.15. SENSOR DE HUMEDAD Otro de los objetivos de este proyecto es el uso de un sensor de humedad para la visualización de humedad relativa en dos displays. El sensor utilizado es el HH10D cuya salida es un valor de frecuencia que varía entre los 5 y 10 kHz dependiendo de la humedad entre el 1 y 99 % respectivamente. El modulo del HH10D consiste en un sensor capacitivo tipo CMOS, convertidor de frecuencia y una memoria EEPROM usada para el almacenamiento de los factores de calibración y para el cálculo de la humedad. Debido a las características del sensor de humedad de tipo condensador, el sistema puede responder a los cambios de humedad muy rápido. Las características del sensor de humedad son las siguientes:
  • 10. http://relojcalendariotemyhum.blogspot.com/ Página 7 Parámetro Mínimo nominal Máximo Rango de humedad 1 % 99 % exactitud -3 % +3 % Rango de temperatura -10 °C +60 °C Voltaje de operación 2.7 V 3 V 3.3 V estabilidad vs tiempo 1 % por año Corriente de consumo 120 uA 150 uA 180 uA Rango de frecuencia de salida 5 kHz 6.5 kHz 10 kHz Para la lectura de humedad correcta, dos factores de calibración deben ser leídos desde la EEPROM en la dirección 10 y 12 por un bus i2C para la sensibilidad y compensación 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 expresión: 𝐻𝑅(%) = (𝑐𝑜𝑚𝑝𝑒𝑛𝑠𝑎𝑐𝑖𝑜𝑛 − 𝐹𝑜𝑢𝑡) ∗ 𝑠𝑒𝑛𝑠/2^12 La dirección física de la EEPROM está fijada a 81. Dirección de la sensibilidad 10. Dirección de la compensación 12. Para la lectura de los factores de calibración 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 compensación = 7792.
  • 11. http://relojcalendariotemyhum.blogspot.com/ Página 8 PULSADORES Con el objeto de realizar un reloj con funciones básicas, se incorporó 3 pulsadores con el propósito de igualar la hora o cambiar la fecha. El pulsador Menú realiza la función de cambiar de modo normal a modo minutos, horas, años, meses y días:  Menu = 0; modo normal  Menu = 1; modo de igualar minutos  Menu = 2; modo de igualar horas  Menu = 3; modo de igualar Años  Menu = 4; modo de igualar meses  Menu = 5; modo de igualar días  Menu = 6; modo de guardar en memoria tiempo y fecha actualizada Los pulsadores de disminuir (-) y aumentar (+) realizar la simple función de cambiar los valores de los datos para obtener los deseados o igualados con respecto a un reloj o calendario actual.
  • 12. http://relojcalendariotemyhum.blogspot.com/ Página 1 ESQUEMÁTICOS Esquema del reloj calendario, temperatura y humedad. Nota: no existe una librería 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 razón de utilizar componentes disponibles a mi alcance, si prefieres puedes usar un Lm1117 y modificar el esquema para obtener 3.3V. SERVOMOTOR _COMUNICACION SERIAL SCL SDA BCD_1_A BCD_1_B BCD_1_C BCD_1_D DISPLAY_1_SEG DISPLAY_2_SEG DISPLAY_1_MIN TERMISTOR RTC R2 4.7k R3 4.7k SCL SDA VBAT 3 X1 1 X2 2 SCL 6 SDA 5 SOUT 7 DS1307 DS1307 12 32.768KHZ CRYSTAL 12 3 VOLTS 3 A 7 QA 13 B 1 QB 12 C 2 QC 11 D 6 QD 10 BI/RBO 4 QE 9 RBI 5 QF 15 LT 3 QG 14 1 - 74LS47N 7447 R4 1k Q1 2N3904 PA0/ADC0 40 PA1/ADC1 39 PA2/ADC2 38 PA3/ADC3 37 PA4/ADC4 36 PA5/ADC5 35 PA6/ADC6 34 PB0/XCK/T0 1 PB1/T1 2 PB2/INT2/AIN0 3 PB3/OC0/AIN1 4 PB4/SS 5 PB5/MOSI 6 PB6/MISO 7 PB7/SCK 8 PA7/ADC7 33 RESET 9 XTAL1 13 XTAL2 12 PC0/SCL 22 PC1/SDA 23 PC2/TCK 24 PC3/TMS 25 PC4/TDO 26 PC5/TDI 27 PC6/TOSC1 28 PC7/TOSC2 29 PD0/RXD 14 PD1/TXD 15 PD2/INT0 16 PD3/INT1 17 PD4/OC1B 18 PD5/OC1A 19 PD6/ICP 20 PD7/OC2 21 AVCC 30 AREF 32 ATMEGA32A ATMEGA32 DISPLAY_2_MIN DISPLAY_1_HORA DISPLAY_2_HORA DISPLAY_1_AÑO DISPLAY_2_AÑO DISPLAY_1_MES DISPLAY_2_MES DISPLAY_1_DIA DISPLAY_2_DIA DISPLAY_1_TEMPERATURA DISPLAY_2_TEMPERATURA DISPLAY_1_HUMEDAD BCD_2_A BCD_2_B BCD_2_C BCD_2_D DISPLAY_2_HUMEDAD HH10D Refe_comparador INCREMENTO DECREMENTO MENU C1 0.1u C2 0.1u R1 120 BCD_1_A BCD_1_B BCD_1_C BCD_1_D A_1 B_1 C_1 D_1 E_1 F_1 G_1 A 7 QA 13 B 1 QB 12 C 2 QC 11 D 6 QD 10 BI/RBO 4 QE 9 RBI 5 QF 15 LT 3 QG 14 2 - 74LS47N 7447 BCD_2_A BCD_2_B BCD_2_C BCD_2_D A_2 B_2 C_2 D_2 E_2 F_2 G_2 A_1 B_1 C_1 D_1 E_1 F_1 G_1 TIME_1 R5 1k Q2 2N3904 TIME_2 R6 1k Q3 2N3904 TIME_3 R7 1k Q4 2N3904 TIME_4 R8 1k Q5 2N3904 TIME_5 R9 1k Q6 2N3904 TIME_6 TIME_1 TIME_2 TIME_3 TIME_4 TIME_5 TIME_6 R10 1k Q7 2N3904 DATA_1 R11 1k Q8 2N3904 DATA_2 R12 1k Q9 2N3904 DATA_3 R13 1k Q10 2N3904 DATA_4 R14 1k Q11 2N3904 DATA_5 R15 1k Q12 2N3904 DATA_6 DATA_1 DATA_2 DATA_3 DATA_4 DATA_5 DATA_6 R16 1k Q13 2N3904 TEMP_1 R17 1k Q14 2N3904 TEMP_2 R18 1k Q15 2N3904 HUME_1 R19 1k Q16 2N3904 HUME_2 TEMP_1 TEMP_2 A_2 B_2 C_2 D_2 E_2 F_2 G_2 HUME_1 HUME_2 DISPLAY_1_SEG DISPLAY_2_SEG DISPLAY_1_MIN DISPLAY_2_MIN DISPLAY_1_HORA DISPLAY_2_HORA DISPLAY_1_AÑO DISPLAY_2_AÑO DISPLAY_1_MES DISPLAY_2_MES DISPLAY_1_DIA DISPLAY_2_DIA DISPLAY_1_TEMPERATURA DISPLAY_2_TEMPERATURA DISPLAY_1_HUMEDAD DISPLAY_2_HUMEDAD 12 MENU R20 10k MENU 12 INCRE R21 10k INCREMENTO 12 DECRE R22 10k DECREMENTO A_2 B_2 C_2 D_2 E_2 F_2 G_2 A_1 B_1 C_1 D_1 E_1 F_1 G_1 12 RESET R41 10k Reset Reset HH10D HH10D R23 10k TERMISTOR R24 560 R25 560 Refe_comparador VI 3 VO 2 ADJ 1 LM317T LM317T R26 220 C3 100uF C4 10nF R27 330R28 330R29 330R30 330R31 330R32 330R33 330 R34 330R35 330R36 330R37 330R38 330R39 330R40 330 1 3 2 RV1 10k 1 2 3 4 5 HH10D CONN-H5 HH10D 3Vcc 3Vcc SCL SDA 1 2 SCL-HH10D CONN-H2 1 2 SDA-HH10D CONN-H2 1 2 SCL-RTC CONN-H2 1 2 SDA-RTC CONN-H2 C5 10nF C6 10nF C7 10nF 1 2 NTC-TT103 CONN-H2 AK D1 LED-RED R42 330 C8 47uF C9 10uF BYRON GANAZHAPA Bloque del Sensor de Humedad
  • 13. http://relojcalendariotemyhum.blogspot.com/ Página 1 DISEÑO DE PCB DISEÑO DE LA TARJETA DE CONTROL PARA SU ELABORACIÓN EN PCB DE PLACA DOBLE Placa superior de la PCB. Placa inferior de la PCB.
  • 14. http://relojcalendariotemyhum.blogspot.com/ Página 2 DISEÑO DE LA TARJETA DE DISPLAY Y VISUALIZACIÓN EN PCB. Placa superior de la PCB.
  • 15. http://relojcalendariotemyhum.blogspot.com/ Página 3 Placa inferior de la PCB. DISEÑO EN 3D DE LAS PLACAS PCB Se fabricarán 2 placas para evitar realizar una sola grande y para empotrar una sobre otra. Si prefieres puedes usar componentes superficiales o SMD y modificando el diseño en PCB.
  • 16. http://relojcalendariotemyhum.blogspot.com/ Página 4 CODIGO El programa fue desarrollado en CodevisionAVR versión 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 : Reloj, Temperatura y Humedad Version : 1.0 Date : 30/09/2014 Author : Byron Ganazhapa Company : UTPL Comments: Chip type : ATmega32A Program type : Application AVR Core Clock frequency: 8,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 512 *****************************************************/ #include <mega32a.h> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <delay.h> #include <bcd.h> // Variables de tiempo y fecha unsigned char hora; unsigned char minu; unsigned char seg; unsigned char dia; unsigned char mes; unsigned char anyo; unsigned char hora_BCD; unsigned char minu_BCD; unsigned char seg_BCD; unsigned char dia_BCD; unsigned char mes_BCD; unsigned char anyo_BCD; unsigned char dig_2_seg, dig_1_seg; unsigned char dig_2_min, dig_1_min; unsigned char dig_2_hora, dig_1_hora; unsigned char dig_2_dia, dig_1_dia; unsigned char dig_2_mes, dig_1_mes; unsigned char dig_2_anyo, dig_1_anyo; unsigned char get_hora, get_minu, get_seg; unsigned char get_dia, get_mes, get_anyo; #define DISPLAY_1_SEG 0x01
  • 17. http://relojcalendariotemyhum.blogspot.com/ Página 5 #define DISPLAY_2_SEG 0x01 #define DISPLAY_1_MIN 0x01 #define DISPLAY_2_MIN 0x01 #define DISPLAY_1_HORA 0x01 #define DISPLAY_2_HORA 0x01 #define DISPLAY_1_DIA 0x01 #define DISPLAY_2_DIA 0x01 #define DISPLAY_1_MES 0x01 #define DISPLAY_2_MES 0x01 #define DISPLAY_1_ANYO 0x01 #define DISPLAY_2_ANYO 0x01 #define DISPLAY_1_TEMPERATURA 0x01 #define DISPLAY_2_TEMPERATURA 0x01 #define DISPLAY_1_HUMEDAD 0x01 #define DISPLAY_2_HUMEDAD 0x01 int Menu=0; int dig_1_temp, dig_2_temp; int dig_1_hum, dig_2_hum; // variables para sensor de humedad unsigned int count = 0; float temp; float frecuencia; float H = 0.0; int Humedad; // variables para sensor de tempoeratura float Vin = 5.0; // [V] Voltage de entrada en el divisor de tension float Raux = 10000; // [ohm] Valor de la resistencia secundaria del divisor de tension float R0 = 10000; // [ohm] Valor de resistencia nominal del termistor (NTC) a 25ºC float T0 = 298.15; // [K] (25ºC) float Vout = 0.0; // [V] Voltage given by the Voltage- Divider float Rout = 0.0; // [ohm] Resistencia actual del Termistor (NTC) float beta = 4050.0; // [K] Parametro Beta float TempK = 0.0; // [K] Temperatura de salida en grados Kelvin int TempC = 0; // [ºC] Temperatura de salida en grados Celsius float Rinf; // [ohm] Parametros Rinf long iCont = 0; // Contador de ciclos, par el calculo de la temperatura media float cTemp1; // Variable temporal para acumular las temperaturas leidas // variables para ADC unsigned int adc_data; #define ADC_VREF_TYPE 0x40 //47 // I2C Bus functions #asm .equ __i2c_port=0x15 ;PORTC .equ __sda_bit=1 .equ __scl_bit=0
  • 18. http://relojcalendariotemyhum.blogspot.com/ Página 6 #endasm #include <i2c.h> // DS1307 Real Time Clock functions #include <ds1307.h> // External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { if(Menu == 1){ // igualar minutos minu = minu + 1; delay_ms(100); if(minu>59) minu = 0; } if(Menu == 2){ // igualar horas hora = hora + 1; delay_ms(100); if(hora>24) hora = 0; } if(Menu == 3){ // igualar año anyo = anyo + 1; delay_ms(100); if(anyo>99) anyo = 0; } if(Menu == 4){ // igualar mes mes = mes + 1; delay_ms(100); if(mes>12) mes = 0; } if(Menu == 5){ // igualar dia dia = dia + 1; delay_ms(100); if(dia>31) dia = 0; } } // External Interrupt 1 service routine interrupt [EXT_INT1] void ext_int1_isr(void) { if(Menu == 1){ // igualar minutos minu = minu - 1; delay_ms(100); if((signed char)minu<0) minu = 59; } if(Menu == 2){ // igualar horas hora = hora - 1; delay_ms(100); if((signed char)hora<0) hora = 23; } if(Menu == 3){ // igualar año anyo = anyo - 1; delay_ms(100); if((signed char)anyo<0) anyo = 99; }
  • 19. http://relojcalendariotemyhum.blogspot.com/ Página 7 if(Menu == 4){ // igualar mes mes = mes - 1; delay_ms(100); if((signed char)mes<0) mes = 12; } if(Menu == 5){ // igualar dia dia = dia - 1; delay_ms(100); if((signed char)dia<0) dia = 31; } } // Timer1 output compare A interrupt service routine interrupt [TIM1_COMPA] void timer1_compa_isr(void) { TCNT1H = 0x00; TCNT1L = 0x00; temp = (float)count; frecuencia = temp*1.02554; //constante de calibración = 1.02354. Cálculo de humedad H = (7792-frecuencia)*(0.09204); Humedad = (int)H; count = 0; } // Analog Comparator interrupt service routine interrupt [ANA_COMP] void ana_comp_isr(void) { count = count+1; // Cálculo de frecuencia. } // Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } // Declare your global variables here void main(void) { // Declare your local variables here PORTA=0x00; DDRA=0x7F; PORTB=0x00; DDRB=0xF1; PORTC=0x00;
  • 20. http://relojcalendariotemyhum.blogspot.com/ Página 8 DDRC=0xFC; PORTD=0x00; DDRD=0xF3; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 31,250 kHz // Mode: CTC top=OCR1A // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: On // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x0C; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1A=(31250-1); OCR1BH=0x00; OCR1BL=0x00; // External Interrupt(s) initialization // INT0: On // INT0 Mode: Falling Edge // INT1: On // INT1 Mode: Falling Edge // INT2: Off GICR|=0xC0; MCUCR=0x0A; MCUCSR=0x00; GIFR=0xC0; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x10; // Analog Comparator initialization // Analog Comparator: On // Interrupt on Rising Output Edge // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x0B; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 500,000 kHz // ADC Voltage Reference: AVCC pin ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x84; // I2C Bus initialization i2c_init(); // DS1307 Real Time Clock initialization // Square wave output on pin SQW/OUT: Off // SQW/OUT pin state: 0
  • 21. http://relojcalendariotemyhum.blogspot.com/ Página 9 rtc_init(0,0,0); rtc_get_time(&get_hora,&get_minu,&get_seg); rtc_get_date(&get_dia,&get_mes,&get_anyo); delay_ms(100); hora = get_hora; minu = get_minu; seg = get_seg; dia = get_dia; mes = get_mes; anyo = get_anyo; rtc_set_time(hora,minu,seg); rtc_set_date(dia,mes,anyo); // Global enable interrupts #asm("sei") while (1){ /* Menu = 0; modo normal Menu = 1; modo de igualar minutos Menu = 2; modo de igualar horas Menu = 3; modo de igualar Años Menu = 4; modo de igualar meses Menu = 5; modo de igualar días Menu = 6; modo de guardar en memoria tiempo y fecha actualizada */ if (PINB.1 == 1){ // Botón 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 // Cálculo del valor de la resistencia termistor (NTC) actual (a través de Vout) Vout = Vin*(adc_data)/1023.0; Rout = (Raux*Vout/(Vin-Vout)); // Calculo de la temperatura en grados Kelvin
  • 22. http://relojcalendariotemyhum.blogspot.com/ Página 10 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; dia_BCD = bin2bcd(dia); dig_2_dia = dia_BCD&0xF0; dig_1_dia = (dia_BCD&0x0F)<<4; mes_BCD = bin2bcd(mes); dig_2_mes = mes_BCD&0xF0; dig_1_mes = (mes_BCD&0x0F)<<4; anyo_BCD = bin2bcd(anyo); dig_2_anyo = anyo_BCD&0xF0; dig_1_anyo = (anyo_BCD&0x0F)<<4; Humedad = bin2bcd(H); dig_2_hum = Humedad&0xF0; dig_1_hum = (Humedad&0x0F)<<4; // Realizo la miltiplexación de displays. PORTA = dig_1_seg; PORTB = dig_1_anyo; PORTA.4 = DISPLAY_1_SEG; PORTC.5 = DISPLAY_1_ANYO; delay_ms(1); PORTA.4 = DISPLAY_1_SEG & 0x00; PORTC.5 = DISPLAY_1_ANYO & 0x00; PORTA = dig_2_seg; PORTB = dig_2_anyo; PORTA.5 = DISPLAY_2_SEG; PORTC.6 = DISPLAY_2_ANYO; delay_ms(1); PORTA.5 = DISPLAY_2_SEG & 0x00; PORTC.6 = DISPLAY_2_ANYO & 0x00; PORTA = dig_1_min; PORTB = dig_1_mes; PORTA.6 = DISPLAY_1_MIN; PORTC.7 = DISPLAY_1_MES; delay_ms(1); PORTA.6 = DISPLAY_1_MIN & 0x00; PORTC.7 = DISPLAY_1_MES & 0x00; PORTA = dig_2_min; PORTB = dig_2_mes; PORTC.2 = DISPLAY_2_MIN;
  • 23. http://relojcalendariotemyhum.blogspot.com/ Página 11 PORTD.0 = DISPLAY_2_MES; delay_ms(1); PORTC.2 = DISPLAY_2_MIN & 0x00; PORTD.0 = DISPLAY_2_MES & 0x00; PORTA = dig_1_hora; PORTB = dig_1_dia; PORTC.3 = DISPLAY_1_HORA; PORTD.1 = DISPLAY_1_DIA; delay_ms(1); PORTC.3 = DISPLAY_1_HORA & 0x00; PORTD.1 = DISPLAY_1_DIA & 0x00; PORTA = dig_2_hora; PORTB = dig_2_dia; PORTC.4 = DISPLAY_2_HORA; PORTD.4 = DISPLAY_2_DIA; delay_ms(1); PORTC.4 = DISPLAY_2_HORA & 0x00; PORTD.4 = DISPLAY_2_DIA & 0x00; PORTA = dig_1_temp; PORTB = dig_1_hum; PORTD.5 = DISPLAY_1_TEMPERATURA; PORTD.7 = DISPLAY_1_HUMEDAD; delay_ms(1); PORTD.5 = DISPLAY_1_TEMPERATURA & 0x00; PORTD.7 = DISPLAY_1_HUMEDAD & 0x00; PORTA = dig_2_temp; PORTB = dig_2_hum; PORTD.6 = DISPLAY_2_TEMPERATURA; PORTB.0 = DISPLAY_2_HUMEDAD; delay_ms(1); } } IMÁGENES DEL PROYECTO CONCLUIDO
  • 31. http://relojcalendariotemyhum.blogspot.com/ Página 19 Si deseas descargar el proyecto completa visita el siguiente blog: http://relojcalendariotemyhum.blogspot.com/