martes, 25 de junio de 2013

Uso de la comunicación SPI en el ARDUINO

El uso del SPI en Arduino , es relativamente sencillo. Vamos a realizar el código que nos permita enviar dos bytes uno con 0x33 y el otro con 0xF0. También veremos como configurar la velocidad del SPI.


En un primer paso importamos la librería del SPI con #include <SPI.h> . En el setup hay que iniciar y configurar el SPI , con SPI.begin() ademas hay que definir el pin SS como salida.



Finalmente mediante la función SPI.transfer enviamos el byte que queremos. Este es el código resultante:




Para realizar las conexiones  al osciloscopio o a otro chip lo mejor es usar las conexiones del ICSP ya que estas son iguales para todas las placas. En la pagina de Arduino podemos encontrar las siguientes tablas de conexión.



El resultado en el osciloscopio son los dos bytes enviados de forma secuencial.

Azul MOSI, Rojo SCLK.

En este ejemplo se ha configurado el bus para funcionar a la velocidad por defecto es decir 4Mhz pero esto puede ser un problema. Como se ve en las gráficas anteriores los bits llegan con oscilaciones que si bien en casi todos los casos no darán errores, es posible que falle en alguna ocasión. Para distancias cortas la tasa de error no es muy elevada y se puede trabajar perfectamente, pero podemos ver que si vamos elevando la distancia y si entran en juego otros componentes u otras señales es posible que los errores aumenten. Por ello es bueno bajar la velocidad para que el bit se estabilice y el transitorio sea despreciable. La velocidad por defecto usa el divisor por 4. 
Para ello usaremos la instrucción SPI.setClockDivider(divider) donde este puede tener los siguientes valores: 
  • SPI_CLOCK_DIV2
  • SPI_CLOCK_DIV4
  • SPI_CLOCK_DIV8 
  • SPI_CLOCK_DIV16
  • SPI_CLOCK_DIV32
  • SPI_CLOCK_DIV64
  • SPI_CLOCK_DIV128

Esto nos da la opción de dividir la velocidad del reloj del SPI. Por ejemplo probaremos con divisor de 16 y divisor de 128. 
Se puede ver que la señal cada vez es más cuadrada y sin sobresaltos. En realidad las oscilaciones son  las mismas ya que esto es producto del flanco de subida de la señal, lo que pasa es que ahora el tiempo de oscilación de la señal es despreciable frente al tiempo del bit. Eso implica que en el momento de leer el bit hay más posibilidades de que la señal sea estables y tomemos el valor correcto. 

Divisor de 16


Divisor de 128

Como podemos apreciar perdemos velocidad ya que en el caso por defecto con divisor 4 cada bit dura 250 ns es decir 4 Mhz. Pero en el de 16 el bit ya pasa a durar 1ms por lo que nos encontramos con una frecuencia de 1Mhz. Y finalmente en la de 128 el bit dura 8 ms por lo que la frecuencia es de 125 KHz. También se puede probar con el caso opuesto de aumentar la velocidad, poniendo el divisor por 2 donde veremos que la calidad disminuye muchísimo. 
Divisor por 2. Velocidad 8 Mhz.

La última parte a tratar en este tutorial sobre SPI es la lectura. Para realizar la lectura hay dos métodos, dependiendo de si somos Master o Slave . En caso de ser Master somos los únicos que tenemos control sobre el reloj por lo que la función de escritura es la misma que la de lectura. Por lo que con la función SPI.transfer leemos el parámetro devuelto.


Para explicar el uso del Salve vamos a usar dos Arduinos, uno como Master y otro como Slave, este primero mandará un mensaje al Slave como lo hemos visto antes. El Slave para poder realizar la lectura necesita hacer uso de las interrupciones de este modo cuando le llegue un byte saltará a la interrupción y allí haremos el tratamiento del dato recibido. A continuación podemos ver los dos códigos:

Código Master 




Código Slave 

Finalmente pasamos el programa a cada placa con las conexiones antes mencionadas para el arduino. 



Diana Colin Amador 

lunes, 24 de junio de 2013

SPI (Comunicación Serial Sincrónica)

Introducción
El intercambio de información digital entre un micro controlador y los periféricos puede ser de dos formas: de manera paralela o serial. la primera implica el envió simultaneo de la información, es decir, de varios bits (incluso todos) pertenecientes al dato, esto no solo ocasiona problemas de costo debido a la necesidad de mayor cableado y de conexiones, sino que afecta un aspecto crítico del micro controlador: la cantidad de terminales E/S utilizados. la comunicación serial plantea justamente lo contrario, en vez de enviar los bits de dato de manera simultanea, los envía por separado uno tras otro. entonces el receptor deberá invertir el proceso y reconstruir el dato original.

 Una forma de establecer la conexión serial es la comunicación sincrónica, que se refiere a la existencia de una señal de reloj común para los sistemas digitales que se interconectan. esta es una forma muy utilizada para conectar periféricos como convertidores Analógicos/digitales (ADC), memorias, procesadores digitales de señales (DPS's), entre otros.

Comunicación sincrónica

  • Existe una señal de reloj que sincroniza ambos sistemas.
  • Dispositivos esclavos no requieren de base de tiempo propia, la obtienen del maestro.
SPI

es un estándar establecido por Motorola que utiliza un bis de 4 lineas para interconectar dispositivos periféricos de baja y media velocidad. la comunicación se realiza siguiendo un modelo maestro/esclavo donde el maestro selecciona al esclavo y comienza el proceso de transmisión/recepción de información. El sistema SPI puede enviar y recibir información de manera simultanea, lo cual, eleva  la tasa de transferencia de datos.  En este estándar no existe ningún medio de direccionamiento de los dispositivos esclavos y mucho menos reconocimiento de la recepción de datos, así que, no existe forma alguna para que el dispositivo maestro pueda detectar la presencia de un esclavo o establecer un medio de control del flujo de datos.

Figura 1.  Conexiones de varios dispositivos por SPI.

Los nombres de las señales son definidos dentro del estandar como:
  • SCLK  reloj del bus.
  • MOSI (Master Output Slave Input) salida de los datos del maestro y entrada de datos a los esclavos.
  • MISO (Master Input Slave Output) salida de datos de los esclavos y entrada de datos al maestro.
  • SS (Slave Select) habilitación del esclavo por parte del maestro.
Dependiendo del número de esclavos presentes en el bus,  se requerían mas o menos lineas de seleccion para estos, cada una de ellas será nombrada como SS1,SS2,SS3... etc este medio de seleccion permite conectar varios esclavos de manera muy simple.
Tambien se deben tomar en cuenta los parametros CPOL (clock polarity) y CPHA (clock phase) con los cuales se determina el momento en el cual se considera valido un dato de entrada o se genera un dato de salida. 

Figura 2. Modos de operación del bus SPI


Erick de la Rosa

martes, 18 de junio de 2013

Libreria Acelerometro ADXL345

A continuación les dejo un enlace para descargar una librería para el acelerómetro ADXL345, ya que aunque bien he cierto, esta librería es para el Arduino, no dudo que varios de ustedes la puedan aprovechar para ayudarse un poco en la programación con sus respectivas tarjetas.
Esta es una librería que a mi parecer se entiende bastante como funciona, y con varias anotaciones. 

Entre sus funciones tiene algunas para la configuración del tiempo caída libre (freefall), la detección de taps (duración o intensidad de los mismos), y la obtención de las posiciones de los ejes. entre varias otras.

Enlace:
http://www.mediafire.com/?1zwzw1kqaeg81vv

Erick De La Rosa 

jueves, 13 de junio de 2013

Practica 2 - Acelerometro ADXL345

Como ya saben, para esta semana debíamos entregar diversos códigos con las características de este acelerómetro; entre ellas la de caída libre, tap simple y doble, y controlar dos servomotores con dos de sus ejes. A pesar de los mucho ejemplos en Internet de su uso, librerías, aplicaciones, etc. decidimos incluir un poco de información que nos fue útil al momento de realizar la practica, así como unos enlaces de los vídeos que tenían aplicaciones muy originales, esperemos les gusten.

El ADXL345 es un acelerómetro pequeño, delgado, de bajo consumo de energía de 3 ejes con medidas de alta resolución (13 bits) hasta ±16g. Los datos de salida digitales se configuran en 16 bits de complemento a dos y es accesible a través de SPI (3-cable o 4-cable) o a través de la interface digital I2C.
El ADXL345 está completamente capacitado para medir la aceleración estática de la gravedad en aplicaciones de mediciones de inclinación, así como también en aceleraciones dinámicas resultantes de movimiento o de choques. Su alta resolución (4 mg/LSB) permite la medición de cambios en la inclinación de objetos de menos de 1.0°.

Se incluyen muchas funciones de mediciones especiales. La medición de actividad e inactividad detecta la presencia o falta de movimiento y si la aceleración en cualquier eje excede el nivel configurado por el usuario. Mediciones de pequeños golpes detecta golpes simples o dobles. La medición de caída libre detecta si el dispositivo está cayendo. Estas funciones puedes ser mapeadas hacia uno de los dos pines interruptores de salida. Un buffer integrado de 32 niveles primero en entrar, primero en salir (first in first out) puede ser utilizado para guardar datos y así minimizar las intervenciones del procesador host. Los modos de bajo consumo de energía permiten el manejo inteligente de la energía basado en movimiento, para mediciones de umbrales y aceleración activa con una disipación de energía extremadamente baja.

Características
  • Suministro de voltaje de 2.0-3.6VDC.
  • Energía ultra baja: 40uA en modo de medición, 0.1uA en modo de espera @ 2.5V.
  • Detección de pequeños golpes simples o dobles.
  • Detección de caída libre.
  • Interfaces SPI e I2C.

Documentación

martes, 11 de junio de 2013

Amplificador de Aislamiento

Para la primera practica, observamos que la mayoría de los equipos tuvieron problemas con el amplificador de aislamiento, para ello decidimos investigar un poco mas acerca de su funcionamiento y aplicaciones, ya que era la primera vez que lo empleábamos.

Con estos amplificadores se pretende obtener un aislamiento eléctrico entre la entrada y la salida del circuito. El símbolo que lo representa indica claramente el significado físico de esa función.



El uso principal de estos dispositivos se debe a aquellos casos en los que resulte interesante, por el motivo que sea, conseguir un CMRR (common-mode rejection ratio - relación de rechazo de modo común) muy alto, del orden de los 160 dB. También son de utilidad cuando se presentan tensiones en modo común muy altas, ya que en esos casos el CMRR también debe ser muy alto para compensar la influencia de VCM. Además, y debido a su aislamiento eléctrico, es utilizado en aquellos dispositivos en los que se pretende una separación eléctrica efectiva entre la parte izquierda y derecha del dispositivo, como puede ocurrir en equipos de electromedicina, en donde por un lado nos podemos encontrar tensiones altas y por el otro los dispositivos que se conectan al paciente.

Existen dos tecnologías de aislamiento: por transformadores y 
ópticas, las que explicaremos mas adellante.
A continuación, vamos a ver una serie de parámetros típicos que proporciona el fabricante que nos va a permitir compararlas.

Barrera de aislamiento
Se trata de un impedimento a las señales eléctricas, de tipo intensidad, para pasar de la parte izquierda del circuito a la derecha. Permite la existencia de una tensión elevada VISO entre ambos lados de la barrera sin que se dañe el circuito. Nos referimos a valores normales de tensión de 2000 V y de hasta los
8000 V en tensiones de pico. La separación eléctrica, por tanto, debe ser lo más perfecta posible, lo cual lleva a la utilización de fuentes de alimentación y tomas de tierras totalmente diferenciadas y separadas unas de otras.


Sin embargo, esa barrera de separación no es ideal, por ello se utilizan una serie de parámetros para indicarnos cómo de perfecta resulta la barrera de separación. Vamos a presentar dos de ellos: capacidad de aislamiento CI y resistencia de aislamiento RI, que representa la resistencia que existe entre
las dos partes del circuito.

Intensidad de pérdidas
También se mide la perfección de la barrera mediante la señal que consigue atravesar la barrera, lo que se llama intensidad de pérdidas y que representa la intensidad eléctrica que puede circular de un lado a otro de la barrera de aislamiento, a través de la impedancia Z de aislamiento, debida al condensador y la resistencia de aislamiento.

Ancho de banda
Representa la frecuencia máxima con la que puede trabajar el circuito.

IMR
Es la razón de rechazo al modo común, representa algo parecido al CMR y se trata del valor del CMR debido al aislamiento.

En general, los parámetros más utilizados para elegir un tipo de aislamiento u otro son el IMR,
en cuyo caso elegiremos los de tecnología por transformador (proporcionan un IMR mayor) y la frecuencia a la que se puede usar el dispositivo, en cuyo caso usaremos los de tecnología basada en la óptica (su ancho de banda es mucho más amplio).
Veamos ahora en qué se basan cada una de estas dos tecnologías

Amplificadores de aislamiento por transformador
Básicamente, un transformador está constituido por dos bobinas en la que por una de ellas, llamada primario, se inyecta la señal de entrada, mientras que en la otra, denominada secundario, y debido al proceso de inducción se produce la señal de salida.
En estos dispositivos pueden existir más de un secundario y la principal característica que nos interesa resaltar ahora es precisamente el aislamiento eléctrico que existe entre el primario y el secundario.

Los transformadores trabajan únicamente con señales alternas y sus características dependen de la tensión de entrada así como del número de espiras que posean tanto el primario como el secundario

A la salida la tensión alterna producida tendrá un valor que viene dada por la expresión

V2= V1 (N2/N1)

Si se cumple que N1=N2 la función que realiza el trasformador es exclusivamente de aislamiento entre las dos partes del transformador, ya que la tensión de salida será igual que la de entrada al mismo, con la gran ventaja de que no existe conexión eléctrica alguna entre ambas partes.

Según hemos visto estos dispositivos son de mucha utilidad para conseguir el aislamiento eléctrico entre sus dos partes, pero qué ocurre cuando trabajamos con señales continuas en vez de señales alternas. En ese caso la señal continua debe ser convertida en alterna y una vez transformada volver a ser
convertida en continua. Esto se consigue mediante el uso de un modulador, este dispositivo convierte señales contínuas en señales alternas, de manera que a la salida tenemos una magnitud
que es proporcional a la señal continua de entrada. Así, por ejemplo, la frecuencia de la señal de salida puede ser proporcional a la tensión de entrada, es lo que se conoce como
frecuencia modulada. También podría ser posible si la magnitud utilizada es la amplitud de la señal de salida, se llamaría señal modulade an amplitud. De estas dos posibilidades a nuestros intereses resulta más adecuado usar la modulación en amplitud ya que los transformadores trabajan mejor a frecuencias
concretas, por ello es mejor fijar la frecuencia y modular la señal en amplitud. Los moduladores hacen de portadores de la señal.
Si hacemos que N2=N1 entonces podemos decir que la tarea del demodulador consiste en restaurar la señal modulada por el modulador.

El montaje debe tener un diseño como se muestra en la figura siguiente en donde la señal continua es convertida en alterna por un modulador, cuya salida actúa de primario del transformador. Dos secundarios con el mismo número de espiras N2 y con sendos demoduladores producirán dos señales idénticas que
actuarán como terminales de salida.
Al final se ha incluido un seguidor de tensión (A2) para tener a la salida las mismas características de impedancia que se tenían a la salida del amplificador A1. 
Como se observa también en esa figura es necesario disponer de tomas de tierra diferentes, y por tanto también, de fuentes de alimentación distintas. Los fabricantes proporcionan los llamados convertidores continua/continua (DC/DC) los cuales tiene una única entrada de tensión continua (por ejemplo, 5V) y proporcionan a la salida dos salidas, completamente aisladas eléctricamente una de la otra, de +- 12V. 
Algunos fabricantes incluso la incluyen dentro del propio integrado, de manera que una tensión de entrada es convertida en impulsos que mediante un primario es introducido en el trasformador a una frecuencia distinta a la de la señal principal. Mediante dos secudarios diferentes conectados a sendos rectificadores producen las dos salidas de +- 12 V, de forma totalmente independiente entre ellas. 

Amplificadores de aislamiento óptico
En esta tecnología es necesario el uso de dos elementos semiconductores distintos: por un lado se necesita un diodo emisor de luz (LED) y por otro un fotodiodo o diodo receptor de 
luz. Entre ambos se formará la barrera de aislamiento, uno de ellos actuará de primario y el otro de secundario. 
El emisor es un diodo semiconductor con cápsula transparente, que posee forma de lente convergente para obtener un haz de luz concentrado, que emite luz al pasar un intensidad eléctrica por dicho diodo.
La intensidad luminosa es proporcional a la intensidad eléctrica que atraviesa el montaje.

Por otro lado el receptor posee una cápsula con una lente sobre el semiconductor libre que facilita la incidencia de los fotones sobre el propio semiconductor. Así los fotones chocan con los portadores de carga transmitiéndoles su energía y haciendo que éstos pasen de la banda de valencia a la banda de conducción.

La intensidad luminosa es pequeña, por ello las corrientes producidas también son pequeñas (del orden de micro A). En polarización directa estas corrientes serían despreciables, ya que las corrientes que se obtienen son del orden de los mA. Para poder utilizar las corrientes producidas por la luz hacemos trabajar al diodo en polarización inversa, en el cual la intensidad eléctrica era casi nula.
Para crear la barrera habrá que colocar estos dos dispositivos uno al lado del otro. El principal problema que tenemos es que la cantidad de luz que alcanza al primario debe ser exactamente igual a la cantidad de luz que alcance al secundario (ni más ni menos), para asegurarnos que la tensión que produjo la emisión
de luz en el emisor es la misma que produce el receptor a su salida. Para ello el fabricante facilita el conjunto completo, formado por un primario y dos secundario encapsulado todo en un conjunto perfectamente opac a la luz para evitar deformaciones en la transformación.

Kristy L. Mendez Ley