Sempre desejei ter um analisador lógico. A muitos anos tenho procurado um.

Um analisador Lógico profissional tem um preço absurdo. Atualmente já existem analisadores

mais baratos. Alguns analisadores americanos na faixa dos 50 dólares e os chineses clonando por até 10 dólares.

 

Mas como importar aqui no Brasil é a aquela dificuldade, devido as taxas abusivas de importação, estava

procurando na Internet um analisador que eu pudesse construir. E pesquisando, encontrei no início do ano

esse projeto de um analisador lógico com o Arduino.

 

Na época eu pensei – essa é a solução! Mas na época procurei  vários procedimentos de como usa-lo e devido

a instruções mal feitas e incompletas eu não consegui usá-lo.  Nesse fim de semana, procurando novamente

esse analisador, finalmente consegui faze-lo funcionar.

 

O programa Logic Sniffer é um projeto muito bem feito para analisadores que são comercializados pela internet:

Sump analyzer , Open Bench Logic Sniffer e outros mais.

O programa é bem versátil e é grátis! Pode rodar no Windows, no Linux e também no Mac.

Ele tem inúmeros recursos para serem usados e aparentemente simples de usar.

http://www.lxtreme.nl/ols/

http://www.sump.org/projects/analyzer/

http://dangerousprototypes.com/docs/Open_Bench_Logic_Sniffer

 

E um outro programador resolveu adaptar o Logic Sniffer para os Arduinos  com ATmega168, ATmega328 e

ATmega2560:

https://github.com/gillham/logic_analyzer

 

Ele adaptou, mas não criou instruções claras de como usá-lo. Um outro colaborador criou esse procedimento

que ajudou bastante:

http://letsmakerobots.com/node/31422

 

No fórum do Arduino tem esse tópico, mas não ajudou muito:

http://forum.arduino.cc//index.php?PHPSESSID=j9h5qor1fn2ho628049mgo...

 

Então como colaboração para quem se  interessar, vou divulgar todo o procedimento de utilização do Arduino como Analisador Lógico. Não  precisará de nenhum hardware adicional além de um Arduino.

Qualquer dúvida, podem perguntar. Tive muita dificuldade para fazê-lo funcionar. Agora que eu consegui, ficou tudo mais fácil. 

Gustavo Murta (BH) 

Procedimento de instalação do Analisador Lógico Arduino:

 

Primeiramente faça o download do Logic Sniffer , no meu caso para Windows ( meu PC roda Windows 8 /64 bits).

Creio que roda em qualquer versão de Windows, pois o aplicativo foi desenvolvido  em Java.

É claro, tem que ter Java  instalado no seu PC também – Arduino foi também desenvolvido em Java.

 

Download do JAVA (gratuito)  - se você ainda não tiver:

http://www.java.com/pt_BR/download/

 

- Usei a versão mais atual do Logic Sniffer =>  ols-0.9.7-full.zip (para Windows). Tem para Linux e MAC também.

http://www.lxtreme.nl/ols/#download

- Descompacte-o em uma pasta, por exemplo \Logic Sniffer ,

- Para rodar o programa Logic Analyzer  Client rode run.bat dentro da pasta \Logic Sniffer \ols-0.9.7

- Deverá aparecer essa tela , depois ele terá que ser configurado.

Agora faça o download  do Sketch Logic Analyzer para Arduino :

https://github.com/gillham/logic_analyzer

 

Veja que a versão mais atual do programa  roda somente no ATmega 2560.

Se você deseja usa-lo com Arduino com ATmega328 (no meu caso estou usando o Arduino Duemilanove),

tem que escolher a versão V0_10.

Abaixo da linha violeta, clique em Branch e escolha a versão agla_v0_10.

 

- No lado direito tem a opção download ZIP , baixe o  arquivo  logic_analyzer-agla_v0_10.zip

- Se você já for usuário do GithHub poderá clonar no seu desktop, mas não há necessidade.

 

Para encontrar o local adequado para descompactar esse aquivo, rode o Arduino IDE no seu PC.

(estou usando a versão mais atual arduino-1.0.5)

 

- Clique em File e depois Preferences,

- Veja o Sketchbook location. Esse será o local adequado para descompactar o arquivo do Logic Analyzer.

- No meu PC é C:\Users\Gustavo\Documents\Arduino

 

- Descompacte o arquivo zipado em uma pasta dentro do  Arduino IDE (por exemplo):

  C:\Users\Gustavo\Documents\Arduino \logic_analyzer-agla_v0_10

Arquivos importantes do programa para  o Arduino Duemilanove (2009):

 

logic_analyzer.ino       - Implementação do protocolo SUMP para placas  Arduino

ols.profile-agla.cfg      - Configuração da profile  Arduino Generic Logic Analyzer 

Procedimento para usar o Analisador Lógico Arduino:

 

Pronto, agora é a hora de usar. Tive muita dificuldade para fazer funcionar.  No site oficial não tem o procedimento

de uso. Foi procurando em vários sites, que finalmente entendi. Depois devo fazer um procedimento em inglês e enviar para o desenvolvedor do programa. Ele merece !

 

- Ligue a fonte de energia  no seu Arduino,

- Conecte-o no seu PC ,

- Rode o programa Arduino IDE,

- Para saber qual porta de comunicação esta usando clique Tools e depois em Serial Port:

  ( no meu caso estou a usando a COM3) 

- Clique em Sketch e depois Add File.

- Carregue o arquivo logic_analyzer.ino

   Lembre-se que deverá esta na pasta (por exemplo):

  C:\Users\Gustavo\Documents\Arduino \logic_analyzer-agla_v0_10

Clique em Verify para ver se tem algum erro de compilação.

Se apresentar algum erro (mensagens em amarelo), terá que corrigir primeiro.

Se tudo ok, vá em frente faça o Upload para o sua placa Arduino.

Os leds  de RX/TX vão piscar por alguns segundos.

Agora clique em Serial Monitor (lado direito).

Na janela do Serial Monitor , verifique se a velocidade de comunicação esta configurada para 115200 baud.

Se não estiver, mude-a.

Digite o número 1 e enter  , para fazer um teste.

Veja que aparecerá alguns parâmetros do programa. Oba, o Sketch esta rodando legal !

Esse passo é necessário para o funcionamento do Analisador lógico.

Feche agora essa janela, pois senão o Analisador Lógico vai reclamar que a porta COM3 esta sendo usada.

Quase lá ! Agora carregue o programa do Analisador Lógico.

Lembrando que para rodar o programa Logic Analyzer  Client rode run.bat dentro da pasta \Logic Sniffer \ols-0.9.7

Veja que o Analisador ficou pronto (ready na linha mais abaixo).

Informação importante ! Quais portas do Arduino usar no Analisador Lógico ?

As versões antigas usavam as portas digitais 2 a 7 ( Ports  PD2 a PD7)

 

Mas a versão V0_10 usa as portas digitais 8 a 12 que são os Ports PB0 até o  PB4.

Lembre-se que essas portas usam 5V, não ligue em circuitos com 3,3V ou 12V por exemplo!

Com certeza vai queimar o seu Arduino ou o outro circuito que estava sendo monitorado.

 

Channel 0 = digital 8             Channel 2 = digital 10       Channel 4 = digital 12

Channel 1= digital 9              Channel 3 = digital 11       Channel 5 = digital 13 

 

No programa Logic Analyzer Client, clique em Capture, Device e selecione Open Bench LogicSniffer.

De novo na janela Capture, clique em Begin Capture.

Selecione esses parâmetros :

- Serial Port , COM3 , 115200bps, Arduino Generic Logic Analyzer.

Para ter certeza que existe comunicação, clique em Show device metadata.

Tem que aparecer Device type : AGLAv0 !

Se não aparecer, esta havendo problema com a comunicação serial.

Ainda na janela de Captura, clique na pasta Acquisition.

Saiba que o buffer recomendado para o Arduino Duemilanove é de 1024 amostragens.

Faça um teste com taxa de amostragem de 500 KHz.

Clique em Capture e Voilá !! Conseguiu fazer a captura da amostragem !!

Estas amostragens eu fiz com um contador binário 74HCT393.

E caramba! conferi com o osciloscópio estavam com a frequência certa!!

Fiz essa amostragem com Sampling rate de 1MHz.

Espero que tenha gostado. Aproveitem, pois fiquei a toda manhã de hoje fazendo esse procedimento.

Gustavo Murta (BH) 

Exibições: 24884

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de marco em 6 novembro 2013 às 6:38

Com taxa de 1 MHZ só é possível capturar 500KHz mesmo. Isso é determinado pelo teorema de 

Nyquist.

"Segundo o Teorema de Nyquist, a frequência de amostragem de um sinal analógico, para que possa posteriormente ser reconstituído com o mínimo de perda de informação, deve ser igual ou maior a duas vezes a maior frequência do espectro desse sinal." [fonte]

Sobre a placa da Texas, foi comprada no site da mesma e não houve taxas de imposto nem frete. O imposto pode ter sido questão de sorte

Comentário de José Gustavo Abreu Murta em 5 novembro 2013 às 6:38

Mais um recurso que o Logic Sniffer tem é a depuração de protocolos.

1 Wire, ASM45, DMX512, I2C, SPI, JTAG, Line decoder, Serial console, State analyzer e UART.

O que é muito bom, que o desenvolvimento da  ferramenta é publico. Assim ela poderá estar sendo evoluída por contribuições de outros colaboradores.

Comentário de José Gustavo Abreu Murta em 5 novembro 2013 às 6:29

Galera, fiz os testes de resposta de frequencia no Analisador Lógico com Arduino. 

Para o Arduino Duemilanove a taxa de amostragem (sampling rate) máxima é realmente 1 MHz. 

Nesse caso a frequencia maxima capturada foi de 500 KHz. Não consegui capturar sinais com frequencia de 1 MHz. Mas no site é informado que com o Arduino Mega consegue-se taxa de amostragem de 2 e 4 Mhz.

Uma função legal no Logic Sniffer é a janela de medição. Vejam que eu mudei o titulo dos canais.

E existe também essa janela de detalhes da aquisição:

Comentário de José Gustavo Abreu Murta em 4 novembro 2013 às 13:40

Legal esse seu analisador logico. Ele usa o mesmo Logic Sniffer desse tutorial.

Já existem analisadores lógicos chineses clones com taxa de amostragem de 24 MHz.

Procure por USBEE AX MINI no Deal Extreme.

Você comprou o seu diretamente do site da Texas? não teve frete e nem impostos?

Obrigado pela dica.

Comentário de marco em 4 novembro 2013 às 13:18

Gustavo

Obrigado pelos esclarecimentos.Sem dúvida um analisador lógico é uma ferramenta fundamental na bancada.

Um tempo atrás descobri um projeto que utiliza uma placa da Texas com ARM e o mesmo software. Vejam as características:

  • 10 MHz sampling rate
  • 16 kBytes sampling buffer
  • 8 channels (PORTB[0..7])
  • No external hardware except Stellaris Launchpad needed
  • State change on any pin starts sampling (no further trigger functions yet)

Comprei essa placa por $12 incluindo frete para o Brasil, recebi sem nenhuma taxação. Assim que tiver um tempo vou investir no analisador nessa versão.

Referências:

http://www.fischl.de/arm/sllogiclogger_logic_analyser_for_stellaris...

http://www.ti.com/ww/en/launchpad/tiva_c_head.html?DCMP=stellaris-l...

https://estore.ti.com/Tiva-C-LaunchPad.aspx

Comentário de José Gustavo Abreu Murta em 4 novembro 2013 às 12:59

Diego veja no link, no Arduino Mega podem ser usados 8 canais ou então escolher quais canais vai usar.

https://github.com/gillham/logic_analyzer/blob/master/README

On the Arduino Mega board 8 channels are supported and 7k of samples.
Pins 22-29 (Port A) are used by default, you can change the 'CHANPIN' below
if something else works better for you.
Sampling rate: 4MHz (or lower)
Channel Groups: 0 (zero) only
Recording Size:
   ATmega168: 532 (or lower)
   ATmega328: 1024 (or lower)
   ATmega2560: 7168 (or lower)
   Noise Filter: doesn't matter
   RLE: disabled (unchecked)
Comentário de Diego Rodrigo Souza em 4 novembro 2013 às 12:52

Nossa, com o 2560 deve ter um monte de canais hein...

Comentário de José Gustavo Abreu Murta em 4 novembro 2013 às 12:47

Marco e Diego, eu usei um 74HCT393 com um clock de entrada de 16 MHz.

Mas como eu dividi a frequencia nos dois contadores de 4 bits , isto é 8 bits, o periodo do canal 4 era de 2us (500KHz) , canal 3 - periodo de 4us (250Khz), canal 2 - periodo de 8us (125KHz) e o canal 1- periodo de 16us (62,5KHz).Veja que na linha superior tem a escala de tempo (e é real como eu já disse).

No GitHub do Gillham (o cara que criou essa adaptação para o Arduino) ele informa que são possíveis samples rates de 2MHz e 4 MHz, mas ainda não sei se com o Arduino ATmega 328 ou com ATmega2560. 

Depois vou testar a frequencia de amostragem maxima. Será que tem alguem com Arduino 2560 para testar para a gente?

Estou muito impressionado com esse analisador lógico. Ele pode ser util para muita gente. E a princípio, ele 

é confiavel. Vou fazer mais testes e postar aqui.

Comentário de marco em 4 novembro 2013 às 11:03

Ótima dica e tutorial. 

Só fiquei com uma dúvida:

Voce configurou o programa para taxa de amostragem de 500 KHz.certo?

E qual foi a frequencia de teste que você injetou no arduino para analisar?

Na verdade gostaria também de saber a frequencia máxima que pode ser tratada com o Arduino. 

Obrigado

Comentário de Diego Rodrigo Souza em 4 novembro 2013 às 10:43

Olá! Perfeito seu passo a passo, muito útil mesmo!

Pergunta de leigo, rsrs, qual seria o sampling rate máximo utilizando o Arduino?

Obrigado! 

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço