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?
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.
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.
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.
Owen Tomas
stevenvh
The soul of a new machine
Tracy Kidder dice (parafraseando) que los hombres de las cavernas usaban un osciloscopio para ver por qué el fuego no ardía. :-)