jueves, 29 de noviembre de 2012

Interface i2c

En esta entrada vamos a hacer una placa para la comunicación mediante i2c. Para el diseño tanto del esquema como de la placa usaré el Proteus y el Ares respectivamente.

Esquema i2c
Nuestra placa constará de los siguientes elementos:

-Conversor DAC PCF8591
-Reloj-Calendario PCF8583
-Teclado matricial
-Bus de expansión



Introducción a I²C

Es un bus de comunicaciones en serie, lo que quiere decir que manda/recibe un solo dato cada vez. La comunicación I²C se compone de dos líneas llamadas SDA y SCL además de una tercera que es GND. La velocidad estandar es de 100kbit/s aunque puede llegar a velocidades mucho mayores (hasta 3,4 Mbits/s).

Uso de las lineas:
  • SDA: datos
  • SCL: reloj


Los dispositivos I²C pueden ser tanto maestros como esclavos. El dispositivo maestro inicia la transferencia de datos y además genera la señal de reloj. No es necesario que el maestro sea siempre el mismo dispositivo, esta característica se la pueden ir pasando los dispositivos que tengan esa capacidad. Por esta razón se le suele llamar bus multimaestro.

Formato de la comunicación:

| start | A7 A6 A5 A4 A3 A2 A1 | R/W | ACK | DATOS | ACK | stop | idle |

Start: Inicio de la comunicación
A7-A1: Dirección del dispositivo.
A0-->R/W: Decir si es dispositivo va a leer(1) o escribir(0).
ACK: bit obligatorio de control para reconocer si la comunicación se ha establecid.
 Datos: Los datos que se escriban o reciban, siempre en formato byte.
ACK: bit obligatorio para saber si han llegado los datos.

Construcción de la placa

Empezaremos por lo más básico, nuestra placa i2c necesitará alimentación por lo que colocaremos un par de headers de 4 conectores para así poder usarlos tanto con machos como con hembras. Además de esto es MUY importante poner las dos resistencias pull-ups tanto en la línea SCL como en la línea SDA de la comunicación i2c porque si no no nos funcionará nada ya que estas lineas son de drenador abierto.

Alimentación y pull-ups

Una vez tenemos alimentación masa y las pull-ups pasamos a añadir los demás elementos a nuestra placa. Lo primero que vamos a ver es el teclado matricial con el cual podremos escribir. Con el voltímetro conectado a masa y a la salida podremos medir los diferentes voltajes que nos salen presionando cada uno de los pulsadores.

Teclado matricial

Lo siguiente que añadiremos será conversor DAC PCF 8591. Este conversor puede pasar tanto de una señal analógica a digital como de una señal digital a analógica. La configuración la podemos ver en la captura de pantalla, recordar que las líneas SDA y SCL van conectadas a las pull-ups que hemos comentado anteriormente un poco más arriba. No nos olvidemos de poner su respectivo condensador de bypass para evitar ruidos e interferencias.


Conversor DAC PCF8591

A continuación ponemos el reloj-calendario PCF8583. Necesitaremos un cristal conectado a la entrada OSC1 para que pueda funcionar. En la entrada de la interrupción pondremos una pull-up ya que funciona en bajo activo y también un jumper para habilitar el teclado cuando lo queramos usar. Por último colocaremos una pila de 3.6V para que cuando quitemos la corriente de la placa nos guarde la hora y la fecha y así no la perdamos. No nos olvidemos del condensador de bypass para evitar ruidos e interferencias.

Reloj - Calendario PCF8583
Por último solo nos queda añadir un bus de expansión ribbon de 40 pines para poder conectarnos con un sistema microcontrolador. Aquí añadiremos dos condensadores de bypass porque el bus tiene 2 conexiones a VCC.

Bus de expansión
Con esto ya habremos terminado la parte del esquema en Proteus y podremos pasar a diseñar la placa con el Ares. Intentaremos hacer la placa lo más pequeña posible, con los menos cambios de vía posibles (si no queremos volvernos locos) y con el máximo de información en la serigrafía posible para que quien la use tenga claro que es lo que está viendo.

-Los tracks de VCC y GND serán de 40th y las vías de V60
-Los demás tracks irán a 20th y las vías a V40

De esta manera nos aseguramos de que las vías no sean demasiado pequeñas y perdamos la señal. Además de todo esto tendremos que añadir un plano de masa para que nos ayude a evitar ruidos e interferencias exteriores. También deberemos intentar evitar los angulos de 90º o inferiores ya que podrian causar la perdida de la señal.

Diseño en Ares

Una vez hecho el diseño ya está completamente listo para crearse físicamente. Aquí dejo un tutorial de como usar la ProtoMat S62. Por último os dejo para descargar los archivos tanto de Proteus como de Ares para que le podáis echar un vistazo.


Otros enlaces:

No hay comentarios:

Publicar un comentario