martes, 26 de noviembre de 2019

Laboratorio Nro.13 Lectura de entradas analógicas

LECTURA DE ENTRADAS ANALÓGICAS

1. COMPETENCIA ESPECIFICA DE LA SESIÓN:
  • Lecturas analógicas de un canal del PIC.
  • Configurar de un Sensor de Temperatura.
  • Lectura analógica en una pantalla LCD.
2. MARCO TEÓRICO 

        2.1 Interrupciones en microcontroladores


Es una de las caracterasticas de los microcontroladores, de las mas importantes que constituye la capacidad de sincronizar la ejecucion de programas con acontecimientos externos; es decir, cuando se produce una interrupcion, el micro automaticamente deja lo que esto haciendo, va a la direccion 04h de programa y ejecuta lo que encuentre a partir de alli hasta encontrarse con la instruccion RETFIE que le hara abandonar la interrupcion y volver al lugar donde se encontraba antes de producirse dicha interrupcion. Hemos de diferenciar entre dos tipos de interrupciones posibles en un PIC:



1. - Mediante una acción interna. El desbordamiento de la Pila (Stack) por una operación indebida, por ejemplo:
  • Al completarse la escritura de datos en una EEPROM.
  • Por desbordamiento del registro TMR0 al rebasar el valor 255 (FFh) a 0.



2. - Mediante una acción externa, la mas útil. Al producirse un cambio del nivel en uno de sus pines por una acción externa.

  • Estando en el modo de reposo (SLEEP), un cambio de nivel en el pin RB0/INT .
  • Un cambio de nivel en uno de los pines RB4 a RB7 estando configurados como entrada.
        2.2 Temporizadores internos (TMR)

Un temporizador interno (TMR) es un módulo de hardware incluido en el mismo microcontrolador el cual está especialmente diseñado para incrementar automáticamente el valor de un registro asociado al TMR cada vez que el módulo TMR recibe un pulso. A este pulso se lo llama “señal de reloj”.

Algunos microcontroladores pueden incluir más de un módulo TMR y la señal de reloj de cada uno de éstos puede ser de origen interno o externo.
Si el origen de la señal de reloj está configurado como externo, el módulo temporizador puede ser utilizado como un contador de eventos externos, incrementando el TMR con cada pulso recibido mediante el pin correspondiente.
Si el origen de la señal de reloj es interno, el TMR incrementa con cada ciclo del oscilador. Esto permite utilizar el temporizador como “contador de ciclos de programa”, donde, un ciclo corresponde al tiempo de ejecución de una instrucción, lo cual se puede calcular con la siguiente fórmula:
( 1 / ( Frec. Osc. / 4) )


Donde “Frec. Osc.” es la frecuencia del oscilador utilizado.



Ejemplo:





Con un cristal de 20Mhz la velocidad real de procesamiento del microcontrolador es de 1 Mhz. Aplicando la siguiente fórmula:

1 / (20.000.000 / 4)
1 / 5.000.000
0.0000002 = 0.2 uS (microsegundo)
        2.3 Entrenador de PICS



      2.4 Software Proteous

Proteus es una aplicación para la ejecución de proyectos de construcción de equipos electrónicos en todas sus etapas: diseño del esquema electrónico, programación del software, construcción de la placa de circuito impreso, simulación de todo el conjunto, depuración de errores, documentación y construcción.
  • Se utilizara la simulación del módulo entrenador en el software Proteous


3. EVIDENCIA DE TAREAS DEL LABORATORIO





4. OBSERVACIONES

 - Para lograr generar los segundos, minutos y centésimas, se debe de usar tres variables de tipo entero.
 - En este caso se utilizo el timer 0 el cual es de 8 bits y nos sirvió ya que necesitamos saber el tiempo de un segundo en tiempo real.
 - El cronometro solo va a contar hasta 59 minutos, en el que caso que se supere este valor se reiniciara la cuenta, empezando de 0.
   - En este laboratorio se emplearon nuevas variables que grababan el valor de segundos y minutos justo en el momento de iniciar el conteo, esto permitirá que el tiempo se reinicie al acabar la temporización.

5.CONCLUSIONES


- Se logró aplicar el uso correcto de las interrupciones para programar un temporizador, ademas de conociendo que cuenta con otras interrupciones.
-  Se utilizó el Timer0 para hacer un cronometro descendente, todo esto aplicando todo lo aprendido en el tema de microcontroladores PIC 16F877A.
- Se completo el reto propuesto en el laboratorio , aplicando todo lo aprendido, probando en el simulador Proteous el funcionamiento correcto, antes de subir el programa de forma física.
- Para realizar el correcto cronometro con conteo de forma decreciente fue necesario asignar a la variables segundos 59 y terminarla en -1, se aplicara lo mismo para los minutos.

domingo, 17 de noviembre de 2019

Laboratorio Nro 12. Manejo de Timer y las interrupciones

MANEJO DE TIMER Y LAS INTERRUPCIONES

1. 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.
2. MARCO TEÓRICO 

        2.1 Interrupciones en microcontroladores


Es una de las caracterasticas de los microcontroladores, de las mas importantes que constituye la capacidad de sincronizar la ejecucion de programas con acontecimientos externos; es decir, cuando se produce una interrupcion, el micro automaticamente deja lo que esto haciendo, va a la direccion 04h de programa y ejecuta lo que encuentre a partir de alli hasta encontrarse con la instruccion RETFIE que le hara abandonar la interrupcion y volver al lugar donde se encontraba antes de producirse dicha interrupcion. Hemos de diferenciar entre dos tipos de interrupciones posibles en un PIC:



1. - Mediante una acción interna. El desbordamiento de la Pila (Stack) por una operación indebida, por ejemplo:
  • Al completarse la escritura de datos en una EEPROM.
  • Por desbordamiento del registro TMR0 al rebasar el valor 255 (FFh) a 0.



2. - Mediante una acción externa, la mas útil. Al producirse un cambio del nivel en uno de sus pines por una acción externa.

  • Estando en el modo de reposo (SLEEP), un cambio de nivel en el pin RB0/INT .
  • Un cambio de nivel en uno de los pines RB4 a RB7 estando configurados como entrada.
        2.2 Temporizadores internos (TMR)

Un temporizador interno (TMR) es un módulo de hardware incluido en el mismo microcontrolador el cual está especialmente diseñado para incrementar automáticamente el valor de un registro asociado al TMR cada vez que el módulo TMR recibe un pulso. A este pulso se lo llama “señal de reloj”.

Algunos microcontroladores pueden incluir más de un módulo TMR y la señal de reloj de cada uno de éstos puede ser de origen interno o externo.
Si el origen de la señal de reloj está configurado como externo, el módulo temporizador puede ser utilizado como un contador de eventos externos, incrementando el TMR con cada pulso recibido mediante el pin correspondiente.
Si el origen de la señal de reloj es interno, el TMR incrementa con cada ciclo del oscilador. Esto permite utilizar el temporizador como “contador de ciclos de programa”, donde, un ciclo corresponde al tiempo de ejecución de una instrucción, lo cual se puede calcular con la siguiente fórmula:
( 1 / ( Frec. Osc. / 4) )


Donde “Frec. Osc.” es la frecuencia del oscilador utilizado.



Ejemplo:


Con un cristal de 20Mhz la velocidad real de procesamiento del microcontrolador es de 1 Mhz. Aplicando la siguiente fórmula:

1 / (20.000.000 / 4)
1 / 5.000.000
0.0000002 = 0.2 uS (microsegundo)
        2.3 Entrenador de PICS



      2.4 Software Proteous

Proteus es una aplicación para la ejecución de proyectos de construcción de equipos electrónicos en todas sus etapas: diseño del esquema electrónico, programación del software, construcción de la placa de circuito impreso, simulación de todo el conjunto, depuración de errores, documentación y construcción.
  • Se utilizara la simulación del módulo entrenador en el software Proteous


3. EVIDENCIA DE TAREAS DEL LABORATORIO





4. OBSERVACIONES

 - Para lograr generar los segundos, minutos y centésimas, se debe de usar tres variables de tipo entero.
 - En este caso se utilizo el timer 0 el cual es de 8 bits y nos sirvió ya que necesitamos saber el tiempo de un segundo en tiempo real.
 - El cronometro solo va a contar hasta 59 minutos, en el que caso que se supere este valor se reiniciara la cuenta, empezando de 0.
   - En este laboratorio se emplearon nuevas variables que grababan el valor de segundos y minutos justo en el momento de iniciar el conteo, esto permitirá que el tiempo se reinicie al acabar la temporización.

5.CONCLUSIONES


- Se logró aplicar el uso correcto de las interrupciones para programar un temporizador, ademas de conociendo que cuenta con otras interrupciones.
-  Se utilizó el Timer0 para hacer un cronometro descendente, todo esto aplicando todo lo aprendido en el tema de microcontroladores PIC 16F877A.
- Se completo el reto propuesto en el laboratorio , aplicando todo lo aprendido, probando en el simulador Proteous el funcionamiento correcto, antes de subir el programa de forma física.
- Para realizar el correcto cronometro con conteo de forma decreciente fue necesario asignar a la variables segundos 59 y terminarla en -1, se aplicara lo mismo para los minutos.

Laboratorio Nro 11. Programación de una pantalla LCD

PROGRAMACIÓN DE UNA PANTALLA LCD


1. COMPETENCIA ESPECIFICA DE LA SESIÓN:
  • Conocer el Display LCD y su funcionamiento.
  • Programación eficientemente el LCD
  • Programar HMI para proyecto actual
2. MARCO TEÓRICO 

        2.1 Pantalla LCD


Cuando los simples indicadores luminosos con led ya no son suficientes, habitualmente el siguiente paso para todo programador es ir por una pantalla lcd 16×2. Llegados a este punto, encontramos que existen módulos LCD que facilitan la interfaz con este periférico. El estándar en la industria para estos módulos con “controlador a bordo” es el chipset HD44780 (y otros más compatibles desarrollados a partir de este), para los cuales encontramos soporte en prácticamente cualquier plataforma: Arduino, PIC, AVR, MSP430, etc.


        2.2 Conexiones

En la siguiente imagen de Proteus se puede observar la estructura de sus pines.
Lo  podemos dividir en los Pines de alimentación, pines de control y los pines del bus de datos bidireccional. Por lo general podemos encontrar ademas en su estructura los pines de Ánodo y cátodo de led.


Pines de alimentación:

Vss: Gnd

Vdd: +5 voltios

Vee: corresponde al pin de contraste, lo regularemos con un potenciómetro de 10K


Pines de control:

RS: Corresponde al pin de selección de registro de control de datos (0) o registro de datos(1). Es decir el pin RS funciona paralelamente a los pines del bus de datos. Cuando RS es 0 el dato presente en el bus pertenece a un registro de control/instrucción. y cuando RS es 1 el dato presente en el bus de datos pertenece a un registro de datos o un carácter.

RW: Corresponde al pin de Escritura(0) o de Lectura(1). Nos permite escribir un dato en la pantalla o leer un dato desde la pantalla.

E: Corresponde al pin Enable o de habilitación. Si E(0) esto quiere decir que el LCD no esta activado para recibir datos, pero si E(1) se encuentra activo y podemos escribir o leer desde el LCD.


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  

        2.3 Funciones a utilizar


        2.4 Entrenador de PICS




        2.5 Software Proteous

Proteus es una aplicación para la ejecución de proyectos de construcción de equipos electrónicos en todas sus etapas: diseño del esquema electrónico, programación del software, construcción de la placa de circuito impreso, simulación de todo el conjunto, depuración de errores, documentación y construcción.

  • Se utilizara la simulación del módulo entrenador en el software Proteous


3. EVIDENCIA DE TAREAS DEL LABORATORIO



4. OBSERVACIONES 

-A la hora de probar el programa el LCD se encontraba muy opaco, no logrando obtener una visualización adecuada, esto fue producto que había unas conexiones sueltas, las cuales se ajustaron.
- En esta oportunidad al colocar el antirebote con el While, cuando se mantiene pulsado el botón, el programa no puede ejecutar mas funciones, ya que puede cambiar por cambiarlos por delays con tiempo de 200ms.

- Al iniciar el programa de coloco signed delante del int16 dato para que pueda contar también de forma negativa, en el caso que no se coloque, no contara de la manera adecuada.

5.CONCLUSIONES

- Se logró comprender el funcionamiento de un LCD con ayuda de su construcción y las funciones para programarlo, mediante el microcontrolador PIC 16F877A.
- Se aplicó y entendió las funciones especiales para el LCD como printf , lcd_gotoxy y %4ld; que nos ayudan a realizar funciones planteadas en el laboratorio.
- Logramos completar el reto propuesto en el laboratorio, logrando desplegar diferentes mensajes como también realizar contar y descontar números con pulsadores.
- Se añadió un enable para habilitar y deshabilitar todo el programa con ayuda de un pulsador y con este mandar un mensaje de deshabilitado.

lunes, 4 de noviembre de 2019

Laboratorio Nro 10. Programación con Display de segmentos

PROGRAMACIÓN CON DISPLAY DE 7 SEGMENTOS


1. 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.
2. MARCO TEÓRICO 

        2.1 Variables de nuestro PICC compiles

Imagen relacionada

        2.2 Display de 7 segmentos

El display 7 segmentos es un componente electrónico muy utilizado para representar visualmente números y letras, es de gran utilidad dado su simpleza para implementar en cualquier proyecto electrónico.

Cada Led trabaja con tensiones y corrientes bajas por lo tanto se pueden conectar directamente a compuertas lógicas o pines de salida de un micro controlador, igualmente siempre es recomendable para aumentar la vida util de los mismos, conectarle una resistencia en serie entre el pin de salida del micro controlador y el de entrada del 7 segmentos, la intensidad lumínica en este caso dependerá del valor de la resistencia agregada.




        2.3 Entrenador de PICS



        2.4 Software Proteous

Proteus es una aplicación para la ejecución de proyectos de construcción de equipos electrónicos en todas sus etapas: diseño del esquema electrónico, programación del software, construcción de la placa de circuito impreso, simulación de todo el conjunto, depuración de errores, documentación y construcción.

  • Se utilizara la simulación del módulo entrenador en el software Proteous


3. EVIDENCIA DE TAREAS DEL LABORATORIO





4. OBSERVACIONES

- En el laboratorio el programa que se nos brinda como guía no compilaba ya que faltaba asignar la variable i, que fue utilizada para el void BIP, este genera salidas mediante el parlante, una vez asignada el programa compilo con éxito.
- Al simular el programa en proteous no se podía visualizar de forma correcta el programa, ya que el encendido de un display afectaba al otro, por lo que se añadió output_a(0) debajo de la configuración de nuestros 3 displays.
 - Para poder visualizar todos los segmentos completos en la simulación también es importante considerar colocar el potenciometro en su 100 %.


5.CONCLUSIONES


- Se comprendió y se aplico el display de 7 segmentos, mediante el análisis de su construcción y teoría necesaria para poder lograr encender números en cada uno de ellos.
- Se logro modificar y lograr obtenerla correcta simulación en Proteous, realizando cambios al programa sin interferir con los displays.
- Se logro entender la teoría de multiplexación y llegar a  aplicarlo en el reto propuesto en el laboratorio con displays, mediante el microcontrolador PIC 16F877A.

Laboratorio Nro 9. Programación básica con bucles de control.

PROGRAMACIÓN BÁSICA CON BUCLES DE CONTROL


1. 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.
2. MARCO TEÓRICO 

        2.1 Bucle While 

El bucle while o bucle mientras es un ciclo repetitivo basado en los resultados de una expresión lógica; se encuentra en la mayoría de los lenguajes de programación estructurados. El propósito es repetir un bloque de código mientras una condición se mantenga verdadera.




        2.2 Bucle if

El bucle if realiza una acción si se satisface una condición particular.


if( conditional_test )
        {
            List of stitcher rules to execute if the condition is TRUE
        }

        2.3 Bucle if-else

Ejecuta una sentencia si una condición específicada es evaluada como verdadera. Si la condición es evaluada como falsa, otra sentencia puede ser ejecutada.

if( conditional_test )
        {
            List of stitcher rules to execute if the condition is TRUE
        }
else
        {
            List of stitcher rules to execute if the condition is FALSE
        }
   
       2.4 Bucle for

El bucle for es una estructura de control en programación en la que se puede indicar de antemano el número mínimo de iteraciones.​ Está disponible en casi todos los lenguajes de programación imperativos.



        2.5 Entrenador de PICS

  • Diagrama de bloques

    

        2.6 Software Proteous

Proteus es una aplicación para la ejecución de proyectos de construcción de equipos electrónicos en todas sus etapas: diseño del esquema electrónico, programación del software, construcción de la placa de circuito impreso, simulación de todo el conjunto, depuración de errores, documentación y construcción.

  • Se utilizara la simulación del módulo entrenador en el software Proteous


3. EVIDENCIA DE TAREAS DEL LABORATORIO






4. OBSERVACIONES 


-Es necesario considerar los antirebotes, porque al realizar la simulación físico, saltara de una paso al otro sin presionar el pulsador.
-No olvidar colocar las librerías del PIC que estamos usando y la frecuencia del reloj en este caso son 20MHz, ya que si no colocamos esto no funcionara nuestro programa.
- En el caso que nuestro programa no funcione debemos de aplicar la simulación paso a paso para descartar cualquier posible error.


5.CONCLUSIONES


- Se logro entender el funcionamiento de los bucles while, if, if else, for, para lograr terminar la programación del reto propuesto en el laboratorio.
- Se aplico la sentencia salida= salida <<1 para lograr desplazar la variable de salida en este caso los Led's hacia la izquierda y salida= salida >>1, realiza el desplazamiento hacia la derecha.
- Se logro proponer un programa para realizar el barrido de los Led's, ademas de que todo comience en 0, esto se logro gracias a lo aprendido en las sesiones anteriores y teoría revisada,

Laboratorio Nro.13 Lectura de entradas analógicas

LECTURA DE ENTRADAS ANALÓGICAS 1. COMPETENCIA ESPECIFICA DE LA SESIÓN: Lecturas analógicas de un canal del PIC. Configurar de un...