Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Bmfcic 169 A
Bmfcic 169 A
PROFESOR PATROCINANTE:
Sr. Pedro Rey Clericus
VALDIVIA 2014
CONTENIDO
II.6.1 BTcino................................................................................... 28
II.6.2 Control4 ................................................................................ 30
II.6.3 Functiodomo ......................................................................... 31
II.6.4 Insteon .................................................................................. 32
II
V.1 Criterios de la propuesta adopatada ............................................ 62
V.2 Control de luces. ......................................................................... 63
V.3 Control de circuito de enchufes ................................................... 77
III
ÍNDICE DE FIGURAS
V
ÍNDICE DE TABLAS
VI
Figura V-7. Máxima disipación de potencia triac BTA 08 ......................... 75
Figura V-8. Diagrama flujo control enchufes. .......................................... 78
Figura V-9. Circuito control enchufes. .................................................... 79
Figura V-10. Triac con pasta térmica y disipador. ................................... 81
Figura V-11. Circuito equivalente térmico ............................................... 81
Figura V-12. Control de humedad relativa. ............................................. 83
Figura V-13. Característica tensión de salida en función de la ............... 84
Figura V-14. Diagrama de flujo sistema control de humedad relativa. ..... 85
Figura V-15. Fuente alimentación para arduinos y circuitería general. .... 87
Figura V-16. Arquitectura de red mixta escogida para sistema domótico. 93
Figura V-17. Disposición de los elementos del sistema ............................ 93
Figura VI-1. Disposición elementos interfaz principal. ............................. 94
VII
I RESUMEN, INTRODUCCIÓN Y OBJETIVOS
I.1 RESUMEN
Por otra parte, se diseña un control de ventilación para baño y cocina que
busca reducir la humedad relativa al interior de la vivienda ya que esta
representa un problema que contribuye a la pérdida de calor interior,
aumentando la demanda por calefacción, y facilita el desarrollo de
organismos en general dañinos para el ser humano.
1
I.2 SUMMARY
2
3
I.3 INTRODUCCIÓN
La vivienda del futuro ya cada vez más cercana, es aquella casa inteligente
o automatizada con la que desde hace un buen tiempo, la sociedad y el
mundo en sí han estado esperando, no es para menos, porque los
servicios, aplicaciones o sencillamente el confort que nos puede brindar
nos ofrece simplificarnos la vida.
Este capítulo se centra en la definición de la domótica, sus implicancias y
características que tanto la destacan.
6
7
Confort:
Control
persianas,
luminarias, Comunicación
riego...
Seguridad
DOMÓTICA
II.2.1 Controlador
y aquellos que si bien no han sido diseñados para estas tareas son
posibles de utilizar y obtener las mismas o mejores prestaciones (2). Una
desventaja de los controladores no específicos para domótica, es que al no
estar diseñados para el control en viviendas, su configuración puede ser
un tanto más complicada y sus capacidades quizás sobredimensionadas,
este es el caso de los PLC, por ejemplo.
Los sistemas específicos para el control domótico proveen al instalador y al
usuario una configuración de software pre establecida para realizar tareas
específicas e invariables dentro de la vivienda, son sistemas físicamente
compactos, en general, no permiten realizar otras tareas para las que no
fueron diseñados. La desventaja de estos sistemas en comparación a
controladores como los PLC, es que no poseen un estándar concreto que
permita la interconexión de distintos elementos provenientes de otros
fabricantes como si lo permiten los PLC o autómatas programables con
sus buses de datos estandarizados.
II.2.2 Nodos
II.2.3 Actuadores
II.2.4 Sensores
Luminosidad
Humedad en plantas
Humedad relativa
Presencia
11
Detector de humo
Detector de gas,
Etc..
II.3 Aplicaciones
II.3.2 Seguridad
II.3.3 Climatización.
Protocolo
BACnet
X-10 BatiBus
LonWorks CEBus
ESTÁNDARES
Konnex EHS
HES EIB
HBS
Es uno de los protocolos más antiguos (años ’76 y ’78) diseñado por Pico
Electronics Ltd.
X.10 es un protocolo estándar abierto, cuyo único requisito para elaborar
productos bajo X.10 es que se utilicen circuitos de Pico Electronics. Utiliza
para la transmisión de datos el tendido eléctrico de baja tensión a través
de corrientes portadoras. La mayor ventaja de este tipo de protocolo de red
es que no necesita de una red propia o adicional a las ya existentes en la
vivienda liberando de la instalación de nuevas y molestas redes cableadas.
Además, es un protocolo de arquitectura descentralizada con una máxima
23
Cardio
Vantage
Concelac
VivimatPlus
Dialoc
PlusControl
Dialogo
Simon Vis
Domolon
DomosCope Maior-Domo
GIV Domaike
Domotel Simon Vox
Hometronic Starbox
II.5.2 LonWorks
Infra rojo
Cable coaxial
Par trenzado cat. IV de cinco hilos
Fibra Óptica
Radio frecuencia
Power line
RS-232
II.5.3 CEBus
Capa física
Capa de enlace
Capa de red
Capa de aplicación
Red eléctrica
Par trenzado
25
Radio frecuencia
Coaxial
Fibra Óptica
Infrarrojo
Cable coaxial
Radio frecuencia
Par trenzado, clase 1 y 2
Red eléctrica
II.5.5 KONNEX
II.5.6 ZigBee
II.6.1 BTcino
Comodidad
Seguridad
Ahorro de energía
Comunicación
Control
29
II.6.2 Control4
Control4 ofrece,
II.6.3 Functiodomo
Cámaras de seguridad
Control de Climatización
Control de iluminación
32
Control de riego
Control de toldos y persianas.
II.6.4 Insteon
III.1 OpenDomo
33
34
Elemento Características
Puertos digitales entrada 8 puertos
Puertos digitales de salida de
8 puertos
estado sólido
Puertos ADC 8 puertos
Interfáz IP con conector RJ45
Comunicación
10/100M
Puertos de expansión 1 interno + uno externo
Reloj en tiempo real
Montaje Riel DIN
Microcontrolador: Atmega328
Tensión de funcionamiento :5v
Voltaje de entrada recomendado: 7-12v
Límites tensión de entrada: 6-20v
Pines E/S digitales: 14
Salida PWM: si (6 pines digitales)
Entrada analógica: 6
Corriente CC para pines de E/S: 40mA
Corriente DC para pin 3,3v: 50mA
Memoria Flash: 32 kB, 0,5 kB utilizados por el gestor de arranque
SRAM: 2kB
EEPROM: 1kB
Velocidad del reloj: 16 MHZ
Tensión entrada
funcionamiento
Memoria Flash
para E/S (mA)
recomendado
entrada límite
Corriente CC
Tensión de
EEPROM
E analóg
S analóg
Digitales
Tensión
SRAM
Micro.
(MHz)
Clock
(KB)
(KB)
PLACA
E/S
(V)
Arduino
Mega 256
Atmega2560 5 7-12 6-20 54 16 -- 40 8 4 16
ADK KB
32
Ethernet Atmega328 5 7-12 6-20 14 6 -- 40 2 1 16
KB)
256
Mega Atmega2560 5 7-12 6-20 54 16 -- 40 8 4 16
KB
43
44
La Tabla IV-2, presenta las dimensiones mínimas que deben poseer los
interiores de estas viviendas.
45
Un estudio del Sernac (8) indica que del total del presupuesto de las
familias chilenas, un 15% de este era destinado a servicios básicos. Pero
analizando el segmento socioeconómico bajo, un 18,9% de los ingresos
familiares eran destinados a servicios básicos. Por otra parte, los
segmentos socioeconómicos alto y bajo gastan más en gas, un 31,7% y
31,03%, en cambio, el grupo socioeconómico bajo, gasta más presupuesto
en electricidad, un 28% y un 25,89% en calefacción.
Según el Ministerio de Energía (9), el consumo promedio a nivel nacional
por vivienda es de 124,60kWh para el grupo socioeconómico D, si
consideramos una tarifa promedio de $113,6 pesos chilenos, una vivienda
de este grupo socioeconómico desembolsa $14.154,56 pesos chilenos por
concepto de electricidad. Si seccionamos el consumo por vivienda vemos
que la electricidad consumida se reparte según Figura IV-2.
Hervidor 36,90%
Computador 57,30%
Televisor 69%
momento del usuario, las cuales tienden a ser distintas para cada ocación
y/o situación. Tomemos el siguiente ejemplo: un individuo al llegar a su
casa de noche, necesitará algo de iluminación para poder abrir la puerta y
acceder si la luz de la luna no le acompaña. Se pueden dar dos casos, el
primero, nuestro personaje intenta insertar la llave en el cerrojo a punta
de prueba y error, y en el segundo caso, antes de salir de su casa deja
encendida la luz, que a su vez, dependiendo de las horas que han
transcurrido desde su salida del hogar hasta su regreso, implicará un
aumento considerable en su factura eléctrica, sobre todo si dicho
comportamiento se repite durante toda la semana o todo el mes.
Es indispensable que la luminaria del acceso a la vivienda se encienda,
pero momentos antes de su llegada e inmediatamente después a su
ingreso la luz debe apagarse, si no se utiliza, no tiene sentido dejarla
encendida, a excepción de luminarias decorativas. Así, es posible
identificar muchas otras áreas dónde la domótica puede tomar acción.
En la vivienda, podemos identificar los siguientes elementos:
Aire acondicionado
Extractor de aire
Persianas
Toldos de ventanas
Lavadora
Refrigerador
Luminarias
Hervidor
Cocina
Riego
Electrodoméstico
Aparatos electrónicos varios
Fuentes de energía en general (cargadores celulares, consolas v.j.,…
54
62
63
Control luz
Keypad.h
cer
no
cer=tru
e
si
pre=micros(
)
no si
aut=tru
pir,
e
ldr
no ret=(ldr/mldr)*900
pul=tru
0
e
si
pir=high y no
ret=ret+1000 min≤ldr≤max
si
ret≤millis()-pre≤ret+50 no
Lig=off
si
f
Lig=o
n
V.2-1
V.2-2
V.2-3
V.2-4
VCC
R1
V0
LDR
GND
( )
V.2-5
Por otra parte, para saber en qué momento se debe de realizar el disparo
del triac, es necesario sincronizar el controlador con la frecuencia de la
señal AC de red. El circuito de Figura V-5 conformado por un puente
rectificador limitado en corriente por R6 se encarga de generar una
excitación en el diodo del optoacoplador U3 de tal modo de que cada vez
que la señal de AC tenga un cruce por cero, la salida del optoacoplador
genera un nivel alto (lógica invertida) en la salida, es esta misma señal la
que se ha de transmitir hasta el controlador, ahí, cada vez que ocurra un
cruce por cero, se tomará la decisión de disparar o no el triac de acuerdo a
los niveles de iluminación requeridos que se traducen en un retraso en el
disparo.
VCC
R6
1 P1 R5
V1 U3
4 3
Salida
2
V.2-6
V.2-7
73
V.2-8
V.2-9
( )
( )
V.2-10
( )
V.2-11
Característica Valor
Tensión disparo de puerta (VGT) 1,3V
Corriente disparo de puerta (IGT) 5 a 50mA
Corriente mínima de conducción (IL) 10 a 70mA
Corriente de mantenimiento (IH) 10 a 50mA
Voltaje entre terminales en conducción (VT) 1,55V
Máxima corriente de conducción (IT(RMS)) 8ª
Resistencia térmica juntura ambiente Rth(j-a) 60°C/W
Resistencia unión cápsula, Rth(j-c) 2,5°C/W
Temperatura de juntura máxima Tjmáx 125°C
( )
( )
V.2-12
77
Control enchufe
enc=low
Lectura
pulsadores
si
enc=high Hold e
no
si
Press h enc=low
no
Equipo audio 50 w
Consola videojuegos 55 w
V.3-1
Tj Rth(j-c) Rth(c-d) Td
Tc
P
Tj-Ta Rth(d-a)
Ta
V.3-2
( )
V.3-3
Tomando los valores de los parámetros del Triac BTA08 entregados por el
fabricante del dispositivo y reemplazándolos en V.3-3 se obtiene una
( )
V.3-4
Sensor Actuador
CONTROLADOR
Humedad extractor
Pulsador
Control Humedad
Relativa
hr=50, ex=low,
aut=true
Sensor
humedad
no
aut=true
no
Se pulsó si
si
si Se pulsó
aut=false no
no
ex=!ex ℎ𝑟> ex=low
si
no
hold
ex=high
si
aut=true
V.4-1
1 P1 U1
T1
Hacia detector V1
4 3 LINE VREG
cruce por cero VOLTAGE
C1 COMMON
Alimentación Arduino Alimentación
2
general
V.5-1
94
95
102
103
104
105
sistema domótico.
//**********************************************************
//**********Sketch para controlador Arduino n°1*************
//**********************************************************
/*Este sketch está diseñado para controlar el teclado matricial
(interfaz de usuario principal), control de luz de acceso a la
vivienda y control de luz de la sala de estar.*/
#include <Keypad.h> //librería para uso de teclado matricial
const byte filas =4; //número de filas del teclado matricial
const byte columnas=4; //número de columnas del teclado matricial
byte pinsFilas[filas]={2,3,4,5}; //asignación de pines a filas
byte pinsColumnas[columnas]={A0,A1,A2,A3}; //asignación de pines a
columnas
char teclas[filas][columnas]={ //matriz de teclado
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
digitalWrite(enc0, LOW);
teclado.addEventListener(keypadEvent); //crea una interrupción según
evento del teclado
}
void loop(){
luz0=analogRead(ldr0);
luz1=analogRead(ldr1);
dmo0=digitalRead(mov0);
dmo1=digitalRead(mov1);
/* a continuación se establece el máximo de retardo para los
disparos de los triacs según el paso por cero*/
if(ret0>may){
ret0=men;
}
if(ret1>may){
ret1=men;
}
//detecta el paso por cero de la señal AC
act=digitalRead(detC);
if(act==HIGH){
tin=micros();
}
//código ejecutable en modo automático de zonas 0 y 1
if(aut0=true&&luz0<921&&dmo0==HIGH){
ret0=(luz0/921)*may;
}
if(aut1=true&&luz1<=921&&dmo1==HIGH){
ret1=(luz1/921)*may;
}
if(micros()-tin>=ret0&µs()-tin<=ret0+52){
digitalWrite(sec0,HIGH);
tecla=teclado.getKey();
}
else{
digitalWrite(sec0,LOW);
}
if(micros()-tin>=ret1&µs()-tin<=ret1+52){
digitalWrite(sec1,HIGH);
tecla=teclado.getKey();
}
else{
digitalWrite(sec1,LOW);
}
}
//rutina a seguir en caso de presionar alguna tecla de la interfaz princi
pal
void keypadEvent(KeypadEvent tecla){
switch(teclado.getState()){
case PRESSED:
switch (tecla){
case'0'://luz acceso
aut0=false;
ret0=ret0+900; //incremento de 1 mili segundos, máximo 10 mili
(medio ciclo)
break;
case'1'://luz sala estar
107
aut1=false;
ret1=ret1+900;
break;
case'B':
digitalWrite(enc0, HIGH);
break;
case'2'://tecla comedor
Serial.println('a',BIN);
break;
case'3'://cocina
Serial.println('b',BIN);
break;
case'4'://luz dormitorio 1
Serial.println('c',BIN);
break;
case'5':// luz dormitorio 2
Serial.println('d',BIN);
break;
case'6'://luz dormitorio 3
Serial.println('e',BIN);
break;
case'7'://extractor baño
Serial.println('f',BIN);
break;
case'8'://luz baño
Serial.println('g',BIN);
break;
case'9'://luz patio
Serial.println('h',BIN);
break;
case'*'://luz pasillo
Serial.println('i',BIN);
break;
case'#':// totalidad de luz
Serial.println('j',BIN);
break;
case'A':// extractor cocina
Serial.println('k',BIN);
break;
case'C':// enchufe 2
Serial.println('l',BIN);
break;
case'D':// enchufe 3
Serial.println('m',BIN);
break;
}
case HOLD:
switch(tecla){
case'0':
aut0=true;
break;
case'1':
aut1=true;
break;
case'B':
108
digitalWrite(enc0, LOW);
break;
case'2':
Serial.println('A',BIN);
break;
case'3':
Serial.println('B',BIN);
break;
case'4':
Serial.println('C',BIN);
break;
case'5':
Serial.println('D',BIN);
break;
case'6':
Serial.println('E',BIN);
break;
case'7':
Serial.println('F',BIN);
break;
case'8':
Serial.println('G',BIN);
break;
case'9':
Serial.println('H',BIN);
break;
case'*':
Serial.println('I',BIN);
break;
case'#':
Serial.println('J',BIN);
break;
case'A':
Serial.println('K',BIN);
break;
case'C':
Serial.println('L',BIN);
break;
case'D':
Serial.println('M',BIN);
break;
}
}
}
//**********************************************************
//**********Sketch para controlador Arduino n°2*************
//**********************************************************
109
void setup(){
pinMode(sec2,OUTPUT);
pinMode(sec3,OUTPUT);
pinMode(sec4,OUTPUT);
pinMode(sec5,OUTPUT);
pinMode(enc1,OUTPUT);
pinMode(detC,INPUT);
pinMode(mov2,INPUT);
pinMode(mov3,INPUT);
pinMode(mov4,INPUT);
pinMode(mov5,INPUT);
digitalWrite(sec2, LOW);
digitalWrite(sec3, LOW);
digitalWrite(sec4, LOW);
digitalWrite(sec5, LOW);
digitalWrite(enc1, LOW);
}
void loop(){
luz2=analogRead(ldr2);
luz3=analogRead(ldr3);
luz4=analogRead(ldr4);
luz5=analogRead(ldr5);
dmo2=digitalRead(mov2);
dmo3=digitalRead(mov3);
dmo4=digitalRead(mov4);
dmo5=digitalRead(mov5);
puL2=digitalRead(pul2);
puL4=digitalRead(pul4);
puL5=digitalRead(pul5);
tin5=micros();
}
if(ret2>may){
ret2=men;
}
if(ret3>may){
ret3=men;
}
if(ret4>may){
ret4=men;
}
if(ret5>may){
ret5=men;
}
//detector de paso por cero
act=digitalRead(detC);
if(act==HIGH){
tin=micros();
}
// retardo disparo de triacs según iluminación natural
if(aut2=true&&luz2<921&&dmo2==HIGH){
ret2=(luz2/921)*may;
}
if(aut3=true&&luz3<921&&3==HIGH){
ret3=(luz3/921)*may;
}
if(aut4=true&&luz4<921&&dmo4==HIGH){
ret4=(luz4/921)*may;
}
if(aut5=true&&luz5<921&&dmo5==HIGH){
ret5=(luz5/921)*may;
}
if(micros()-tin>=ret2&µs()-tin<=ret2+52){
digitalWrite(sec2,HIGH);
}
else{
digitalWrite(sec2,LOW);
}
if(micros()-tin>=ret3&µs()-tin<=ret3+52){
digitalWrite(sec3,HIGH);
}
else{
digitalWrite(sec3,LOW);
}
if(micros()-tin>=ret4&µs()-tin<=ret4+52){
digitalWrite(sec4,HIGH);
}
else{
digitalWrite(sec4,LOW);
}
if(micros()-tin>=ret5&µs()-tin<=ret5+52){
digitalWrite(sec5,HIGH);
}
else{
digitalWrite(sec5,LOW);
111
}
if(micros()-tin2==50){
aut2=false;
ret2=ret2+900;
}
if(micros()-tin4==50){
aut4=false;
ret4=ret4+900;
}
if(micros()-tin5==50){
aut5=false;
ret5=ret5+900;
}
if(puL2==true&µs()-tin2>=3000000){
aut2=true;
}
if(puL4==true&µs()-tin4>=3000000){
aut4=true;
}
if(puL5==true&µs()-tin5>=3000000){
aut5=true;
}
if(Serial.available()){
byte ser=Serial.read();
switch (ser){
case'a':
aut2=false;
ret2=ret2+900; //incremento de 1 mili segundos, máximo 10 mili
(medio ciclo)
break;
case'i':
aut3=false;
ret3=ret3+900; //incremento de 1 mili segundos, máximo 10 mili
(medio ciclo)
break;
case'l':
digitalWrite(enc1,HIGH);
break;
case'd':
aut4=false;
ret4=ret4+900;
break;
case'e':
aut5=false;
ret5=ret5+900;
break;
case'j':
aut2=false;
ret2=5000;
aut3=false;
ret3=5000;
aut4=false;
ret4=5000;
aut5=false;
112
ret5=5000;
if(ser=='b'||'c'||'f'||'g'||'i'||'m'||'j'){
Serial.println(ser,BIN);
}
//codigo para cuando de mantiene presionada una tecla por 3 segundos
//en la interfaz principal
case'H':
aut3=true;
break;
case'L':
digitalWrite(enc1,LOW);
break;
case'D':
aut2=true;
break;
case'E':
aut4=true;
break;
case'J':
aut2=true;
aut3=true;
aut4=true;
aut5=true;
if(ser=='B'||'C'||'F'||'G'||'I'||'M'||'J'){
Serial.println(ser,BIN);
}
}
}
}
//**********************************************************
//**********Sketch para controlador Arduino n°3*************
//**********************************************************
/*Código para controlador n°3 encargado de luz zona dormitorio 1, patio y
cocina, además
de extractor de aire de cocina y enchufe 3*/
unsigned long tin, tin6, tin7,tex0, ten2; // tiempo paso por cero y
variable que define tiempo para evitar rebote
const int sec6=2, sec7=3, sec8=4, detC=5; //control luces sector 6 y
detector de paso por cero
const int mov6=6, mov7=7, mov8=8, ldr6=A0, ldr7=A1, ldr8=A2, ext0=9,
hum0=A3; //sensor de movimiento sector 6,7 y
//8, sensor luz sector 6, 7 y 8, extractor 0 y detector de humedad 0
const int pul6=10, pul7=11, pex0=12, enc2=13;
int ret6=0, ret7=0, ret8=0, men=0, may=10000; //retardo disparo inicial
triac sector 6 y , minimo y maximo
int pre=LOW, act=LOW;
int luz6, luz7, luz8, dmo6, dmo7, dmo8, dhu0;
boolean aut6=true, aut7=true, aut8=true, puL6=false, puL7=false,
pEx0=false, pEn2=false, aue0=true, ese0=LOW;
113
void setup(){
pinMode(sec6, OUTPUT);
pinMode(sec7, OUTPUT);
pinMode(sec8, OUTPUT);
pinMode(enc2, OUTPUT);
pinMode(detC, INPUT);
pinMode(mov6, INPUT);
pinMode(mov7, INPUT);
pinMode(mov8, INPUT);
pinMode(pul6, INPUT);
pinMode(pul7, INPUT);
pinMode(pex0, INPUT);
digitalWrite(sec6, LOW);
digitalWrite(sec7, LOW);
digitalWrite(sec8, LOW);
digitalWrite(ext0, LOW);
digitalWrite(enc2, LOW);
}
void loop(){
luz6=analogRead(ldr6);
luz7=analogRead(ldr7);
luz8=analogRead(ldr8);
dhu0=analogRead(hum0);
dmo6=digitalRead(mov6);
dmo7=digitalRead(mov7);
dmo8=digitalRead(mov8);
puL6=digitalRead(pul6);
puL7=digitalRead(pul7);
pEx0=digitalRead(pex0);
pEn2=digitalRead(enc2);
if(puL6!=puL6){
tin6=micros();
}
if(puL7!=puL7){
tin7=micros();
}
if(pEx0!=pEx0){
tex0=micros();
}
if(pEn2!=pEn2){
ten2=micros();
}
if(ret6>may){
ret6=men;
}
if(ret7>may){
ret7=men;
}
if(ret8>may){
ret8=men;
}
//detector de paso por cero
act=digitalRead(detC);
114
if(act==LOW){
pre=LOW;
}
if(act==HIGH){
tin=micros();
}
// retardo disparo de triacs según iluminación natural
if(aut6=true&&luz6<=921&&dmo6==HIGH){
ret6=(luz6/921)*may;
}
if(aut7=true&&luz7<=921&&dmo7==HIGH){
ret7=(luz7/921)*may;
}
if(aut8=true&&luz8<=921&&dmo8==HIGH){
ret8=(luz8/921)*may;
}
if(micros()-tin>=ret6&µs()-tin<=ret6+52){
digitalWrite(sec6,HIGH);
}
else{
digitalWrite(sec6,LOW);
}
if(micros()-tin>=ret7&µs()-tin<=ret7+52){
digitalWrite(sec7,HIGH);
}
else{
digitalWrite(sec7,LOW);
}
if(micros()-tin>=ret8&µs()-tin<=ret8+52){
digitalWrite(sec8,HIGH);
}
else{
digitalWrite(sec8,LOW);
}
if(micros()-tin6==50){
aut6=false;
ret6=ret6+900;
}
if(micros()-tin7==50){
aut7=false;
ret7=ret7+900;
}
if(micros()-tex0==50){
aue0=false;
ese0=!ese0;
digitalWrite(ext0,ese0);
}
if(pul6==true&µs()-tin6>=3000000){
aut6=true;
}
if(pul7==true&µs()-tin7>=3000000){
aut7=true;
}
if(pEx0==true&µs()-tex0>=3000000){
aue0=true;
}
115
if(dhu0>471&&aue0==true){
digitalWrite(ext0,HIGH);
}
else{
digitalWrite(ext0,HIGH);
}
if(Serial.available()){
byte ser=Serial.read();
switch (ser){
case'c'://dormitorio1
aut6=false;
ret6=ret6+900; //incremento de 0,9 mili segundos, máximo 9,9 mili
(medio ciclo)
break;
case'b'://cocina
aut7=false;
ret7=ret7+900; //incremento de 0,9 mili segundos, máximo 9,9 mili
(medio ciclo)
break;
case'h'://patio
aut8=false;
ret8=ret8+900; //incremento de 0,9 mili segundos, máximo 9,9 mili
(medio ciclo)
break;
case'm'://enchufe 2
digitalWrite(enc2, HIGH);
break;
case'k':
digitalWrite(ext0, HIGH);
aue0=false;
break;
case'j':
aut6=false;
ret6=5000;
aut7=false;
ret7=5000;
aut8=false;
ret8=5000;
break;
if(ser=='f'||'g'||'j'){
Serial.println(ser,BIN);
}
case'H':
aut6=true;
break;
case'K':
digitalWrite(enc2,LOW);
break;
case'D':
aut7=true;
break;
case'E':
aut8=true;
break;
116
case'M':
digitalWrite(ext0, HIGH);
aue0=true;
break;
case'J':
aut6=true;
aut7=true;
aut8=true;
break;
if(ser=='F'||'G'||'J'){
Serial.println(ser,BIN);
}
}
}
}
//**********************************************************
//**********Sketch para controlador Arduino n°3*************
//**********************************************************
// sketch que controla luz sector baño, y extractor baño
unsigned long tin, tin9,tex1; // tiempo paso por cero y variable que
define tiempo para evitar rebote
const int sec9=2, detC=3;
const int mov9=4, ldr9=A0, ext1=5, hum1=A1;
const int pul9=6, pex1=7;
int ret9=0,men=0, may=9900;
int pre=LOW, act=LOW;
int luz9,dmo9, dhu1;
boolean aut9=true, puL9=false, aue1=true, pEx1=false, ese1=LOW;
void setup(){
pinMode(sec9, OUTPUT);
pinMode(ext1, OUTPUT);
pinMode(mov9, INPUT);
pinMode(pex1, INPUT);
pinMode(pul9, INPUT);
digitalWrite(sec9, LOW);
digitalWrite(pex1, LOW);
}
void loop(){
luz9=analogRead(ldr9);
dhu1=analogRead(hum1);
dmo9=digitalRead(mov9);
puL9=digitalRead(pul9);
pEx1=digitalRead(pex1);
if(puL9!=puL9){
117
tin9=micros();
}
if(pEx1!=pEx1){
tex1=micros();
}
if(ret9>may){
ret9=men;
}
act=digitalRead(detC);
if(act==LOW){
pre=LOW;
}
if(act==HIGH){
tin=micros();
}
if(aut9=true&&luz9<=921&&dmo9==HIGH){
ret9=(luz9/921)*may;
}
if(micros()-tin>=ret9&µs()-tin<=ret9+52){
digitalWrite(sec9,HIGH);
}
else{
digitalWrite(sec9,LOW);
}
if(micros()-tex1==50){
aue1=false;
ese1=!ese1;
digitalWrite(ext1,ese1);
}
if(puL9==true&&aut9==false){
aut9=false;
ret9=ret9+900;
}
if(pul9==true&µs()-tin9>=3000000){
aut9=true;
}
if(pEx1==true&µs()-tex1>=3000000){
aue1=true;
}
if(Serial.available()){
byte ser=Serial.read();
switch (ser){
case'f'://dormitorio1
aut9=false;
ret9=ret9+900; //incremento de 1 mili segundos, máximo 10 mili
(medio ciclo)
break;
case'g':
digitalWrite(ext1, !ese1);
break;
case'j':
aut9=false;
ret9=5000;
case'F':
118
aut9=true;
break;
case'G':
aue1=true;
break;
case'J':
aut9=true;
}
}
}