Saleae Logic. Analizador Lógico.



Un analizador lógico es una de las herramientas más útiles de las que podemos disponer a la hora de trabajar con microcontroladores ya que nos permite ver los valores de tensión (1 ó 0 lógico) que toman los pines del microcontrolador en función del tiempo, sería el equivalente en un osciloscopio en un circuito analógico. Hay dos tipos de analizadores: los analizadores lógicos para PC y los independientes, los primeros cuestan cientos de euros mientras que los segundos miles, por lo que un aficionado a la electrónica sólo amortizará el primer tipo y no todos.

Dentro de los analizadores para pc podemos encontrar dispositivos con 8 canales, 16 canales y 34 canales, un dispositivo con X canales (X entradas al analizador) nos permitirá ver hasta X pines del microcontrolador a la vez en función de tiempo, por lo que ésta es la primera decisión que debemos tomar a la hora de elegir un analizador, ¿cuántos canales vamos a necesitar? ya que a mayor número de canales se va doblando el precio. Para la mayoría de proyectos que hacemos en casa con uno de 8 canales nos llega (o almenos para los que hago yo), por lo que elegir un analizador con más canales no justifica el precio, según lo que vaya a hacer cada uno y la complejidad de sus proyectos.

La otra característica principal que se refleja en el precio de los analizadores de PC es si éstos disponen de memoria interna o usan la propia RAM del PC para capturar las muestras. Un analizador con su propia memoria es más caro que uno que usa la RAM del PC, la ventaja es que nos permite usar frecuencias de muestreo mucho mayores, la frecuencia de muestreo máxima de los analizadores con memoria está en los 500 MHz mientras que la de un analizador que usa la RAM del PC está en 24 MHz, por lo que tenemos una diferencia muy alta. La desventaja de la memoria propia (además del precio) es que nos permitirán capturar muchas menos muestras que un analizador que use la RAM del PC, en uno con memoria interna se pueden capturar 2k, 3k muestras por canal, mientras que en uno sin memoria que se basa en el PC pues el límite está en la RAM del PC, pero se pueden capturar varios milllones de muestras lo que se traduce en capturar señales de una duración mucho mayor, para una misma frecuencia de muestro un analizador con memoria interna nos permite capturar señales de una duración de unos pocos milisegundos o incluso microsegundos, mientras que en uno basado en la RAM del pc podemos capturar una señal de segundos-minutos. Por lo general con unos pocos milisegundos basta ya que se empieza a capturar el bus una vez que se ha producido cierta condición que dispará la captura de la señal por parte del analizador.

Con todo esto en mente lo primero es evaluar lo que se va a necesitar, en mi caso voy a trabajar con micros de 8-16 bits y no creo que llegue a amortizar la compra de una analizador 16 canales frente a uno de 8. Buscando en internet entra las opciones disponibles me quedo con dos:

http://www.pctestinstruments.com/index.html: se trata de un analizador muy completo de 34 canales con memoria interna, frecuencias de muestreo de 500 MHz y 2k samples por canal. Además cuenta con interpretes de protocolo para I2C, SPI, CAN y RS232, además de varias opcines de trigger. Su precio en casa con todo lo necesario unos €400 aproximadamente.
http://www.saleae.com/logic/: analizador de 8 canales sin memoria, una frecuencia máxima de muestreo de 24MHz (depende del PC y del uso del bus USB que estemos haciendo) e interpretes de protocolos I2C, SPI, 1WIRE y Serie. Su precio en casa 129€.

La diferencia de precio es muy alta entre uno y otro y ambos en principio cubren mis necesidades, que es realizar pequeños proyectos en casa con microcontroladores (ver comunicaciones serie y poco más) por lo que la elección es fácil ya que ambos disponen de un buen software.

Voy a hacer un pequeño review del analizador de www.saleae.com ya que el otro día en un foro de electrónica me preguntaron acerca de él y de su funcionamiento, y debido a su bajo precio (129 euros es muy poco en este tipo de herramientas) y a su calidad y buen funcionamiento es un instrumento que merece la pena comprar para aprender a trabajar con microcontroladores.

El envio lo realizan desde Europa por lo que en menos de una semana lo tenemos en casa, viene con una caja para guardarlo, el cable usb y con unas buenas pinzas para hacer las conexiones, la calidad de los materiales parece muy buena, click en las fotos para mayor detalle.







En cuanto al software lo tenemos que descargar de su página web, son unas pocas megas, lo tenemos disponible para Windows y pronto estará disponible versiones para Linux y para algo llamado Mac.



En la pantalla vemos los 8 canales cada uno de un color, el negro es el canal 1 y se corresponde con el cable negro del analizador, el cable de tierra es el de color gris, junto a cada canal aparecen 4 cuadritos para seleccionar el trigger, la condición que se tiene que dar en el bus para que el analizador comience a capturar la señal. Un desplegable para seleccionar el número de muestras que vamos a capturar, la velocidad a la que lo vamos a hacer y el boton para desplegar el cuadro con las distintas opciones. Abajo a la derecha tenemos un cuadro que nos permite visualizar de forma automática varias mediciones, además de sacar los dos cursores de tiempo y situarlos donde queramos para hacer mediciones exactas.

En el número de muestras podemos selecionar las siguientes opciones:

Depende de la RAM de nuestro PC y cuantas más seleccionemos mayor será el tiempo de señal que capturamos. Seleccionaremos las necesarias para ver nuestra señal, con la opción mínima 1M es suficiente para la mayoría de los casos.

En la frecuencia de muestreo podemos seleccionar las siguientes:

La frecuencia de muestro como mínimo tiene que ser siempre del doble que la frecuencia de la señal que queremos ver, aunque es recomendable usar frecuencias 4-6 veces mayor en los analizadores. Esta frecuencia depende de nuestro PC y del uso que se esté haciendo del bus USB, cuanto mayor sea la frecuencia que seleccionamos con mayor detalle podemos ver la señal que muestreamos. Por ejemplo si seleccionamos una frecuencia de muestreo de 1MHz cada 1 us el analizador capturar el valor de tensión (1 ó 0) en los canales y lo alamcena y representa en la pantalla.

El tiempo de la señal total que vamos a capturar está determinado por el número de muestras que seleccionemos y la velocidad a la que lo hagamos. Por ejemplo si seleccionamos un número de muestras de 10M y una velocidad de muestreo de 1MHz, capturaremos 10M*1us = 10 segundos de señal.

En el botón de opciones tenemos un menu desplegable:


Save Session y Load Session nos permite guardar una captura en nuestro PC y cargarla cuando queramos, de esta forma podemos por ejemplo hacer una captura y analizarla otro día o en otro momento, o comparar entre varias sin tener la necesidad de tener el hard funcionando, bastante útil esta opción.

En las siguientes líneas Analyzer nos permite configurar 4 interpretes de procoloco y asignar sus líneas y activarlos para su uso. Un interprete de protocolos es una característica del analizador bastante útil por no decir obligada, ya que interpreta los unos y ceros de la señal y nos lo muestra en pantalla, además de detectar ciertas condiciones del protocolo y también representarlas. Si no contamos con los interpretes sólo veremos pulsos a uno y cero y tendremos que interpretarlos a mano uno a uno, lo que lleva demasiado tiempo y no merece la pena teniendo estas opciones disponibles.


Si seleccionamos el protocolo I2C se nos abre su pantalla de configuración:


En ella seleccionamos que canales del analizador van a ser la línea SDA y SCL del protocolo, una vez que las seleccionemos el analizador nos da la opción de asignar el nombre SDA y SCL a la línea para que así aparezca en la pantalla del soft. En el cuadrito de abajo podemos seleccionar si los datos se van a representar en hexadecimal, decimal, octal o ASCII.

Ejemplo de una transmisión I2C capturada con el analizador:


Aquí se puede ver lo que hace el interprte de protocolos, la línea de abajo es la señal de reloj del protocolo y la de arriba la de datos, el interprete nos cálcula el valor del dato que se ha transmitido e incluso nos dice a quién se le ha transmitido, nos indican si se han producido los bits reconocimiento necesarios para el funcionamiento del protocolo I2C y nos indican donde se producen las señales de Start y Stop del protocolo. Si no contasemos con este interprete todo ésto habría que hacerlo a mano, lo que lleva bastante tiempo además de que es fácil equivocarse en un uno ó un cero, por lo que elegir un analizador con esta característica es necesario.

De la misma forma contamos con un interprete para SPI:


Donde asignamos los canales del analizador a las líneas del protocolo, configuramos el interprete para el protocolo: si se va a usar un protocolo con una línea de MOSI y otra de MISO o una bidireccional SDAT y donde y cuando se va a capturar el dato según el pulso de reloj, es decir los 4 modos posibles del protocolo SPI.

Ejemplo: captura del bus SPI del Dnano.



En el interprete para el protocolo serie podemos configurar sus características:


Y por último la pantalla del protocolo 1-Wire:


La otra opción del menú desplegable de opciones que nos interesa es la de Trigger:


Aquí seleccionamos cuantas muestras/capturas se van a representar en la pantalla antes de que tenga lugar la condición de disparo, es decir si seleccionamos 100K samples y tenemos una frecuencia de muestro de 1MHz, en la pantalla veremos lo que ha sucedido 100 ms antes de que el analizador empiece a capturar muestras y representarlas.

Un ejemplo del funcionamiento del trigger:


Tenemos una comunicación SPI, junto al nombre de cada línea tenemos 4 cuadritos que usamos para configurar la condición de disparo, cuando se cumpla la condición que ponemos en una línea se produce el disparo y se comienza la captura de la señal. En este caso hemos configurado en la línea amarilla la condición de disparo 10, es decir cuando la señal conectada a este canal pase de estar en nivel alto (1) a nivel bajo (0) se comienza a capturar y representar en la pantalla los valores lógicos de tensión capturados, en el ejemplo tenemos una frecuencia de muestreol de 8MHz, es decir leeremos las entradas del analizador cada 125 ns y representaremos su valor en pantalla, hemos seleccionado capturar 50M de samples (muestras) que junto a la velocidad seleccionada nos da un tiempo 6.25 s de señal a capturar, para un microcontrolador este tiempo es muy grande.

En el ejemplo se ve como cuando la línea amarilla pasa de 1 a 0 por primera vez se inicia la captura y en ese punto se establece el tiempo 0 s en la escala de arriba, el número de muestras seleccionadas en el trigger apareceran antes de 0s y después de 0 s el número de samples seleccionado.

Por último encontramos una zona en la pantalla donde podemos desplegar distintos valores y situar los cursores para medir un tiempo:


Un software muy cómodo de usar, se puede descargar de su página web y evaluar sin necesidad de tener el analizador lógico.

En resumen un equipo que destaca por su precio y que nos será muy útil para realizar proyectos con microcontroladores en casa, ya que si trabajamos con un micro y algo no funciona observar los pines de salida nos ayudará a encontrar el problema de una forma bastante rápida la mayoría de las veces, sin el analizador lo único que podemos hacer es suponer que está haciendo el micro en el circuito real.

Para cualquier comentario, correción:
blog comments powered by Disqus