¿Las mejores herramientas para depurar circuitos digitales simples?

Soy un desarrollador de software profesional que está acostumbrado a los lujos de los depuradores integrados. Desde hace un tiempo, he estado experimentando con la plataforma Arduino. Sin embargo, encuentro que intentar interactuar con componentes como un sensor de temperatura digital Dallas DS1820 es como andar a tientas en la oscuridad.

Suponiendo un presupuesto amplio de $200 o menos, ¿qué tipo de herramientas hay para ayudarme a visualizar lo que está pasando? He mirado el MSO-19 de Link Instruments, pero honestamente no sé mucho sobre la diferencia entre un osciloscopio y un analizador lógico.

¿Cómo sé que el dispositivo que compre será capaz de medir los tipos de componentes (simples) que estoy usando?

Respuestas (8)

Básicamente, un osciloscopio le brinda una lectura graduada del voltaje en la línea, mientras que un analizador lógico solo le dirá si es 0 o "alto" (el valor de "alto" podría ser potencialmente 5V, 3.3V o 1.8V dependiendo de su circuito). A menudo verá que los analizadores lógicos tienen muchos más canales (líneas que se pueden leer simultáneamente) que los osciloscopios debido a la menor resolución requerida.

En cuanto a dispositivo en concreto, he oído hablar muy bien de la Saleae Logic . Muestrea a 24 MHz; esto significa que verifica si el voltaje en una sonda en particular es alto o bajo 24 millones de veces por segundo. El software también parece tener algún conocimiento de los protocolos integrados comunes para ayudar a la depuración. Me imagino que 24 MHz serían suficientes para el trabajo de arduino, ya que la velocidad máxima de reloj del Atmegaxx8 es de 20 MHz.

Después de medio día de más investigación, puedo decir que Saleae Logic debería ayudarme con el 90 % de las ideas que tengo, por ahora. El software se ve pulido e intuitivo para un "forastero" del hardware como yo. Puedo ver cómo un osciloscopio sería inmensamente útil, pero para los tipos de proyectos simples, un analizador lógico USB parece una buena compensación.
En The soul of a new machineTracy Kidder dice (parafraseando) que los hombres de las cavernas usaban un osciloscopio para ver por qué el fuego no ardía. :-)

esto es solo una adición a la respuesta de penjuin, ya que no encajaba en un comentario y su respuesta es generalmente correcta. Solo quiero aclarar una implicación en su respuesta.

Tenga mucho cuidado al elegir un dispositivo de medición en función de su ancho de banda/tasa de muestreo. Un dispositivo con una frecuencia de muestreo de 25 MHz no puede muestrear con precisión una señal de reloj digital de 25 MHz, ni siquiera cerca.

Si toma una señal de reloj digital a 25 MHz y la introduce en un o-scopio con un ancho de banda de 25 MHz, verá algo parecido a una onda sinusoidal. Un osciloscopio con una frecuencia de muestreo de 25 MHz probablemente mostraría un nivel de CC ya que, según Nyquist, la señal de frecuencia más alta que dicho osciloscopio podría muestrear sería de 12,5 MHz.

Una onda cuadrada contiene su frecuencia fundamental, que es su frecuencia de reloj, para este ejemplo, 25 MHz. También contiene grandes armónicos extraños que le dan su forma cuadrada, para mirar una señal de reloj digital de 25 MHz con precisión, no solo necesita mirar 25 MHz, sino también 75, 125, 175, 225, etc. a la precisión deseada o hasta la velocidad de respuesta del transceptor.

Si bien esto es un poco menos importante para un analizador lógico, sigue siendo muy importante. El analizador lógico busca un 'alto' y un 'bajo' por encima o por debajo de algún umbral. Si lo que ve venir es una onda sinusoidal, verá estados altos y bajos artificialmente cortos y espacios artificialmente largos entre bits. Esto puede depender un poco de la arquitectura del analizador.

Esto puede hacer imposible el diagnóstico de problemas relacionados con varios modos de transmisión. Por ejemplo, SPI tiene 4 modos diferentes en función de que los datos sean válidos en los flancos ascendentes o descendentes del reloj y también en la polaridad de los datos (¿es alto un 1 o un 0?). Otros protocolos de transmisión también tienen este problema (I2S y formatos de audio relacionados, por ejemplo). Si no puede identificar con precisión cuándo tienen lugar las transiciones de borde, es casi imposible determinar si el bus está actuando dentro de las especificaciones.

Por lo general, necesita tasas de ancho de banda/muestreo mucho más altas que la tasa de datos objetivo prevista. Si desea muestrear un bus I2C de 40 khz, un analizador lógico con una frecuencia de muestreo de 100 MHz es más que suficiente. Si necesita muestrear un bus SPI de 25 MHz, debe tener un osciloscopio/analizador con un ancho de banda mucho mayor, cerca de 500 MHz si necesita una precisión real, así como una frecuencia de muestreo que permita la medición en ese rango de frecuencia.

Por lo tanto, el dispositivo penjuin recomendado con una frecuencia de muestreo de 24 mhz probablemente solo pueda proporcionar una medición precisa de las señales digitales de menos de ~ 2 mhz con una velocidad de respuesta apreciable para esa velocidad de datos.

Tienes toda la razón, esto se me olvidó por completo. Para ayudar a ilustrar aún más este efecto, introduje una onda cuadrada de 1 khz en mi osciloscopio y tomé un volcado de pantalla de la transformada de Fourier resultante (el eje x es básicamente la frecuencia): i.imgur.com/lJvtD.png . Los armónicos son los picos que se repiten.
@penjuin perfecta ilustración. Solo para aclarar mi respuesta para el owen, el dispositivo recomendado por penjuin probablemente sea muy capaz de manejar un ardunio, ya que es probable que nunca necesite lidiar con una interfaz que se ejecuta a> 2 mhz con esa clase de dispositivo. Solo quería asegurarme de que no lo tomara como una regla general y que terminara mordiéndolo si pasa a dispositivos/interfaces de mayor velocidad más adelante.
Un analizador lógico con un umbral variable configurado correctamente suele proporcionar una resolución suficiente para analizar la lógica con solo unos pocos factores por encima de la frecuencia de la señal. El problema existe porque el controlador que recibe la señal cambiará a cero lógico para cualquier cosa por debajo de 1,2 V (por ejemplo) y el 1 lógico para cualquier cosa por encima de 2,2 V (por ejemplo), mientras que el analizador lógico podría cambiar a 1,7 V haciendo que el tiempo menos preciso. En muchos casos, una frecuencia de muestreo de aproximadamente 2 o 3 veces más rápida en un circuito digital es suficiente para comprender lo que está sucediendo.
@wouter simons tiene cuidado de no confundir el ancho de banda y la frecuencia de muestreo (de hecho, también limpié mi uso de palabras en la respuesta). Una tasa de muestreo de 2x la frecuencia de su señal es el mínimo indispensable para detectar esa señal. En las prácticas, los osciloscopios y especialmente los analizadores suelen sobremuestrear mucho. Por ejemplo, mi alcance tek tiene un ancho de banda de 100 MHz pero muestra a 2,5 GHz.
Gran respuesta. Seguí tu publicación muy bien y probablemente aún pueda medir lo que quiero con uno de los dispositivos más baratos que existen. Estaré atento a las limitaciones a medida que explore componentes más complicados.

Si planea trabajar principalmente en circuitos digitales, el analizador lógico es lo que necesita. Los osciloscopios son excelentes para mostrar relativamente pocas (por ejemplo, 2-4) señales analógicas con gran detalle, mientras que los analizadores lógicos, dado que se ocupan principalmente de la relación entre alto y bajo, suelen tener muchas más entradas.

Ciertamente, puede usar un O-scope como analizador lógico, pero la ventaja de este último es que es más fácil obtener "una imagen general" al poder ver docenas de señales simultáneamente.

Hay algunas buenas respuestas a esta pregunta similar: ¿Analizador lógico para principiantes?

En cuanto a los analizadores lógicos, escribí una comparación básica de los (relativamente) económicos:

Comparación de analizadores lógicos basados ​​en PC

Una cosa a tener en cuenta sobre la velocidad de muestreo, una regla general es que generalmente necesita al menos 4 veces su tasa de datos para obtener una lectura precisa, y hasta 10 veces es mejor. Entonces, si desea monitorear una señal de 8MHz (que puede generar fácilmente a partir de un AVR económico en SPI, por ejemplo), querrá un analizador de frecuencia de muestreo de 32-80MHz. Esto solo se aplica cuando se captura en modo 'asincrónico'. Si está capturando en modo 'síncrono' (por ejemplo, con una señal de reloj), entonces su frecuencia de muestreo solo necesita coincidir con la frecuencia de la señal de reloj. Entonces, por ejemplo, en ese caso, el muestreo síncrono de 8 MHz sería suficiente para capturar una señal SPI de 8 MHz (ya que tiene una señal de reloj dedicada).

Tengo un MSO-19 y me gusta mucho. Me gustaría que tuviera más de un canal analógico, pero funciona como un osciloscopio y un analizador lógico. Por el precio, creo que es un buen equipo (y funciona bien en VMWare en OS X). El o'scope me ayudó a ver lo que realmente sucede en una parte del circuito, y no muestra solo el estado alto/bajo de una línea digital, como lo hace un analizador lógico. Es un voltímetro mucho más preciso (y de respuesta más rápida) que su multímetro estándar. Sin embargo, sería muy bueno si pudiera decodificar datos en serie, en lugar de solo I2C y SPI...

Esta respuesta probablemente no sea de mucha utilidad para usted usando ardunio, pero es una respuesta a la pregunta general.

Uso mucho las funciones del analizador lógico de mi pickit2. Claramente, está diseñado para programar PIC, pero también tiene un modo de analizador lógico de 3 canales que uso todo el tiempo para mirar señales digitales. Todavía lo uso para eso aunque estoy usando Cortex-M3 para mis proyectos actuales. Claramente, es una herramienta extremadamente primitiva para el estándar de equipo adecuado, pero aun así la encuentro increíblemente útil.

Lo he usado para depurar circuitos I2C y señales de salida de TV también, por ejemplo, vea mi publicación aquí

Esto es genial y muy barato: http://www.seeedstudio.com/depot/preorder-open-workbench-logic-sniffer-p-612.html?cPath=75

Tiene una tasa de muestreo decente y puede admitir un proyecto HW abierto y genial. Parece que todavía está en una especie de etapa beta, por lo que podría no ser lo mejor si solo desea conectar algo y hacer que funcione.

Acabo de comprar esto hace un mes, ya que estaba trabajando principalmente con una netbook, tenía problemas con el tamaño de la pantalla de mi computadora para poder hacer clic en el botón "capturar", pero si tiene una computadora portátil o de escritorio de tamaño normal. 'Estaré bien. No lo he usado mucho, pero lo poco que tengo me gusta, ¡y el precio también es bueno!
Estoy usando este LA bastante, y dado que este es mi primer LA, probablemente estoy usando menos del 50% de la potencia/funcionalidad que proporciona. Comparando varios otros LA de bajo costo, encontré que es uno de los LA con mejor relación calidad-precio. El software no es malo. De hecho, me pareció bastante bueno para mis propósitos. Si quieres ver cómo lo he usado, simplemente haz clic en mi perfil y mira las preguntas que he hecho.