Inicio

lunes, 19 de marzo de 2018

LABORATORIO NRO 2

JUEGO DE TIRO A CANASTA CON INDICADOR DE PUNTOS

FASE 2:
PROGRAMACIÓN BÁSICA CON BUCLES DE CONTROL



  1. COMPETENCIA ESPECÍFICA 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.

DECLARACIONES DE CONTROL

Las declaraciones de control son usadas para controlar el preceso  de ejecución del programa.
Lo que Admite CCS son:
  • If-Else
  • While
  • Do While
  • For 
  • Swicth-Case
  • Return
  • Break, Continue y Goto
IF-ELSE
Con la Ayuda de If-Else se pueden tomar decisiones.

if (expresion)
    sentencia1;
else
    sentencia2;

Primero se evalúa la EXPRESIÓN y si es cierta, se ejecuta la SENTENCIA1, en el caso contrario, ejecuta la SENTENCIA2

Pueden anidarse los If-Else dando lugar a los ELSE-IF; esto permite tomar decisiones multiples.

if (expresion)
    sentencia1;
else if (expresion)
    sentencia2;
else
    sentencia3;

En este caso las EXPRESIONES se evaluan en orden, si alguna de ellas es cierta la SENTENCIA asociada a ella se ejecutara y se termina la funcion. En caso contrario se ejecutra la SENTENCIA del ELSE. En ambos casos si existen arias sentencias para ejecutar se deben utilizar llaves.




SWITCH

Switch es un caso particular de una decision multiple

switch (expresion)
{
case constante1;
sentencias;
break;
case constante2;
sentecias;
break;
....
{default:
sentencias;}
}

Evalua la expresion y en orden a la CONSTANTE adecuada realiza las sentencias asociadas. Si ninguno de los CASE corresponde a la CONSTANTE se ejecutara DEFAULT (este comando es opcional).
El comnado BREAK provoca la salida de SWITCH, de lo contratio se ejecuta el siguite CASE.





FOR
Se usa para repetir sentencias 

for (inicializacion ; condición de finalización ; incremento)
sentencias;
}

En las expresiones del FOR la inicializacion es una variable al cual se le asigna  un valor inicial con el que controlar el bucle. La condición de finalizacion sirve para evaluar ANTES de ejecutar las sentecias si es cierto o no, en elcaso de ser cierta s ejecutan las sentecias y en caso contrario se sale del for. Por ultimo, la expresion de incremento o decremento modifica la variable de control DESPUES  de eejecutar el bucle.





WHILE / DO-WHILE

While se utiliza para repetir sentecias .

while (expresion)
{
sentencias
}

La expresion y la sentencia se ejecutan mientras la expresion es verdadera, cuando es falsa se sale del while.

DO-WHILE se diferencia del WHILE y del FOR en la condicion de finalizacion, la cual se evalua al final de bucle, por lo que las sentencias se ejecutan al menos una vez.

Do
{
sentecias;
}
while (expresion);

Si se ejecutan las siguientes expresiones se consigue en un BUCLE SIN FIN;

While(1)
{
sentencias;
}

Do
{
sentencais;
}
While (1)





Programa desarrollado en el Laboratorio

Elaborar un programa que encienda un led a la vez cada vez que se presione un pulsador y al llegar al sexto pulso, que emita 3 bips y el programa se detenga allí hasta que se reinicie dicho programa presionando RESET. Muestre la simulación de dicho programa.





SIMULACION EN PROTEUS



OBSERVACIONES 

  • Observamos una instruccion de tipo Switch es un caso particular de una decision multiple, lo usamos para saber el estado de pulsaciones en el pulsador.
  • Un bucle de tipo for se usa para repetir sentencias y contiene en ella for (inicializacion ; condición de finalización ; incremento).
  • Notamos que cada puerto esta completamente codificado ya sea esta entrada o salida
  • Al escribir nuestro condigo y mandarlo a la placa, esta no emitia el BIP indicado en el trabajo, ya que nuesto piezoelectrico estaba malogrado.
CONCLUSIONES


  • Pudimos concluir que el comando OUTPUT_c(0b00000000) indica el valor de la salida ya que esta esta en código binario (000000000)
  • Concluimos que al declarar una Función esta se puede llamar al final del bucle principal
  • Al realizar el código para el trabajo se tiene que estar muy atento a las signos ya sean ";" "{}" "()".
  • Analizamos al compilar con éxito nuestro codigo esta crea una extensión ".cof" esta nos sirve para simularlo en el "ENTRNADOR HFK-010U PIC S" mostrando los detalles tantos que pueden ser  negativo y positivos.

RECOMENDACIONES

Para desarrollar un programa en lenguaje C, es necesario dar un bosquejo en borrador un diagrama de flujo que nos facilita la compresion del codigo.
Cuando se preograma en CCS por default los pines ya se configura lo que nos da una gran ventaja.
En la entrada de los pulsadores existe un rebote lo cual genera errore en el programa para eliminarlos debemos poner retardos de tiempos cortos, para evitarlos.

LABORATORIO NRO. 1

JUEGO DE TIRO A CANASTA CON INDICADOR DE PUNTOS

FASE 1:
CONOCIENDO LAS HERRAMIENTAS DE PROGRAMACION HARDWARE Y SOFTWARE



  1. COMPETENCIA ESPECÍFICA DE LA SESIÓN:
  • 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.

CPU:


-        Tecnología RISC
-        Sólo 35 instrucciones que aprender
-        Todas las instrucciones se ejecutan en un ciclo de reloj, excepto los saltos que requieren dos
-        Frecuencia de operación de 0 a 20 MHz (200 nseg de ciclo de instrucción)
-        Opciones de selección del oscilador

 Memoria:

-        Hasta 8k x 14 bits de memoria Flash de programa
-        Hasta 368 bytes de memoria de datos (RAM)
-        Hasta 256 bytes de memoria de datos EEPROM
-        Lectura/escritura de la CPU a la memoria flash de programa
-        Protección programable de código
-        Stack de hardware de 8 niveles

Reset e interrupciones:

-        Hasta 14 fuentes de interrupción
-        Reset de encendido (POR)
-        Timer de encendido (PWRT)
-        Timer de arranque del oscilador (OST)
-        Sistema de vigilancia Watchdog timer

Otros:

-        Modo SLEEP de bajo consumo de energía
-        Programación y depuración serie “In-Circuit” (ICSP) a través de dos patitas
-        Rango de voltaje de operación de 2.0 a 5.5 volts
-        Alta disipación de corriente de la fuente: 25mA
-        Rangos de temperatura: Comercial, Industrial y Extendido
-        Bajo consumo de potencia: o Menos de 0.6mA a 3V, 4 Mhz o 20 µA a 3V, 32 Khz o menos de 1µA corriente de standby (modo SLEEP).

Diagrama de pines




Descripción de los pines



Los pines de entrada/salida de este microcontrolador están organizados en cinco puertos, el puerto A con 6 líneas, el puerto B con 8 líneas, el puerto C con 8 líneas, el puerto D con 8 líneas y el puerto E con 3 líneas. Cada pin de esos puertos se puede configurar como entrada o como salida independiente programando un par de registros diseñados para tal fin. En ese registro un bit en "0" configura el pin del puerto correspondiente como salida y un bit en "1" lo configura como entrada. Dichos pines del microcontrolador también pueden cumplir otras funciones especiales, siempre y cuando se configuren para ello.
Los pines del puerto A y del puerto E pueden trabajar como entradas para el convertidor Análogo a Digital interno, es decir, allí se podría conectar una señal proveniente de un sensor o de un circuito analógico para que el microcontrolador la convierta en su equivalente digital y pueda realizar algún proceso de control o de instrumentación digital. El pin RB0/INT se puede configurar por software para que funcione como interrupción externa, para configurarlo se utilizan unos bits de los registros que controlan las interrupciones
El pin RA4/TOCKI del puerto A puede ser configurado como un pin de entrada/salida o como entrada del temporizador/contador. Cuando este pin se programa como entrada digital, funciona como un disparador de Schmitt (Schmitt trigger), puede reconocer señales un poco distorsionadas y llevarlas a niveles lógicos (cero y cinco voltios). Cuando se usa como salida digital se comporta como colector abierto (open collector ), por lo tanto, se debe poner una resistencia de pull-up (resistencia externa conectada a un nivel de cinco voltios). Como salida, la lógica es inversa: un "0" escrito al pin del puerto entrega en el pin un "1" lógico. Además, como salida no puede manejar cargas como fuente, sólo en el modo sumidero. El puerto E puede controlar la conexión en modo microprocesador con otros dispositivos utilizando las líneas RD (read), WR (write ) y CS (chip select ). En este modo el puerto D funciona como un bus de datos de 8 bits (pines PSP).La máxima capacidad de corriente de cada uno de los pines de los puertos en modo sumidero (sink ) o en modo fuente (source ) es de 25 mA . La máxima capacidad de corriente total de los puertos es:



Arquitectura interna









Entrenador de microcontroladores PIC HFK-010U




Diagrama de bloques



Experimentación

Para programar nuestro PIC 16F877A con el entrenador de PIC HFK-010U para encender y apagar un LED cada un segundo (seguimos este link , utilizaremos el programa CCS Compiler para escribir, compilar nuestro código y poder generar el archivo .hex que grabaremos posteriormente en el PIC con el programa PICkit2 como se ve a continuación:






Observaciones:

  • El PIC 16F877A posee 40 pines, dentro de los cuales tenemos 5 puertos a usar A, B, C, D y D.
  • Tener en cuenta la posición correcta al colocar el PIC en el zócalo ZIF, este irá con la muesca hacia el lado de la palanca de presión, ya que, colocarlo indebidamente causará que este se queme.
  • Podremos verificar que un PIC esta en buen estado si existe comunicación entre éste y el software de grabado en este caso el PICkit2, en otras palabras el PIC es reconocido por la PC.
  • Tener en cuenta que para poder grabar el PIC es importante conectar el cable USB en el puerto USB del programador, que esta justo a lado de la fuente de alimentación.
  • Observamos que el lenguaje usado para programar en el CCS Compiler esta basado en C por lo que recordar las sentencias que usamos para programar en Arduino nos ayudará bastante.
  • Tener en cuenta que en las librerías del código debemos colocar el PIC que estamos usando y la frecuencia de reloj.
  • Simular el circuito antes de armarlo físicamente nos evitará cometer errores en la programación o conexionado, que puedan dañar nuestro PIC.

Conclusiones:

  • Aprendimos a programar el PIC 16F877A utilizando el software CCS Compiler (para compilar nuestro código) y el PICkit2 para grabar el PIC a través del hardware entrenador de PICs HFK-010U.
  • Conocimos el funcionamiento de cada bloque del entrenador de PICs HFK010U, a través de su manual y vídeos publicados en la red. Siendo este muy completo y didáctico para nuestra capacitación.
  • Conocimos mediante la teoría las características mas importantes del PIC 16F877A, su diagrama de pines y el funcionamiento de cada uno así como la arquitectura interna la cual ejecuta todas las tareas a realizar.
  • Aprendimos a utilizar el microcontrolador PIC16F877A en la aplicación mas básica de control electrónico, como el control de encendido y apagado de LED, variando el tiempo de parpadeo a través del código escrito en el compilador.
  • Concluimos que utilizar microcontroladores en proyectos sencillos, mejorará nuestra capacidad cuando trabajemos con proyectos complejos, como industriales por ejemplo.

LABORATORIO NRO. 4

JUEGO DE TIRO A CANASTA CON INDICADOR DE PUNTOS

FASE 4:
IMPLEMENTACIÓN DEL JUEGO


I. 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.


II. COMPETENCIA ESPECIFICA DE LA SESION

  • Conocer el uso de las subrutinas
  • Conocer las técnicas de elaboración de programas a través de algoritmos
  • Programación de un proyecto real.


III. CONTENIDOS A TRATAR


  • Bucles de control
  • Algoritmos
  • Pseudocódigo


IV. RESULTADOS


Diseñan y optimizan sistemas y procesos para cumplir con las condiciones establecidas y gestionando adecuadamente los recursos materiales y humanos.

V. MATERIALES Y EQUIPO


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

VI. FUNDAMENTO TEÓRICO
BUCLES DE CONTROL





VII. TAREAS GUIADAS DENTRO DEL LABORATORIO:

Se nos plantea la PROGRAMACIÓN de un JUEGO DE ENCESTAR con los siguientes
REQUERIMIENTOS:

Se dispone de un DISPLAY de 4 dígitos. Elaborar un programa que INCREMENTE el número
del display cada vez que se presione un pulsador y al llegar al sexto pulso, que emita 3 bips y
el programa se detenga allí hasta que se reinicie dicho programa presionando RESET.
También se pide que al mismo tiempo se encienda un LED cada vez que se presione dicho
pulsador.

Para el desarrollo de este programa, primero se debe determinar las ENTRADAS (sensores) a
los cuales responderá el uControlador y las SALIDAS (actuadores) sobre los cuales ejercerá
alguna acción:










Basándose en el ejemplo anterior, implemente un CODIGO a partir del siguiente
PSEUDOCODIGO:
Mantener Displays apagados
BUCLE INFINITO:
Esperar a colocar moneda (presionar una entrada)
Si ingresa MONEDA, encender pantalla Displays y tocar BIP
Esperar a “encestar” (presionar pulsador)
Si se encesta, agregar 7 puntos y sonar BIP
Si se supera 50 puntos, sonar BIP 3 veces y apagar DISPLAYS
Detener el conteo hasta volver a colocar moneda.

Programa:










PROGRAMA SIMULADO EL PROTEUS














OBSERVACIONES:

·         Observamos que al construir subrutinas, si estas se colocan después de la función principal, deberán declararse al principio del código sino el programa no las reconocerá.
·         Si queremos que todos los displays estén apagados a la hora de empezar nuestro programa debemos mandar a 0 voltios el puerto A.
·         Cuando creamos un bucle for podemos declarar la variable de repetición antes del bucle o dentro mismo. Ejm for (int i,i<10,i++).
·         Algunas veces al grabar el PIC en el programa obtener que la grabación fue exitosa pero a la hora de probar el PIC en el circuito este no funciona, por lo que debemos descartar este PIC ya que no está funcionando correctamente.
·         El botón RESET nos permite empezar de nuevo el código de la función principal.

CONCLUSIONES:
·    En estos 4 laboratorios aprendimos a usar los puertos de entrada y de salida del PIC 16F877A, para la entradas usamos pulsadores que simulan sensores, y para las salidas LEDs que simulan actuadores, como un motor por ejemplo. Todo esto usando valores lógicos 1 y 0s.
·      Aprendimos a programar utilizando las estructuras de control WHILE, FOR, IF, que nos permiten controlar el flujo del programa, tomando decisiones, realizando acciones repetitivas, todo esto dependiendo de las condiciones que nosotros pongamos.
·         Conocimos los principales tipos de variables como el int y el array.
·   Aprendimos que para realizar un algoritmo no existe una única forma, sino, que por diferentes caminos podemos llegar a un mismo resultado. Esto dependerá de nuestra lógica y manera de razonar.
·     Aprendimos también que las entradas y salidas del PIC son activas en bajo, esto quiere decir que para activar una entrada debemos pasarle un 0 lógico. Y la salida se activara si sale un 0 lógico también.

LABORATORIO NRO. 3

Juego de tiro a canasta con indicador 7 puntos
Fase 3:
Programación con Display 7 segmentos


1.-Competencia específica de la seseión:

  • Conocer el Display de 7 segmentos y su funcionamiento.
  • Conocer las técnicas de multiplexación.
  • Programar HMI para juego de encestar.