martes, 26 de noviembre de 2019

LABORATORIO NRO. 13

MICROCONTROLADORES

Laboratorio N°12:
Manejo del Timer y las interrupciones

1. COMPETENCIA 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 ESPECIFICA DE LA SESIÓN:
  • Lecturas analógicas de un canal de PIC.
  • Configuración de un sensor de Temperatura.
  • Lectura analógica en una LCD
3. CONTENIDOS A TRATAR
  • Entradas analógicas
  • Sensor de Temperatura
4. MARCO TEÓRICO:

4.1. PIC 16F877A:

Este microcontrolador es fabricado por MicroChip familia a la cual se le denomina PIC. El modelo 16F877A posee varias características que hacen a este microcontrolador un dispositivo muy versátil, eficiente y práctico para ser dar uso en diferentes aplicaciones.
Algunas de estas características se muestran a continuación:
  • Soporta modo de comunicación serial, posee dos pines para ello.
  • Amplia memoria para datos y programa.
  • Memoria reprogramable: La memoria en este PIC es la que se denomina FLASH; este tipo de memoria se puede borrar electrónicamente (esto corresponde a la "F" en el modelo).
  • Set de instrucciones reducido (tipo RISC), pero con las instrucciones necesarias para facilitar su manejo.
4.2. ENTRADAS ANALÓGICAS:

El CAD conversor analógico digital PIC (no todos los PIC lo tienen, para los ejemplos se utilizará el PIC 16F877A), 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.
El CAD conversor analógico digital PIC necesita una tensión de referencia para poder trabajar adecuadamente, esta tensión de referencia Vref normalmente será la tensión a la cual trabaja el PIC, aunque por programa se puede elegir otra diferente; a la relación que hay entre la tensión de referencia Vref y el máximo número binario de 8 bits 28-1=255=11111111 o de 10 bits 210-1=1023=1111111111 que representará la tensión analógica se le conoce como resolución, por ejemplo para el caso del PIC16F877A se tendrá que la resolución del conversor analógico digital PIC será:

Resolución = Vref/(210-1) = Vref/1023

Si se toma como la Vref=5V que es la tensión adecuada a la que trabaja el PIC16F877A se tendrá que la resolución de su convertidor analógico digital PIC será:

Resolución = 5V/(210-1) = 5V/1023


5. EVIDENCIA DE TAREAS EN LABORATORIO:

En este video se explicará cada actividad desarrollada en el laboratorio.





6. OBSERVACIONES:
  • El botón de cancelar no se incluyo en la programación ya que el reset cumplía la misma función.
  • El mensaje de PELIGRO va estar funcionando a penas inicie el programa no es necesario presionar aceptar.
  • Algunas palabra no se pueden displayar en su totalidad, pero se logra entender el mensaje.

7. CONCLUSIONES:
  • Se logró realizar el programa cumpliendo con todas las condiciones propuestas utilizando lo aprendido en sesiones anteriores.
  • Se comprendió como convertir los datos de la entrada analógica a digital guardándolos en una variable de float.
  • En este laboratorio, se desarrolló un control ON/OFF con ayuda de las funciones vistas anteriormente.
  • Al finalizar el laboratorio, se compredio como poder displayar la lectura de un sensor de temperatura en un Display.





domingo, 17 de noviembre de 2019

LABORATORIO NRO. 12

MICROCONTROLADORES

Laboratorio N°12:
Manejo del Timer y las interrupciones

1. COMPETENCIA 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 ESPECIFICA 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. CONTENIDOS A TRATAR
  • Interrupciones
  • Timer cero.
4. MARCO TEÓRICO:

4.1. PIC 16F877A:

Este microcontrolador es fabricado por MicroChip familia a la cual se le denomina PIC. El modelo 16F877A posee varias características que hacen a este microcontrolador un dispositivo muy versátil, eficiente y práctico para ser dar uso en diferentes aplicaciones.
Algunas de estas características se muestran a continuación:
  • Soporta modo de comunicación serial, posee dos pines para ello.
  • Amplia memoria para datos y programa.
  • Memoria reprogramable: La memoria en este PIC es la que se denomina FLASH; este tipo de memoria se puede borrar electrónicamente (esto corresponde a la "F" en el modelo).
  • Set de instrucciones reducido (tipo RISC), pero con las instrucciones necesarias para facilitar su manejo.
4.2. INTERRUPCIONES:


Las interrupciones PIC son desviaciones de flujo de control del programa originadas asincrónicamente por diversos sucesos que no dependen del programador, es decir, ocurren en cualquier momento.

Las interrupciones PIC ocurren por sucesos externos como la generación de una interrupción por flanco PIC, una interrupción externa PIC cambiando el nivel en un PIN del microcontrolador o eventos internos tales como el desbordamiento de un contador, terminación del conversor análogo a digital, entre otras.


El comportamiento del microcontrolador ante la interrupción es similar al procedimiento que se sigue al llamar una función desde el programa principal. En ambos casos se detiene la ejecución del programa en curso, se guarda la dirección a donde debe retornar cuando termine de ejecutar la interrupción, atiende o ejecuta el programa correspondiente a la interrupción y luego continua ejecutando el programa principal, desde donde lo dejo cuando fue interrumpido.

Tipos de Interrupciones PIC:

Aqui nombramos 10 diferentes causas que producen una interrupción PIC, por lo tanto el primer paso de la rutina de interrupción será identificar la causa de la interrupción.
  • Interrupción externa PIC RB0/INT
  • Interrupción por cambio lógico en el puerto B (pines RB7 a RB4)
  • Interrupción por desborde del timer 0 (TMR0)
  • Interrupción por desborde del timer 1 (TMR1)
  • Interrupción por comparación exitosa exitosa en TMR2
  • Interrupción del comparador
  • Interrupción del transmisor del USART
  • Interrupción del receptor del USART
  • Interrupción del módulo CCP
  • Interrupción del EEPROM 
4.3. TEMPORIZADORES:


El temporizador Timer0 tiene una amplia gama de aplicaciones en la práctica. Sólo unos pocos programas no lo utilizan de alguna forma. Es muy conveniente y fácil de utilizar en programas o subrutinas para generar pulsos de duración arbitraria, en medir tiempo o en contar los pulsos externos (eventos) casi sin limitaciones. El módulo del temporizador Timer0 es un temporizador/contador de 8 bits con las siguientes características:
  • Temporizador/contador de 8 bits
  • Pre-escalador de 8 bits (lo comparte con el temporizador perro guardián);
  • Fuente de reloj interna o externa programable;
  • Generación de interrupción por desbordamiento; y
  • Selección del flanco de reloj externo programable.





5. EVIDENCIA DE TAREAS EN LABORATORIO:

En este video se explicará cada actividad desarrollada en el laboratorio.





6. OBSERVACIONES:
  • Como se colocó décimas a la hora de simular se nota un poco de lag esto es propio del Simular, pero se logro observar su cambio.
  • Para calcular el tiempo se tiene que tener en cuente el cristal que se esta utilizando.
  • Al generara una interrupción no es recomendable poner en dalay en la función a la que se llame ya que producirá Warnings.
  • Como el cronómetro solo es hasta 59 minutos si se supera este valor minutos rse reiniciara tomando el valor de 0 de nuevo.
7. CONCLUSIONES:
  • Logramos comprender el funcionamiento de los Timers, como preescalarlos y hacer interrupciones cada vez que se desborde.
  • En este laboratorio, aprendimos como realizar cálculos y utilizar instrucciones para poder generar las interrupciones dependiendo de las condiciones que se pongan para el programa.
  • Se logro hacer un cronómetro descendente utilizando TIMER0 y las interrupciones, a si mismo aplicando conocimiento de la sesión anterior para poder mostrar el cronómetro en el LCD.
  • Conocimos como poder aplicar las interrupciones para diferentes aplicaciones, a su vez que vimos la diferencia en TIMER0, TIMER1 y TIMER2.







martes, 12 de noviembre de 2019

LABORATORIO NRO. 11

MICROCONTROLADORES

Laboratorio N°11:
Programación de un Pantalla LCD

1. COMPETENCIA 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 ESPECIFICA DE LA SESIÓN:
  • Conocer el Display LCD y funcionamiento.
  • Programar eficientemente el LCD.
  • Programar HMI para proyecto actual.
3. CONTENIDOS A TRATAR
  • Display LCD.
  • Manejo de teclado matricial.
4. MARCO TEÓRICO:

4.1. PIC 16F877A:

Este microcontrolador es fabricado por MicroChip familia a la cual se le denomina PIC. El modelo 16F877A posee varias características que hacen a este microcontrolador un dispositivo muy versátil, eficiente y práctico para ser dar uso en diferentes aplicaciones.
Algunas de estas características se muestran a continuación:
  • Soporta modo de comunicación serial, posee dos pines para ello.
  • Amplia memoria para datos y programa.
  • Memoria reprogramable: La memoria en este PIC es la que se denomina FLASH; este tipo de memoria se puede borrar electrónicamente (esto corresponde a la "F" en el modelo).
  • Set de instrucciones reducido (tipo RISC), pero con las instrucciones necesarias para facilitar su manejo.
4.2. PANTALLA LCD:

El LCD es actualmente el circuito más barato y confiable para mostrar datos en un proceso de monitoreo y control. Su interfaz con los controladores se realiza a través de un conector de 14 pines.
Todos los fabricantes del display de cristal líquido (“Liquid Cristal Display”) LCD, han estandarizado sus señales en el conector de 14 pines, así como sus comandos de control para el manejo del mismo
En el LCD se pueden mostrar datos como la hora y la fecha, así como valores de variables tales como nivel, presión, gasto, temperatura, etc.
El LCD puede también emplearse para mostrar parámetros internos del sistema, de acuerdo a su aplicación o para mostrar al usuario las opciones de configuración mientras lo opera.
El módulo LCD lleva integrado a sus circuitos una memoria ROM conocida como “generador de caracteres” que habrá de generar los patrones de la matriz de puntos (5 x 7 ó 7 x 9) que forman los caracteres en la pantalla.  También tiene una RAM interna que almacena los caracteres y los exhibe en el módulo LCD.


4.3. FUNCIONES DE LA PANTALLA LCD:
  • 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.
          \f se limpia el lcd
          \n el cursor se posiciona al inicio de la segunda línea
          \b el cursor retrocede una posición

  • lcd_getc(x,y): lee el carácter de la posición (x,y)
  • printf(lcd_putc, cadena, variable)


5. EVIDENCIA DE TAREAS EN LABORATORIO:

En este video se explicará cada actividad desarrollada en el laboratorio.





6. OBSERVACIONES:
  • Para cambiar el mensaje de la primera fila ya sea a FULL, DESAHABILITADO o VALOR MINIMO se usa la función lcd_putc("\f") esta limpia el LCD.
  • La función While que se usaba como antirrebote del sofware tiene un problema ya que al soltar el pulsador ocurría el problema de que se podía ejecutar el paso de nuevo así que se opto por poner un delay de 100ms para evitar ese problema.
  • Al inicio del laboratorio el LCD tenia una mala conexión haciendo que este opaco, luego se procedió a conectarlo adecuadamente.

7. CONCLUSIONES:
  • Logramos imprimir mensajes en el LCD, cumpliendo con cada condición propuesta.
  • Aprendimos los tipos de variable, como separar espacios en el LCD y definir que esta irá con signo para plantear un programa que cumpla con todas las condiciones.
  • Se comprendió como poder realizar un antirrebote con la función while, haciendo que las instrucciones solo se ejecuten un vez si se mantiene el pulsador presionado.
  • En esta sesión se uso lo aprendido en clases anteriores para realizar el programa que se pidió.

martes, 5 de noviembre de 2019

LABORATORIO NRO. 10

MICROCONTROLADORES

Laboratorio N°10:
Programación con Display de 7 segmentos

1. COMPETENCIA 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 ESPECIFICA DE LA SESIÓN:
  • Conocer el Display de 7 segmentos y su funcionamiento.
  • Conocer las técnicas de multiplexación.
  • Programar HMI para juego de encestar.
3. CONTENIDOS A TRATAR
  • Display 7 segmentos.
  • Multiplexación de datos. 
4. MARCO TEÓRICO:

4.1. PIC 16F877A:

Este microcontrolador es fabricado por MicroChip familia a la cual se le denomina PIC. El modelo 16F877A posee varias características que hacen a este microcontrolador un dispositivo muy versátil, eficiente y práctico para ser dar uso en diferentes aplicaciones.
Algunas de estas características se muestran a continuación:
  • Soporta modo de comunicación serial, posee dos pines para ello.
  • Amplia memoria para datos y programa.
  • Memoria reprogramable: La memoria en este PIC es la que se denomina FLASH; este tipo de memoria se puede borrar electrónicamente (esto corresponde a la "F" en el modelo).
  • Set de instrucciones reducido (tipo RISC), pero con las instrucciones necesarias para facilitar su manejo.
4.2. TIPOS DE VARIABLES:



¿Qué son las variables?


Pues sencillamente el poder identificar con un nombre una o varias posiciones de memoria de la RAM de nuestro PIC y de esta manera el poder almacenar allí los datos que va a utilizar nuestro programa.
En C para poder utilizar una variable primeramente hay que declararla siguiendo la siguiente sintaxis:
tipo nombre_variable [=valor];


Lo que va entre corchetes es porque es opcional es decir, las variables se pueden inicializar ó  no al declararlas.
Ejemplo de variable declarada:

int i;

Ejemplo de variable declarada e inicializada:

int i=5;

En una misma línea se puede declarar más de una variable siguiendo el siguiente formato:

tipo nombre_variable1,nombre_variable2,....;

Hay que tener en cuenta que la línea tiene que acabar en punto y coma.

El tipo de datos es obligatorio ponerlo y le dice al compilador cuantas celdillas de memoria tiene que reservar para almacenar el valor de la variable. Los tipos de datos pueden variar de un compilador a otro.
Los tipos de datos básicos que utiliza nuestro compilador son los siguientes:


Sin embargo  el compilador CCS también admite los siguientes tipos de datos definidos en el estándar C y que son los que normalmente se utilizan a la hora de programar:


Todos los tipos excepto float son por defecto sin signo, aunque pueden llevar el especificador unsigned (sin signo)  ó signed (con signo) y su rango de valores será el que corresponda a su tipo básico.

Estos son los tipos básicos, también están los tipos de datos compuestos como Enumeraciones, Estructuras y Uniones que están formados por una combinación de los básicos y que los veremos más adelante.

El nombre de la variable no puede ser una palabra clave (reservada por el compilador para realizar unas funciones determinadas y los caracteres que podemos utilizar son las letras: a-z y A-Z ( ¡ojo! la ñ o Ñ no está permitida), los números: 0-9 y el símbolo de subrayado _. Además hay que tener en cuenta que el primer carácter no puede ser un número.

¿Dónde se declaran las variables?

Las variables según el lugar en que las declaremos pueden ser de dos tipos: globales o locales.
La variables globales se declaran fuera de las funciones y pueden ser utilizadas en cualquier parte del programa y se destruyen al finalizar éste.
Las variables locales se declaran en la función en que van a ser utilizadas. Sólo existen dentro de la función en que se declara y se destruye al finalizar dicha función. Si una función va a usar argumentos (DATOS), entonces debe declarar las variables que van a aceptar los valores de esos argumentos. Estas variables son los parámetros formales de la función. Se comportan como cualquier otra variable local de la función, creándose al entrar en la función y destruyéndose al salir. 

5. EVIDENCIA DE TAREAS EN LABORATORIO:

En este video se explicará cada actividad desarrollada en el laboratorio.




6. OBSERVACIONES:
  • Para realizar la simulación se debe realizar algunos cambios al código mencionados en el video, de no hacer estos cambios no se podrá simular correctamente.
  • Para poder generar un sonido del parlante no solo se necesita que se alimente con 5 voltios, sino que también se le una frecuencia.
  • En el video no se escucha bien el sonido generado por los parlartes debido al ruido del salón.
  • Cuando se cambia de número debió al delay del programa por cierto tiempo solo se mostraba la unidad en el cambio, pero con la función FOR se solucionó ese problema.

7. CONCLUSIONES:
  • Se conoció el funcionamiento del Display de 7 segmentos para su posterior programación.
  • Se comprendió como poder multiplexar con el microcontrolador PIC para poder mostrar cada dígito del número que se guardaba en la variable "dato".
  • Conocimos los tipos de variables su equivalencia y su rango para posteriormente utilizarlas.
  • Aplicamos los conocimientos de sesiones anteriores con las parendidas en esta sesión para platear un programa que cumpla con las condiciones propuestas en el laboratorio.
  • Se vio como poder descomponer un número en centenas, decenas y unidades para lograr ubicar ese valor en el arreglo de datos y mostrarlo en el Display de 7 segmentos.