Analisador Lógico LHT00SU1 – Primeiras Impressões

Toda vez que é necessário conectar um sensor, LCD ou outro dispositivo ao seu sistema embarcado que utilize protocolo I2C, SPI, 1-Wire, ou outro qualquer, normalmente é fácil encontrar bibliotecas que já fazem todo o trabalho.

Mas, não é raro depararmos com a necessidade de entender o que está acontecendo no nível mais baixo, lá nos sinais que transmitem os dados e controlam o protocolo.

‘Pode-se usar um osciloscópio com analisador lógico, ou se quiser uma solução mais barata, existem diversos analisadores lógicos que capturam os sinais e enviam para um computador pela porta USB.

O LHT00SU1 é um desses. E nesse artigo vamos fazer uma breve análise desse equipamento.

Esse osciloscópio utiliza o software USBee Suite SW, que só tem versão para Windows, e que pode ser baixado nesse site. Na página de download indicada, procure a seção “USBee Suite for DX, AX, ZX, SX and BusBee

Antes de utilizar o equipamento em um protocolo conhecido, vamos fazer um programa que gere ondas quadradas em duas saídas com frequências conhecidas. Assim poderemos verificar em detalhes como o analisador lógico funciona.

Eu utilizei um NODE MCU, uma placa da LoLin que utiliza um ESP8266, como o da figura abaixo

Node MCU – LoLin

Os sinais a serem analisados serão gerados nos pinos D6 (GPIO 12) e D7 (GPIO 13). E abaixo está o programa que gera os sinais:

/*
   Square Wave
 Program used to test LHT00SU1 - Logic Analyzer
 */
 define D6 12
 define D7 13
 // the setup function runs once when you press reset or power the board
 void setup() {
   // initialize digital pin LED_BUILTIN as an output.
   pinMode(D6, OUTPUT);
   pinMode(D7, OUTPUT);
 }
 boolean outer = 0;
 boolean inner = 0;
 // the loop function runs over and over again forever
 void loop() 
 {
   digitalWrite(D6, (outer?HIGH:LOW));   // Change outer signal
   outer = !outer;
   for (int i = 0; i < 8; i++) // 
   {
     digitalWrite(D7, (inner?HIGH:LOW));    // Change inner signal
     delay((outer?10:5));   // inner frequency depends on outer signal 
     inner = !inner;
   }
 }

Analisando o código, podemos ver que o sinal da saída D6 muda a cada 8 mudanças do sinal da saída D7.

E o período do sinal D7 alterna entre 10 ms e 5 ms.

Então, vamos fazer as conexões necessárias, como apresentado nas figuras abaixo

Conexão no Analisador Lógico

Serão utilizados dois canais digitais: o 1 DCH e o 2 DCH, conecte também o GND.

Conexão no Node MCU

  • 1 DCH – D6
  • 2 DCH – D7
  • GND – G

Conexões realizadas, basta conectar o dispositivo no computador através da porta USB e iniciar o software.

USBee – Tela Inicial

Como não vamos utilizar todos os canais, a sugestão é eliminar os que não serão usados. Para isso basta clicar no X de cada canal que se deseja retirar:

O próximo passo é configurar a taxa de amostragem e o tamanho da amostra.

  • Taxa de Amostragem (Sample Rate): quantidade de leituras por segundo. No nosso exemplo vamos coletar 4 milhões de amostras por segundo (4Msps)
  • Tamanho da Amostra (Buffer Size): o que se deve verificar aqui é o tempo da amostra. No nosso caso, os dados serão coletados por 2,5 segundos.

Faça o build para o Node MCU e aguarde a transferência. Assim que terminar, o programa já estará rodando e os sinais sendo gerados nas saídas D6 e D7.

Já podemos fazer a nossa primeira coleta clicando em Capture Once

Caso os sinais não estejam aparecendo como na imagem acima, altere o zoom até que o sinal apareça como apresentado acima. Observe que no canto superior esquerdo mostra a escala do gráfico. No caso da figura acima 80ms / div, ou seja, 80 milissegundos por divisão.

Já podemos verificar que a frequência do canal 1 dobra quando o sinal do canal 0 é 1, conforme programamos.

Uma característica que pode ser bastante útil quando analisamos protocolos é a marcação do Trigger. A linha vermelha vertical que é a origem da contagem de tempo no eixo horizontal.

Podemos escolher o canal e o tipo de trigger desejado: na borda de subida ou na borda de descida. Basta selecionarmos o trigger desejado conforme mostra a figura abaixo:

É possível também definir marcadores no eixo do tempo. O software disponibiliza dois marcadores: X1 e X2. Para posicioná-los, basta posicionar o mouse na barra cinza como mostrado na figura.

E então clicar com o botão esquerdo para posicionar a marcação X1:

E com o botão direito para posicionar o marcador X2:

No bloco de medições (Measurements) é possível verificar a posição exata dos marcadores X1 e X2, a diferença entre eles (dX) e a frequência (1/dX)

Conclusão

Apesar de não ter feito uma análise profunda do produto, principalmente a análise detalhada de protocolos como I2C, 1-Wire, etc, demonstrou atender bem a que se propõe, e o melhor: com um custo bem acessível.