CAPACITACIN Expansor de Sensores comunicacin I 2 C

  • Slides: 21
Download presentation
CAPACITACIÓN Expansor de Sensores, comunicación I 2 C y SPI

CAPACITACIÓN Expansor de Sensores, comunicación I 2 C y SPI

SPI

SPI

BUS SPI • El bus SPI (Serial Peripheral Interface) fue desarrollado por Motorola en

BUS SPI • El bus SPI (Serial Peripheral Interface) fue desarrollado por Motorola en 1980. • El bus SPI tiene una arquitectura de tipo maestro-esclavo. • El dispositivo maestro (master) puede iniciar la comunicación con uno o varios dispositivos esclavos (slave), y enviar o recibir datos de ellos. • Los dispositivos esclavos no pueden iniciar la comunicación, ni intercambiar datos entre ellos directamente.

Bus SPI • En el bus SPI la comunicación de datos entre maestros y

Bus SPI • En el bus SPI la comunicación de datos entre maestros y esclavo se realiza en dos líneas independientes, una del maestro a los esclavos, y otra de los esclavos al maestro. Por tanto la comunicación es Full Duplex, es decir, el maestro puede enviar y recibir datos simultáneamente. • Otra característica de SPI es que es bus síncrono. El dispositivo maestro proporciona una señal de reloj, que mantiene a todos los dispositivos sincronizados. Esto reduce la complejidad del sistema frente a los 1. MOSI (Master-out, Slave-in) para la comunicación del maestro al esclavo. 2. MISO (Master-in, Slave-out) para comunicación del esclavo al maestro. 3. SCK (Clock) señal de reloj enviada por el maestro. 4. SS (Slave Select) para cada dispositivo esclavo conectado, para seleccionar el dispositivo con el que se va a realizar la comunicación.

BUS SPI En este tipo de conexión se necesita una línea adicional para cada

BUS SPI En este tipo de conexión se necesita una línea adicional para cada dispositivo esclavo conectado. Esto puede ser engorroso cuando se requiere conectar muchos dispositivos. Se suele utilizar una conexión en cascada donde cada esclavo transmite datos al siguiente. La información debe llegar a todos los esclavos para que la comunicación finalice. La velocidad de respuesta del bus es menor.

VENTAJAS Y DESVENTAJAS SPI VENTAJAS 1. Alta velocidad de trasmisión (hasta 8 Mhz en

VENTAJAS Y DESVENTAJAS SPI VENTAJAS 1. Alta velocidad de trasmisión (hasta 8 Mhz en Arduino) y Full Duplex 2. Los dispositivos necesarios son sencillos y baratos, lo que hace que esté integrado en muchos dispositivos. 3. Puede mandar secuencias de bit de cualquier tamaño, sin dividir y sin interrupciones. DESVENTAJAS 1. Se requiere 3 cables (SCK, MOSI y MISO) + 1 cable adicional (SS) por cada dispositivo esclavo. 2. Solo es adecuado a corta distancias (unos 30 cm) 3. No se dispone de ningún mecanismo de control, es decir, no podemos saber si el mensaje ha sido recibido y menos si ha sido recibido correctamente. 4. La longitud de los mensajes enviados y recibidos tiene que ser conocida por ambos dispositivos.

PROGRAMACIÓN SPI Para usar el puerto SPI en CODE. Arduino proporciona la librería «SPI.

PROGRAMACIÓN SPI Para usar el puerto SPI en CODE. Arduino proporciona la librería «SPI. h» que contiene las funciones necesarias para controlar el hardware integrado de SPI. El entorno de programación de Arduino define las constantes SCK, MOSI, MISO, y SS para los pines de SPI. Usar estos «alias» en nuestro código hace que sea más fácil de intercambiar programas entre modelos placas. Arduin o/ Genuin o Board MOSI MISO SCK SS (slave ) SS (mast er) Uno or Duemila nove 11 or ICSP-4 12 or ICSP-1 13 or ICSP-3 10 - 5 V Mega 12 80 or Mega 25 60 51 or ICSP-4 50 or ICSP-1 52 or ICSP-3 53 - 5 V Leonard o ICSP-4 ICSP-1 ICSP-3 - - 5 V Due ICSP-4 ICSP-1 ICSP-3 - 4, 10, 52 3, 3 V Zero ICSP-4 ICSP-1 ICSP-3 - - 3, 3 V 101 11 or ICSP-4 12 or ICSP-1 13 or ICSP-3 10 10 3, 3 V 8 10 9 - - 3, 3 V MKR 100 0 Level

PROGRAMACIÓN SPI

PROGRAMACIÓN SPI

I 2 C O TWI (TWO WIRE INTERFACE)

I 2 C O TWI (TWO WIRE INTERFACE)

I 2 C(INTER-INTEGRATED CIRCUIT) • I²C es un bus de comunicaciones en serie. Su

I 2 C(INTER-INTEGRATED CIRCUIT) • I²C es un bus de comunicaciones en serie. Su nombre viene de Inter-Integrated Circuit (Inter-Circuitos Integrados). La versión 1. 0 data del año 1992 y la versión 2. 1 del año 2000, su diseñador es Philips. La velocidad es de 100 kbit/s en el modo estándar, aunque también permite velocidades de 3. 4 Mbit/s. Es un bus muy usado en la industria, principalmente para comunicar microcontroladores y sus periféricos en sistemas integrados (Embedded Systems) y generalizando más para comunicar circuitos integrados entre si que normalmente residen en un mismo circuito impreso.

I 2 C(INTER-INTEGRATED CIRCUIT) • La dirección de un dispositivo puede estar entre 0

I 2 C(INTER-INTEGRATED CIRCUIT) • La dirección de un dispositivo puede estar entre 0 y 127. • I 2 C es un protocolo síncrono. I 2 C usa solo 2 cables, uno para el reloj (SCL) y otro para el dato (SDA). Esto significa que el maestro y el esclavo envían datos por el mismo cable, el cuál es controlado por el maestro, que crea la señal de reloj. I 2 C no utiliza selección de esclavo, sino direccionamiento. • Dos o más señales a través del mismo cable pueden causar conflicto, y ocurrirían problemas si un dispositivo envía un 1 lógico al mismo tiempo que otro envía un 0. Por tanto el bus es “cableado” con dos resistencia para poner el bus a nivel alto, y los dispositivos envían niveles bajos. Si quieren enviar un nivel alto simplemente lo comunican al bus.

I 2 C(INTER-INTEGRATED CIRCUIT) • Las líneas se llaman: • SDA: datos • SCL:

I 2 C(INTER-INTEGRATED CIRCUIT) • Las líneas se llaman: • SDA: datos • SCL: reloj • GND: tierra Los dispositivos conectados al bus I²C tienen una dirección única para cada uno. También pueden ser maestros o esclavos. El dispositivo maestro inicia la transferencia de datos y además genera la señal de reloj, pero 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. Esta característica hace que al bus I²C se le denomine bus multimaestro.

I 2 C(INTER-INTEGRATED CIRCUIT) Board I 2 C / TWI pins Uno, Ethernet A

I 2 C(INTER-INTEGRATED CIRCUIT) Board I 2 C / TWI pins Uno, Ethernet A 4 (SDA), A 5 (SCL) Mega 2560 20 (SDA), 21 (SCL) Leonardo 2 (SDA), 3 (SCL) Due 20 (SDA), 21 (SCL), SDA 1, SCL 1

EXPANSOR DE SENSORES (I 2 C)

EXPANSOR DE SENSORES (I 2 C)

EXPANSOR DE SENSORES • El protocolo de comunicación que utiliza es I 2 C.

EXPANSOR DE SENSORES • El protocolo de comunicación que utiliza es I 2 C. • Permite conectar hasta 8 sensores adicionales en un solo puerto I 2 C del Innobot. Se usa especialmente en reto seguidor de línea y Desafío de Fuego.

EXPANSOR DE SENSORES • Permite conectar hasta 8 sensores adicionales en un solo puerto

EXPANSOR DE SENSORES • Permite conectar hasta 8 sensores adicionales en un solo puerto I 2 C del Innobot. Se usa especialmente en reto seguidor de línea y Desafío de Fuego. El protocolo de comunicación que utiliza es I 2 C.

EXPANSOR DE SENSORES • Adicionalmente se debe utilizar el jumper que viene con el

EXPANSOR DE SENSORES • Adicionalmente se debe utilizar el jumper que viene con el expansor para conmutar la dirección del dispositivo. • Las direcciones que reconoce el dispositivo son (0 x 20, 0 X 21, 0 X 22)

EXPANSOR DE SENSORES • Adicionalmente se debe utilizar el jumper que viene con el

EXPANSOR DE SENSORES • Adicionalmente se debe utilizar el jumper que viene con el expansor para conmutar la dirección del dispositivo. • Las direcciones que reconoce el dispositivo son (0 x 20, 0 X 21, 0 X 22). • En las imágenes se puede observar la conexión para cada una de las direcciones disponibles respectivamente (0 X 20, 0 X 21, 0 X 22) • Un expansor solo puede tomar una sola dirección.

EXPANSOR DE SENSORES Para empezar a utilizar el Expansor de Sensores se puede partir

EXPANSOR DE SENSORES Para empezar a utilizar el Expansor de Sensores se puede partir de alguno de los ejemplos disponibles en CODE.

EXPANSOR DE SENSORES • Para cambiar la dirección se utiliza la línea: Array. Sensor

EXPANSOR DE SENSORES • Para cambiar la dirección se utiliza la línea: Array. Sensor array 1(0 x 20); //0 x 20, 0 x 21 o 0 X 22 y array 1 es el nombre del expansor • La dirección por omisión es 0 X 20 • Se puede leer el valor digital (0 o 1) de cada sensor o el valor análogo (0 - 1023) • Se puede “calibrar” cada sensor por separado utilizando la función: array. compare. Level[sensor_position], donde sensor_position corresponde a la posición del sensor en el expansor, la primera posición es 0 y la última 7. Por ejemplo para calibrar el sensor en la posición tres del expansor se utilizaría la siguiente línea: array. compare. Level[2] = calibration_value, calibration_value corresponderá al nivel o valor de comparación del sensor. • Es posible conectar hasta tres expansores por tarjeta Innobot, cada expansor debe tener una dirección única diferente a la de los otros.

EXPANSOR DE SENSORES • Para crear varios otras instancias de expansores de sensores se

EXPANSOR DE SENSORES • Para crear varios otras instancias de expansores de sensores se utiliza la línea: Array. Sensor array 1; Para cada expansor conectado en la tarjeta se debe crear una, por ejemplo, si hay 3 expansores conectados: Array. Sensor array 1; Array. Sensor array 2; Array. Sensor array 3; El nombre array se puede cambiar por cualquier otro que cumpla las reglas de declaración en programación C++. Cada expansor se debe inicializar y leer por separado, para esto se utilizan las funciones: array 1. begin(); //array 1 corresponderá al nombre del expansor array 1. update. Values(); //array 1 corresponderá al nombre del expansor Para llamar un sensor específico de un expansor se debe agregar el nombre del expansor+tipo_lectura+posición: Ej: array 3. digital[3]