martes, 19 de junio de 2012

Actividad 3

Programación de un microcontrolador de 8 bits

   Esta actividad está pensada para aprender a programar un microcontrolador (en este caso un PIC16F84A) a través de dos idiomas de programación: Ensamblador y C. Se realizará una programación básica del mismo, configurando un LED a la salida del puerto "Rb7", haciendo que este prenda y apague de manera alternada cada 200ms aproximadamente, usando un clock de cristal de 4MHz. Esto es conocido en el mundo de los sistemas embebidos (uC) como "Hola Mundo". Para esto, hay que tener conocimiento previo del pinout del uC, el Master Clear (reset) y el reloj del sistema (clock); y el uso de los programas a utilizar.

Realización de la actividad


- Esquemático del circuito realizado en KiCad:






















- Resolución del programa solicitado en idioma Ensamblador:
   Luego de lo aprendido sobre el idioma Ensamblador, se puede pasar a la programación del microcontrolador. Para esto, usamos el programa MPLAB. Este programa se encarga de transcribir el código escrito (dígase las distintas instrucciones y directivas) al idioma que luego será leído y reconocido por el microcontrolador. Como se puede ver en la imagen de lo escrito en el MPLAB, se va explicando cada paso realizado a través de comentarios, los cuales deben ir escritos luego de un ";".









;========================================================================
; Programa realizado para lograr que un LED parpadee al ser conectado al microcontrolador
;========================================================================


LIST                     p=PIC16F84A ; Declaro el microcontrolador que voy a usar
    INCLUDE            <p16F84A.inc>
__CONFIG      _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
    ERRORLEVEL   -302


;========================================================================
; Variables
;========================================================================
    CBLOCK 0x0C
var1
var2
    ENDC


;========================================================================
; Marco el inicio al programa
;========================================================================


    ORG         0x000 ;Vector de Reset
Inicio
    bsf            STATUS,RP0 ; Cambio al Bank 1
    bcf            TRISB,7                 ; Configuro el bit 7 del PORTB comos salida
    bcf            STATUS,RP0 ; Cambie al Bank 0


;========================================================================
; Programa principal
;========================================================================


Loop
; Enciendo el LED
    bcf          PORTB,7
    call         delay_200ms


; Apago el LED
    bsf          PORTB,7
    call         delay_200ms
    goto       Loop


;========================================================================
; Subrutinas
;========================================================================
; Creo una subrutina para retado de 200ms del LED


delay_200ms
    decfsz var1,F
li
    decfsz var2,f
    goto li
    return ; Termina la subrutina


;========================================================================
    END ; Finalizo el programa












Realización del programa solicitado en idioma C:
   Luego de lo aprendido sobre el idioma C, nos dirigimos a la programación del microcontrolador en este idioma. Para esto, utilizaremos el programa CCS. Este programa se encarga de transcribir el código escrito ( ejemplo: directivas las cuales van detras de un "#", parametros, que se colocan entre "()" y por ultimo, funciones, las cuales van entre "{}" ) al idioma que luego será leído por el microcontrolador. Para ello se debe crear un programa principal, el nombrado void main, en el cual ingresamos todos los pasos que deberá realizar el microcontrolador en relación con el LED.





#include "D:\Led_84c_1\Led_84c_1.h"






void main()
{


   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);


   // TODO: USER CODE!!
   while (TRUE)
   {
      output_high (PIN_B7);
      delay_ms (200);
      output_low (PIN_B7);
      delay_ms (200);
   }
 
}









domingo, 3 de junio de 2012

Actividad 2


Desarrollo de la actividad:
Actividad dividida en dos casos.

Primer Caso.

Para este caso realizamos mediciones con el osciloscopio para las cuales utilizamos un puerto serie RS232 para poder registrar y almacenar las señales generadas por el terminal TX de la PC y así, luego, realizar un análisis de las señales medidas.






Con el programa Hyperterminal configurado en 9600 bps N-8-1 (sin paridad, ocho bits, un bit de stop).

1) Medimos la señal generada por la PC en el terminal TX (pin 3 del conector DB9) al presionar la tecla A mayúscula.







2) Responder las siguientes preguntas basándose exclusivamente en las mediciones almacenadas en memoria:
a) En estado de reposo (sin presionar tecla alguna) ¿qué tensión se mide en la linea?
b) El bit de start marca el comienzo de transmisión. ¿Cuánto tiempo dura y qué valor de tensión se mide? ¿Que valor de tensión tiene un uno lógico y un cero lógico?
c) ¿De qué manera a partir de lo medido se puede inferir que el dato transmitido es la tecla A?
d) ¿Se puede observar el bit de STOP? Si, no porque?
e) Cuanto tiempo tarda en transmitirse un byte a la velocidad establecida.


a) En estado de reposo se mide 12v en la linea.



b) El bit de start tiene un valor de 23v y 104uSegs. El 0 lógico vale 23v, es decir, es cuando la señal está luego de su flanco de subida, en su nivel alto. Y el 1 lógico 0v, es cuando está su nivel bajo luego del flanco de bajada.

c) Se puede determinar a través de su código ASCII en binario el cual es: 01000001.
Esta transformación de idioma se utiliza mucho en las programaciones de varios componentes para distintas plataformas.

d) Si, se puede, ya que es el que indica la finalización de la transferencia.

e) Tarda 600uSegs en transmitir un byte.




3) Repetir el punto anterior a fin de consolidar los datos medidos presionando otras teclas en el teclado de la PC. Justificar la observación.


Letra D. Código Binario: 01000100


Letra F. Código Binario: 01000110


Letra W. Código Binario: 01010111







Segundo Caso.
En este caso se aplicará lo visto en el caso anterior en los protocolos de comunicación serie. Para ello se registrará la señal generada por un control remoto para así poder analizar la trama que genera el mismo.

1) Control remoto utilizado: Control de un televisor Samsung de 29 pulgadas.


http://www.todomercado.com/tm/aviso/img_avisos/ml_24934093.jpg



2) Circuito armado


3) mediciones realizadas:

 a)



Tecla de canal 5





Basándose en la inforamción leida y analizada previamente, en las imágenes capturadas responder las siguientes preguntas:

   a) ¿Cómo se diferencia el uno y el cero?
   b) ¿Cuántos bits en total se transmiten?
   c) ¿Cómo está compuesta la trama?
   d) ¿Con qué perioricidad se repite la trama en el tiempo?
   e) ¿Para qué se modula la señal IR? 


 a) Como ya se pudo observar y señalar en el Primer Caso, los 0 lógicos son los niveles altos de la señal y los 1 lógicos, los niveles bajos.
 
 d) La trama se repite en un periodo de 1 segundo.




Repetimos lo realizado posteriormente pero esta vez presionando otros botones del control remoto: 
 
Tecla canal 3



Tecla de canal 1





Conclusiones:


Luego de la realización del Primer Caso con el programa
Hyperterminal y el Segundo Caso con un control remoto de un aparato doméstico, a travéz de las mediciones realizadas con el osciloscopio, luego de analisarlas logramos comprender basicamente algunos de los protocolos de comunicación usados en la actualidad tales como el Puerto Serio RS232 y el traspaso de señales de forma Infra Roja que utilizan los controles remotos de varios de los electrodomesticos domésticos. Como se pudo observar en las distintas actividades, estos dos protocolos cuantan con una comunicación de una señal que se repite periodicamente, la cual tiene un tiene un bit de START y un bit de STOP y dura cierto tiempo, el cual es determinado por la velocidad de transmisión de bits que tiene cada uno.







sábado, 2 de junio de 2012

Actividad 1



Actividad 1


En esta actividad se aprenderá el uso de un software de diseños, para ello diseñaremos un programador para microcontroladores pic (pickit2)

a) El programa que usamos para diseñar el pickit2 es el KICAD versión 2012. Este programa es de uso libre y se puede descargar gratuitamente en la página oficial. El programa permite realizar un proyecto en el cual se guardarán todos nuestros diseños del esquemático y el del PCB, además se guardarán nuestras configuraciones de librerías. También se pueden realizar diseños propios de los componentes y posee un visualizador Gerber.






Las extensiones que utiliza el programa son las siguientes:
  •  Para el proyecto principal la extensión es .pro
  •  Para los esquemáticos .sch
  •  Para el diseño en PCB .brd
  •  Los archivos de librería del esquemático son .lib y los del editor de PCB son .mod ( también hay  .wings que son para la visualización en 3D )




b) Esquemático realizado en KICAD

PICKIT 2  Versión 1

PICKIT 2 Versión 2



El tamaño de la hoja utilizada es A4 , se usaron labels para que el diseño del esquemático quede más claro y sea más sencillo de visualizar.

Una vez finalizado el esquemático se deben realizar una serie de pasos para verificar si son correctas las conecciones y luego pasar al diseño de PCB:

  • Revisar por ultima vez el esquemático en busca de posibles errores
  • Asignarles los valores a los componentes con la herramienta Annotate Schematic
  • Realizar el Electrical Rule Check (esta herramienta busca errores en las conecciones y luego el resultado lo pone en gráfico por orden de prioridades)
  • Generar la netlist que sirve para que cuando pasemos el esquemático al diseño el programa reconozca los puntos de conección )
  • Generar la lista de materiales con la herramienta BOM
  • Asignar lo footprints adecuados para cada componente con el CvPCB


   Muchas veces los footprints que deseamos usar no están incluidos en el programa por lo cual deberemos descargarlos de la pagina oficial de KICAD o diseñarlos nosotros mismos. En el caso de descargarlos se deben colocarlos en el programa de la siguiente manera:
   Para cualquier tipo de archivo de librearía (esto quiere decir .lib o.mod ) la carpeta que los contenga debe estar en donde se instalo el programa. Una vez que la carpeta esta en el lugar correspondiente entraremos en el esquemático y entraremos en preferences y luego en libraries desde la pantalla que aparece se carga primero la carpeta donde se encuentran los archivos y luego se cargan los archivos. Lo mismo se realiza con los footprints pero en el editor de PCB.



Lista de componentes necesarios: 

Capacitores:
-15pF  (2)
-47uFx25v (2)
-100nF (2)
-10uFx50v (1)

Diodos:
-1N4148 (2)
-LED Rojo (1)
-LED Verde (1)

Inductor:
-600uHy (1)

Conectores:
-USB_B (1)
-RJ12 (1)

Transistores: 
-BC548 (3)
-BC557 (1)

Resistencias:
-1K (1)
-4K7 (2)
-2K7 (1)
-10K (2)
-10K (3)
-100K (1)
-33 (3)
-470 (2)
-100 (1)

Microcontrolador: 
-PIC18F2550

Otros:
-Cristal 20MHz
-Switch RESET



c) PCB realizado en KICAD

PICKIT 2 Versión 1


PICKIT 2 Versión 2



Para empezar el diseño en PCB se debe realizar una lectura de la netlist. Una vez realizado eso con la capa de dibujo delimitar el área de nuestra placa. Luego de acomodar los componentes en la placa se debe seleccionar el tamaño de las pistas de ruteo en este caso se usaron pistas de 24 miles para las pistas comunes y de 30 miles para Vcc y Gnd. El ruteo se realiza manualmente en la capa de Back(PgDn), los pad son de 7 miles ya que los que vienen por default son muy pequeños ( 6 miles ). Los footprints estas realizados en la capa SilkS_Front.
La impresión se realiza en una impresora virtual PDF y se realiza en dos partes. Para imprimir el lado cobre en las opciones de impresión se selecciona Back sin espejar ya que el programa ya lo diseña en espejo. Los footprints se imprimen seleccionando la opción SilkS_Front y espejo.

Impresiones realizadas en pdf


Lado cobre

PICKIT 2 Versión 1
PICKIT 2 Versión 2

Footprints

PICKIT 2 Versión 1

PICKIT 2 Versión 2


La impresión de los footprints no esta en espejo por que se realizo luego con la impresora.

d)

Para la impresión del circuito se uso papel fotográfico de 180gr y tita de toner esto se realiza para que en el proceso de planchado la tita se pegue a la placa de cobre.

Pasos a seguir para procesar la plaqueta:
  • Limpiar bien el lado del cobre con lana de acero y luego con alcohol 
  • Planchar durante 5 0 10min con la plancha a una temperatura aproximada de 210°C
  • Retirar el papel sobrante y llevarla al ácido ( percloruro férrico ) en baño maría durante 15minutos 
  • Lavar bien la plaqueta con agua y retirar con lana de acero la tinta que quedo del planchado
  • Planchar los footprints pos 5 minutos 
  • Fluxear la plaqueta esto se realiza para que no se oxide el cobre 
Para el agujereado de la plaqueta se usaron mechas de 0.7mm para los componentes comunes, 1.2 para el USB_b y el RJ12 y 3mm para el agujero del tornillo. El corte de la placa se realizo con una sierra manual y luego se lijo para obtener un mejor acabado.