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.