jueves, 28 de junio de 2018

Lab. 16 "PROYECTO CON ARDUINO"

                  CIRCUITOS DIGITALES
                   PROYECTO N° 05

                      PROYECTO CON ARDUINO


                          

         "Sensor de Temperatura en una                                          Vivienda"


OBJETIVOS:

  • lograr con la programación en arduino regular la temperatura de una vivienda.
  • Utilizar el sensor de temperatura LM35 para conseguir medir la temperatura.
  • Usar como sistema de ventilación dos ventiladores.
  • Hacer uso de el programa arduino para realizar la programación para ponerle las condiciones para que nuestro sensor de temperatura entre en funcionamiento.


DESARROLLO DEL PROBLEMA:

-Descripción
Es un sistema de “ambientación” automático, El cual busca controlar varios elementos electrónicos en una habitación  como; ventiladores, aire acondicionado, Calefacción etc.
Mediante un sensor de temperatura que es el que nos permite saber la temperatura de la habitación, clasificamos 3 estados; Frio, Ambiente Caliente y así poder dar los parámetros de preferencia es decir “A mi gusto 20°c es frio, 25°c es normal y 30° es caliente” Dados estos parámetros de ejemplo podemos decir que cuando la temperatura sea 30° (Caliente) entonces automáticamente se enciende el aire acondicionado y así definirlo de acuerdo a nuestras necesidades.
Materiales
Lista de componentes Smart Sensor.Lista de componentes Smart Sensor:
-1 Arduino
-1 servomotor
-1 LED RGB
-1 Sensor de temperatura Lm35
-3 resistencias 220 ohm
-1 Resistencia 2.2k ohm
-1 Motor dc o un ventilador de computadora.
-1 Cargador de celular 5v
Sensor de temperatura lm35
El sensor LM35, es un sensor de temperatura integrado de precisión cuyos rangos de operación oscilan desde los  -55°C  hasta los 150°C, teniendo en cuenta que este tipo de sensores ofrecen una precisión de +- 1.4°C a temperatura ambiente. Además de ello, son del tipo lineal; es decir, que no es necesario forzar al usuario a realizar conversiones debido a que otros sensores están basados en grados Kelvin.
Un LM35 puede funcionar a partir de los 5 V (en corriente continua), sea por alimentación simple o por doble alimentación (+/-). Sus características más importantes se describen a continuación:
  • Configurado para ser leído en grados Celsius
  • Factor de escala lineal de +10 mV / ºC
  • Rango de trabajo entre -55 ºC hasta 150 ºC
  • Apropiado para aplicaciones remotas
  • Bajo costo
  • Funciona con tensiones entre 4 V hasta 30 V
  • Menos de 60 uA de consumo
  • Baja impedancia de salida, 0.1 W, para cargas de 1 mA


Frio: De los 30°C hacia a abajo el led encenderá Azul, el servo se posicionara en 60°, el buzzer en una nota grave y lento.
Ambiente: De los 30°C hasta los 35°C el led encenderá color Verde, el servo se posicionara en 90°, el buzzer en una nota media y a velocidad media.
Caliente: De los 35°C en adelante el led encenderá color Rojo, el servo se posicionara en 150°, y el sonara en una nota más aguda y a velocidad más rápida además el ventilador se encenderá como autoprotección para regular la temperatura.
Ahora que hemos analizado a lo que queremos llegar, podemos comenzar a escribir el código.
Código.







VIDEO DEMOSTRATIVO:




OBSERVACIONES Y CONCLUSIONES:






OBSERVACIONES:

  • Las instalaciones de un sensor de temperatura son muy importantes en lugares en los cuales ay un exceso de temperatura, por ello se observo que este proyecto es ideal para solucionar tal problema.

  • En la la programación realizada se tubo cierta dificultad con las variables, los cuales nos daba en el programa, para lo cual según las condiciones en la que se deseaba que funcionase este sensor de temperatura efectivamente se tuvo que poner esas condiciones en nuestro codigo de programacion.

  • En las conexiones del cableado, hubo un inconveniente, pues una cable no hacia la conducción de la energía eléctrica.

  • Se tuvo que realizar la inspección de nuestro cableado pues había un error que no permite que nuestro sensor funcionase.

  • La conexión de los ventiladores los cuales cuando nuestro sensor de temperatura según a la temperatura que se haya programado para que los ventiladores se pusieran en funcionamiento.

  • La instalación de los ventiladores en nuestro protoboard en cierto modo causaban cierto desperfecto en lo que registraba nuestro sensor de temperatura. 


* CONCLUSIONES:


  • La correcta programación permitió que nuestro sensor realizar su función, dado que este según la programación realizada cuando llevalegava la temperatura de la habitación de una vivienda mandaba la señal para que nuestros sistemas de refrigeración en este caso ventiladores entrasen en funcionamiento regulado nuestro nivel de temperatura y de esta manera que nuestro sensor de temperatura registrase el nuevo valor y hacer que nuestros sistemas de ventilación se detuvieran.

  • Los sensores de temperatura soy muy ideales y super económicos en su instalación pues al ser pequeños pero eficiente, hacen que logremos tener una temperatura adecuada según les hayamos programado.

  • La programación realizada a este proyecto es muy importante definir en que variables y valores deseamos que funcione nuestro sistemas de ventilación de las elevadas temperatura que se puedan producir en una habitación de una vivienda.




BIBLIOGRAFIA Y WEBGRAFIA RECOMENDADA:

  • http://medirtemperatura.com/sensor-temperatura.php.
  • https://es.omega.com/prodinfo/medicion-temperatura.html.
  • http://www.pce-iberica.es/instrumentos-de-medida/sistemas/sensores-temperatura.htm.
  • https://www.solerpalau.com/es-es/blog/sensor-temperatura/.
  • https://www.mundodelmotor.net/sensor-de-temperatura/.


Integrantes:

- Manuel Atahualpa Lázaro.


- Arturo Mamani Bernal.





sábado, 23 de junio de 2018

Lab 15. Convertidor ADC con Arduino.

               CIRCUITOS DIGITALES
                   PROYECTO N° 04

                      PROYECTO CON ARDUINO


                                  FASE 3:

            "Convertidor Analógico/Digital con                                          Arduino"


OBJETIVOS:


  • Programación del Convertidor A/D con Arduino
  • Estructuras de control en programación 
  • Escritura de datos por puerto serial

DESARROLLO DEL PROBLEMA:


El ADC (Conversor analógico-digital)
Un conversor analógico-digital es un dispositivo electrónico que permite convertir una señal analógica en una señal digital. Las señales analógicas se caracterizan por poder adoptar infinitos valores mientras que las señales digitales sólo pueden tomar ciertos valores determinados. Un ejemplo de señales analógicas son los valores de voltaje que se alcanzan en un punto de un circuito electrónico.
Así pues, en un conversor analógico-digital se transforma una señal de voltaje (analógica) en unos y ceros (digitales) que representan el voltaje medido. A la hora de utilizar este elemento hay que tener en cuenta las siguientes características:



  • Rango de entrada: valores máximo y mínimo de voltaje que se pueden medir. El conversor de nuestro Arduino tiene un rango de entrada de 0 a 5V.
  • Nº de bits: número de bits utilizados para indicar el valor de la medida. En nuestro caso el conversor es de 10 bits lo que significa que a la salida obtendremos valores comprendidos entre 0 y 1023 (de tal forma que 1023 corresponde a 5V y 0 corresponde a 0V).


El programa que vamos a realizar
El programa que vamos a realizar irá tomando medidas del conversor analógico-digital e irá enviando los resultados al ordenador a través de una comunicación serie. Haciendo uso de la herramienta llamada monitor que viene en el IDE podremos ver los resultados.
Una comunicación serie se caracteriza porque los bits se van enviando de uno en uno. Por el contrario, una comunicación paralela se caracteriza por enviar grupos de bits de forma simultánea. A día de hoy, las comunicaciones más extendidas son las comunicaciones serie. Un ejemplo de ello es el conocido USB. De hecho, los datos se envían desde el Arduino hasta el ordenador a través del cable USB.



Preparando la placa
Antes de comenzar a escribir el código debemos preparar la placa. Para ello haremos uso de un potenciómetro. El potenciómetro es un dispositivo de tres terminales que contiene una resistencia en su interior. De esta forma, dos de los terminales están unidos a ambos extremos de la resistencia mientras que el tercero se va desplazando a lo largo de ella. Esto provoca que el valor de la resistencia vista entre éste último terminal y uno de los otros dos sea variable.

Conectaremos los dos extremos del potenciómetro a la salida de 5V de la placa y a la salida de tierra (GND) de la placa. El tercer terminal se conectará a la entrada 0 del conversor analógico-digital.



Con esta configuración conseguimos que la tensión que entra en el conversor analógico-digital varíe entre 0 y 5V (aproximadamente) según vayamos girando el potenciómetro.
Una vez que hemos hecho la conexión sólo queda escribir el programa.
esquema conexion a placa

void setup(){
Serial.begin(9600);
}
A continuación escribiremos el contenido de la función loop (la función que se ejecuta continuamente).
void loop() {
En primer lugar necesitamos un lugar en el que almacenar los datos obtenidos del conversor. Éste lugar se denomina variable. Para declarar una variable (es decir, para solicitar este lugar de almacenamiento) debemos indicar qué tipo de dato vamos a almacenar. Sabemos que el conversor devuelve valores enteros comprendidos entre 0 y 1023 (ya que es de 10 bits). El tipo de variable que permite almacenar un dato entero es el tipo int. A la variable debemos darle un nombre para poder identificarla así que elegiremos el nombre valorADC. Así pues, el código quedará de la forma:
int valorADC;
No obstante, un valor de 0 a 1023 no es intuitivo por lo que necesitamos convertirlo a un valor de voltaje. Dado que este valor tendrá números decimales, el valor obtenido no lo podemos almacenar en esta variable así que creamos otra que sea de tipo float:
float voltaje;
Una vez creadas las variables que necesitamos procedemos a tomar la medida utilizando la función analogRead() y pasándole como argumento el pin desde el cual debe leer el conversor (en este caso el pin 0 del puerto A). Almacenamos el resultado en la variable valorADC:
valorADC = analogRead(A0);
A continuación convertimos este valor a un valor de voltaje sabiendo que un valor de 1023 corresponde a 5V. Por lo tanto, el valor de voltaje será el valor medido multiplicado por 5 y dividido entre 1023:
voltaje = valorADC * 5.0 / 1023.0;
Finalmente enviamos el valor obtenido a través del puerto serie y esperamos 2ms antes de realizar la siguiente medida (ya que el conversor necesita que transcurra un tiempo entre una medida y la siguiente para que los resultados sean correctos):
Serial.println(voltaje);
delay(2);

Por último sólo queda compilar el código y descargarlo en la placa. Una vez que esté funcionando sólo tenemos que abrir el monitor serie (“serial monitor”) del IDE de Arduino y ver el valor de tensión. Si vamos girando el potenciómetro comprobamos cómo va cambiando el valor medido.
El código completo es el siguiente:
void setup() {
Serial.begin(9600);
}
void loop() {
int valorADC;
float voltaje;
valorADC = analogRead(A0);
voltaje = valorADC * (5.0 / 1023.0);
Serial.println(voltaje);
delay(2);

VIDEO DEMOSTRATIVO:







OBSERVACIONES Y CONCLUSIONES:



OBSERVACIONES:


  • Se observó que los dos ejercicios  se dieron con éxito  en el ámbito de la experimentación y que el proyecto que se dejo al ultimo salio del todo correcto con la programación dada.  


  • Se observó problemas con un cable  pensando que era un problema con el potenciómetro   y se midió  con un multimetro y se llego a la conclusión que era el cable lo que tenia de daño.

  • Observó que los LED varían su brillo según se haya realizado en la programación en arduino.

  • El potenciómetro implementado en el circuito tiene una función casi parecida ala de la programación motivo por cual que al variar el potenciómetro aumentara o disminuirá el potenciómetro.

  • El potenciómetro conectado tiene entradas específicas con las cuales ala conectarse  de manera adecuada ara que este funcione correctamente


* CONCLUSIONES:


  • Con la implementación del potenciómetro en el circuito realizado, este según se regule hará que el foco LED varía su brillo.

  • La programación implementada con el programa arduino, tiene la función que de manera automática, varíe la intensidad en el prendido del foco LED.

  • Una vez que se compila y sube el programa de programación tiene la función, que cuando ya se subió al arduino, este ya se ejecutaba en el arduino dando este las funciones y condiciones al circuito que se armo.

  • El programa arduino es muy importante para realizar esta programación que lo podemos compilar en el arduino.

  • Para el funcionamiento cabe recalcar que necesita una resistencia para que esta no se queme pues del arduino sale un voltaje de 5v el cual cuando no se pone una resistencia quemará a nuestro LED.

BIBLIOGRAFIA Y WEBGRAFIA RECOMENDADA:


  • Floyd, Thomas (2006) Fundamentos de sistemas digitales.  Madrid.: Pearson Educación (621.381/F59/2006) Disponible Base de Datos Pearson.
  • Mandado, Enrique (1996) Sistemas electrónicos digitales.  México D.F.: Alfaomega. (621.381D/M22/1996).
  • Morris Mano, M. (1986) Lógica digital y diseño de computadoras.  México D.F.:  Prentice Hall (621.381D/M86L).
  • Tocci, Ronald (2007) Sistemas digitales: Principios y aplicaciones.  México D.F.: Pearson Educación. (621.381D/T65/2007) Disponible Base de Datos Pearson.



Integrantes:


- Manuel Atahualpa Lázaro.

- Arturo Mamani Bernal.

domingo, 17 de junio de 2018

Lab 14. Matriz de Leds con Arduino.

                
                      

                    CIRCUITOS DIGITALES

                                    PROYECTO N° 04

                    PROYECTO CON ARDUINO


                                  FASE 2:


                   Matriz de LEDs con Arduino




OBJETIVOS:


  • Programación de registros con Arduino
  • Estructuras de control en programación 
  • Escritura de datos por puerto serial

DESARROLLO DEL PROBLEMA:

REGISTROS DE DESPLAZAMIENTO


Los registros de desplazamiento son circuitos secuenciales sencillos, compuestos por un Los registros de desplazamiento son circuitos secuenciales sencillos, compuestos por un conjun conjunto to de de biestab biestables les que que se  conectan en conectan en serie, y serie, y una una circui circuiter terııaa   adicional  que que controla controla  los modos de cargar y acceder a los datos que almacenan. Su principal funci´ los modos de cargar y acceder a los datos que almacenan. Su principal funci´on, en el seno on, en el seno de sistemas m´ de sistemas m´as complejos, es servir de almacenamiento temporal de un conjunto de bits as complejos, es servir de almacenamiento temporal de un conjunto de bits sobre los que se est´ sobre los que se est´a realizando una tarea de procesamiento. a realizando una tarea de procesamiento. Existen cuatro combinaciones b´ Existen cuatro combinaciones b´asicas que definen el tipo de registro de desplazamiento: asicas que definen el tipo de registro de desplazamiento: 11..  eenntrad trada se a serie rie / sa / salid lida se a serie rie
22..  eenntrad trada seri a serie / sali e / salida para da paralleello (ej: 7 o (ej: 74LS1 4LS164) 64)
33..  eenntrad trada paral a paralelo / sa elo / salid lida seri a serie (ej: 74 e (ej: 74LS16 LS1655))


44..  eenntrad trada para a paralleello / sa o / salid lida para a paralleelloo Hay circuitos integrados espec Hay circuitos integrados espec´´ıficos ıficos de de cada cada uno uno de de esos tipos, esos tipos, yy  otros que otros que median median-te unas se˜ te unas se˜nales de control pueden cambiar su funcionamiento de un modo a otro (Ej: nales de control pueden cambiar su funcionamiento de un modo a otro (Ej: 74LS195) o realizar los desplazamientos hacia la derecha o hacia la izquierda (Ej: 74LS194). 74LS195) o realizar los desplazamientos hacia la derecha o hacia la izquierda (Ej: 74LS194). Las dos operaciones b´ Las dos operaciones b´asicas que realiza un registro de desplazamiento es la carga/almacenamiento asicas que realiza un registro de desplazamiento es la carga/almacenamiento de de los datos los datos y el y el despla desplazamien zamiento to de ´ de ´estos a estos a lo largo lo largo de los de los biestab biestables que les que lo componen; lo componen; la obtenci´ la obtenci´on de los datos correctos a la salida del dispositivo depende de una cuidadosa on de los datos correctos a la salida del dispositivo depende de una cuidadosa  sincronización de las son de las se˜nales de control, de entrada y de salida. nales de control, de entrada y de salida. En esta pr´ En esta pr´actica vamo actica vamos  a  caracteri caracterizar zar el funcionami el funcionamiento de ento de difere diferentes tipos ntes tipos de registro de registro de desplazamiento, y configurarlos para algunas de sus principales aplicaciones




Es un circuito digital que acepta datos binarios de una fuente de entrada y luego los desplaza, un bit a la vez, a través de una cadena de flip-flops.

Este sistema secuencial es muy utilizado en los sistemas digitales. Un ejemplo de esto se ve en las calculadoras comunes, donde al escribir una cifra de varios números, se nota que el primer número pulsado le cede espacio a los demás corriéndose a la izquierda, donde además se nota que hay características de memoria porque se mantienen visualizados los números pulsados.


Los registros de desplazamiento son construidos a partir de flip-flops. Además de tener características de memoria y la función de desplazar datos, también se utilizan para convertir datos serie a paralelo y paralelo a serie. 




Un método de identificar los registros de desplazamiento es por la forma en que se introducen y leen los datos en la unidad de almacenamiento.

Existen cuatro categorías de registro de desplazamiento.



Registro de desplazamiento con entrada serie / salida paralelo:

74LS164 que es un registro de desplazamiento de 8 bits (ver Figura 1), con entrada serie y salida paralelo y una entrada CLR de "borrado" as'ıncrona, activa para nivel BAJO. Tiene dos entradas serie, A y B, que acceden a los biestables tras efectuarse una operación NAND sobre ellas, por lo tanto, o bien entra la misma vez por ambas, o bien una de ellas se mantiene siempre en ALTO para permitir la entrada de datos (lo que nos proporciona una herramienta adicional de sincronización). Se puede comprobar el esquema de la circuitería interna en la hoja de datos del 74LS164.



Para poder caracterizar el circuito, debemos “cargar” un byte de información, es decir ocho bits, que introduciremos en serie en el dispositivo. La se˜nal de reloj CLK marca el tiempo que se adjudica a cada bit en la serie (un ciclo de reloj), por lo tanto, ocho ciclos de reloj son el tiempo necesario para cargar el byte completo y que la salida en paralelo sea la correcta. Utilizaremos el contador 74LS93A para generar el byte que cargaremos en el registro, para ello lo configuraremos como un contador de modulo nueve (trunca la secuencia en 1001) mediante las conexiones que se muestran en la Figura 2:



Confirmar el correcto funcionamiento del contador, visualizando las se˜nales CLKA y Q3 en el osciloscopio. La se˜nal Q3 as´ ı obtenida ser´a la que introduciremos en ambas entradas A y B del registro 74LS164, en el que adem´as utilizaremos la misma se˜nal de reloj y conectaremos CLR a ALTA. Una vez montado el circuito, realizar las siguientes operaciones:


Registro de desplazamiento con entrada paralelo / salida serie:

Caracterizaremos el funcionamiento del integrado 74LS165 que es un registro de desplazamiento de 8 bits, con entrada paralelo (as´ıncrona) y salida serie. También admite opcionalmente una entrada serie (SER). La se˜nal de control SH/LD en BAJA permite la carga de los datos en paralelo, y en ALTA permite el desplazamiento a lo largo de los biestables de los datos cargados, que terminan saliendo por Q y su complemento Q. Tiene la opción adicional de inhabilitar el reloj mediante la se˜nal CLKINH , ya que sobre ella y CLK se implementa la función NOR, de forma que cuando CLKINH est´a en ALTA, el reloj queda inhabilitado:


VIDEO DEMOSTRATIVO:






OBSERVACIONES Y CONCLUSIONES:


* OBSERVACIONES:

  • Se observó que la matriz LED de 8x8 se hallaba defectuoso, motivo por el cual que ala hora de subir la programación realizada en el programa Arduino,este no funcionaba.

  • Se observó que que para la alimentación de la matriz LED la parte positiva tenía que ir conectado con una resistencia para así evitar quema los LED de la matriz.

  • En la coneccion de la matriz LEDs no funcionaba correctamente dado que había una falla de conducción de los cables, motivo por el cual se tuvo que verificar todos los cables para que se cerciorarse que se encontraba en buenas condiciones y que conducen la energía eléctrica.

  • Se realizo una modificación en el codigo de programacion para que se obtuviera una letra P el cual aparecería en nuestra matiz LEDs.


* CONCLUSIONES:

    

  • Se llegó a la  conclusión que al poder enviar los códigos propuestos en la matriz de led presenta  se produjo lo obtenido  en clases
  • Se concluyo que  en el problema de hacer las letras hubo un problema  al salir solo en columnas pero se dedujo que en la matriz de led mostrada en video se pudo obtener la letra T obteniendo así probado en casa  se obtuvo las   letras faltantes.

  • La matriz LEDs es muy importante que las ter,minales en la cuales se alimentara con energía deben estar conectadas a una resistencia, para de esta forma proteger a la matriz de LEDs para que no se quemen.

  • El arduino se tiene que subir el codigo de programacion para que en la matriz de LEDs apareciera unas letras.

  • En el codigo de programacion al final se realizo una modificacion con el cual se verifico que la programacion de codigos estaban correctos para que funcionase una vez que se compilara y subiera al nuestro arduino el cual daría las ordenes a nuestra matriz.


BIBLIOGRAFIA Y WEBGRAFIA RECOMENDADA:


  • Floyd, Thomas (2006) Fundamentos de sistemas digitales.  Madrid.: Pearson Educación (621.381/F59/2006) Disponible Base de Datos Pearson.
  • Mandado, Enrique (1996) Sistemas electrónicos digitales.  México D.F.: Alfaomega. (621.381D/M22/1996).
  • Morris Mano, M. (1986) Lógica digital y diseño de computadoras.  México D.F.:  Prentice Hall (621.381D/M86L).
  • Tocci, Ronald (2007) Sistemas digitales: Principios y aplicaciones.  México D.F.: Pearson Educación. (621.381D/T65/2007) Disponible Base de Datos Pearson.



Integrantes:


- Manuel Atahualpa Lázaro.
- Arturo Mamani Bernal.