Funcionalidades de Osciloscópio com Plotter Serial no Arduino Mega

Já usaram o plotter serial do Arduino IDE?

No desenvolvimento do osciloscópio de 4 canais com Arduino Uno, utilizamos esta ferramenta para ajudar nas visualizações iniciais.

Neste artigo, irei apresentar o uso desta ferramenta, e a construção de algumas funcionalidades do osciloscópio que disponibilizei no meu último artigo: Osciloscópio de 4 canais com Arduino Uno.

Iremos usar Arduino IDE e o Plotter Serial, ferramenta que já vem integrada com a IDE. Utilizaremos um Arduino Mega, geração de onda quadrada com PWM e comunicação serial, e apresentamos o desenvolvimento do código em nove passos.

Materiais

Hardware

  • Arduino Mega
  • Cabo USB
  • Computador Windows
  • 1 fio macho-macho

Software

  • Arduino IDE

1. Setup Arduino IDE

A Arduino IDE está disponível no site oficial do Arduino.

Para quem é iniciante, vale a pena conferir este outro artigo com maiores detalhes sobre a instalação e uso desta IDE.

Na Arduino IDE, abra o exemplo “Blink”, em Arquivo -> Exemplos -> 01.Basics -> Blink

Conecte o Arduino Mega no Computador através do cabo USB. Na Arduino IDE, selecione o Arduino Mega como placa em Ferramentas -> Placa -> Arduino/Genuino Mega or Mega 2560.

Selecione também a porta USB onde o Arduino Mega está conectado, em Ferramentas -> Porta.

Aperte o ícone de carregar. Após a compilação e carregamento, indicado pela mensagem “Carregado”, o led integrado ao Arduino Mega deverá estar piscando.

2. Uso de PWM para Geração de Onda Quadrada

Vamos usar o PWM para geração de onda quadrada.

Para isso, iremos tomar como base o exemplo “Fade”, em Arquivo -> Exemplos -> 01.Basics -> Fade

A partir do exemplo, observamos a declaração do pino 9 com suporte a PWM como saída, e o uso de analogWrite(pino, valor) para o PWM, onde pino é o pino onde o sinal PWM será gerado, e valor é um parâmetro entre 0 a 255, que indica o duty cycle da onda gerada (isto é, em que porcentagem do tempo o sinal fica em 1).

Adaptamos estes comandos para a geração do sinal PWM no início do programa.

Agora que geramos o sinal, precisamos visualizá-lo. Após completar os passos seguintes, com as funcionalidades de osciloscópio desenvolvidas, poderemos visualizar este sinal e ter certeza do correto funcionamento.

3. Comunicação Básica Serial

No setup, iremos incluir a comunicação serial e imprimir duas frases para teste através dos comandos Serial.begin() e Serial.println().

Iremos abrir o monitor serial em Ferramentas -> Monitor Serial.

Importante configurar o baud rate do monitor serial em 115200, o mesmo especificado no código MegaPlotter.

Após a compilação e carga do programa, podemos ver os textos no monitor serial, e assim validar o correto funcionamento desta comunicação.

4. Temporização

Agora iremos executar um procedimento a cada dois segundos.

Para isso, declaramos uma variável prevMillis, que armazenará um registro da contagem de milisegundos. No loop, comparamos esta variável com o registro atual da contagem de milisegundos. Se esta diferença for maior que 2000, atualizamos o prevMillis para nos prepararmos para a próxima execução, e podemos realizar o procedimento temporizado.

Neste caso, o procedimento temporizado foi a impressão da frase “teste” com o uso do Serial.println(), conforme o passo anterior.

Após a compilação e carga, devemos visualizar a impressão da palavra “teste” a cada 2 segundos no monitor serial.

5. Leitura da Entrada Analógica

Iremos ler a entrada analógica A0 e imprimir esta leitura a cada dois segundos.

Basta declarar o pino A0 como entrada no setup, e substituir o “texto” do programa anterior pela função analogRead().

Após compilação e carga do programa, os valores lidos devem estar disponíveis no monitor serial, com atualização a cada dois segundos. Como o pino A0 ainda não está conectado (ou seja, o pino A0 está em aberto), o valor no monitor serial deve mudar a cada leitura.

6. Armazenamento de 2500 amostras em Lista

Iremos armazenar 2500 amostras coletadas com o analogRead() em uma lista,e a cada dois segundos coletar e imprimir os resultados.

Com a declaração da lista e dois loops dentro do loop principal, conseguimos implementar estas funcionalidades.

7. Visualização das 2500 amostras com Plotter Serial

Podemos fechar o monitor serial e abrir o plotter serial, em Ferramentas -> Plotter serial.

Lembre-se de conferir se o baud rate está em 115200.

Observamos que a escala fica mudando a cada impressão.

Para corrigir isto, podemos imprimir mais dois canais: uma constante em 0 e outra constante em 1023:

Para testar, podemos ligar o fio macho-macho no A0, e segurar a outra ponta na mão.

O sinal deve ser alternado:

8. Monitoramento de Onda Quadrada

Podemos monitorar a onda quadrada gerada no passo 1 com o plotter serial.

Primeiro, o fio macho-macho deve ser conectado entre os pinos A0 e 9 do Arduino Mega.

9. Sincronismo (trigger)

Para implementar o trigger e funcionalidade single presentes em osciloscópios convencionais, é necessário monitorar o sinal de interesse, e detectar sua borda de subida.

No loop, adicionamos outra estrutura for que realiza a leitura do valor analógico atual, compara com o valor anterior, e permite os procedimentos de leitura, armazenamento e impressão implementados anteriormente se o valor da leitura anterior for menor que o limiar (definido como 512), e o valor atual for maior que o limiar.

Este código funciona da seguinte forma:

  1. Início do prevState como -1 para realizar a comparação entre o estado anterior e o atual apenas na segunda leitura. Se o prevState fosse inicializado como 0, caso a primeira leitura fosse maior que sincValue o trigger seria disparado, mesmo que não fosse uma borda de subida.;
  2. Loop com variável k entre 0 e 500, com k incrementando em uma unidade a cada passo
    1. Obtemos a variável estado como um booleano (valor 0 ou 1; falso ou verdadeiro), que indica se a leitura atual é maior que o limiar (definido como 512);
    2. Se o estado anterior indica que o sinal lido anterior não era maior que o limiar, mas o estado atual indica que o sinal lido atual é maior que o limiar, termine o loop e prossiga para os procedimentos de leitura, armazenamento e impressão;
    3. Caso contrário, atualize o valor do estado anterior com o estado atual.

De forma visual, os passos descritos estão representados na figura a seguir:

Outros ajustes são a definição de uma variável binária para que a leitura ocorra apenas uma vez; troca do número total de amostras de 2500 para 500, para que cada coleta de dados preencha a tela inteira; e a troca da referência do valor máximo de 1023 para 1100 para melhorar a visualização.

Com esses ajustes feitos, podemos ver a onda gerada com o plotter serial.

Observe que a cada reinício (que pode ser feito com o botão físico de reinício presente no Arduino Mega), uma coleta de 500 amostras é realizada.

Conclusão

Apresentamos o desenvolvimento passo-a-passo de funcionalidades de osciloscópio com Arduino Mega, e visualizamos a onda quadrada PWM com sucesso.

Diferente do meu artigo anterior, desta vez mostramos o raciocínio por trás da construção das funcionalidades desejadas.

O código está disponível em GitHub.

O desenvolvimento e compartilhamento de ferramentas de bancada com Arduino é uma iniciativa do projeto LabEAD, que busca viabilizar laboratórios remotos neste contexto de distanciamento social na USP e UFABC.Se interessou? Dê uma olhada nos vídeos da playlist no Youtube, e na página no Facebook.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Arduino » Funcionalidades de Osciloscópio com Plotter Serial no Arduino Mega
Comentários:
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments
Talvez você goste:

Nenhum resultado encontrado.

Séries

Menu

WEBINAR
 
Debugging
em Linux embarcado

 

Data: 30/09 às 19:30h - Apoio: Mouser Elecctronics
 
INSCREVA-SE AGORA »



 
close-link