Sunteți pe pagina 1din 36

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA


ESCUELA PROFESIONAL DE INGERNIERIA DE SISTEMAS

MEDIDOR DE CONDICIONES
AMBIENTALES

CURSO:

SISTEMAS DIGITALES

PROFESOR:

FLIX ARMANDO FERMIN PEREZ

INTEGRANTES:
-CCEDA RODRGUEZ, CAROLINA RUB

13200006

- MARTINEZ MORA, MIGUEL ANTONY

12200161

- RAQUI FERNANDEZ, AYRTON JESS

12200168

- ROJAS CAVERO, ANTHONY CHRISTIAN

13200036

- SILVA USQUIZA, LUIS ENRIQUE

13200183

- VILLANUEVA MONRROY, HENRY ZAMIR 13200192

2015

INTRODUCCIN:

El proyecto consiste en una unidad electrnica que pueda recopilar


datos del ambiente en el que se encuentra, tales como Temperatura, Humedad
Relativa, Monxido de Carbono, Calidad de aire y Luminosidad. Esta unida
electrnica ser implementada con el dispositivo Arduino y los respectivos
sensores de las variables de la cuales queremos obtener los datos. Para trabajar
con los datos se desarroll un programa en Java el cual mostrar el
comportamiento de datos en tiempo real, esto como apoyo visual, adems de
algunas funcionalidades ms que facilitaran el anlisis de datos obtenidos
como lo es el uso de grficas que se van actualizando en el tiempo. Todos
estos datos sern guardados en una base de datos para poder dar soporte a la
pgina web. En la pgina web los usuarios podrn ver el progreso de las
mediciones desde cualquier lugar que tenga internet, a partir de esos datos se
podr dar recomendaciones e informacin para todos los usuarios.
OBJETIVOS:
Aplicar los conocimientos adquiridos en el curso de Sistemas Digitales en
un proyecto real.
Demostrar de manera prctica los cdigos estudiados en clase.
Explorar de una manera visual e instructiva el comportamiento de las
condiciones ambientales a la que estamos sujetos.
Adquirir experiencias en el desarrollo de proyectos.
Aplicar conocimientos adquiridos en otras asignaturas como Circuitos
digitales, Algortmica, Base de Datos entre otras.
Adquirir destreza en la confeccin de proyectos basados en la tecnologa
Arduino.
Fomentar la investigacin y el desarrollo de tecnologas entre estudiantes.

HADWARE A USAR:

ARDUINO UNO
Es una plataforma de hardware libre, basada en una placa con
un microcontrolador y un entorno de desarrollo, diseada para facilitar el uso
de la electrnica en proyectos multidisciplinares.
El hardware consiste en una placa con un microcontrolador Atmel
AVR y puertos de entrada/salida. Los microcontroladores ms usados son
el Atmega168, Atmega328, Atmega1280, ATmega8 por su sencillez y bajo
coste que permiten el desarrollo de mltiples diseos. Por otro lado el
software consiste en un entorno de desarrollo que implementa el lenguaje de
programacinProcessing/Wiring y el cargador de arranque que es ejecutado en
la placa.
Arduino se puede utilizar para
desarrollar objetos interactivos autnomos o
puede ser conectado a software tal
como Adobe
Flash, Processing, Max/MSP, Pure
Data.
Las placas se pueden montar a mano o
adquirirse.
El entorno
de
desarrollo
integrado libre se puede descargar
gratuitamente.
Arduino puede tomar informacin del
entorno a travs de sus entradas analgicas y digitales, puede controlar luces,
motores y otros actuadores. El microcontrolador en la placa Arduino se
programa mediante el lenguaje de programacin Arduino (basado en Wiring) y
el entorno de desarrollo Arduino (basado en Processing). Los proyectos
hechos con Arduino pueden ejecutarse sin necesidad de conectar a un
computador.
APLICACIONES

El mdulo Arduino ha sido usado como base en diversas aplicaciones


electrnicas:

Xoscillo: Osciloscopio de cdigo abierto.


Equipo cientfico para investigaciones.
Arduinome: Un dispositivo controlador MIDI.
OBDuino: un econmetro que usa una interfaz de diagnstico a
bordo que se halla en los automviles modernos.
Humane Reader: dispositivo electrnico de bajo coste con salida de
seal de TV que puede manejar una biblioteca de 5000 ttulos en una
tarjeta microSD.
The Humane PC: equipo que usa un mdulo Arduino para emular un
computador personal, con un monitor de televisin y un teclado para
computadora.
Ardupilot: software y hardware de aeronaves no tripuladas.
ArduinoPhone: un telfono mvil construido sobre un mdulo Arduino.
Impresoras 3D.
PARTES:

ATMEGA328
El ATmega328 es
un chip microcontrolador creado
pertenece a la serie megaAVR.

por Atmel y

El
Atmega328 AVR 8-bit es
un Circuito
integrado de
alto
rendimiento que est basado un
microcontrolador RISC,
combinando
32 KB ISP flash una memoria con la
capacidad de leer-mientras-escribe,
1 KB de memoria EEPROM, 2 KB
de SRAM, 23 lneas de E/S de propsito
general, 32 registros de proceso general,
tres
temporizadores
flexibles/contadores con modo de comparacin, interrupciones internas y
externas, programador de modo USART, una interface serial orientada a byte
de 2 cables, SPI puerto serial, 6-canales 10-bit Conversor A/D (8-chanales
en TQFP y QFN/MLF packages),
"watchdog
timer"
programable
con oscilador interno, y cinco modos de ahorro de energa seleccionables por
software. El dispositivo opera entre 1.8 y 5.5 voltios. Por medio de la
ejecucin de poderosas instrucciones en un solo ciclo de reloj, el dispositivo
alcanza una respuesta de 1 MIPS, balanceando consumo de energa y
velocidad de proceso.
PARMETROS

APLICACIONES
Hoy el ATmega328 se usa comnmente en mltiples proyectos y sistemas
autnomos donde un micro controlador simple, de bajo consumo, bajo costo

es requerido. Tal vez la implementacin ms comn de este chip es en la


popular plataforma Arduino, en sus modelos Uno y Nano.

TEMAS IMPORTANTES DEL ARDUINO - DATASHEET


AVR CPU Core
En esta seccin se analiza la arquitectura de ncleo AVR en general. La
funcin principal del ncleo de la CPU es asegurar la ejecucin del programa
correcto. Por consiguiente, la CPU debe ser capaz de acceder a las memorias,
realizar clculos, controlar los perifricos, y manejar las interrupciones.
Con el fin de maximizar el rendimiento y paralelismo, el AVR utiliza
una arquitectura de Harvard con memorias y buses separados para
programas y datos. Las instrucciones en la memoria del programa son
ejecutado con una sola canalizacin nivel. Mientras se est ejecutando una
instruccin, la siguiente instruccin es pre-buscadas de la memoria del
programa. Este concepto permite a las instrucciones que se ejecutarn en cada
ciclo de reloj.
La memoria del programa est en la memoria flash reprogramable del
sistema. El acceso rpido de Archivo de Registro contiene registros de
propsito general de 32x8 bits con un tiempo de acceso de un solo ciclo de
reloj. Esto permite la operacin de la ALU en solo ciclo de reloj.
En una operacin tpica ALU, dos operandos son enviados desde el
Registro de archivos, se ejecuta la operacin, y el resultado se almacena en el
Archivo de Registros- en un ciclo de reloj.
Seis de los 32 registros pueden ser utilizados como triples registro de
direccin indirecta de 16 bits de espacio de direccionamiento de datos - que
permiten clculos de direccin eficientes. Uno de los estos punteros de
direccin tambin se puede utilizar como un puntero de direccin para tablas
de consulta en la memoria de programa flash. Estos registros de funciones
aadidas son la X- 16 bits X, Y y Z-registro, que se describe ms adelante en
esta seccin.

La ALU soporta operaciones aritmticas y lgicas entre registros o entre


una constante y un registro. Operaciones de registro individual tambin se
pueden ejecutar en la ALU. Despus de una operacin aritmtica, el Registro
de estado se actualiza para reflejar la informacin sobre el resultado de la
operacin.
El flujo de programa est provisto de saltos condicionales e
incondicionales y llamadas a instrucciones, capaz de dirigirse a todo el espacio
de direcciones.
La mayora de las instrucciones AVR tienen un solo formato de palabra
de 16 bits. Cada direccin de memoria de programa contiene una instruccin
de 16 o 32 bits. Espacio de memoria de programa Flash se divide en dos
secciones, la seccin de programa de arranque y la seccin de programacin
de aplicaciones. Ambas secciones tienen dedicados bits de bloqueo para
proteccin de lectura / escritura.

La instruccin SPM que escribe en la seccin de memoria de


aplicaciones de Flash debe residir en la seccin del programa de arranque.
La instruccin SPM que escribe en la seccin de memoria de
aplicaciones de Flash debe residir en la seccin del programa de arranque.
Durante las interrupciones y llamadas a subrutinas, el contador de programa
direccin de retorno (PC) se almacena en la pila (Stack). La pila se asigna
eficazmente en la SRAM general de datos, y en consecuencia el tamao de la
pila slo est limitado por el tamao total de SRAM y el uso de la SRAM.
Todos los programas de usuario deben inicializar el SP en el
restablecimiento de rutina, llamada tambin Reset Routine, (antes de ejecutar
subrutinas o interrupciones). El puntero de pila (SP) es lectura / escritura
accesible en el espacio de E / S. La SRAM de datos se puede acceder
fcilmente a travs de los cinco modos de direccionamiento diferentes
apoyados en la arquitectura AVR. Los espacios de memoria en la arquitectura
AVR son todos los mapas de memoria lineales y regulares.

Un mdulo de interrupcin flexible tiene sus registros de control en el


espacio de E / S con una interrupcin adicional global de bit de habilitacin
en el Registro de Estado.
Todas las interrupciones tienen un vector de interrupcin separado en la
tabla de vector de interrupcin. Las interrupciones tienen prioridad en funcin
de su posicin de vector de interrupcin.
Cuanto menor sea la direccin de vector de interrupcin, mayor es la
prioridad.
El espacio de memoria de E / S contiene 64 direcciones de CPU
funciones perifricas como el Control de Registros, SPI, y otras funciones de
E / S. La E / S de memoria se puede acceder directamente, o como las
localizaciones espaciales de Datos tras los del Registro Archivo, 0x20 - 0x5F.
Adems, el ATmega48PA / 88PA / 168PA / 328P ha extendido el espacio de E /
S de 0x60 - 0xFF en SRAM donde slo los ST / STS / ETS y las instrucciones
LD / SUD / LDD se pueden utilizar.

ALU
El alto rendimiento AVR ALU opera en conexin directa con todos los
32 registros generales de trabajo de propsito. Dentro de un solo ciclo de reloj,
se ejecutan las operaciones aritmticas entre registros de propsito general o
entre un registro y una inmediata. Las operaciones de ALU se dividen en tres
categoras principales - aritmticas, lgicas y bit-funciones. Algunas
implementaciones de la arquitectura tambin proporcionan un multiplicador
de gran alcance que apoya la multiplicacin c/s signo y formato fraccionario.

Registro de Estado (Status Register)


El Registro de Estado contiene informacin sobre el resultado de la
instruccin aritmtica ejecutado ms recientemente. Esta informacin puede
ser usada para alterar el flujo del programa con el fin de realizar operaciones
condicionales. El registro de estado se actualiza despus de todas las

operaciones de la ALU, como se especifica en el Manual del sistema de


referencia. Esto en muchos casos eliminar la necesidad de utilizar las
instrucciones de comparacin dedicadas, lo que resulta en cdigo ms rpido y
el ms compacto.
El Registro de Estado no se almacena automticamente al entrar en una
rutina de interrupcin y restaurado al regresar de una interrupcin. Esto debe
ser manejado por software.
Archivo de Registro de propsito general
Propsito General de Registro Archivo
El Registro de archivos est optimizado para el AVR mejorado conjunto
de instrucciones RISC. A fin de lograr el rendimiento y la flexibilidad
requerida, los siguientes esquemas de entrada / salida son compatibles con el
Registrar archivo:
Un operando de salida de 8 bits y una entrada de nmero 8-bit
Dos operandos de salida de 8 bits y una entrada de nmero 8-bit
Dos operandos de salida de 8 bits y una entrada nmero 16-bit
Un operando de salida de 16 bits y una entrada nmero 16-bit
La figura muestra la estructura de los registros de trabajo 32 de propsito
general en la CPU
.

Registros de trabajo de propsito general del CPU AVR

La mayor parte de las instrucciones de funcionamiento en el archivo de


registros tienen acceso directo a todos los registros, y la mayora de ellos son
instrucciones de un solo ciclo.
Como se muestra en la figura, cada registro tambin se le asigna una
direccin de memoria de datos, mapeo de ellos directamente en los primeros
32 lugares del espacio de usuario de datos. Aunque no est implementado
fsicamente como lugares de SRAM, esta organizacin de la memoria
proporciona una gran flexibilidad en el acceso de los registros, como los ejes
X-, Y- y Z-registros de puntero pueden configurarse para indexar cualquier
registro en el archivo.
Puntero de pila (Stack Pointer)
La pila se utiliza principalmente para el almacenamiento de datos
temporales, para el almacenamiento de variables locales y para almacenar
direcciones de retorno despus de interrupciones y llamadas a subrutinas. La
pila se implementa como creciente de mayor a ubicaciones de memoria
inferiores. El puntero Registro Pila siempre apunta a la parte superior de la

pila. El puntero de pila apunta al rea de datos de la pila de SRAM donde se


encuentra la subrutina de interrupcin y Pilas. El comando de pila PUSH
disminuir el puntero de pila.
La Pila en la SRAM de datos debe ser definido por el programa antes de
ejecutar cualquier llamada a subrutinas o interrupciones estn habilitadas. El
valor inicial del puntero de pila es igual a la ltima direccin de la SRAM
interna y el puntero de pila debe estar ajustado a punto por encima de inicio de
la SRAM.

Tabla Instrucciones de puntero de pila


Instruccin
PUSH

Puntero de pila
Decrementa en 1

CALL
ICALL
RCALL

Decrementa en 2

POP

Incrementa en 1

RET
RETI

Incrementa en 2

Descripcin
Los datos se insertan en
la pila
La direccin de retorno
se inserta en la pila con
una llamada de
subprograma o
interrupcin.
Los datos se extraen de
la pila.
La direccin de retorno
se extrae de la pila con
el retorno de subrutina o
retorno de interrupcin

El puntero de pila AVR se implementa como dos registros de 8 bits en el


espacio de E / S. El nmero de bits utilizados efectivamente depende de la
implementacin. Tenga en cuenta que el espacio de datos en algunas
implementaciones de la arquitectura AVR es tan pequea que slo se necesita
SPL. En este caso, el Registro SPH no estar presente.
INSTRUCCIN EXECUTION TIMING (Tiempo de Ejecucin)

Esta seccin describe los conceptos generales de sincronizacin para la


ejecucin de instrucciones. El AVR CPU es impulsado por el reloj de la CPU
(clkCPU), generada directamente de la fuente del reloj seleccionado para el
chip. No se utiliza ninguna divisin interna del reloj.
FIGURA 1 Muestra la instruccin paralela obtenida y ejecuta instrucciones
habilitadas por la arquitectura Harvard y el concepto de acceso rpido Register
File (Archivo de Registro). Este es el concepto bsico de Pipelinig para
obtener hasta 1 MIPS por MHZ con los correspondientes nicos resultados
para funciones por costo, funciones por relojes, y funciones por unidad de
potencia.
FIGURA 1. La instruccin paralela obtiene y ejecuta instrucciones

FIGURA 2 Muestra el concepto de tiempo interno por el Register File


(Archivo de Registro). En un solo ciclo de reloj un ALU ejecuta la operacin
usando dos operandos de registro, y el resultado se almacena en el registro.
FIGURA 2. Operacin del Ciclo individual ALU

RESET AND INTERRUPT HANDLING (Reinicio y manejo de


interrupciones)
El AVR proporciona diferentes fuentes de interrupcin. Estas
interrupciones y el independiente Reset Vector cada uno tienen un vector de
programa por separado en el espacio de memoria de programa. Todas las
interrupciones son asignadas por bits individuales activados que debe ser uno
lgico escrito junto con la interrupcin global con bit habilitado en el registro
de estado con el fin de permitir la interrupcin. Dependiendo del valor del
contador, las interrupciones se pueden desactivar automticamente cuando
Boot Lock bits (Bits de bloqueo de arranque) BLB02 o BKB12 se programan.
Esta caracterstica mejora la seguridad del software.
Las direcciones ms bajas en el espacio de memoria del programa son
definidos por defecto como Reset (Reinicio) e Interrupt Vectors (Vectores de
Interrupcin). Los vectores de Interrupcin se pueden mover hasta el inicio de
la seccin Boot Flash activando el bit IVSEL en el registro de control de MCU
(MCUCR). El reinicio del vector tambin se puede mover hasta el inicio de la
seccin Boot Flash mediante la programacin de la BOOTRST Fuse.
Cuando se produce una interrupcin, se borra The Global Interrupt
Enable I-bit (la interrupcin global habilitada bit I) y todas las interrupciones
se desactivan. El usuario del software puede escribir en el bit lgico I para
habilitar las interrupciones anidadas. Entonces todas las interrupciones
habilitadas pueden interrumpir la rutina de la interrupcin actual. El bit I se
establece automticamente cuando un retorno de la instruccin de interrupcin
RETI se ejecuta.
Hay bsicamente dos tipos de interrupciones. El primer tipo se activa
por un evento que fija la Bandera de interrupcin. Por estas interrupciones, el
contador del programa se gua vectorialmente al actual vector de interrupcin
con el fin de ejecutar la rutina de manejo de interrupciones, y el hardware
borra la correspondiente Bandera de interrupcin. Banderas de interrupcin
tambin se pueden borrar escribiendo en un bit lgico de bandera que se
solucione. Si una condicin de interrupcin se produce mientras el

correspondiente bit de habilitacin de interrupcin es despejado, la bandera de


interrupcin se configurar y recordado hasta la interrupcin est habilitada, o
la bandera es despejada por software. Del mismo modo, si se producen las
condiciones de uno o ms de interrupcin mientras que la interrupcin Global
Activar bit se restablece, la bandera de interrupcin correspondiente se
establecer y se acuerda hasta que el Interrupcin Global Enable bit est
establecido, y entonces ser ejecutado por orden de prioridad.
El segundo tipo de interrupciones activar siempre y cuando la
condicin de interrupcin est presente. Estas interrupciones no
necesariamente tienen banderas de interrupcin. Si la condicin de
interrupcin desaparece antes de que la interrupcin est activada, la alarma
no se activar.
Cuando el AVR sale de una interrupcin, siempre regresar al programa
principal y se ejecutar atendiendo a ms de instrucciones antes de cualquier
interrupcin quede pendiente. Tenga en cuenta que el registro de estado no se
almacena automticamente al entrar en una rutina de interrupcin, ni
restaurado al volver de una rutina de interrupcin. Esto debe ser manejado por
software.
Cuando se utiliza la instruccin CLI para deshabilitar las interrupciones,
las interrupciones se desactivarn inmediatamente.
La interrupcin no se ejecutar despus de la instruccin CLI, incluso si
se produce simultneamente con la Instruccin CLI. El siguiente ejemplo
muestra cmo se puede utilizar para evitar interrupciones durante la secuencia
EEPROM cronometrado.

Cuando se utiliza la instruccin SEI es para habilitar las interrupciones,


se ejecuta la instruccin siguiente SEI antes de las interrupciones pendientes,
tal como se muestra en este ejemplo.

Interrupt Response Time (Tiempo de respuesta de interrupcin)


La respuesta de la ejecucin de la interrupcin habilitada por todo el
AVR interrumpe por cuatro ciclos de reloj mnimo. Despus de cuatro ciclos
de reloj la direccin del vector programa para la rutina actual maneja de la
interrupcin se ejecuta. Durante este perodo de ciclo de cuatro horas, el
contador de programa inserta en la pila.
El vector es normalmente un salto a la rutina de interrupcin, y este
salto tiene tres ciclos de reloj. Si se produce una interrupcin durante la

ejecucin de una instruccin de multi-ciclo, se ha completado esta instruccin


antes de que se active la interrupcin. Si se produce una interrupcin cuando
el MCU est en modo inactivo, el tiempo de respuesta de ejecucin alarmas se
prolonga por cuatro ciclos de reloj. Este aumento se suma a la hora de puesta
en marcha del modo de suspensin seleccionado.
El retorno de una rutina de manejo de interrupciones toma cuatro ciclos
de reloj. Durante estos cuatro ciclos de reloj, el contador de programa (dos
bytes) se posiciona detrs de la pila, el puntero de pila se incrementa en dos, y
el bit I en SREG se establece.
Memorias AVR
Overview (Visin de Conjunto)
Esta seccin describe las diferentes memorias en el ATmega48PA /
88PA / 168PA / 328P. La arquitectura AVR tiene dos espacios de memoria
principal, la memoria de datos y el espacio de memoria de programa.
Adems, el ATmega48PA / 88PA / 168PA / 328P cuenta con una
memoria EEPROM para almacenar datos. Los tres espacios de memoria son
lineales y regular.
In-System Reprogrammable Flash Program Memory (En Sistema de
memoria de programa Flash reprogramable)
El ATmega48PA / 88PA / 168PA / 328P contiene 4/8/16 / 32K bytes en
el chip del Sistema de memoria reprogramable flash para almacenamiento de
programas. Desde todas las instrucciones AVR son de 16 o 32 bits de ancho, el
flash se organiza de 2/4/8/16 K x 16. Para la seguridad del software, el espacio
de memoria de programa Flash se divide en dos secciones, la seccin del
gestor de arranque y de la Seccin de programa de aplicacin en ATmega88PA
y ATmega168PA.

Figura 3. Mapa de memoria de programa ATmega48PA

Figura 4. Mapa de memoria de programa ATmega88PA, ATmega168PA y


ATmega328P

Memoria de datos SRAM

El ATmega48PA / 88PA / 168PA / 328P es un microcontrolador


complejo con ms unidades perifricas que puedan ser soportados dentro de
los 64 posiciones reservados en el Cdigo de operacin para las instrucciones
IN y OUT. Para el espacio de E / S extendido de 0x60 - 0xFF en SRAM, solo
pueden ser usadas las instrucciones ST/STS/STD y LD/LDS/LDD.
Los posiciones de memoria de datos inferiores 768/1280/1280/2303
direccionan tanto el archivo de registro, la memoria de E / S, extendido
memoria de E / S y la SRAM de datos interna. Los primeros 32 posiciones
direccionan el archivo de registro, el prximo 64 de ubicacin el estndar de E
/ S de memoria, luego 160 ubicaciones de memoria de E / S extendida, y los

prximos 512/1024/1024/2048 posiciones direccionan la SRAM de datos


interna.
Los cinco modos diferentes de direccionamiento para la cubierta de la
memoria de datos: directos, indirectos con Desplazamiento, indirecto,
indirecto con Pre-decremento, e Indirectos con pos incremento. En el archivo
de registro, registros R26 a R31 caracterstica las indirectas que traten
registros de puntero.
Los direccionamiento directo se extiende a todo el espacio de datos.
el modo directo con desplazamiento alcanza 63 posiciones de direccin
de la direccin de base dado por los registros Y- o Z-.
Al usar modos de direccionamiento indirecto de registro con predecremento automtico y post incremento, los registros de direccin X, Y y Z
son disminuidos o incrementados.
Los 32 registros de trabajo de propsito general, 64 I / O Registros, 160
I extendido / S Registros, y los 512/1024/1024/2048 bytes de la SRAM interna
de datos en la ATmega48PA / 88PA / 168PA / 328P son accesibles a travs de
todos estos modos de direccionamiento.
Mapa de memoria de datos
Muestra como est organizada
ATmega48PA/88PA/168PA/328P.

la

memoria

SRAM

de

-Tiempos de acceso a los datos de memoria


En esta seccin se describe los conceptos de tiempos de acceso general
para el acceso a la memoria interna. El acceso SRAM interna de datos se
realiza en dos ciclos de reloj de CPU.
Ciclos de acceso a la SRAM de datos.

Memoria de datos EEPROM


El ATmega48PA / 88PA / 168PA / 328P contiene 256/512/512 / 1K bytes
de memoria EEPROM de datos.

Se organiza como un espacio de datos por separado, en el que los bytes


individuales pueden ser ledos y escritos. La EEPROM tiene una autonoma de
al menos 100.000 ciclos de escritura / borrado.
- EEPROM de lectura / escritura de acceso
Los registros EEPROM de acceso son accesibles en el espacio de E / S.
Una funcin de auto-sincronizacin permite al software de usuario
detectar cuando el siguiente byte se puede escribir. Si el cdigo de usuario
contiene instrucciones que escriben en la EEPROM, se deben tomar algunas
precauciones. En fuentes de alimentacin fuertemente filtradas, VCC es
probable que suba o baje lentamente el encendido / apagado.
Esto hace que el dispositivo durante un cierto perodo de tiempo
funcione a una tensin inferior a la especificada como mnimo para la
frecuencia de reloj utilizada.
A fin de evitar escrituras EEPROM no intencionales, debe seguirse un
procedimiento de escritura especfico.
Cuando se lee la EEPROM, la CPU se detiene durante cuatro ciclos de
reloj antes de que se ejecute la siguiente instruccin. Cuando se escriba la
EEPROM, la CPU se detiene durante dos ciclos de reloj antes de que se
ejecute la siguiente instruccin.

Memoria de E/S
Todo ATmega48PA / 88PA / 168PA / 328P / S y los dispositivos
perifricos se colocan en el espacio de E / S. Todas las posiciones de E / S
pueden ser accedidas por las instrucciones LD / SUD / LDD y ST / STS / de
ETS, la transferencia de datos entre los 32 registros de propsito de trabajo
general y el espacio de E / S. E / S Registros dentro del rango de direcciones
0x00 - 0x1F son directamente poco accesible siguiendo las instrucciones de
OSE y la ICC.
En estos registros, el valor de los bits individuales se puede comprobar
mediante el uso de las instrucciones SBIS y SBIC. Cuando se utiliza los

comandos de E/S especficos IN y OUT, deben utilizarse las direcciones 0x00


- 0x3F de E / S. Al direccionar Registros de E / S como espacio de datos
utilizando instrucciones LD y ST, 0x20 hay que aadir a estas direcciones.
El ATmega48PA / 88PA / 168PA / 328P es un microcontrolador
complejo con unidades ms perifricas, que pueden sustentarse en el 64
posicin reservada en el Cdigo de operacin para las instrucciones IN y
OUT.
Para el espacio de E / S de 0x60 - 0xFF en SRAM, solo pueden ser
usadas las instrucciones ST/STS/STD y LD/LDS/LDD. Para la compatibilidad
con dispositivos futuros, los bits reservados se deben escribir a cero si accede.
Las Direcciones de memoria de E / S Reservadas nunca deben ser escritos.
Algunos de los indicadores de estado se borran escribiendo un uno lgico para
ellos.

SENSOR UV ML8511
Este sensor es adecuado para detectar la radiacin UV ya sea en interiores o al
aire libre.

Caractersticas:
Voltaje de entrada: 3.3v
Longitud de onda que detecta: 280-390 nm
Temperatura de funcionamiento: -20C a -70C

Tamao: 30x22 mm.

Diagrama:

Grfico de intensidad del ML8511

Cdigo del sensor:


int UVOUT = A2; //SAlIDA DEL SENSOR
int REF_3V3 = A1; //3.3V
void setup()
{
Serial.begin(9600);
pinMode(UVOUT, INPUT);
pinMode(REF_3V3, INPUT);
Serial.println("ML8511 Ejemplo indice de radiacion uv");
}
void loop()
{
int uvLevel = averageAnalogRead(UVOUT);
int refLevel = averageAnalogRead(REF_3V3);
float outputVoltage = 3.3 / refLevel * uvLevel;
float uvIntensity = mapfloat(outputVoltage, 0.99, 2.8, 0.0, 15.0); //nivel de
intensidad

Serial.print("output: ");
Serial.print(refLevel);
//Serial.print("ML8511 output: ");
// Serial.print(uvLevel);
Serial.print(" voltage: ");
Serial.print(outputVoltage);
Serial.print("UV Intensidad (mW/cm^2): ");
Serial.print(uvIntensity);
Serial.println();
delay(1000);
}
//Takes an average of readings on a given pin
//Returns the average
int averageAnalogRead(int pinToRead)
{
byte numberOfReadings = 8;
unsigned int runningValue = 0;
for(int x = 0 ; x < numberOfReadings ; x++)
runningValue += analogRead(pinToRead);
runningValue /= numberOfReadings;
return(runningValue);
}
//The Arduino Map function but for floats
float mapfloat(float x, float in_min, float in_max, float out_min, float
out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
TENIENDO EN CUENTA LO SIGUIENTE:

SENSOR MQ135
Sensor de control de calidad de aire usado para la deteccin de
contaminacin en el medio ambiente. Este sensor es capaz de detectar un
amplio rango de gases que incluye: NH3, Benceno, Humo y CO2.

Caractersticas:
Voltaje de funcionamiento: 5v
Corriente de operacin: 150 mA

Potencia de consumo: 800mW


Concentracin detectable: amoniaco, benceno, humo, azufre.
Temperatura de funcionamiento: -20C a -70C
Concentracin: 10ppm a 1000ppm (partes por milln).
Seal de salida: analgico y digital.

Diagrama:

SENSOR DHT11
Sensor de medida de la humedad relativa y la temperatura.

Caractersticas:

Rango de voltaje: 3.3v - 5v.


Rango de temperatura: -0C a -50C , error: 2C
Humedad: 20-90% HR , error: 5% HR
Tiempo de respuesta: 2s

Diagrama:

Cdigo del sensor:

1. #include <DHT.h>
2.
3. #define DHT_PIN 8
4.
5. DHT dht;
6.
7. void setup()
8. {
9. Serial.begin(9600);
10.Serial.println();
11.Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)");
12.
13.dht.setup(DHT_PIN);
14.}
15.
16.void loop()
17.{
18.delay(dht.getMinimumSamplingPeriod());
19.
20.float humidity = dht.getHumidity();

21.float temperature = dht.getTemperature();


22.
23.Serial.print(dht.getStatusString());
24.Serial.print("\t");
25.Serial.print(humidity, 1);
26.Serial.print("\t\t");
27.Serial.print(temperature, 1);
28.Serial.print("\t\t");
29.Serial.println(dht.toFahrenheit(temperature), 1);
30.}

SENSOR MQ7
Sensor adecuado para detectar concentraciones de CO en el aire. Es
capaz de detectar concentraciones de CO entre 20 y 2000 ppm.

Caractersticas:

Fuente de entrada: 5v
Alta sensibilidad al monxido de carbono
Tamao: 40x20 mm.
Tipo de interfaz: analgico.

Diagrama:

Cdigo del sensor:


const int AOUTpin = 0;
const int DOUTpin = 8;
const int ledpin = 13;
int limit;
int Value;
void setup(){
Serial.begin(115200);
pinMode(DOUTpin,INPUT);
pinMode(DOUTpin,OUTPUT);
}
void loop()
{
Value = analogRead(AOUTpin);
// read analog input pin 1
limit= digitalRead(DOUTpin);
Serial.print("CO valor: ");
Serial.println(Value);
Serial.print("Limite");
Serial.println(limit);
delay(100);
// wait 100ms for next reading
if(limit == HIGH){
digitalWrite(ledpin,HIGH);
}else{
digitalWrite(ledpin, LOW);
}
}
PROGRAMA EN JAVA
PGINA WEB
PROCESO CON IMAGENES
DIAGRAMAS DE FLUJO

CONCLUSIONES
BIBLIOGRAFA
http://es.wikipedia.org/wiki/Atmega328
http://es.wikipedia.org/wiki/Arduino

S-ar putea să vă placă și