Actividad 1 - Herramientas de Diseño - KICAD

Esquematico 
El esquemático es la primera instancia del diseño de la placa. Los componentes simbólicos se encuentran en las librerías, las cuales unas cuantas vienen por default (las básicas) y muchas más de variados tipos o categorías, descargables de internet. Se seleccionan los componentes a utilizar, y de acuerdo al circuito a realizar se deben conectan los componentes entre sí. Las pistas se pueden etiquetar, y en el caso que 2 pistas tengan la misma etiqueta, se dice que están unidas, como por ejemplo, generalizar la Tierra o la Alimentación con sus respectivas etiquetas. Esta interfaz incluye una ''inspección'' del circuito esquemático, el ERC (Electrical Rules Check) que es un examen que uno inicia, y este notifica lo errores del circuito como conexiones mal establecidas, o etiquetas mal escritas o no coincidentes, etc. Posterior a esto se debe generar la Netlist, en la cual uno elije los Footprints correspondientes para los componentes.

 
DESCARGAR ESQUEMATICO EN FORMATO PDF


Artwork (Printed Circuit Board PCB)
El Atwork es en si el circuito en el que va a circular la corriente sobre el cobre. Este se diseña en la interfaz del KICAD denominada ‘‘PcbNew’’, junto con la Serigrafía. En esta interfaz de cargan los footsprints interconectados (se abre el archivo de extensión .brd), y se empiezan a disponer los componentes a preferencia del diseñador de la placa. Se tienen en cuenta consideraciones tales como: -los puertos deben estar en los bordes de las placas -la distancia entre un componente y otro -tener en cuenta si los componentes deben disponer o no de un disipador - el ancho mínimo de las pistas de Alimentación y Tierra y demás. Esta interfaz incluye una ''inspección'' del circuito, el ERC, (Electrical Rules Check) que es un examen que uno inicia, y este notifica lo errores del circuito como conexiones mal establecidas, superposición de componentes, incluso también notificando si uno se olvido de nombrar algún componente. El Atwork se adhiere al lado de Epoxi de la placa (lado contrario al de cobre) mediante un proceso en el cual se plancha el atwork (la impresión en papel fotográfico de la misma) sobre la placa, alrededor de 2 minutos (nótese que para ese entonces el papel debe estar medio amarronado y se empieza a traslucir el dibujo del circuito) después la placa se la enfría en agua, y se le retira el papel, quedando así lo impreso sobre la placa.
 

Serigrafía
 La serigrafía es el esquema de las componentes, en vista real, que lo ayudaran a guiarse a uno a la hora de colocar los componentes en su lugar, al soldar cada uno de ellos. Este esquema se diseña junto con el impreso, en la misma interfaz del KICAD. Los componentes de este esquema se eligen previamente en la Netlist (lista de componentes), donde hay muchas variedades de Footsprints (disposcicion de las componentes en la placa) que vienen por default, visualizables en 2D mediante PDF, y también en 3D. Además si uno quiere puede descargar packs de Footsprints, y como estos se ven en 2D y 3D. La Serigrafía se adhiere al lado de Epoxi de la placa (lado contrario al de cobre) mediante un proceso en el cual se plancha la serigrafía (la impresión en papel fotográfico de la misma) sobre la placa, alrededor de 2 minutos (nótese que para ese entonces el papel debe estar medio amarronado y se empieza a traslucir el dibujo del esquema) después la placa se la enfría en agua, y se le retira el papel, quedando así lo impreso sobre la placa.
DESCARGAR SERIGRAFIA EN FORMATO PDF 


Cosas a tener en cuenta

•    Componentes Críticos:
En nuestro caso, diseñamos el circuito con footprints predeterminados antes de comprar los componentes. Con los componentes más comunes no tuvimos inconvenientes, pero con el conector RJ12 tuvimos muchos problemas. 

No conseguimos un RJ12 que tenga el mismo footprint (Footprint hecho por un usuario y compartido en las librerías de Kicad) que habíamos usado en el diseño. Por lo tanto, sacamos la siguiente conclusión:
DEBEMOS COMPRAR LOS COMPONENTES CRITICOS ANTES DE DISEÑAR EL ATWORK CON CUALQUIER FOOTPRINT
Llamamos componentes críticos a puertos, switchs, algunos capacitores electrolíticos, etc. 
Se deben conseguir previamente por el hecho de que vienen de fábrica con muchas variedades de footprint, una vez comprados, debemos buscar los footprint de dichos componentes adquiridos.

•    Ancho de pistas
Diseñamos el circuito en base a un ancho de pista que viene por default en el programa (0,203 mm), con lo cual después nos dimos cuenta que era demasiado delgada a la hora de soldar y las pistas se levantaban o no podían contener el estaño suficiente y al planchar se hacía difícil la adhesión de la tinta al cobre. 

Por esto recomendamos pistas de mínimo 0,7 mm (para pistas que no son de alimentación o tierra) y de 1,016mm para pistas de alimentación y tierra


Fotos de la actividad
Dejamos unas fotos de la actividad ya finalizada y funcionando. Hacer click en las imagenes para ampliarlas






 




Actividad 2 - Mediciones con captura de datos usando el osciloscopio


Actividad 2 Primer Caso:

1) Primero que nada,  se debe armar el cable con el conector DB9 hembra en un extremo usando los terminales RX TX y GND (2 3 y 5 respectivamente) .En el otro extremo conectar los tres cables a un poste de pines e identificarlos. Usar un protoboard para realizar la medición.

2) Abrir el programa Hyperterminal  y configurarlo en 9600 bps N-8-1 (sin paridad, ocho bits, un bit de stop).

3) Medir cuidadosamente a fin de no generar cortocircuitos involuntarios con el osciloscopio la señal generada por la PC en el terminal TX (pin 3 del conector DB9), al presionar la tecla A (mayúscula). Recomendación: Ajustar la sensibilidad del canal a 5V/div. La escala de tiempos a 200 us/div. El trigger en flanco ascendente barrido único para capturar la imagen

 4) Capturar el byte y almacenarlo en memoria.




 5) 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.

 6) Repetir el punto tres a fin de consolidar los datos medidos y capturados presionando otras teclas en el teclado de la PC y verificar el resultado de la medición, justificando la observación.

 7) Verificar lo medido cambiando la velocidad de transmision.

Conclusiones y Respuestas de la Actividad

Ejercicio 5

 A) La tensión en reposo es de unos 0v.
 B) El bit  dura aproximadamente unos 208 uS y se mide 22,8v. Un uno lógico tiene el valor de tensión equivalente a 11,8v y un cero lógico tiene un valor equivalente a 11v.
C) Se determina mediante su código ASCII en binario el cual es: 01000001.
D) El bit de stop no se puede observar debido a que podría interpretarse como señal. Este bit de stop lo que hace es diferenciar dos señales, para asi no tornar a confusiones. Presionando dos teclas al mismo tiempo, nos damos cuenta que entre las 2 señales hay una diferencia.
E) Teniendo en cuenta que un BYTE es similar a 10 bits, sumando el bit de stop y el bit de start, podemos decir que 9600 bits equivale a  (Segundos) () .

Mediciones Ejercicio 3 y 6

Con 9600 b/s (bit por segundo)















Actividad 3 - Programación de un microcontrolador de 8 bits

Problema:
Al microcontrolador PIC16F84A conectar un led al pin RB7. El programa deberá encender y apagar ese led cada 200ms aproximadamente (+/- 5%), usando un clock a cristal de 4MHz.

Dibujar el esquemático en el KICAD



Programar en lenguaje assembler al microcontrolador con el MPLAB, resolviendo el problema 

;····································································································
;Actividad 3.asm
;El programa hace parpadear a una Led conectado a RB7
;····································································································
    LIST    p=PIC16F84A
    INCLUDE    <p16f84a.inc>
    __CONFIG _WDT_OFF & _PWRTE_ON & _CP_OFF & _XT_OSC;    CONFIG es donde configuramos el tipo de oscilación que vamos a usar
    ERRORLEVEL    -302
;····································································································
 ;Equivalencias:
#DEFINE    BANK0    bcf    STATUS,RP0        ; Cambio al banco 0
#DEFINE    BANK1    bsf    STATUS,RP0        ; Cambio al banco 1  

SW        EQU        0
LED        EQU        7
;····································································································
; Variables
    CBLOCK 0x00   
    d1
    d2
    ENDC
;····································································································
; Vectores
    ORG    0x000
    goto Inicio        ; Vector de Reset
 
    ORG 0x004
    goto Isr        ; Vector de Interrupción
;····································································································
; Rutina de servicio de interrupción
Isr
    retfie
;····································································································
Inicio    ; Configuramos el bit 7 (Port B) como salida (RB7)
    bsf STATUS,RP0
    bcf TRISB,LED
    bcf STATUS,RP0

Principal
    bcf PORTB, LED
    call Delay_200ms
    bsf PORTB, LED
    call Delay_200ms
    goto Principal
;····································································································
; Sub-Rutinas

; Delay = 0.2 seconds
; Clock frequency = 4 MHz

; Actual delay = 0.2 seconds = 200000 cycles
; Error = 0 %
Delay_200ms
            ;199993 cycles
    movlw    0x3E
    movwf    d1
    movlw    0x9D
    movwf    d2
Delay_200ms_0
    decfsz    d1, f
    goto    $+2
    decfsz    d2, f
    goto    Delay_200ms_0

            ;3 cycles
    goto    $+1
    nop

            ;4 cycles (including call)
    return

END

Actividad 5 - Programación Elemental

Programas resueltos en Assembler:

1)
;***********************************************************************************************
    __CONFIG_PWRTE_ON & _WDT_OFF & _CP_OFF & _XT_OSC
    LIST    P=16F84A
    INCLUDE        <P16F84A.INC>

;***********************************************************************************************

    ORG    0
Inicio
        bsf    STATUS,RP0
        clrf    TRISB
        bcf    STATUS,RP0
        movlw    b'00011111'
        movwf    TRISA
        bsf    STATUS,RP0
Programa
        movlw    PORTA
        mowf    PORTB
        goto    Principal
       
        END



2)
;************************************************************************************
    __CONFIG_CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
    LIST        P=16F84A
    INCLUDE        <P16F84A.INC>


;************************************************************************************

Constante        EQU        d'74'

;************************************************************************************
        ORG        0
Inicio
        bsf        STATUS,RP0
        clrf        TRISB
        bcf        STATUS,RP0
        movlw        b'00011111'
        movwf        TRISA
        bsf        STATUS,RP0
Principal


        movf        PORTA,W
        addlw        Constante
        movwf        PORTB   
        goto        Principal
       
        END

3)
;************************************************************************************

        __CONFIG_WDT_OFF & _PWRTE_ON & _CP_OFF & _XT_OSC
        LIST        P=16F84A
        INCLUDE        <P1F84A.INC>

;************************************************************************************
        ORG        0
Incio
        bsf        STATUS,RP0
        clrf        TRISB
        bcf        STATUS,RP0
        movlw        b'00011111'
        movwf        TRISA
        bsf        STATUS,RP0

Principal
        movf        PORTA,W
        addwf        PORTA,W
        movwf        PORTB
        goto        Principal

        END

4) 
;*************************************************************************************************

        __CONFIG_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
        LIST        P=16F84A
        INCLUDE        <P16F84A.INC>
;*************************************************************************************************

Mascara        EQU        b'01010101'

;*************************************************************************************************

        ORG        0
Incio
        bsf        STATUS,RP0
        clrf        TRISB
        bcf        STATUS,RP0
        movlw        b'0001111'
        movwf        TRISA
        bsf        STATUS,RP0
Principal
        movf        PORTA,W
        iorlw        Mascara
        movwf        PORTB
        goto        Principal

        END



7)
 
;*************************************************************************************************

        __CONFIG_PWRTE_ON & _CP_OFF & _WDT_OFF & XT_OSC
        LIST        P=16F84A
        INCLUDE        <P16F84A.INC>

;*************************************************************************************************

        ORG        0
Incio
        bsf        STATUS,RP0
        clrf        TRISB
        bcf        STATUS,RP0
        movlw        b'0001111'
        movwf        TRISA
        bsf        STATUS,RP0
Principal
        comf        PORTA,W
        movwf        PORTB
        goto        Principal
       
        END



8)
;***********************************************************************************************
    __CONFIG_PWRTE_ON & _WDT_OFF & _CP_OFF & _XT_OSC
    LIST    P=16F84A
    INCLUDE        <P16F84A.INC>

;***********************************************************************************************

    ORG    0
Inicio
        bsf    STATUS,RP0
        clrf    TRISB
        bcf    STATUS,RP0
        movlw    b'00011111'
        movwf    TRISA
        bsf    STATUS,RP0
Principal
        swapf    PORTA,W
        movwf    PORTB
        goto    Principal

        END

9)
;***********************************************************************************************
    __CONFIG_PWRTE_ON & _WDT_OFF & _CP_OFF & _XT_OSC
    LIST    P=16F84A
    INCLUDE        <P16F84A.INC>

;***********************************************************************************************

    ORG    0
Inicio
        bsf    STATUS,RP0
        clrf    TRISB
        bcf    STATUS,RP0
        movlw    b'00011111'
        movwf    TRISA
        bsf    STATUS,RP0
Principal
        bsf    STATUS,C       
        rlf    PORTA,W           
        movwf    PORTB           
        goto     Principal       

        END               
  

11)
;***********************************************************************************************
    __CONFIG_PWRTE_ON & _WDT_OFF & _CP_OFF & _XT_OSC
    LIST    P=16F84A
    INCLUDE        <P16F84A.INC>

;***********************************************************************************************

    ORG    0
Inicio
        bsf    STATUS,RP0
        clrf    TRISB
        bcf    STATUS,RP0
        movlw    b'00011111'
        movwf    TRISA
        bsf    STATUS,RP0
Principal
        movf    PORTA,W
        movwf    PORTB
        sleep   

        END
        movf

        END

Proyecto Final - Protocolo 1-Wire

Introduccion teorica
 Antes que nada debemos explicar un poco el protocolo 1-Wire, el cual consiste en utilizar un sólo conductor (más su conexión a tierra) para efectuar las comunicaciones y la transmisión de energía entre un dispositivo maestro y los múltiples esclavos.
  Dicho protocolo permite realizar una comunicación serial asincrónica entre un dispositivo maestro y uno o varios dispositivos esclavos, utilizando un único pin I/O del microcontrolador. Podemos señalar algunas características de éste bus:
•Utiliza niveles de alimentaciónCMOS/TTL con un rango de operaciónque abarca desde 2.8V hasta 6V.
•Tanto el maestro como los esclavos transmiten información de forma bidireccional, pero, sólo en una dirección a la vez (half duplex).
•La información es leída o escrita comenzando por el bit menos significativo.
•No se requiere del uso de un oscilador externo, ya que, cada dispositivo 1-Wire posee un oscilador interno que se sincroniza con el del maestro cada vez que en la línea de datos aparezca un flanco de bajada.
•Todas las tensiones mayores que 2,2Voltios son consideradas un "1" mientras que como un "0" se interpreta cualquier voltaje menor o igual a 0,8 V.


Diagrama  de tiempos del protocolo 1-Wire:


Comenzando el proyecto
Decidimos hacer un proyecto a modo "explicativo" del protocolo 1-Wire, o sea decidimos hacer un proyecto sin un fin util para que se pueda entender el protocolo facilmente.
Para realizar este proyecto decidimos utilizar el PIC16F628A ya que cubria los requisitos del proyecto. 
Tambien debimos realizar un diagrama de flujos:

Para armar el proyecto decidimos hacer tres plaquetas en vez de una sola, si bien se podía armar todo en una, de esta otra manera podemos notar facilmente el protocolo 1-Wire.

Diagrama de pulsos, Simulacion en el Isis y Programacion con el PIC Compiler

Diagrama de pulsos:

En esta imagen se puede observar el proyecto aun apagado armado en Isis

En esta otra imagen se puede observar el funcionamiento del proyecto, enciende el Led J11 por 5 segundos.


En esta toma vemos el pulso de master, la respuesta del slave y la palabra logica,

En las dos imagenes siguientes vemos capturas del programa en el PIC C Compiler.



 Armado del proyecto

Atwork

Cableado de las plaquetas
Utilizamos dos veces el protocolo 1-Wire por eso se utilizan dos cables de comunicacion. Esto es porque ambos microcontroladores funcionan como esclavo y maestro (no al mismo tiempo).


Proyecto finalizado







DESCARGA EL TRABAJO PRACTICO DE ESTE PROYECTO [WORD]: