Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
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:
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:
LiquidCrystal
para controlar o display LCD.