domingo, 26 de mayo de 2019

LABORATORIO NRO 11

LABORATORIO NRO 11

SALIDAS PWM DEL ARDUINO


1. OBJETIVOS
    • Programar la tarjeta ARDUINO UNO utilizando entrada analogica y salida PWM
    • Conocer el correcto funcionamiento de los pines digitales PWM
    • Conocer la función de ma

    2. MATERIALES Y EQUIPOS
    • IDE Arduino 
    • Tarjeta ARDUINO UNO
    • Componentes accesorios.
    • Guía de Laboratorio.
    • PC con Software de simulación
    3. FUNDAMENTO TEÓRICO

    3.1. ENTRADAS ANALÓGICAS

    Supongamos que dispongamos un sensor analógico que proporciona una señal analógica entre 0V a 5V. El esquema de conexión es similar al que empleamos para realizar la lectura digital.
    Una señal analógica es una magnitud que puede tomar cualquier valor dentro de un intervalo –Vcc y + Vcc. Por ejemplo, una señal analógica de tensión entre 0V y 5V podría valer 2,72V, o cualquier otro valor con cualquier número de decimales. Por contra, recordemos que una señal digital de tensión teórica únicamente podía registrar dos valores (en el ejemplo, 0V o 5V).
    Arduino-entradas-analogicas-1
    3.2. SALIDAS PWM

    La mayoría de automatismos incluido Aduino no son capaces de proporcionar una auténtica salida analógica. Ni siquiera pueden suministrar una salida analógica discretizada (es decir, a saltos) de tensión. Lo único que pueden proporcionar es una salida digital de -Vcc o Vcc. (por ejemplo, 0V y 5V)

    Existe más de una forma de hacer esta aproximación. Una de las más sencillas, y por ello muy empleada en automatización, es la modulación de ancho de pulso (PWM). En esta modulación se mantiene constante la frecuencia (es decir, el tiempo entre disparo de pulsos), mientras que se hace variar la anchura del pulso.

    PWM
    La proporción de tiempo que está encendida la señal, respecto al total del ciclo, se denomina «Duty cycle», y generalmente se expresa en tanto por ciento.

    Es inmediato deducir que la señal promedio es el producto de la tensión máxima y el DutyCycle, según la siguiente expresión.


    De forma similar, tenemos que


    4. PROCEDIMIENTO



    CONEXIONADO 
    PROGRAMACIÓN


    5. VÍDEO

    https://drive.google.com/file/d/1YbJDwY9EJZSNkCfzaomIbF1S0Q-lhkyA/view?usp=sharing

    6. OBSERVACIONES
    • Se observó que para el caso del switch case el tiempo de ejecución es más rápido
    • Es necesario colocar un delay de un tiempo adecuado para que los datos impresos en el monitor serial no sean tan rápidos
    • Solo algunos pines del arduino presentan modulacón por ancho de pulso
    • Existen 6 pines para entradas analógicas lo cuál es bastante considerable 
    7.CONCLUSIONES
    • Programamos la tarjeta ARDUINO UNO leyendo el valor de una entrada analógica y obteniendo como salida una señal similar a la analógica con PWM
    • Conocimos como configurar una salida PWM en arduino y como fucniona esta al variar la frecuencia
    • Se logró trabajar con señales analógicas, leyendo el valor mediante analogRead
    • Se trabajo con la estructura del Switch Case, que nos permite evaluar cada caso y ejecutar una serie de condiciones
    8. INTEGRANTES
    • Corimanya Castelo, Laura Milagros

    LABORATORIO NRO 10

    LABORATORIO NRO 10

    CONTADOR CON ARDUINO


    1. OBJETIVOS
      • Programar la tarjeta ARDUINO UNO utilizando el monitor serial
      • Conocer la estructura básica que debe tener la programación en arduino
      • Realizar un contador ascendente y descendente usando pulsadores y entradas digitales
      2. MATERIALES Y EQUIPOS
      • IDE Arduino y mBlock instalado.
      • Tarjeta ARDUINO UNO
      • Componentes accesorios.
      • Guía de Laboratorio.
      • PC con Software de simulación
      3. FUNDAMENTO TEÓRICO

      3.1. ENTRADAS DIGITALES

      A las señales todo / nada, SI / NO, TRUE /FALSE, 0/1 se les llama digitales, y podemos manejarlas con los pines de 0 al 13 de Arduino y por eso hablamos de pines digitales.

      Muchos de los sensores y actuadores que vemos en el mundo real son digitales

      Las entradas digitales permiten recibir señales de voltaje. En arduino disponemos de 14 pines digitales serigrafiados con los números del 0 al 13, utilizados para entradas y salidas digitales.


      Es importante recordar que no podemos sobrepasar los límites de voltaje permitidos, es decir, si se aplica un voltaje mayor a 5 voltios en una entrada digital, la placa de arduino se quemará. Lo mismo aplica para voltajes negativos, por lo que debemos asegurar que el voltaje aplicado a una entrada digital se encuentre entre 0 y 5 voltios.

      3.2. MONITOR SERIAL

      El monitor serial es el ‘cable’ entre el ordenador y el Arduino UNO. Permite enviar y recibir mensajes de texto, útiles para la depuración y también control de Arduino.

      El monitor de puerto serie es una pequeña utilidad integrada dentro de IDE Standard que nos permite enviar y recibir fácilmente información a través del puerto serie. Su uso es muy sencillo, y dispone de dos zonas, una que muestra los datos recibidos, y otra para enviarlos. Estas zonas se muestran en la siguiente imagen.


      4. PROCEDIMIENTO

      CONEXIONADO


      PROGRAMACION




      5. VÍDEO

      https://drive.google.com/file/d/1HVaMRALV4RJLXj4tRaeRmQQgQWw9Q7XH/view?usp=sharing


      6. OBSERVACIONES
      • Se uso la configuración pull-down para la conexión delos pulsadores
      • Se uso el monitor serial como interfaz entre el usuario y programación
      • El retardo usado para que aparezca cada valor en el monitor serial fue de 200 ms, de este modo no se realizan muy rápido las lecturas
      • Se usan pines digitales para este laboratorio
      7.CONCLUSIONES
      • Programamos la tarjeta ARDUINO UNO utilizando un lenguaje gráfico y la forcomparamos con lenguaje de texto.
      • Se conoció la estructura básica que debe poseer la programación en arduino como son los bloques de void setup en el que se configura pines y velocidad y el void loop donde se colocanel cuerpo de la programación que pueden ser los bucles o condicionales
      8. INTEGRANTES
      • Corimanya Castelo, Laura Milagros

      LABORATORIO NRO 9

      LABORATORIO NRO 9

      PROGRAMACIÓN DE ARDUINO UTILIZANDO MBLOCK


      1. OBJETIVOS
      • Programar la tarjeta ARDUINO UNO utilizando un lenguaje gráfico y comparar con lenguaje de texto.
      • Conocer el entorno de mBlock y todas sus posibilidades.
      • Realizar programación básica utilizando software mencionado.

      2. MATERIALES Y EQUIPOS
      • IDE Arduino y mBlock instalado.
      • Tarjeta ARDUINO UNO
      • Componentes accesorios.
      • Guía de Laboratorio.
      • PC con Software de simulación
      3. FUNDAMENTO TEÓRICO

      3.1. ARDUINO

      Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.

      ¿Para qué sirve Arduino? Arduino se puede utilizar para desarrollar elementos autónomos, conectándose a dispositivos e interactuar tanto con el hardware como con el software. Nos sirve tanto para controlar un elemento, pongamos por ejemplo un motor que nos suba o baje una persiana basada en la luz existente es una habitación, gracias a un sensor de luz conectado al Arduino, o bien para leer la información de una fuente, como puede ser un teclado, y convertir la información en una acción como puede ser encender una luz y pasar por un display lo tecleado.

      3.2. MBLOCK

      mBlock es un entorno gráfico de programación basado en el editor Scratch 2.0 para que escuelas y centros de formación pueda introducir la robótica de forma sencilla y enseñar a programar robots basados en Arduino.
      Image result for mblock

      4. VÍDEO


      5. OBSERVACIONES
      • Se usaron disfraces para cambiar el estado del semáforo
      • Arduino sirve para crear distintos proyectos que abarcan áreas de todo tipo como la robótica, domótica, cohetes espaciales, impresoras 3D, sistemas de seguridad, etc
      • Mblock nos permite realizar la programación por bloques permitiendo hacerlo de manera más fácil e interactiva que cuando es en texto
      6.CONCLUSIONES
      • Programamos la tarjeta ARDUINO UNO utilizando un lenguaje gráfico y comparamos con lenguaje de texto.
      • Conocimos el entorno de mBlock y todas sus posibilidades.
      • Realizamos programación básica utilizando software mencionado.
      7. INTEGRANTES
      • Corimanya Castelo, Laura Milagros

      sábado, 13 de abril de 2019

      LABORATORIO NRO 7

      LABORATORIO NRO 7

      MANEJO DEL TIMER Y LAS INTERRUPCIONES

      1. OBJETIVOS
      • 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.
      2. MATERIALES Y EQUIPOS
      • CCS Compiler instalado.
      • Entrenador de PICS
      • Pantalla LCD
      • PIC16F877A
      • Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
      • PC con Software de simulación.
      3. FUNDAMENTO TEÓRICO

      3.1. TIMER 0

      El timer0 PIC es un temporizador contador de 8 bits, el registro TMR0 es el temporizador contador timer0 en si, es donde se guardan los valores del timer0 PIC, cuando es utilizado como temporizador sus valores aumentaran de uno en uno entre 0 y 255 con cada 4 ciclos de reloj, no olvidar que cada ciclo de instrucción del microcontrolador PIC es realizado en 4 ciclos de reloj, por ejemplo si el oscilador con el que está funcionando el microcontrolador PIC es de 4MHz, entonces el registro TMR0 aumentará una unidad en cada 1us, si el registro TMR0 se incrementa en 100 unidades habrán transcurrido 100us; cuando el timer0 PIC es utilizado como contador el registro TMR0 ya no aumenta su valor de uno en uno en cada 4 ciclos de reloj, sino que lo hará mediante el flanco de subida o el flanco de bajada de alguna señal que llegue a un pin especial del PIC conectado al timer0 PIC, este pin es identificado como T0CKI que en el PIC16F877A es el pin6 o RA4, esto puede variar de acuerdo al microcontrolador PIC utilizado, pero siempre se llamará T0CKI.

      El registro TMR0 del timer0 PIC puede ser leído y escrito, puede ser prescalado para que el tiempo en su incremento de valor en una unidad sea mayor, el timer0 PIC cuando alcanza su valor máximo de 255 se reinicia, volviendo a incrementar sus valores de 0 a 255, además cuando llega a su valor máximo y se reinicia puede producir una interrupción, lo que se decide por programa.



      3.1.1. TIMER PIC COMO TEMPORIZADOR

      Se verá en este caso el uso del timer0 PIC como temporizador, normalmente el registro TMR0 del timer0 PIC irá aumentando sus valores con cada ciclo de instrucción del microcontrolador PIC, y para estos microcontroladores a cada ciclo de instrucción le toma 4 ciclos del oscilador que se esté utilizando, si se usa por ejemplo un cristal de Fosc=4Mhz entonces cada ciclo del oscilador será de 0,25us, luego cada ciclo de instrucción tardará 4 veces este valor, es decir 4*(0,25us) lo que viene a ser 1us, a esto se se conoce como ciclo máquina TCM=4/Fosc, entonces el registro TMR0 aumentará en una unidad cada microsegundo cuando el oscilador es de 4Mhz.

      Como el registro TMR0 es de 8 bits este aumentará desde 0 o desde algún valor que se le ponga como valor inicial hasta un máximo de 255, por ejemplo si va desde 0 hasta 255 habrán transcurrido 255us luego volverá a 0 pero en esa vuelta a 0 transcurre 1us mas, por lo que en ir de 0 a 255 y volver a 0 transcurren 256us; no siempre se utiliza una FOSC de 4Mhz esto puede variar, por lo que como consecuencia variará el tiempo que trascurre para que el registro TMR0 aumente su valor en una unidad.

      El temporizador contador pic TMR0 cuenta con lo que se conoce como prescaler esto hace que la frecuencia de trabajo FOSC se divida por este prescaler, con lo que se logra que el temporizador contador pic tarde un poco mas en aumentar su valor en una unidad; el prescaler del time0 PIC para el PIC16F877A puede tomar el valor de 1, 2, 4, 8, 16, 32, 64, 128 o 256

      Si el prescaler elegido es por ejemplo de 64 y la FOSC=4Mhz, entonces la frecuencia de trabajo del temporizador Ftempserá de Ftemp=FOSC/(4*prescaler), el tiempo que tardará ahora el temporizador en aumentar una unidad será la inversa de este valor, a lo que se le conoce como periodo del temporizador Ttemp=(4*prescaler)/(FOSC), por lo que en este caso Ttemp=(4*64)/(4Mhz) de donde Ttemp=64us, esto quiere decir que ahora el temporizador aumentará en una unidad cada 64us y en este caso entonces el registro TMR0 para ir de 0 a 255 tardará 255*Ttemp=255*64us=16320us=16,32ms, la misma idea es para los demás prescaler.


      Utilizando una regla de 3 simple se llega a la siguiente ecuación que ayudará a encontrar el valor inicial adecuado a cargar en el registro TMR0 para obtener el tiempo buscado.

      TMR0=28-Tretardo*(Fosc/(4*prescaler))-1

      3.2. INTERRUPCIONES

      Interrupciones con el PIC, los microcontroladores PIC se programan para que realicen tareas de acuerdo a lo que interese, normalmente realizarán esas tareas en forma ordenada una tras otra en forma cíclica, a esto se le conoce como el programa principal; las interrupciones microcontroladores con el PIC son eventos que hacen que el programa principal se detenga, para que el microcontrolador PIC se dedique ha realizar otras tareas, mientras no ocurra una interrupción el microcontrolador solo realizará las tareas indicadas dentro del programa principal.

      4. VÍDEO

      https://drive.google.com/file/d/1sZQM6fxlMpdrrRymRq9CMjUAl9VYSjU6/view?usp=sharing

      5. OBSERVACIONES
      • Se utilizo #int_TIMER0 para llamar a la función de interrupción
      • Se usaron sentencias condicionales dentro de la función de desbordamiento del TIMER
      • Se habilito y deshabilito las interrupciones del timer para iniciar la temporización
      • Se asignaron valores para que cuando el TIMER se desborde reinicie en el valor asignado
      • Se uso una función BIP creando un tren de pulsos para emitir pitidos segun las actividades planteadas
      6.CONCLUSIONES
      • Se conoció el modo de funcionamiento del TIMER0
      • Se usaron interrupciones en la programación
      • Se usaron el timer y las interupciones juntas para programar un cronómetro que puede hacer una cuenta ascendente o descendente
      7. INTEGRANTES
      • Corimanya Castelo, Laura Milagros

      domingo, 7 de abril de 2019

      LABORATORIO NRO 6

      LABORATORIO NRO 6

      LECTURA DE ENTRADAS ANALÓGICAS Y SENSOR DE TEMPERATURA

      1. OBJETIVOS
      • Lecturas analógicas de un canal del PIC
      • Configuración de un Sensor de Temperatura
      • Lectura analógica en una pantalla LCD
      2. MATERIALES Y EQUIPOS
      • CCS Compiler instalado.
      • Entrenador de PICS
      • Pantalla LCD
      • PIC16F877A
      • Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
      • PC con Software de simulación.
      3. FUNDAMENTO TEÓRICO


      3.1. CONVERSOR ANALÓGICO DIGITAL

      El módulo de A/D tiene cuatro registros. Estos registros son: ·

      ADRESH : Parte alta del resultado de la conversión ·

      ADRESL: Parte baja del resultado de la conversión ·

      ADCON0: Registro de Control 0 ;control del funcionamiento del conversor ·

      ADCON1, Registro de Control 1; configuración de los pines del puerto
      Conversor Analógico Digital PIC: El registro ADCON0


      En la siguiente imagen se tiene el registro ADCON0 para el control del conversor analógico digital PIC, se pueden ver los nombres que le corresponden a cada uno de sus bits.


      Los bits 7 y 6 de este registro junto con el bit 6 del registro ADCON1 se elige el reloj, esto es entre cuanto se fraccionará la frecuencia del oscilador utilizado para que se tenga un tiempo de conversión adecuado, esto es el tiempo que tardará el PIC para realizar la conversión, ademas de estas opciones el conversor analógico digital pic cuenta con su propio oscilador formado por un circuito RC que también puede ser elegido mediante estos bits, en la siguiente tabla se tienen los fraccionamientos del oscilador de acuerdo a los valores que tomen estos bits o si se quiere utilizar el oscilador interno del CAD.


      De acuerdo a la frecuencia del oscilador se obtendrá un tiempo para la conversión, ese tiempo tiene que ser mayor a 1,6us para que al leer los registros ADRESH y ADRESL el numero obtenido represente en forma adecuada el valor de la señal analógica.

      Por ejemplo, si se usa un cristal con una Fosc de 4Mhz, de la tabla se puede ver que si la Fosc se divide entre 2 se tendrá el el tiempo de conversión será de 0,5us, lo cual no llega a los 1,6us mínimos, si se divide entre la Fosc 4 se tendrá el tiempo de conversión será de 1us, con lo cual tampoco se llega a los 1,6us mínimos, si se divide la Fosc entre 8 se tendrá el el tiempo de conversión será de 2us, con lo cual ya se ha logrado un tiempo de conversión que sobrepasa los 1,6us mínimos que se necesita, por lo que en este caso se elegiría esta opción para el tiempo de conversión y la combinación de bits serian 001, aunque se pueden elegir otros siempre y cuando se obtengan tiempos de conversiones mayores a los 1,6us.

      Los bits 5, 4 y 3 son para elegir el canal analógico a utilizar, esto es el pin que previamente mediante los bits 3,2,1 y 0 del registro ADCON1 se ha configurado como entrada analógica, en el cual se leerá la señal analógica, el PIC16F877A cuenta con 8 entradas analógica, 5 de las cuales están en el puerto A y 3 en el puerto E, los pines de las entradas analógicas se conocen como AN0, AN1, AN2, AN3, AN4, AN5, AN6 y AN7, la elección del canal a leerse se hace de acuerdo a los valores de estos bits como se muestra en la siguiente tabla.



      El bit 2 se pondrá a 1 para iniciar la conversión analógica digital PIC, cuando la conversión de analógico a digital termina este bit se pone a 0 en forma automática, lo que indica que la conversión a terminado además de que si está habilitada las interrupciones por el CAD pues se producirá una interrupción.

      El bit 1 no es utilizado por lo que pondrá a 0.

      El bit 0 es para activar o desactivar el conversor analógico digital PIC, cuando este bit es puesto a 1 el conversor está activo y listo para usarse, si este bit es puesto a 0 el conversor estará apagado no pudiendo utilizarse.

      TAREA DE INVESTIGACIÓN

      Averigüe cómo funciona un sensor LM35 y cómo se puede leer dicha temperatura en una pantalla LCD.


      El LM35 es un sensor analógico que devuelve la temperatura en forma detensión, esta tensión devuelta es proporcional a la temperatura. Su rangocomprende desde -55º hasta 150ºC y el valor devuelto es el equivalente a latemperatura dividida por 10, entonces en su salida se obtienen valores comoestos


      Este dispositivo es de fácil implementación dado que solo cuenta con dos terminales de polarización, y una salida de voltaje directamente proporcional a la temperatura. Este sensor puede ser polarizado de 4 a 30 voltios y tiene una salida de 10m voltios por cada grado Celsius.


      El voltaje de salida del sensor se convierte en un número digital de 10-bits utilizando el ADC interno del PIC16F887. Sabiendo que su salida de voltaje es proporcional a la de temperatura. El valor de temperatura máxima de 150 °C, sería 150 x 10mV = 1. 5 V.

      La resolución esta dada por:

      entonces,

      Supongamos, la temperatura ambiente es de 35,4 °C. La salida del sensor será 354mV (0,354 V). La salida del ADC será;

      0.354 / 0.00488 = 72.5409.

      Si invertimos este proceso, tenemos 72.5409 de ADC y podemos volver atrás y encontrar la temperatura utilizando el factor de escala del sensor (10mV / °C),

      Temp = ADCread * ADCres / LM35Vp

      Temp = 72.5409 * 0,00488 (V / Count) / 0,01 (V / °C) = 35,4 °C.

      Lo mismo con un sensor DS18B20.

      La medición de temperatura es una de las tareas más frecuentes realizadas por el microcontrolador. En este ejemplo, se utiliza un sensor DS1820 para medir. Es capaz de medir en el rango de 55 °C a 125 °C con exactitud de 0.5 °C. Para transmitir los datos al microcontrolador se utiliza un tipo especial de la comunicación serial denominado 1-wire. Debido al hecho de que estos sensores son simples de utilizar y de grandes capacidades, los comandos utilizados para hacerlos funcionar y controlarlos tienen la forma de funciones almacenadas en la librería One_Wire. En total son las siguientes tres funciones:
      Ow_Reset se utiliza para reiniciar el sensor;
      Ow_Read se utiliza para recibir los datos del sensor; y
      Ow_Write se utiliza para enviar los comandos al sensor



      4. VÍDEO

      https://drive.google.com/file/d/1u2W8AAq-cR2ZNopf0BI9hp2Yx2AbGYEw/view?usp=sharing

      5. OBSERVACIONES
      • Se utilizo #device adc para la resolución de lectura
      • Se configuró los puertos analógicos, el puerto an3 está conectado a un potenciometro que a través de la variación de voltaje se obtenga valores de temperatura
      • Es importante conocer que tipo de variable usamos para la lectura de valores, asimismo cuando usamos el comando printf se debe configurar adecuadamente el tipo de valor a leer
      • Cuando se varia de adc=8 a adc=10, el valor mostrado varía de 255 a 1023, debido a que 2 elevado a la 10 es 1023, el %4lu (long unsigned) nos permite observar este valor
      6.CONCLUSIONES
      • Se conoció como leer valores de las entradas analógicas en el PIC 16f877 y convertir este valor en un señal de temperatura u otro para que sea mostrado en la pantalla LCD
      • Se estableció rangos de temperatura tomando en consideración la resolución de lectura 
      • Se conoció como configurar un Sensor de Temperatura de acuerdo a su rango de medición 
      7. INTEGRANTES
      • Corimanya Castelo, Laura Milagros

      jueves, 4 de abril de 2019

      LABORATORIO NRO 5

      LABORATORIO NRO 5

      PROGRAMACIÓN DE UNA PANTALLA LCD

      1. OBJETIVOS
      • Conocer el Display LCD y su funcionamiento 
      • Programar eficientemente el LCD  
      • Programar HMI para proyecto actual. 
      2. MATERIALES Y EQUIPOS
      • CCS Compiler instalado.
      • Entrenador de PICS
      • Pantalla LCD
      • PIC16F877A
      • Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
      • PC con Software de simulación.
      3. FUNDAMENTO TEÓRICO

      3.1. PANTALLA LCD

      Es una pantalla delgada y plana formada por un número de píxeles en color o monocromos colocados delante de una fuente de luz o reflectora. A menudo se utiliza en dispositivos electrónicos de pilas, ya que utiliza cantidades muy pequeñas de energía eléctrica.


      Pines de Bus de datos:

      El Bus de datos bidireccional comprende desde los pines D0 a D7. Para realizar la comunicación con el LCD podemos hacerlo utilizando los 8 bits del bus de datos(D0 a D7) o empleando los 4 bits mas significativos del bus de datos(D4 a D7)


      La librería del LCD:

      Para poder visualizar los caracteres o símbolos en el LCD es necesario que en el programa de código fuente a emplear, incluyamos la librería.
      En este caso empleamos la librería "lcd.c".

      La librería viene configurada de esta manera

      #define LCD_ENABLE_PIN PIN_E0


      #define LCD_RS_PIN PIN_E1


      #define LCD_RW_PIN PIN_E2


      #define LCD_DATA4 PIN_D4


      #define LCD_DATA5 PIN_D5


      #define LCD_DATA6 PIN_D6


      #define LCD_DATA7 PIN_D7


      Funciones a usar:


      lcd_init(): Inicializa el lcd
      lcd_gotoxy(x,y): Establece la posición de escritura en el lcd.
      lcd_putc(char s): nos muestra un dato en la siguiente posición del lcd.
      printf(lcd_putc, cadena, variable)


      4. VÍDEO


      https://drive.google.com/file/d/14uC0PxpdDnHpTNr_hiDAYxb6BUkc2KXz/view?usp=sharing


      5. OBSERVACIONES
      • Se observó que se necesitaron declarar varias variables para habilitar y deshabilitar algunos pines
      • Se conoció el comando lcd_gotoxy() que nos permite direccionar el cursor en  la columna y fila indicadas
      • Se usó un bucle while para que las instrucciones se puedan repetir
      • Se conoció el comando printf que nos permite imprimir en la pantalla del LCD valores
      6.CONCLUSIONES
      • Se conoció el funcionamiento de la pantalla LCD, su configuración interna y como se debe realizar su conexiado
      • Se llamó a la librería del LCD dentro del programa
      • Se concluye que la programación de pantallas de LCD con el suo de librería es relativamente fácil, ya que simplifica mucho los comandos, y los caracteres como letras o números ya vienen incluidos en las librerías
      7. INTEGRANTES
      • Corimanya Castelo, Laura Milagros

      viernes, 15 de marzo de 2019

      LABORATORIO NRO 3

      LABORATORIO NRO 3

      PROGRAMACIÓN CON DISPLAY DE 7 SEGMENTOS

      1. OBJETIVOS
      • Conocer el Display de 7 segmentos y su funcionamiento 
      • Conocer las técnicas de multiplexación 
      2. MATERIALES Y EQUIPOS

      • CCS Compiler instalado.
      • Entrenador de PICS
      • Pantalla LCD
      • PIC16F877A
      • Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
      • PC con Software de simulación.
      3. FUNDAMENTO TEÓRICO

      3.1. Tipos de variables


      Todos los programas necesitan, en algún momento, almacenar números o datos ingresado por el usuario. Estos datos son almacenados en variables que deben tener un tipo. Para declarar una variable en la programación se debe hacer de la siguiente forma:

      tipo nombreVariable;

      Si se quiere asignar el valor se designa así:

      tipo nombre_variable = valor inicial;



      3.1.1 bool

      Por lo general utiliza 1 byte de memoria, valores: true o false.

      3.1.2 char

      Utiliza generalmente 1 byte de memoria, permite almacenar un carácter, valores; 256 caracteres.

      3.1.3 unsigned short int


      Utiliza generalmente 2 bytes de memoria, valores: de 0 a 65 535

      3.1.4 short int

      Utiliza generalmente 2 bytes de memoria, valores: de -32768 a 32767.

      3.1.5 unsigned long int

      Utiliza generalmente 4 bytes de memoria, valores: de 0 a 4 294 967 295.

      3.1.6 long int
      Utiliza generalmente 4 bytes de memoria, valores: de -2 147 483 648 a 2 147 483 647.

      3.1.7 int (16 bits)

      Utiliza generalmente 2 bytes de memoria, valores: de -32 768 a 32 767.

      3.1.8 int (32 bits)

      Utiliza generalmente 4 bytes de memoria, valores: de -2 147 483 648 a 2 147 483 647.

      3.1.9 unsigned int (16 bits)

      Utiliza generalmente 2 bytes de memoria, valores: de 0 a 65 535.

      3.1.10 unsigned int (32 bits)

      Utiliza generalmente 2 bytes de memoria, valores: de 0 a 4 294 967 295.

      3.1.11 double

      Utiliza generalmente 8 bytes de memoria, valores: de 2.2e-308 a 3.4e-38.

      3.1.12 float

      Utiliza generalmente 4 bytes de memoria, valores: de 1.2e-308 a 3.4e-38.
      Atención!
      El tamaño de las variables en memoria puede variara de un PC a otro.




      3.2. Display de siete segmentos

      3.2.1. Principio de funcionamiento

      Para controlar el número que queremos dibujar primero tenemos que identificar con que tipo de display estamos trabajando (Cátodo o Ánodo común), una ves identificado nos basamos en la siguiente tabla de verdad dado el caso que corresponda.


      Tabla de verdad display 7 segmentos anodo y catodo comun

      Tabla de verdad display 7 segmentos anodo y catodo comun
      En nuestro entrenador, se usan los display de ánodo común para mostrar el número. Esta tabla la colocamos en la programación en el orden de 0 a 9, para que se envien los datos correctamente al display
      3.2.1. Multiplexación
      El multiplexado nos ayuda a que no usemos tantos pines de nuestro microcontrolador usando los cuatro display que estan disponibles. Esta técnica se basa en encender y apagar cada dígito de manera muy rápida, de forma tal que este cambio sea imperceptible a los ojos, aproximadamente cada 5ms.Por tanto, las ventajas son:
      – Reducción de componentes en la placa.
      – Economizamos nuestro proyecto.
      – Menor utilización de pines.

      Resultado de imagen para display de siete segmentos en paralelo

      4. VÍDEO



      5. OBSERVACIONES
      • Se crearon subrutinas qe funcionaban repetidamente en la programación, para lo cual solo basto que sean llamadas en otras.
      • En el entrenador para que opere correctamente se debe accionar los switch de los puertos a ser usados, además de presionar un pulsador con enclavamiento.
      • Se observó que se necesitaron declarar varias variables para habilitar y deshabilitar algunos pines
      • Se llamo a un retardo para que evitar que se produzcan falsas pulsaciones
      • Se creo una tabla para los display referidos al anodo común para que cuando introduzcamos el valor deseado en sistema decimal, este se pueda mostrar en el display

      6.CONCLUSIONES
      • Se conoció el funcionamiento de los display de siete segmentos, su configuración interna y como se debe realizar su conexiado
      • Se concluye que cuando aplicamos la técnica de multiplexación se obtiene diversos beneficios, como son la reducciónde utilización de los pines del microcontrolador, por lo tanto reduciendo el costo.
      • Se uso un bucle for para crear un tren de pulsos que sirve al encender un sounder ya que este necesita que la señal varíe
      • Se descompuso el numero que se quería mostrar usando un bucle
      • Se conocieron los tipos de variables, cuantos bits pueden almacenar, como deben ser declaradas y se entendió la importancia de las mismas en la programación
      7. INTEGRANTES
      • Corimanya Castelo, Laura Milagros

      sábado, 9 de marzo de 2019

      LABORATORIO NRO 2

      LABORATORIO NRO 2

      HERRAMIENTAS DE PROGRAMACIÓN HARDWARE Y SOFTWARE

      1. OBJETIVOS

      • Manejo de puertos de forma grupal e independiente para manejo de luceS
      • Programación de sonidos mediante subrutinas.
      •  Creación de Subrutinas mediante funciones.
      • Declaración de variables enteras
      2. MATERIALES Y EQUIPOS

      • CCS Compiler instalado.
      • Entrenador de PICS
      • Pantalla LCD
      • PIC16F877A
      • Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
      • PC con Software de simulación.


      3. FUNDAMENTO TEÓRICO

      3.1. Bucles de control

      Los bucles son partes de un programa que se repiten mientras una condición sea cumplida. Muchas veces es necesario que una operación se ejecute u par de veces, y el tiempo que dura este depende de las condiciones de salir del bucle.

      3.1.1. While

      SINTAXIS

      While (expresión) {
      comandos

      }

      Los comandos se ejecutan repetidamente hasta que la condición se falsa. Se puede hacer un bucle infinito si la condición sigue sin cambios dentro del bucle

      3.1.3. If

      SINTAXIS

      If (expresión)
      operación 

      Si el resultado de la expresión es verdadero la operación se realiza y el programa continúa con la ejecución, si la expresión es falsa solo se continúa con la ejecución

      3.1.3. If-else

      SINTAXIS

      If (expresión)
      operación 1
      else
      operación 2

      Si el resultado de la expresión encerrada entre parentesis es verdadero se procede a realizar la operación 1, de ser falsa se realiza la operación 2. Una vez realizada alguna de las operaciones se continúa la ejecución


      3.1.3. For

      SINTAXIS

      For (expresión inicial; condición; modiica el valor de las variable) {
      operaciones
      }


      Es similar al bucle while solo que en la declaración se debe especificar el valor inicial de la variable, después de cada iteración el valor de la expresión inicial se modifica de acuerdo a la declaración. La iteración continúa hasta que la expresión sea falsa

      4. VÍDEO



      5. OBSERVACIONES
      • Para realizar la programación se tuvo que crear una instrucción inicial que permita mostrar solo una vez la salida, esto debido a que en la otra instrucción primero se mueve el bit a la derecha para luego ser mostrado
      • Se observó que se necesitaron declarar varias variables para habilitar y deshabilitar algunos pines
      • Se conocieron nuevas intrucciones como el output_toggle que permite alternar el valor de la salida y salida = salida << 1; para correr un orden de bit en el puerto
      • Se debe colocar punto y coma después de cada instrucción para que al compilar el programa no se muestre error
      • Se llamo a un retardo para que evitar que se produzcan falsas pulsaciones

      6.CONCLUSIONES
      • Se manejo puertos de forma grupal e independiente para activar salidas de forma unitaria y vectorial
      • Se emplearon subrutinas para manejar luces
      • Declaramos variables enteras en la programación, para lo cual se de be consignar el tipo de variable, su nombre y su valor
      • Usamos la instrucción If para que si se cumple cierta condición se ejecuten otras operaciones
      • Usamos el bucle while para que los comandos se ejecuten mientras la condición sea verdadera
      • Se entendió como trabaja cada instrucción y como deben ser empleadas
      7. INTEGRANTES
      • Corimanya Castelo, Laura Milagros

      viernes, 1 de marzo de 2019

      LABORATORIO NRO 1

      LABORATORIO NRO 1

      HERRAMIENTAS DE PROGRAMACIÓN HARDWARE Y SOFTWARE

      1. OBJETIVOS

      • Listar las partes internas generales de un microcontrolador.
      • Identificar las funciones generales de un microcontrolador
      • Introducción a la programación en PIC C Compiler
      • Cómo utilizar el Entrenador
      2. MATERIALES Y EQUIPOS

      • CCS Compiler instalado.
      • Entrenador de PICS
      • Pantalla LCD
      • PIC16F877A
      • Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
      • PC con Software de simulación.


      3. FUNDAMENTO TEÓRICO

      3.1. Introducción a microcontroladores

      El microprocesador para ser usando en una aplicación real debe ser conectado con componentes tales como memoria o componentes buses de transmisión de datos. Sin embargo en el microcontrolador todos las componentes estan integradas en el mismo chip. No necesita de otros componentes especializados para su aplicación ya que cuenta con los circuitos necesarios incorporados. De esta forma se ahorra tiempo y espacio necesario para construir un dispositivo.

      Los microcontroladores están siendo usados en multitud de sistemas presentes en nuestra vida diaria, como pueden ser juguetes, horno microondas, frigoríficos, televisores, computadores, impresoras, módems, el sistema de arranque de nuestro coche, etc. Y otras aplicaciones como la instrumentación electrónica para gobernar procesos y brindar una respuesta automática, control de sistemas en una nave espacial, etc.


      3.2. PIC 16F877a

      3.2.1. Descripción

      Este microcontrolador de 8 bits basado en FLOS de CMOS integra la poderosa arquitectura PIC® de Microchip en un paquete de 40 o 44 pines y es compatible con los estándares Dispositivos PIC16C5X, PIC12CXXX y PIC16C7X. El PIC16F877A cuenta con 256 bytes de memoria de datos EEPROM, autoprogramación, un ICD, 2 comparadores, 8 canales de 10 bits de analógico a digital (A / D), 2 funciones de captura / comparación / PWM, el puerto serial síncrono puede configurarse como Interfaz Periférica Serial de 3 hilos (SPI ™) o el bus de Circuito Inter-Integrado de 2 hilos (I²C ™) y un Transmisor de Receptor Asíncrono Universal (USART). Todas estas características lo hacen ideal para aplicaciones A / D de nivel más avanzado en automoción, industrial,

      3.2.2. Caracteristicas


      Memoria de programa de flash (palabras de 14 bits).............8192
      Memoria de datos SRAM (bytes)..........................................368
      Memoria de datos EEPROM (bytes)......................................256
      Lineas de E/S.....................................................................33
      Canales A/D.........................................................................8
      PWM...................................................................................2
      USART................................................................................sí
      Comparadores.....................................................................sí


      3.2.3. Disposición de pines
      Resultado de imagen para pic16f877a

      3.2.4. Puertos de entrada/salida, gama media
      • Recursos comunes (TMR0, Perro Guardián, Modo de Reposo, Reset de conexión de alimentación, interrupciones).
      • Convertidor A/D de 8 bits con 5 canales de entrada.
      • 2 Módulos de Captura/Comparación/PWM (CCP).
      • Puerto Síncrono Serie (SSP).
      • Interfaz de Comunicaciones Serie (SCI).
      3.2.5. Bancos de memorias
      La memoria de datos esta organizada en 4 bancos numerados, cada uno se extiende hasta la memoria 7Fh, existen los registros de funciones especiales (los cuales no pueden ser modificados) y los de propósito general(en los cuales podemos guardar datos de nuestra programación)


      CURSO: Simulando Sistemas Embebidos con Microcontroladores PIC


      4. VÍDEO

      https://drive.google.com/file/d/1QG0cisPGO_ZcnT5hY9dxXd1aaIspDFIn/view?usp=sharing


      5. OBSERVACIONES
      • Se logro reconocer la diferencia entre un microprocesador y un microcontrolador, en el que el primero necesita elementos externos para que pueda operar correctamente mientras que l segundo lleva los componentes incorporados en su estructura interna
      • Se reconoció que existen los bancos de memoria ne los microcontroladores y que estos poseen registros entre los cuales algunos pueden ser usados para guardar datos y otros que ya tienen un propósito específico

      6.CONCLUSIONES
      • Se concluye que el microcontrolador sirve para ejecutar una determinada tarea la cual es programada y debido a su reducido tamaño suele incorporarse en el dispositivo que gobierna
      • Se identifico las principales características y partes internas del PIC16F877a que es un dispositivo de gama media
      • Se realizo la programación en el software PIC C Compiler, el cual se compilo y cargo el archivo .hex o .cof al simulador ISIS PROTEUS y el archivo .hex al PIC16F877a por medio del software PicKit2
      • Se vio las principales características del entrenador y como se encuentra conectado, así como sus puertos de entrada y salida
      7. INTEGRANTES
      • Corimanya Castelo, Laura Milagros