Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Filtrado de Señal com Arduino

O filtrado de sinal é uma técnica essencial na eletrônica e no processamento de sinais, utilizada para remover ruídos indesejados e melhorar a qualidade do sinal recebido. No contexto do Arduino, o filtrado de sinal é crucial para garantir leituras precisas de sensores e para o funcionamento correto de sistemas de controle e automação. Este artigo abordará como implementar técnicas de filtrado de sinal utilizando o Arduino, com exemplos práticos e códigos explicativos.

Project: Neste projeto, vamos criar um sistema de filtrado de sinal para um sensor de temperatura. O objetivo é ler a temperatura de um sensor analógico, aplicar um filtro de média móvel para suavizar os dados e exibir a temperatura filtrada em um display LCD. Este projeto é útil para aplicações onde leituras precisas e estáveis de temperatura são necessárias, como em sistemas de controle de ambiente.

Components List:

  • 1x Arduino Uno
  • 1x Sensor de temperatura LM35
  • 1x Display LCD 16x2
  • 1x Potenciômetro (para ajuste de contraste do LCD)
  • 1x Protoboard
  • Jumpers

Examples:

// Inclui as bibliotecas necessárias para o LCD
#include <LiquidCrystal.h>

// Define os pinos do LCD
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

// Define o pino do sensor de temperatura LM35
const int sensorPin = A0;

// Define o tamanho da janela do filtro de média móvel
const int windowSize = 10;
float readings[windowSize]; // Array para armazenar as leituras
int readIndex = 0; // Índice atual no array
float total = 0; // Soma total das leituras
float average = 0; // Média das leituras

void setup() {
  // Inicializa o LCD
  lcd.begin(16, 2);
  lcd.print("Temp:");

  // Inicializa o array de leituras com 0
  for (int i = 0; i < windowSize; i++) {
    readings[i] = 0;
  }
}

void loop() {
  // Subtrai a leitura mais antiga da soma total
  total = total - readings[readIndex];

  // Lê a nova leitura do sensor
  readings[readIndex] = analogRead(sensorPin);

  // Adiciona a nova leitura à soma total
  total = total + readings[readIndex];

  // Incrementa o índice atual
  readIndex = readIndex + 1;

  // Se o índice atual for igual ao tamanho da janela, reinicia para 0
  if (readIndex >= windowSize) {
    readIndex = 0;
  }

  // Calcula a média das leituras
  average = total / windowSize;

  // Converte a média para temperatura em Celsius
  float temperature = average * (5.0 / 1023.0) * 100.0;

  // Exibe a temperatura no LCD
  lcd.setCursor(0, 1);
  lcd.print(temperature);
  lcd.print(" C");

  // Aguarda 1 segundo antes da próxima leitura
  delay(1000);
}

Comentários sobre o código:

  • O código utiliza a biblioteca LiquidCrystal para controlar o display LCD.
  • O sensor de temperatura LM35 está conectado ao pino analógico A0.
  • Um filtro de média móvel é implementado utilizando um array para armazenar as leituras e calcular a média.
  • A temperatura filtrada é exibida no display LCD a cada segundo.

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.