martes, 16 de abril de 2019

LABORATORIO N°7

MICROCONTROLADORES

LABORATORIO 07

Manejo de Timer y las Interrupciones
  1. Capacidad Terminal
  • Utilizar al microcontrolador en aplicaciones de control electrónico.
  • Desarrollar y ejecutar programas en un microcontrolador PIC
  • Programar y configurar interfaces básicas del microcontrolador.
    2. Competencia Específica de la Sesión
    • Conocer el funcionamiento y la configuración de las interrupciones. 
    • Conocer el funcionamiento y la configuración del Timer Cero.
    • Aplicar estos conocimientos en la realización de un cronómetro.
    3. Materiales y Equipos
    CCS Compiler instalado


                                          
    Entrenador de PICS



    Pantalla LCD


                                                          
    PIC16F877A


    Resultado de imagen para PIC16F877A


    4. Fundamento Teórico


    INTERRUPCIONES Y TEMPORIZADORES
    • Una interrupción es un aviso provocado por un módulo del PIC, por un cambio en el estado de un pin o un recordatorio de que ha pasado un cierto tiempo. Como su nombre indica este aviso interrumpirá la tarea que se este haciendo en ese momento y pasaremos a ejecutar una rutina de servicio o gestión de la interrupción.
    Bits asociados a cada interrupción:
    • Además de los bits anteriores que afectan de forma global a las interrupciones, para cada fuente de interrupción hay tres bits asociados:
      • IE (interrupt enable): determina si la interrupción está o no habilitada. Si no lo está, aunque la condición de la interrupción se cumpla, la interrupción no se producirá.
      • IF (interrupt flan): indica si la condición de la interrupción se ha producido. Es responsabilidad del usuario borrar dicho bit antes de regresar de la ISR.
      • IP (interrupt priority): indica si la prioridad asociada a la interrupción es alta (1) o baja (0). Obviamente, solo tiene efecto si está activado el modo de niveles de prioridad.
    • Un temporizador es simplemente un contador que se incrementa con cada ciclo máquina (4 ciclos del oscilador). Dicho contador puede configurarse como de 8 o 16 bits. Cuando dicho contador rebosa y pasa de 0xFF a 0x00 (modo 8 bits) o de 0xFFFF a 0x0000 (modo 16 bits) la bandera IF asociada a la interrupción del TMR0 se pone a 1.
          5.Desarrollo de tareas indicadas en el laboratorio:
    • Realice los cambios necesarios para realizar un programa que CUENTE EN FORMA DESCENDENTE, (temporizador regresivo), bajo  las siguientes condiciones:
      • Al presionar pulsador en D0, incrementar SEGUNDOS. el temporizador aún no debe estar contando el tiempo. (sirve para configurar tiempo de cuenta).
      • Al presionar pulsador en D1, iniciar CUENTA REGRESIVA desde los minutos previamente configurados.
      • Si la cuenta llega a 00:00, congelar la cuenta y sonar BIP 3 veces.
    • Considerando todo lo anterior agregar: que al presionar el pulsador en E1, incrementar MINUTOS y el temporizador aún no debe estar contando.
    SOLUCIÓN MEDIANTE PROGRAMACIÓN



          6. EVIDENCIA DE TRABAJO


          7. OBSERVACIONES Y RECOMENDACIONES

              OBSERVACIONES
    • Se observó que para llevar a cabo la funcionalidad del programa, que al iniciar el cronómetro en cero minutos y segundos no ejecute la última condición de los tres BIP pedidos fue necesario declarar una nueva variable a la cual se le brindó como valor inicial cero.
    • Para obtener en nuestra pantalla LCD como expresión inicial del cronómetro en 00:00 se realizó distintas modificaciones dentro del void timer cero, dentro de las cuales se usó la equivalencia tanto para minutos y segundos de "== -1" con el cual se podía verificar que las variables ya mencionadas ya llegaron al valor cero y se evite que la cuenta se vuelva a iniciar desde 255 esto a partir de la utilización de los 8 bits.
    • Se observó que las funciones destinadas a cada pin que representaba un pulsador deben estar descritas dentro del bucle WHILE ya que de nos ser así no se podría ejecutar lo esperado.
    • Se observó que para evitar la repetición constante de BIP'S entendiendo que solo se nos pedía que se repita tres veces, se propuso entonces que estos se detuvieran cuando únicamente el valor de nuestra nueva variable introducida retome el valor cero; si como alternativa se proponía solo adecuar que se ejecute tal acción solo cuando las variables minutos y segundos sean ceros se presentaba una confusión y al energizar el LCD ya se emitía la última acción la cual es la emisión de pitidos en buzzer.
              RECOMENDACIONES
    • Se recomienda la introducción de una nueva variable a la cual podamos otorgar un valor equivalente y esta misma pueda llevar a cabo las limitaciones en la programación y así evitar cruces en el orden de las funciones designadas.
    • Se recomienda tomar bien en cuenta las indicaciones que se nos puedan brindar en el informe, ya que estas nos brindan las referencias para tomar el camino correcto en el desarrollo de nuestra programación para microcontroladores.
    • Se recomienda el usar un delay  después de presionar cada pulsador, esto con la finalidad de evitar falsos disparos y hacer que nuestra configuración de segundos y minutos sea lo más precisa posible ya que de lo contrario  al presionar un pulsador, este aumentaría desproporcionalmente.

          8. BIBLIOGRAFÍA

    • Marin, Francisco (2007) Diseño basado en microcontroladores.  Málaga: Universidad de Málaga. (004.16/M26D)
    • Pereira, Fabio (2007) Microcontroladores PIC. Sao Paulo:s.n. (005.13/P43)
    • José María Angulo Usátegui [y otros]. (2007) Electrónica digital y microprogramable .Madrid: Thomson. (621.381/A37/I)

           9. INTEGRANTE 

               Condori Ortíz, Daniel Agustín C5 - A
















    LABORATORIO N°6

    MICROCONTROLADORES

    LABORATORIO 06

    Lectura de entradas analógicas y sensor de temperatura
    1. Capacidad Terminal
    • Utilizar al microcontrolador en aplicaciones de control electrónico.
    • Desarrollar y ejecutar programas en un microcontrolador PIC
    • Programar y configurar interfaces básicas del microcontrolador.
      2. Competencia Específica de la Sesión
      • Lecturas analógicas de un canal del PIC. 
      • Configuración de un sensor de temperatura.
      • Lectura analógica de una pantalla LCD.
      3. Materiales y Equipos
      CCS Compiler instalado


                                            
      Entrenador de PICS



      Pantalla LCD


                                                            
      PIC16F877A


      Resultado de imagen para PIC16F877A



      4. Fundamento Teórico

      DESCRIPCIÓN Y FUNCIONAMIENTO DE UNA ENTRADA ANALÓGICA
      • Una señal analógica es una magnitud que puede tomar cualquier valor dentro de un intervalo, esta característica es muy importante a la hora de trabajar con sensores, debido a que estos entregan valores de tensión para reflejar la variable física que está midiendo.
      • El CAD conversor analógico digital PIC , permite medir señales analógicas en forma digital, para ello el PIC cuenta con pines por donde le llegará la señal analógica, estos pines deben configurarse como entradas analógicas, el conversor analógico digital PIC cuenta con un circuito que carga un condensador interno al PIC con la tensión analógica que le está llegando a la entrada analógica, luego la tensión almacenada en el condensador lo convierte en un número binario de 10 bits que representará la tensión almacenada en el condensador, este número binario se guarda en sus registros ADRESH y ADRESL de 8 bits cada uno pero estos actúan como un solo registro de 16 bits, en el registro ADRESH se guardan los bits mas significativos y en el registro ADRESL se guardan los bits menos significativos, el número que representa la tensión almacenada en el condensador y guardado en forma binaria dentro de estos registros será de 10 bits para el PIC16F877A, la cantidad de bits de este número depende del conversor analógico digital PIC del microcontrolador PIC utilizado.
              CONVERSOR ANÁLOGO DIGITAL ADC
      • El conversor análogo digital se utiliza para convertir señales análogas provenientes de sensores conectados a la entrada del microcontrolador en señales digitales para ser mostradas en indicadores tal como una pantalla lcd.
      • El microcontrolador PIC19F886 como la mayoría de los microcontroladores de la gama media cuenta un módulo conversor análogo digital de 8 a 10 bits seleccionables por el programador.
      • La tensión de entrada puede variar entre 0 a 5 volts si utilizamos el adc en el modo de 10 bits significa que tenemos 10 bits para representar digitalmente la señal analógica de entrada, como 2^10=1024, tendremos los valores de entre 0 a 1024 para representar las tensiones de 0 a 5v.

            5.Desarrollo de tareas indicadas en el laboratorio:
      • Donde dice “#device adc=8” cambie por “#device adc=10”; convierta la variable “lectura” en entero de 16 bits y la línea printf cambie “%4u” por “%4lu”. ¿Cuál es el cambio mostrado en la pantalla LCD? ¿por qué?.
      ANTES DE MODIFICAR SE MUESTRA LO SIGUIENTE

      MODIFICAMOS EL CÓDIGO COMO SE PIDE

      SE MUESTRA EL SIGUIENTE CAMBIO

      • Como se puede observar al incrementar la cantidad de bits, podemos ampliar nuestro rango de lecturas en 1024 , es decir, podemos tener lecturas de 0 a 1023, esto debido a la siguiente relación : (2^10) -1.
      • Convierta el valor leído en valor de voltaje de 0 a 5 voltios. Para esto cambie la variable “lectura” a variable tipo float y configure su forma de mostrarse en el LCD. Luego, en la función While(true),  añada la instrucción “lectura = lectura /  204.6”. Cambie las instrucciones para que en la pantalla del LCD aparezca algo así “Tensión: 3.456 v”.
      MODIFICAMOS EL CÓDIGO COMO SE PIDE

      SE MUESTRA LO SIGUIENTE EN LA PANTALLA LCD

      • Finalmente agregue una condición IF para que si el valor de voltaje supera 4.5 voltios, mostrar el mensaje “WARNING” en la primera línea del LCD. 
      MODIFICAMOS EL CÓDIGO AGREGANDO LA CONDICIÓN

      SE MUESTRA LO SIGUIENTE

            RETO PARA EL LABORATORIO:
        • Se va a simular las lecturas de un sensor de temperatura, y debe mostrarse dos lecturas en la pantalla LCD, una será de voltaje equivalente a esa lectura , en el rango de (0-2.5 V); y la otra lectura será equivalente en mediciones de temperatura , en el rango de ( 0 -100 °C). También se va a tener tres led's indicadores , el led rojo sólo se prenderá si la temperatura es mayor que 90°C, el led verde sólo se prenderá si la temperatura es menor a 15 °C, y el led amarillo sólo se prenderá cuando la temperatura esté comprendido entre 90 y 15.

      MOSTRAMOS LA SOLUCIÓN MEDIANTE EL CÓDIGO PROPUESTO


      MOSTRAMOS LA SOLUCIÓN MEDIANTE SIMULACIÓN



      • Para nuestro caso se implemento como representación de los colores en los led's las distintas salidas en "C"; teniendo así que el LED ROJO es representado en la salida "C1", el LED AMARILLO es representado en la salida "C2"  y el LED VERDE es representado por la salida "C3".
               5.1.TRABAJO DE INVESTIGACIÓN
      • Averigüe cómo funciona un sensor LM35 y cómo se puede leer dicha temperatura en una pantalla LCD.
        • Este sensor LM35 es un sensor de temperatura digital. A diferencia de otros dispositivos como los termistores en los que la medición de temperatura se obtiene de la medición de su resistencia eléctrica, el LM35 (parecido a un transistor de gama baja) es un integrado con su propio circuito de control, que proporciona una salida de voltaje proporcional a la temperatura.
        • La salida del LM35 es lineal con la temperatura, incrementando el valor a razón de 10mV por cada grado centígrado. El rango de medición es de -55ºC (-550mV) a 150ºC (1500 mV). Su precisión a temperatura ambiente es de 0,5ºC.
        • Los sensores LM35 son relativamente habituales en el mundo de los aficionados a la electrónica por su bajo precio, y su sencillez de uso, tiene tan solo 3 pines.
                      Características:
          • Calibrado en centígrados °C.
          • Factor de escala lineal 10.0 mV/°C
          • Rango de medición de -55° a +150°C
          • Ideal para aplicaciones remotas.
          • Funciona de 4 - 30 V.
          • Consumo menor a 60 uA.
          • Baja impedancia.

        • Para poder leer dicha temperatura primero iniciamos con la declaración de una variable tipo flotante (float) y utilizamos el ADC en modo de 10 bits. Además mostramos la programación para el reconocimiento del sensor:

      • Averigüe cómo funciona un sensor DS18B20 y cómo se puede leer dicha temperatura en una pantalla LCD.
        • El termómetro digital DS18B20 provee mediciones de temperatura en grados Celsius en formato digital utilizando una comunicación mediante el bus «1-Wire®», ocupando solo una línea de datos del microcontrolador. Su rango de operación es de -55°C a +125°C con una precisión de ±0.5°C sobre el rango -10°C / +85°C. Cada DS18B20 tiene un número de serie único de 64-bit, que permite utilizar múltiples dispositivos en el mismo bus 1-Wire®. Es posible armar redes de sensores gracias a esta característica y distribuirlos en conveniencia para cada aplicación.
        • Principales características: requiere solo un pin de comunicación, número de serie de 64-Bit único almacenado en ROM, puede ser alimentado desde la línea de datos (3.0V a 5.5V).

              Los parámetros a configurar son:
        • PIN DQ: definir pin de datos del microcontrolador.
        • CONEXIÓN: único o red. Dependiendo si vamos a utilizar uno o más sensores.
      • La lectura se guarda en un registro de 16 bits con una resolución de 0.1ºC. El valor almacenado tiene el formato «temperatura x 10», es decir que el decimal 205 representa un valor de 20.5ºC. Además, debido al rango de medidas del sensor es necesario declarar y utilizar un bit para el signo negativo. Este bit adoptará el valor 0 para temperaturas negativas y 1 para temperaturas positivas.
      • El bloque incluye la posibilidad de convertir el registro automáticamente a BCD para utilizar en mensajes de una pantalla LCD.
      • En el caso de leer el código ROM debemos utilizar 8 registros de 8 bits para almacenar el resultado.

            6. EVIDENCIA DE TRABAJO



            7. OBSERVACIONES Y RECOMENDACIONES

                OBSERVACIONES
      • Para obtener un rango de salida de 0 – 100, se usó la siguiente relación 1023/100 = 10.23, el cual determina el factor al cual debe ser dividido nuestra lectura para obtener nuestro rango apropiado.
      • Para poder realizar el símbolo de temperatura en grados centígrados (°) y mostrarlo en la pantalla LCD, se usó la siguiente combinación de carácter “\ 377”.
      • Es importante determinar el rango de medición al trabajar con señales analógicas, ya para ello se debe determinar el número de bits de resolución, teniendo que el rango de lectura será de 0 a 2bits-1.

                RECOMENDACIONES
      • Es importante no almacenar la lectura analógica en una sola variable para la realización del problema planteado (variable de temperatura y variable de voltaje), ya que puede haber conflictos en el almacenamiento de un determinado valor requerido.
      • Para poder mostrar solamente entero en la variable grados (Temperatura) en el LCD, siendo esta variable de tipo decimal, se usó la siguiente expresión “%1.0f”, con el cual indicamos que se muestre sólo la parte y ningún decimal.
      • En el problema planteado como se pedía un rango de salida de 0-2.5 Voltios, se usó la siguiente relación para la determinación del factor de escala en nuestra lectura analógica: 1023/ 2.5, obteniendo un valor de 409.2.

            8. BIBLIOGRAFÍA

      • Marin, Francisco (2007) Diseño basado en microcontroladores.  Málaga: Universidad de Málaga. (004.16/M26D)
      • Pereira, Fabio (2007) Microcontroladores PIC. Sao Paulo:s.n. (005.13/P43)
      • José María Angulo Usátegui [y otros]. (2007) Electrónica digital y microprogramable .Madrid: Thomson. (621.381/A37/I)

             9. INTEGRANTE 

                 Condori Ortíz, Daniel Agustín C5 - A






















      miércoles, 3 de abril de 2019

      LABORATORIO N°5

      MICROCONTROLADORES

      LABORATORIO 05

      Programación de una Pantalla LCD


      1. Capacidad Terminal
      • Utilizar al microcontrolador en aplicaciones de control electrónico.
      • Desarrollar y ejecutar programas en un microcontrolador PIC
      • Programar y configurar interfaces básicas del microcontrolador.
        2. Competencia Específica de la Sesión
        • Conocer el Display LCD y su funcionamiento. 
        • Programar eficientemente el LCD.
        • Programar HMI para proyecto actual.
        3. Materiales y Equipos
        CCS Compiler instalado


                                              
        Entrenador de PICS



        Pantalla LCD


                                                              
        PIC16F877A


        Resultado de imagen para PIC16F877A
                                              
        4. Fundamento Teórico


        DESCRIPCIÓN Y FUNCIONAMIENTO DE UNA PANTALLA LCD

        • DEFINICIÓN:Un Display de cristal líquido o también conocido por sus siglas como LCD (Liquid Crystal Display), es un elemento que remplaza fácilmente a los Displays de segmentos que existen en el mercado, estas pequeñas pantallas no se ven limitadas por la falta de espacio ya que actualmente se pueden conseguir de un tamaño suficiente para cubrir cualquier necesidad, además el aumento en el tamaño del dispositivo no significa un aumento en las conexiones eléctricas del mismo (esto es un punto a su favor).



        • CARACTERÍSTICAS Y COMPOSICIÓN DE UN DISPLAY DE CRISTAL LÍQUIDO

          • En la actualidad existen muchos Displays en el mercado, algunos se utilizan para realizar proyectos en la carrera y otros de mayor complejidad se utilizan para mostrar datos a un operador en alguna planta de procesos, debido a la gran evolución de estos dispositivos no podemos hacer hincapié en todos sus años de evolución, sin embargo, te presentaremos los conceptos universales que acompañan a un Display LCD.

          • La composición intenta de un Display LCD de 16×2 (tomando a este como ejemplo) está formada por 6 niveles, estos son:

            1. Film de filtro vertical, este primer nivel permite polarizar la luz que entra.
            2. Sustrato de vidrio con electrodos de Óxido de Indio ITO En esta etapa podremos apreciar una especie de plantilla parecida a un display de 7 segmentos, esta plantilla sera la que se muestre en negro cuando la luz se encienda, en las pantallas a color o monitores el proceso es muy parecido, aunque la tecnología utilizada abarca una cantidad mayor de píxeles.
            3. Cristal líquido.
            4. Sustrato de vidrio con film electrodo común (ITO).
            5. Film de filtro horizontal, este film es considerado como un filtro ya que este permite o bloquea la luz.
            6. Superficie reflectante para devolver la luz al espectador.



        • CONEXIÓN DE LCD CON PIC 16F877A




           5.Desarrollo de tareas indicadas en el laboratorio:
        • Elaborar un programa que INCREMENTE un número en 150 unidades cada vez que se presione un pulsador y DECREMENTE dicho número en 25 unidades cada vez que se presione otro pulsador.






        • Mostramos el encendido de la pantalla LCD además de que en la primera línea se describa la palabra "CONTADOR" y en la segunda fila "VALOR" mas el dato.
        • Si el valor del número supera 1000 unidades, mostrar en la pantalla LCD en la primera línea: “FULL”.
        • Si el valor llega a ser menor o igual a 10, mostrar “VALOR MÍNIMO”.
        • En ambos casos el valor del número no debe incrementarse ni decrementarse.


        • Investigue y responda lo siguiente: ¿Cómo hacer para mostrar números negativos?, ¿cómo hacer para mostrar números con decimales?.
        • Para mostrar números negativos en la pantalla LCD utilizamos el formato "%d" y para mostrar números decimales introducimos el formato "%.3f" el cual nos indica un número real con 3 decimales.
              6. EVIDENCIA DE TRABAJO


              7. OBSERVACIONES Y RECOMENDACIONES

                  OBSERVACIONES
        • Se observó, que debido al error que se obtenía al simular la placa entrenadora en nuestro software PROTEUS se optó por adecuar otro componente que nos puede hacer una representación similar por lo cual se eligió un LED.
        • Se observó, que se incluyó en la programación la librería para la pantalla LCD ya que de no hacerlo así el intento de compilar nos mostrará error.
        • Se observó que en la representación equivalente al valor que se quiere mostrar teniendo así en nuestra programación "%41u" entendiendo así que "4" representa la cantidad de espacio, "1" escribe de uno en uno y "u" representa a el dato.
        • Se observó que se utilizó el símbolo de entre llaves {} después de la declaración de los pines de salida para así indicar a la programación que tanto las funciones ascendentes o descendentes de los pulsadores destinados solo se realice cuando se presiones los mismos mas no cuando la esta acción es constante.
                RECOMENDACIONES
        • Se recomienda que para evitar tener el error más conocido en el software CCS C Compiler al crear una nueva carpeta copiemos la librería del pic a usar en nuestro caso es el PIC 16F877A  además de agregar la librería correspondiente a la pantalla LCD .
        • Se recomienda aplicar los conocimientos aprendidos en cada sesión de acuerdo a lo que se requiera para cada nueva sesión como así en esta oportunidad se aplicó de nuevo la parte de "void BIP" declaración en la programación para lo correspondiente a obtener los pitidos mediante el buzzer.
        • Así como también se puede recomendar que para evitar el rebase del valor establecido como máximo y mínimo utilizamos "&& dato<= el valor límite". 
              8. BIBLIOGRAFÍA

        • Marin, Francisco (2007) Diseño basado en microcontroladores.  Málaga: Universidad de Málaga. (004.16/M26D)
        • Pereira, Fabio (2007) Microcontroladores PIC. Sao Paulo:s.n. (005.13/P43)
        • José María Angulo Usátegui [y otros]. (2007) Electrónica digital y microprogramable .Madrid: Thomson. (621.381/A37/I)

               9. INTEGRANTE 

                   Condori Ortíz, Daniel Agustín C5 - A