Tabla de contenido:
- Paso 1: Montaje
- Paso 2: Funciones utilizadas: servidor
- Paso 3: circuito utilizado
- Paso 4: Código fuente: Maestro
- Paso 5: Código fuente: esclavo
- Paso 6: Analizador: hardware
- Paso 7: instalación del software Saleae
- Paso 8: configurar el entorno para nuestras pruebas
- Paso 9: configurar el entorno para nuestras pruebas
- Paso 10: Configurar el entorno para nuestras pruebas
- Paso 11: Configurar el entorno para nuestras pruebas
- Paso 12: Configurar el entorno para nuestras pruebas
- Paso 13: Captura: descripción general
- Paso 14: Captura: resultado del análisis del protocolo
- Paso 15: Captura: Canal 0 y datos (SDA)
- Paso 16: Captura: Canal 1 y Reloj (SCL)
- Paso 17: Captura: Canal 2 y Serie (TX0)
- Paso 18: Configurar el entorno para nuestras pruebas
- Paso 19: Captura: osciloscopio y analizador
- Paso 20: Captura: Observación de una falla (ejemplo de falla en serie)
- Paso 21: Descarga los archivos
Video: ¡Abre tus ojos! Analizador lógico: 21 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
El analizador lógico facilita la visualización del tren de pulsos, que son los bits que viajan en una línea de comunicación. Así, abre los ojos para identificar un posible problema. ¿Porque es esto importante? Es una herramienta de desarrollo y detección de fallas muy eficiente que puede ahorrarle tiempo. En este video de hoy, evaluaremos la importancia del analizador lógico, observaremos algunos protocolos de prácticas comunes mientras usamos este dispositivo y ejemplificaremos una falla de detección sin la ayuda de un analizador lógico.
En este video, utilicé un modelo relativamente económico (alrededor de $ 35) y eficiente, con una interfaz gráfica y software gratuito.
Paso 1: Montaje
Paso 2: Funciones utilizadas: servidor
• Jumpers para conexiones
• 2 Arduinos (usamos 2 Mega Arduinos 2560)
• Analizador lógico (usamos Saleae)
• Cables de conexión USB para Arduino y analizador.
• Osciloscopio (opcional)
• Protoboard
Paso 3: circuito utilizado
Aquí tenemos el esquema, que muestra el monitoreo de tres pines: TX0, SDA y SCL. Tenemos dos Arduinos: un maestro y un esclavo.
Paso 4: Código fuente: Maestro
En la configuración, incluiremos la biblioteca para la comunicación i2c. Ingresamos a la red como Maestro e inicializamos el serial 0. En el Loop, solicitamos bytes de datos esclavos para la comunicación con nuestro Arduino número 8, como definimos en el ejemplo. Imprimimos en el serial, que será evaluado con el analizador lógico, los bytes recibidos.
#include // inclui una biblioteca para la comunicación I2C void setup () {Wire.begin (); // Entra na rede como Mestre (endereço é opcional para o mestre) Serial.begin (115200); // inicia un serial 0} void loop () {Wire.requestFrom (8, 6); // require 6 bytes de dados do escravo de endereço 8 while (Wire.available ()) {// enquanto houver bytes para receber… char c = Wire.read (); // recebe cada byte e armazena como caracter Serial.print (c); // envia o caracter pela serial (na verdade vai para o buffer)} delay (500); // aguarda meio segundo}
Paso 5: Código fuente: esclavo
En este código esclavo, vuelvo a incluir la biblioteca para la comunicación i2c. Entro a la red como esclavo con la dirección 8. Registramos el evento de solicitud y lo asociamos con la función "solicitud". No es necesario que haga nada en el bucle, solo dé un retraso de 0,1 segundos.
Finalmente, tenemos la función de solicitud que se ejecutará cuando ocurra el evento de solicitud por parte del Maestro, el cual fue registrado en el Setup. Respondemos, finalmente, con un mensaje de 6 bytes.
#include // inclui una biblioteca para la comunicación I2C void setup () {Wire.begin (8); // entra na rede como escravo com endereço 8 Wire.onRequest (requestEvent); // registro del evento de requisito // y asociación de la función requestEvent} void loop () {delay (100); // não faz nada no loop, apenas aguarda 0, 1 segundo} // função que será ejecutada quando ocorrer o evento de requisição pelo mestre // foi registrado como evento no setup void requestEvent () {Wire.write ("teste"); // responde com uma mensagem de 6 bytes}
Paso 6: Analizador: hardware
Frecuencia de muestreo hasta: 24 MHz
Lógica: 5 V a 5,25 V
Umbral de nivel bajo 0,8 V
Umbral de alto nivel 2,0 V
Impedancia de entrada de aproximadamente 1 Mohm o más
Paso 7: instalación del software Saleae
El programa que recibe los datos capturados por el analizador lógico y decodifica los bits se puede descargar en el siguiente enlace:
Paso 8: configurar el entorno para nuestras pruebas
Aquí muestro la interfaz, que me gustó especialmente porque estaba limpia.
Paso 9: configurar el entorno para nuestras pruebas
A continuación, se muestran algunas opciones de configuración:
• Al hacer clic en el nombre del canal, podemos cambiarlo.
• Podemos determinar si uno de los canales servirá como disparador para la captura y la forma de detección.
• Al hacer clic y mantener presionado el número de canal, puede cambiar su posición en la lista.
• Al hacer clic en el engranaje, podemos configurar la visualización del canal, expandiendo…
•… u ocultando el canal. Ocultaremos todos los canales que no usaremos.
Paso 10: Configurar el entorno para nuestras pruebas
Al hacer clic en las flechas del botón "Inicio", se encuentran las opciones de Frecuencia de muestreo y duración de la grabación.
Por alguna razón, si el software detecta que la tasa no se puede mantener, se mostrará un mensaje y automáticamente la tasa se reducirá hasta que se alcance un valor funcional.
Paso 11: Configurar el entorno para nuestras pruebas
También incluiremos los analizadores de protocolo. Primero es el I2C, siguiendo las definiciones de la biblioteca WIRE y asociando los canales correctamente. Finalmente, presentaremos el analizador en serie asincrónica. Debemos tener cuidado de configurar correctamente los parámetros de acuerdo con el ensamblaje.
Paso 12: Configurar el entorno para nuestras pruebas
En la pestaña "Protocolos decodificados", debemos comprobar qué analizadores de protocolo están habilitados. Allí aparecerán los datos. En la pestaña "Anotaciones", podemos agregar algunos de los resultados para una mejor visualización. Simplemente haga clic en el icono "agregar medida".
Paso 13: Captura: descripción general
En la pantalla de captura, el programa muestra el tren de pulsos de datos de SDA, SCL y TX0.
Paso 14: Captura: resultado del análisis del protocolo
Aquí vemos el resultado de la captura. En la pestaña "Protocolos decodificados", tenemos:
• La solicitud del servidor para el esclavo con id 8.
• La respuesta del esclavo, seis caracteres: "t", "e", "s", "t", "e" y un espacio.
• Cada uno va seguido de un bit ACK (reconocimiento) que indica la recepción de bytes correcta, excepto por el carácter de espacio NACK (no reconocimiento).
• A continuación, vemos el resultado de la decodificación del serial TX0, indicando los caracteres recibidos y enviados al terminal serial Arduino IDE.
Paso 15: Captura: Canal 0 y datos (SDA)
En esta imagen, tenemos el tren de pulsos de la línea SDA. Tenga en cuenta que se puede ver cada byte transmitido.
Paso 16: Captura: Canal 1 y Reloj (SCL)
Ahora, tenemos aquí el tren de pulsos de la línea SCL. Puedes comprobar más detalles simplemente colocando el ratón sobre la señal, como ves en la imagen. Podemos ver que la frecuencia del reloj era de 100 kHz.
Paso 17: Captura: Canal 2 y Serie (TX0)
En cuanto al tren de pulsos de la línea TX0, podemos ver el bit de inicio y los puntos de entramado de cada bit. Tenemos un byte que representa el carácter "e".
Paso 18: Configurar el entorno para nuestras pruebas
Aquí tenemos varias opciones para leer los datos.
Paso 19: Captura: osciloscopio y analizador
Mira aquí la pantalla que capturé con mi osciloscopio. La señal del analizador lógico representa solo las detecciones alta y baja, pero no representa la calidad de la señal. Esto se puede observar mejor en un osciloscopio.
Paso 20: Captura: Observación de una falla (ejemplo de falla en serie)
Ahora, mostraré un ejemplo de una falla en serie, que realmente me sucedió. Estaba con un módem GPRS, del tipo que se usa en un teléfono celular, la tarjeta SIM, tratando de conectarme al ESP32. Pero simplemente no se conectó. Luego verifiqué la fuente de alimentación, el cableado y cambié la placa. Hice de todo, pero nada lo solucionó. Decidí hacer un análisis lógico: descubrí que la señal ESP en UART 115200 comenzó a no coincidir. Es decir, el ESP32 estaba reproduciendo lo que debería ser 115, 200 a una velocidad diferente a esta.
Este error, que fue identificado por el analizador, se mostró con una X en rojo. Según tengo entendido, el programa dice que el punto que tiene ese bit está medio desplazado en el tiempo. A medida que aumenta este cambio, puede llegar un momento en que todo no coincida, de modo que la información no llegue al otro lado. Suele llegar, pero el SIM800 es sensible y si no es exacto, la información no llega al otro extremo.
No sé si esto es algo que pasa a menudo o no, pero a mí me pasó, y por eso decidí abordar este tema aquí. ¿Entonces qué hice? Disminuí la velocidad. Si pones 9, 600, 19, 200, hasta 38, 400, funciona, lo que no ocurre con los 115, 200.
Paso 21: Descarga los archivos
INO
Recomendado:
Integración del abre-puertas de garaje inteligente de bricolaje + asistente del hogar: 5 pasos
Abrepuertas de garaje inteligente de bricolaje + integración de asistente de hogar: convierta su puerta de garaje normal en inteligente con este proyecto de bricolaje. Le mostraré cómo construirlo y controlarlo usando Home Assistant (sobre MQTT) y tener la capacidad de abrir y cerrar de forma remota la puerta de su garaje. Usaré una placa ESP8266 llamada Wemos
ArduBand - ¡Salva tus ojos !: 6 pasos (con imágenes)
ArduBand - Save Your Eyes !: Hola, en la situación actual mucha gente trabaja en casa, por eso pasamos mucho más tiempo frente a computadoras o teléfonos inteligentes. A veces podemos sentarnos ante la pantalla durante varias horas, destrozándonos los ojos y curvándonos la espalda. Nos vendría bien un de
Haga un analizador lógico digital por menos de $ 1: 5 pasos
Haga un analizador lógico digital por menos de $ 1: un sensor de nivel lógico es un dispositivo que detecta si la salida de un componente es 1 o 0 (positivo o negativo). ¿Conoces esos bonitos sensores de nivel con pantallas LCD que cuestan alrededor de $ 25? Este es ridículamente más barato y hace lo mismo (es
¡Hack de batería de 12 voltios! ¡¡¡¡¡No le creerás a tus ojos !!!!! (actualizado): 7 pasos
¡Hack de batería de 12 voltios! ¡¡¡¡¡No le creerás a tus ojos !!!!! (actualizado): Inspirado por el instructable de Kipkay, pensé en comprar mis propias baterías de una marca diferente … ¡Y, vaya, me sorprendió
Analizador lógico con interfaz de usuario de Android: 7 pasos
Analizador lógico con interfaz de usuario de Android: el mundo ya está inundado de tantos analizadores lógicos. En mi afición por la electrónica, necesitaba uno para solucionar problemas y depurar. Busqué en Internet pero no encuentro el que estoy buscando. Así que aquí estoy, presentando … " TODAVÍA Otro Lo