martes, 10 de diciembre de 2019

PROYECTO FINAL

MICROCONTROLADORES

Balancín con control PID

1. OBJETIVOS:

  • Aplicar todo lo aprendido en el curso de microcontroladores.
  • Usar Arduino para poder programar un Control PID.
  • Diseñar un placa tipo Shield para el Arduino.
  • Realizar la conexión vía bluetooth el Arduino con el Celular.

    2. JUSTIFICACIÓN:

    Este proyecto busca mediante la aplicación de los conceptos aprendidos a lo largo del Curso de Microcontroladores-Procesos y Control poder diseñar un control PID con arduino para poder mantener en equilibrio un balancín, a su ves de poder desarrollar un aplicación para el smarphone que pueda controlar un corro por medio de un módulo bluetooth, permitiendonos no solo poder adaptar este control en cualquier proceso que necesite mantener su variablen en un Setpoint pre fijado.

    3. MATERIALES:

    3.1 Batería de Litio (3.7V): Conectamos 2 en serie para alimentar el L298n y otras para alimentar el arduino uno.


    3.2 Moto-reductores (3-6V): Se utilizo un motorreductor de 3-6V pero se puede usar uno de 12V, recomendable usar uno con RPM a 180 RPM.
    3.3 L298n: Este driver es muy utilizado para controlar motores DC lo alimentamos con 7.4V.


    3.4 Arduino Uno: Se puede utilizar un Arduino nano y es preferible para reducir el peso pero en este proyecto se desarrollo un PCB Shield para este Arduino.


    3.5 MPU 6050: Este módulo nos permitirá ubicarnos en los 3 ejes (X,Y,Z) y poder identificar en que posición es está nuestro balancín


    3.6 HC-05: Este módulo puede trabajar como maestro y esclavo (HC-06) en este caso lo utilizamos, cuando se suba el programa no conectarlo ya que no se podrá subir el programa correctamente.



    3.7 llanta para motoreductor:

    3.8 Tornillos y tuercas 1/8" x 1 1/2" Largo (4)



    4. Esquema de conexiones:
    4.1 Conexiones del circuito del Blancín:


    4.1 Conexiones del módulo HC-05 (esclavo): 

    5. Diagrama de flujo del programa del bluetooth y diagrama de bloques del control

    5.1 Flujograma:

    5.2 Diagrama de bloques:


    6. Primer Video:

    En este video se explicaran los siguientes puntos:
    • Conexiones de los componenentes (0:08)
    • Diagrama de flujo (2:29)
    • Explicación del código del Proyecto Balancín (3:40)
    • Explicación del código del Proyecto del control remoto por Bluetooth (11:35)
    • Explicación de la Aplicación que se desarrollo en App Inventor (12:58)
    • Pruebas en protoboard con el MPU 6050 (15:08)


    6.1 Foto de la prueba realizada en el protoboard con el MPu 6050:


    7. Segundo Video

    En este video se explicaran el PCB y la estructura para el balancín:



    7.1 Resultado:

    Este placa se puede usar para el balancín y para el control por bluetooth de un carro.




     Luego de imprimir cada pieza de la estructura del balacín se tiene el siguiente resultado


    En caso de usar el módulo bluetooth puede usarse en un carro de 4 o 2 ruedas como se ve en el siguiente imagen


    8. Tercer video:

    En este video se ve el funcionamiento del proyecto final.




    9. Observaciones:

    • Para realizar la placa PCB shield se descargaron librerías para el programa Eagle.
    • Para hallar los parámetros del control PID se realizaron la sintonización por el método prueba y error.
    • Los motores utilizados son de 3-6V pero estos pueden variar entre mayor sea su torque y velocidad presentará una mejor reacción para el control del balacín.
    • Para la creación de la aplicación para el celular tomar en cuenta que variable esta enviando al arduino para poder realizar las condiciones respectivas, en este caso es un texto.
    • Para verificar la conexión entre el HC-05 y el celular este una vez conectado va a parpadear 2 veces y apagarse por un momento, en caso de no estar conectado parpadeará indefinidamente.
    10. Recomendaciones:
    • Colocar las ruedas no tan alineadas, esto para poder dar un mejor equilibrio al balancín.
    • Al subir el programa para controlar el carro por bluetooth desconectar el módulo HC-05 ya que de estar conectado se presentaran errores al momento de subir el programa.
    • Fijar correctamente el Arduino, batería y el L298n, ya que en las pruebas para sintonizar el controlador PID se pueden caer y dañarse.
    • Es recomendable utilizar un Arduino Nano en ves de Arduino Uno ya que es más liviano y reduciría el esfuerza a la hora de equilibrarse.
    • Tomar en cuenta que la alimentación del Arduino va de 6 a 12 V, así mismo tomar en cuenta la caída de tensión ya que de alimentar con 6V el voltaje en la salida no será el mismo pudiendo variar.

    11. Archivos para descargar:

    11.1. Liberias:


    11.2 Aplicación Apk:



    11.3. Planos en Autocad:










    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.

    martes, 29 de octubre de 2019

    LABORATORIO NRO. 9

    MICROCONTROLADORES

    Laboratorio N°09:
    Programación básica con bucles de control

    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:
    • 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.
    3. CONTENIDOS A TRATAR
    • Control de puertos como entradas y/o salidas.
    • Generación de salidas pulsante.
    • Bucles de control
    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. BUCLE WHILE:

    para escribir una instrucción while (repetitiva mientras) se utiliza la sintaxis:


    Cuando el <bloque_de_instrucciones> sólo contiene una instrucción, los caracteres abrir llave ({) y cerrar llave (}) son opcionales.

    Por otra parte, al igual que en las instrucciones alternativas doble y simple, a la <expresión_lógica> de una instrucción repetitiva 
    while, también se le llama condición.

    Para que se ejecute el <bloque_de_instrucciones>, la condición tiene que ser verdadera. Por el contrario, si la condición es falsa, el <bloque_de_instrucciones> no se ejecuta.

    Por tanto, cuando el f
    de un programa llega a un bucle while, existen dos posibilidades:
    1. Si la condición se evalúa a falsa, el bloque de instrucciones no se ejecuta, y el bucle while finaliza sin realizar ninguna iteración.
    2. Si la condición se evalúa a verdadera, el bloque de instrucciones sí que se ejecuta y, después, se vuelve a evaluar la condición, para decidir, de nuevo, si el bloque de instrucciones se vuelve a ejecutar o no. Y así sucesivamente, hasta que, la condición sea falsa.


    4.3. BUCLE IF-ELSE

    Cuando el programa llega a una sentencia condicional del tipo If …Else, primero se evalúa una expresión; si se cumple (es cierta) se ejecuta un bloque de sentencias y si es falsa se ejecuta otro bloque.




    4.4. BUCLE FOR


    La sintaxis del bucle for es la siguiente:




    expr1: Ajustas un variable a un valor.

    expr2: Colas la condición para el bucle.
    expr3: Puedes realizar un incremento a la variable.


    4. EVIDENCIA DE TAREAS EN LABORATORIO:

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

    |

    5. OBSERVACIONES:
    • El pulsador A5 no se utilizo debido a que no funcionaba correctamente.
    • El tiempo para hacer el antirrebote se puso en 300 ms.
    • Al ejercicio se le aumento la realimentación para evitar usar el botón de RESET.
    • Para proponer las condiciones para el bucle IF es necesario tomar en cuenta donde se deja el led prendido para asi continuar ya sea con el varrido hacia abajo o arriba.
    6. CONCLUSIONES:
    • Se logró plantear un programa que cumpla con las condiciones que se propusieron en el laboratorio  usando lo aprendido en esta y la anterios sesión.
    • Se comprendió la sintaxis y como poder usar los bucles IF, WHILE y FOR.
    • Antes de subir el programa en el entrenador lo simulamos en Proteus para poder encontrar fallas y evitar dañar al equipo.
    • Mejoramos el código para poder evitar usar el botón RESET, haciendo que se realimente automáticamente ya sea cuando se use el barrido hacia arribo o abajo