viernes, 13 de diciembre de 2019

laboratorio 13

Laboratorio N°13

PROGRAMACIÓN DE MICRO-CONTROLADORES PIC
Lectura de entradas Analógicas.

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


2.1 Manejo de entradas analógicas con microcontrolador:

La lectura analógica de cualquier dispositivo discreto se lleva a cabo por medio de la "cuantificación", que consiste en representar la mayor parte de valores posibles de una señal continua en el tiempo en una codificación binaria, si el valor de datos cuantificados es muy alto se dice que esa entrada analógica es de alta resolución, caso contrario será de baja resolución.



Resultado de imagen para MANEJOS DE ENTRAS ANALOGICAS


2.2 Sensor analógico LM35:

Los sensores de temperatura como el LM35 son dispositivos que transforman los cambios de temperatura en cambios en señales eléctricas que son procesados por un equipo eléctrico o electrónico. Hay tres tipos de sensores de temperatura, los termistores, los RTD y los termopares.

El LM35 es un sensor de temperatura con una precisión calibrada de 1 °C. Su rango de medición abarca desde -55 °C hasta 150 °C. La salida es lineal y cada grado Celsius equivale a 10 mV, por lo tanto:


150 °C = 1500 mV
-55 °C = -550 mV1​


Opera de 4v a 30v.

Resultado de imagen para SENSORES DE TEMPERATURA



3. EVIDENCIA DE TAREAS EN LABORATORIO:








Observaciones:



Para obtener un rango de salida de 0 – 100, se usó la siguiente relación 1023/100 = 10.23, el cual determina el
factor al cual debe ser dividido nuestra lectura  para obtener nuestro rango apropiado.

Se observo que es necesario establecer bien los valores con los que se van a trabajar, ya que al inicio del laboratorio se tuvo una
dificultad para trabajar con las dos variables de tensión y temperatura las cuales fueron solucionadas al introducir las variables en
la programación en el caso del "float temperatura;".

Al inicio se coloco la definición  a la variable con int lo que no permitía hacer el uso de las mediciones que se debían aplicar a este
laboratorio la solución fue aplicar el float el cual nos permite hacer las mediciones respectivas.

Conclusiones:

Se logro utilizar el PIC 16F877a logrando realizar las aplicaciones desarrollando y ejecutando la programación necesaria para cumplir con las mediciones de temperatura con las entradas analógicas del PIC.

Se comprobó la programación en el entrenador y en el Proteus para verificar el cumplimiento de la misma, en ambos casos funciono correctamente de acuerdo a los valores que se solicitaron.

Es importante no almacenar la lectura analógica en una sola variable para la realización del problema planteado (variable de temperatura y variable de voltaje), ya que puede haber conflictos en el almacenamiento de un determinado valor requerido.

Para poder mostrar solamente entero en la variable grados ( Temperatura) en el LCD, siendo esta variable de tipo decimal, se usó la siguiente expresión “ %1.0f”, con el cual indicamos que se muestre sólo la parte y ningún decimal.




laboratorio 12

Laboratorio N°12

PROGRAMACIÓN DE MICRO-CONTROLADORES PIC

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. CONTENIDOS A TRATAR
  • Interrupciones
  • Timer cero.


3. Teoria

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:




TIMER0  PIC 16F877A

El timer0 PIC es un temporizador contador de 8 bits, el registro TMR0 es el temporizador, 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.

TIMER0:

Los Timer0 de un microcontrolador son registros que incrementan con cierto periodo, estos pueden ser de 8 bits o 16 bits, se les pueden añadir preescalers y postsclaers, y también cuentan concaracterísticas para comparar su registro con otros para formar canales PWM entre otros.

El microcontrolador PIC16F887 tiene 3 temporizadores:
  • Timer 0 (8 bits)
  • Timer 1(16 bits)
  • Timer 2(8 bits)






3. EVIDENCIA DE TAREAS EN LABORATORIO:










           OBSERVACIONES:

Durante el presente laboratorio se aprendió el correcto funcionamiento del Timer0 en el PIC 16F877A, así
como los algoritmos necesarios en relación a la programación para su adecuado manejo.

Tanto en un temporizador ascendente como descendente  la variable centenas debe estar siempre
incrementándose y no decrementándose, ya que esta variable realiza la operación de funcionamiento del
temporizador ya sea para aumentar tiempo o quitar tiempo.

Se utilizó una variable contador, el cual me permite saber si el temporizador ya realizó la cuenta regresiva
programada y de esa manera recién hacer sonar los bips correspondientes.

CONCLUSIONES

Como el cronómetro solo es hasta 59 minutos si se supera este valor minutos rse reiniciara tomando el valor
de 0 de nuevo.

Para el desarrollo del problema propuesto en el laboratorio, se hizo uso de 3 pulsadores D0, E0, D1. Con e
D0 y E0 podemos incrementar el cronometro en segundos y minutos respectivamente, y con el D1 podemos
iniciar la cuenta regresiva de dicho temporizador.


Se debe usar un delay  después de presionar cada pulsador, esto con la finalidad de evitar falsos disparos y
hacer que nuestra configuración de segundos y minutos sea lo más precisa posible ya que de lo contrario  al
presionar un pulsador, este aumentaría desproporcionalmente.

Se logro elaborar la programación que satisfaga las condiciones que se proporcionaron en este laboratorio,
logrando un temporizador descendente controlando su inicio y determinando el tiempo a descender.

martes, 12 de noviembre de 2019

laboratorio 11

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.

III. FUNDAMENTO TEÓRICO

 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;



bool

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

char

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

unsigned short int


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

short int

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

 unsigned long int

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

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

 int (16 bits)

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

 int (32 bits)

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

 unsigned int (16 bits)

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

 unsigned int (32 bits)

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

 double

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

 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.


Enteros

Los tipos de datos enteros son : short, int, long y long long, cada uno representando un numero entero de un tamaño o capacidad determinado. Según el compilador y la plataforma de hardware, cada uno de estos tipos de dato puede ocupar desde 1 byte hasta 8 bytes en memoria. Cabe añadir que en caso que no se declare si es con o sin signo, se toma con signo.


      -> Variables enteras: Con signo (+, -) y sin signo (+)
  • Enteros de 8 bits  -> 1 byte
  • Enteros de 16 bits -> 2 bytes
  • Enteros de 32 bits -> 4 bytes
  • Enteros de 64 bits -> 8 bytes

Reales

Los tipos de datos que representan a los números reales, ya que utilizan un sistema de representación basado en la técnica de coma flotante, que permite operar con números reales de diversas magnitudes, mediante un número decimal llamado mantisa y un exponente que indica el orden de magnitud.
La forma de declarar una variable flotante es escribiendo en una línea uno de los tipos de datos flotantes y a continuación el nombre de la variable y tal vez algún valor que se les quiera dar.

-> Variables reales (en como flotante)
  • Reales de 32 bits -> 4 bytes
  • Reales de 64 bits -> 8 bytes
  • Reales de 128 bits -> 16 bytes

Caracteres

Los caracteres se representan utilizando el tipo de char, que tiene solo 1 byte de tamaño. Este tipo se utiliza para representar los 256 caracteres de la tabla de caracteres del sistema. El tipo char es tambien un tipo entero, ya que puede tomar valores de 0 a 255. Por lo tanto también puede ser signed o unsigned. 

-> Variable no Numericas
  • Lógicas -> 1 - 8 bytes
  • Alfanumericas -> "n" bytes




V. VÍDEO DEMOSTRATIVO



VI. OBSERVACIONES Y CONCLUSIONES

        a. Observaciones
  • Fue necesario utilizar varias variables para poder realizar la compilación del programa, tales como definir las decenas, centenas y unidades para que se pueda visualizar en los displays los dígitos que se configuren siendo el máximo numero de 999 y el mínimo de 000.
  • 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


        b. Conclusiones
  • Se utilizo el PIC 16F877A para realizar todas las tareas designadas, ejecutando así la programación a traves de la revisión del software PIC C COMPILER, que permite compilar y así establecer si existe alguna falla en la programación seguidamente se uso el PICKIT que nos permitió transmitir el código al PIC.
  • Se logro solucionar los inconvenientes que existieron tales como lo que se debía visualizar en el display, este no visualizaba como se esperaba, la medida de solución fue utilizar el watch window, esta interfaz nos permite visualizar los datos que deberían aparecer en el display.
  • 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

laboratorio 10

martes, 5 de noviembre de 2019


LABORATORIO N11

MICROCONTROLADORES

Programación con LCD



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 SESIÓN

  • Conocer el Display LCD y su funcionamiento
  • Programar eficientemente el LCD
  • Programar HMI para proyecto actual
III. FUNDAMENTOS TEÓRICOS




¿Qué es un LCD?   
  • El LCD(Liquid Crystal Dysplay) o pantalla de cristal líquido es un dispositivo empleado para la visualización de contenidos o información de una forma gráfica, mediante caracteres, símbolos o pequeños dibujos dependiendo del modelo. Está gobernado por un microcontrolador el cual dirige todo su funcionamiento.
  • En este caso vamos a emplear un LCD de 16x2, esto quiere decir que dispone de 2 filas de 16 caracteres cada una. Los píxeles de cada símbolo o carácter, varían en función de cada modelo.
¿Cómo es su conexionado?
  • 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 Anodo de led backlight y cátodo de led backlight.



Pines de alimentacion:
  • Vss: Gnd
  • Vdd: +5 V
  • Vee: Es el pin que controla el contraste del LCD, lo regulamos conectando un potenciometro de 10K conectado a Vdd.

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 de este. 
  • En este caso empleamos la librería "lcd.c", la cual hemos modificado. Siempre que utilicemos una librería de este tipo tendremos que analizarla para saber cuales son los pines de control y los pines para el Bus de datos, en este caso podemos observar que están definidos al comienzo de la misma.
                #define LCD_ENABLE_PIN PIN_D0
                #define LCD_RS_PIN PIN_D1
                #define LCD_RW_PIN PIN_D2
                #define LCD_DATA4 PIN_D4
                #define LCD_DATA5 PIN_D5
                #define LCD_DATA6 PIN_D6
                #define LCD_DATA7 PIN_D7
  • En el resto de la librería se puede encontrar todas las estructuras necesarias así como las funciones que nos permiten utilizar nuestro LCD.
  • Podemos encontrar funciones como :
                lcd_init: inicializa el lcd.
                lcd_gotoxy: establece la posicion de escritura en el lcd.
                lcd_putc: nos muestra un dato en la siguiente posición del lcd, podemos emplear                   funciones como \f para limpiar el display, \n cambio a la segunda línea,

                 \b mueve una posición atrás.
                lcd_getc(x,y): devuelve caracteres a la posición x,y.
                Otras funciones: lcd_send_nibble(BYTE n), lcd_send_byte(BYTE address,                            BYTE n).



V. VIDEO DEMOSTRATIVO




  a. Observaciones
  • Es necesario asegurarse que la programación que lo que se este realizando sea lo que se esta solicitando, es decir, que no es solo completar o añadir algo dado que si no se  entiende la programación no se podrá solucionar un problema que pueda surgir.
  • Es necesario definir las variables con las que se van a trabajar, para que al momento de compilar no exista conflicto y menos aún  errores que impidan realizar el correcto desarrollo del laboratorio
  • Para programar Microcontroladores PIC en un tiempo reducido y con un nivel muy bajo de complejidad, podemos utilizar el compilador PCW.


  b. Conclusiones

  • Se realizaron diversas condiciones para realizar las tareas a realizar, tales como la condición "if" y "else if" que ayudaron a cumplir las condiciones.
  • Se logro realizar la programación tanto en el simulador como en el entrenador notando el correcto funcionamiento del código de programación realizado.
  • Se concluye que la pantalla LCD es mucho mas practico para utilizar a diferencia de un display, ademas ene la pantalla LCD se pueden mostrar muchos mas cosas que en un display.
  • Se concluye que la programación de pantallas de LCD con el uso 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

martes, 22 de octubre de 2019

laboratorio 9

MICROCONTROLADORES
laboratorio 9

Herramientas de Programación Hardware y Software


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

3. MARCO TEÓRICO:


Es un microcontrolador de Microchip Technology fabricado en tecnología CMOS, su consumo de potencia es muy bajo y además es completamente estatico (esto quiere decir que el reloj puede detenerse y los datos de memoria no se pierden) capaz de realizar diferentes actividades que requieran del procesamiento de datos digitales y del control y comunicación digital de diferentes dispositivos.
características del PIC16F877a:
 Microcontrolador PIC 16F877A de 8 bits fabricado por Microchip.
  • Memoria ROM: 8Kb
  • Memoria RAM: 368 x 8 bytes
  • Pines I/O: 33
  • Frecuencia: 20 Mhz con cristal externo
  • Permite programación ICSP

  • Frecuencia de operación 0-20 MHz
  • Oscilador interno de alta precisión
    • Calibrado de fábrica
    • Rango de frecuencia de 8MHz a 31KHz seleccionado por software.
    • Voltaje de la fuente de alimentación de 2.0V a 5.5V
      • Consumo: 220uA (2.0V, 4MHz), 11uA (2.0 V, 32 KHz) 50nA (en modo de espera)
    • Ahorro de energía en el Modo de suspensión
    • Brown-out Reset (BOR) con opción para controlar por software
    • 33 pines de entrada/salida
      • alta corriente de fuente y de drenador para manejo de LED
      • resistencias pull-up programables individualmente por software
      • interrupción al cambiar el estado del pin
    • memoria ROM de 8K con tecnología FLASH
      • El chip se puede re-programar hasta 100.000 veces
    • Opción de programación serial en el circuito
      • El chip se puede programar incluso incorporado en el dispositivo destino.

      • 256 bytes de memoria EEPROM
        • Los datos se pueden grabar más de 1.000.000 veces
      • 368 bytes de memoria RAM
      • Convertidor A/D:
        • 14 canales
        • resolución de 10 bits
      • 3 temporizadores/contadores independientes
      • Temporizador perro guardián
      • Módulo comparador analógico con
        • Dos comparadores analógicos
        • Referencia de voltaje fija (0.6V)
        • Referencia de voltaje programable en el chip
      • Módulo PWM incorporado
      • Módulo USART mejorado
        • Soporta las comunicaciones seriales RS-485, RS-232 y LIN2.0
        • Auto detección de baudios
      • Puerto Serie Síncrono Maestro (MSSP)
        • Soporta los modos SPI e I2C.

      Digrama Interno




4. EVIDENCIA DE TAREAS EN LABORATORIO:

.



|

5. OBSERVACIONES:


  • los fusibles  tienen diferentes acciones que   se pueden  implementar  como es el caso  noprotect 

  • algunos pulsadores  eran muy deficientes haciendo  que  se  salten  cada secuencia  y se tubo  que cambiar  los pines en  el programa 

  • tener en cuenta  la lógica que se debe implementar  y también  que al funciones que sabemos del arduino se puede implementar en el pic como es es caso  boolean  o  while  for  .etc  haciendo  fácil  el uso del programa 


  • 6. CONCLUSIONES:
  • logramos  implementar  algunas funciones  como   el bucle  for   y ciclo  for para  que   el  programa  pueda funcionar

  • se pudo  implementar  nuevas  funciones y lógicas   en el programa  logrando  una secuencia  como el  desplazamiento  de los bits 
  •  se identifico  algunas   parámetros  como los fusibles y  realización  de los bits  como   salidas  que eran  0b0000001