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].
Informe de investigación sobre la placa Intel Galileo GEN1.
En este informe se investigó sobre las características generales de la Placa Intel Galileo GEN 1, tanto de hardware como software y las herramientas que provee Intel para desarrollar en la misma. Como herramienta fundamental se encuentra el Kit IoT, el cual está integrado por el kit de accesorios (Intel Galileo Grove Starter Kit), Sistema Operativo Linux Yocto, Intel XDK IoT Editión y librerías.
También se realizó un trabajo de investigación y desarrollo sobre el manejo de los puertos de entrada/salida de la misma placa, contemplando en este apartado las librerías que existen para el lenguaje nativo (Javascript – Framework Node.JS). Dentro de estas librerías se encuentran “mraa”, “upm”, “galileo-io” y “johnny-five”. Además, con el objetivo de ofrecer otra alternativa para el uso y manipulación de estos puertos, se estudió la posibilidad de controlar la entrada/salida de la placa desde el FileSystem del Sistema Operativo. Esto último, da la posibilidad a poder trabajar con los puertos desde cualquier lenguaje que permita lectura y escritura sobre archivos.
Manual Caldera Condensación Junkers Cerapur Smart ZWB 28
Caldera Condensación Junkers Cerapur Smart ZWB 28 Destaca por su elevado rendimiento del 109%, Microacumulación, sistema QuickTap en agua caliente y sus bajas emisiones de gases contaminantes, clase 5 de bajo NOx.
Comprar Caldera Condensación Junkers Cerapur Smart ZWB 28 en solo 887,00 €
Más información: http://www.preciocalderas.org/producto/calderas/caldera-condensacion-junkers-cerapur-smart-zwb-28/
Brazo robotico ksr10 ps2 x mayo 2015 a 9v_version_3joaquinin1
El brazo tiene 5 motores de corriente continua (no paso a paso ni servomotores). Se pueden controlar desde la mesa con 3 Joystick o bien desde el mando de la playstation. Asímismo permite la grabación de los movimientos que realicemos del brazo y luego podemos secuenciar dichos movimientos de forma continua. Para ello, se utiliza un interruptor que permite la grabación de todos los movimientos que efectuemos y otro interruptor para secuenciarlos cuando deseemos, lo que permite a cualquier operario fácilmente modificar la trayectoria de los movimientos sin que tenga que venir un especialista para reprogramar los movimientos.
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2joaquinin1
Brazo robótico controlado con arduino mega 2560 mediante tres Joystick. dispone de 5 motorcillos. Se permite la grabación de los movimientos que efectuemos con los Joystick en tarjeta microSD y después secuenciarlos si así lo deseamos al activar el interruptor secuenciar.
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, END DEVICE + Free RTOS (2020 PAO 1)Victor Asanza
El End Device deberá realizar las siguientes tareas:
Hacer un muestreo de la señal analógica del sensor 1 cada 1 segundo.
Al terminar los 60 segundos de adquisición (equivalente al almacenamiento de forma estática 60 valores en SRAM), se deberá calcular el valor promedio de esos valores.
En todo momento, el End Device deberá estar pendiente de toda trama de comunicación serial UART que éste reciba
Proyecto brazo robotico ksr10 enero marzo 2015joaquinin1
Brazo robótico KSR 10 controlado por 3 Joystick . dispone de 5 motores de corriente continua . El control se realiza desde la arduino Mega 2560 con la ayuda de 3 drivers para la alimentación y cambio de sentido de giro de los motores. Los movimientos que ejecute con los Joystick pueden ser grabados al cerrar un interruptor en una tarjeta micro SD y después se podrán secuenciar de forma automática los movimientos al ser accionado otro interruptor.
La precisión es de +/1,5º
El programa está realizado en ARDUINO versión 1.05.r2
En este documento está todo el proceso de construcción y el programa.
Reporte del sensor hcsr 04 implementado con un pic 16f84a y monitoreado con Labview. Lo subi porque este sensor ya es común en MÉXICO y pueden ocupar esta información para proyectos escolares...
Informe de investigación sobre la placa Intel Galileo GEN1.
En este informe se investigó sobre las características generales de la Placa Intel Galileo GEN 1, tanto de hardware como software y las herramientas que provee Intel para desarrollar en la misma. Como herramienta fundamental se encuentra el Kit IoT, el cual está integrado por el kit de accesorios (Intel Galileo Grove Starter Kit), Sistema Operativo Linux Yocto, Intel XDK IoT Editión y librerías.
También se realizó un trabajo de investigación y desarrollo sobre el manejo de los puertos de entrada/salida de la misma placa, contemplando en este apartado las librerías que existen para el lenguaje nativo (Javascript – Framework Node.JS). Dentro de estas librerías se encuentran “mraa”, “upm”, “galileo-io” y “johnny-five”. Además, con el objetivo de ofrecer otra alternativa para el uso y manipulación de estos puertos, se estudió la posibilidad de controlar la entrada/salida de la placa desde el FileSystem del Sistema Operativo. Esto último, da la posibilidad a poder trabajar con los puertos desde cualquier lenguaje que permita lectura y escritura sobre archivos.
Manual Caldera Condensación Junkers Cerapur Smart ZWB 28
Caldera Condensación Junkers Cerapur Smart ZWB 28 Destaca por su elevado rendimiento del 109%, Microacumulación, sistema QuickTap en agua caliente y sus bajas emisiones de gases contaminantes, clase 5 de bajo NOx.
Comprar Caldera Condensación Junkers Cerapur Smart ZWB 28 en solo 887,00 €
Más información: http://www.preciocalderas.org/producto/calderas/caldera-condensacion-junkers-cerapur-smart-zwb-28/
Brazo robotico ksr10 ps2 x mayo 2015 a 9v_version_3joaquinin1
El brazo tiene 5 motores de corriente continua (no paso a paso ni servomotores). Se pueden controlar desde la mesa con 3 Joystick o bien desde el mando de la playstation. Asímismo permite la grabación de los movimientos que realicemos del brazo y luego podemos secuenciar dichos movimientos de forma continua. Para ello, se utiliza un interruptor que permite la grabación de todos los movimientos que efectuemos y otro interruptor para secuenciarlos cuando deseemos, lo que permite a cualquier operario fácilmente modificar la trayectoria de los movimientos sin que tenga que venir un especialista para reprogramar los movimientos.
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2joaquinin1
Brazo robótico controlado con arduino mega 2560 mediante tres Joystick. dispone de 5 motorcillos. Se permite la grabación de los movimientos que efectuemos con los Joystick en tarjeta microSD y después secuenciarlos si así lo deseamos al activar el interruptor secuenciar.
⭐⭐⭐⭐⭐ SISTEMAS EMBEBIDOS, END DEVICE + Free RTOS (2020 PAO 1)Victor Asanza
El End Device deberá realizar las siguientes tareas:
Hacer un muestreo de la señal analógica del sensor 1 cada 1 segundo.
Al terminar los 60 segundos de adquisición (equivalente al almacenamiento de forma estática 60 valores en SRAM), se deberá calcular el valor promedio de esos valores.
En todo momento, el End Device deberá estar pendiente de toda trama de comunicación serial UART que éste reciba
Proyecto brazo robotico ksr10 enero marzo 2015joaquinin1
Brazo robótico KSR 10 controlado por 3 Joystick . dispone de 5 motores de corriente continua . El control se realiza desde la arduino Mega 2560 con la ayuda de 3 drivers para la alimentación y cambio de sentido de giro de los motores. Los movimientos que ejecute con los Joystick pueden ser grabados al cerrar un interruptor en una tarjeta micro SD y después se podrán secuenciar de forma automática los movimientos al ser accionado otro interruptor.
La precisión es de +/1,5º
El programa está realizado en ARDUINO versión 1.05.r2
En este documento está todo el proceso de construcción y el programa.
Reporte del sensor hcsr 04 implementado con un pic 16f84a y monitoreado con Labview. Lo subi porque este sensor ya es común en MÉXICO y pueden ocupar esta información para proyectos escolares...
Manual completo de la caldera Junkers Cerapur Smart ZWB 28. Más información y precio de la caldera Junkers Cerapur Smart ZWB 28 en ClimAhorro, en el siguiente enlace: http://goo.gl/IZafso
La Caldera Junkers Cerapur Smart ZWB 28 es una caldera de condensación CerapurSmart de 28kw destaca por su elevado rendimiento del 109%, Microacumulación, sistema QuickTap en agua caliente y sus bajas emisiones de gases contaminantes, clase 5 de bajo NOx.
Esto, unido a su sistema de micro-acumulación con preaviso de demanda QuickTap, permite disfrutar del máximo rendimiento con el mínimo consumo.
La condensación no sólo aumenta significativamente la eficiencia de la caldera. sino que reduce las emisiones de gases contaminantes a niveles insignificantes. Una caldera de condensación de alta eficiencia energética es una excelente inversión a la hora de elegir un nuevo sistema de calefacción y agua caliente sanitaria. Dependiendo del sistema, se puede llegar a ahorrar hasta el 30% en la factura de gas. Además, las calderas de condensación son idóneas para combinar con los captadores solares térmicos que pre calientan el agua del circuito; este sistema, permite ahorrar más de la mitad de la energía respecto de las calderas convencionales.
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
✅ Objetivo
▷ Aprender hacer uso de dos displays cátodo común.
▷ Implementar un contador decimal de dos dígitos.
✅ Duración
▷ 30min
✅ Materiales
▷ Módulo de desarrollo PIC16F886
▷ Dos dislays 7 segmentos cátodo común
✅ Descripción
▷ El presente proyecto hace uso de dos display de 7 segmentos cátodo común.
Implementaremos un contador decimal de dos dígitos cuyo incremento será mediante el botón MCLR.
Adquisición de señales con Scilab/Xcos - Arduino. Lenin Jiménez
En la presente práctica se muestra el procedimiento para la adquisición de señales análogas y digitales, en la plataforma libre de programación y control Scilab bajo el toolbox Xcos, empleando una placa Arduino UNO y el sensor LM35
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
✅ Objetivo
▷ Aprender hacer uso del display cátodo común I&T.
▷ Implementar un contador decimal de un dígito.
✅ Duración
▷ 30min
✅ Materiales
▷ Módulo de desarrollo PIC16F886
▷ Dislay 7 segmentos
✅ Descripción
▷ El presente proyecto hace uso de un display de 7 segmentos cátodo común.
Implementaremos un contador decimal de un dígito cuyo incremento será mediante el botón MCLR.
El movimiento moderno en la arquitectura venezolana tuvo sus inicios a mediados del siglo XX, influenciado por la corriente internacional del modernismo. Aunque inicialmente fue resistido por la sociedad conservadora y los arquitectos tradicionalistas, poco a poco se fue abriendo camino y dejando una huella importante en el país.
Uno de los arquitectos más destacados de la época fue Carlos Raúl Villanueva, quien dejó un legado significativo en la arquitectura venezolana con obras como la Ciudad Universitaria de Caracas, considerada Patrimonio de la Humanidad por la UNESCO. Su enfoque en la integración de la arquitectura con el entorno natural y la creación de espacios que favorecen la interacción social, marcaron un punto de inflexión en la arquitectura venezolana.
Otro arquitecto importante en la evolución del movimiento moderno en Venezuela fue Tomás Sanabria, quien también abogó por la integración de la arquitectura con el paisaje y la creación de espacios abiertos y funcionales. Su obra más conocida es el Parque Central, un complejo urbanístico que se convirtió en un ícono de la modernidad en Caracas.
En la actualidad, el movimiento moderno sigue teniendo influencia en la arquitectura venezolana, aunque se ha visto enriquecido por nuevas corrientes y enfoques que buscan combinar la modernidad con la identidad cultural del país. Proyectos como el Centro Simón Bolívar, diseñado por el arquitecto Fruto Vivas, son ejemplos de cómo la arquitectura contemporánea en Venezuela sigue evolucionando y adaptándose a las necesidades actuales.
DIA DE LA BANDERA PERUANA EL 7 DE JUNIO DE 182062946377
Diseño del dia de la bandera. El 7 de junio se celebra en todo el Perú el Día de la Bandera, una fecha que conmemora el aniversario de la Batalla de Arica de 1880, un enfrentamiento histórico en el que las tropas peruanas se enfrentaron valientemente a las fuerzas chilenas durante la Guerra del Pacífico.
Porfolio livings creados por Carlotta Designpaulacoux1
La sección de porfolio de livings de Carlotta Design es una muestra de la excelencia y la creatividad en el diseño de interiores. Cada proyecto en el porfolio refleja la visión única y el estilo distintivo de Carlotta Design, mostrando la habilidad del equipo para transformar espacios en ambientes acogedores, elegantes y funcionales. Desde salas de estar modernas y contemporáneas hasta espacios más tradicionales y clásicos, la variedad de estilos y diseños en el porfolio demuestra la versatilidad y la capacidad del equipo para adaptarse a las necesidades y gustos de cada cliente.
Las fotografías de alta calidad en el porfolio capturan la atención al detalle, los materiales de alta calidad y la combinación de texturas y colores que hacen que cada sala de estar sea única y especial. Además, la sección de porfolio de livings de Carlotta Design destaca la integración de muebles y accesorios cuidadosamente seleccionados para crear ambientes armoniosos y sofisticados.
En resumen, la sección de porfolio de livings de Carlotta Design es una ventana a la excelencia en el diseño de interiores, mostrando el talento y la dedicación del equipo para crear espacios extraordinarios que reflejan la personalidad y el estilo de cada cliente.
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.
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.
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;