Wednesday 13 December 2017

Exponencial moving average arduino no Brasil


Estou trabalhando em um robô móvel controlado através de um link sem fio de 2,4 GHz. O receptor está conectado ao Arduino Uno que serve a bordo como o controlador principal. O canal de entrada mais crítico (e principal) proveniente do receptor produz um sinal muito ruidoso, o que leva a muitas mudanças menores na saída dos atuadores, mesmo que não sejam necessárias. Estou à procura de bibliotecas que podem realizar o suavização eficiente. Existem algumas bibliotecas de suficiência de sinal disponíveis para o Arduino (Uno), solicitado em 16 de fevereiro às 13:57. Creio que vejo muitas picos de ruído de amostra única em seu sinal ruidoso. O filtro médio é melhor para se livrar de picos de ruído de amostra única do que qualquer filtro linear. (É melhor do que qualquer filtro passa-baixa, média móvel, média móvel ponderada, etc. em termos de tempo de resposta e sua capacidade de ignorar esses valores abertos de picos de ruído de amostra única). Existem, de fato, muitas bibliotecas de suavização de sinais para o Arduino, muitas das quais incluem um filtro mediano. Bibliotecas de suavização de sinal no arduino. cc: bibliotecas de suavização de sinal no github: Alguma coisa assim funciona no seu robô (A mediana de 3 requer muito pouca energia da CPU e, portanto, rápida): você pode filtrar isso digitalmente usando um baixo Filtro de passagem: mude o 0,99 para alterar a freqüência de corte (mais perto de 1,0 é menor freqüência). A expressão real desse valor é exp (-2piffs) onde f é a frequência de corte desejada e fs é a frequência em que os dados são amostrados. Outro tipo de filtro digital é um filtro de eventos. Funciona bem em dados que têm valores esportivos, e. 9,9,8,10,9,25,9. Um filtro de eventos retorna o valor mais freqüente. Estatisticamente este é o modo. As médias estatísticas, como Mean, Mode, etc., podem ser calculadas usando a Biblioteca Média Arduino. Um exemplo retirado da página da Biblioteca Arduino referente a: Uma biblioteca de suavização de sinal leve e rápido para a plataforma Arduino. Esta biblioteca fornece implementações de algoritmos de processamento de sinais como: Média de Movimento Simples (SMA) Média de Mudança Cumulativa (CMA) Média de Movimento Exponencial (EMA) Filtro de Golps de Savitzky (SGA) Algoritmo de Douglas Peucker de Ramer (RDP) Algoritmo de Kolmogorov Zurbenko (KZA) Use o padrão Processo para bibliotecas Arduino. Estão envolvidas as seguintes etapas: crie bibliotecas de pastas em seu clone Sketchbook Git, ou baixe e extraie essa biblioteca nessa pasta. Então, seu caderno de cadernos deve ter a seguinte estrutura - bibliotecas de agradecimentosmicrosmoothmicrosmooth. cpph e arquivos adicionais. No seu esboço, adicione include ltmicrosmooth. hgt e compile. A biblioteca pode ser usada como mostrado abaixo: Primeiro, inicialize a biblioteca: uint16t history msinit (SMA) onde o SMA pode ser substituído por qualquer um dos três códigos de alfabeto dados acima. Em seguida, insira seu valor de sinal analógico usando analogRead () ou pulseIn em uma variável int, aqui referida como valor de canal. Passe a variável no filtro inicializado na primeira etapa: int processvalvaldo smafilter (valor do canal, histórico) Repita para o canal de entrada para um sinal de domínio do tempo. Quando terminar, deinite a biblioteca com: msdeinit (history) (Isto libera a memória sendo utilizada). Todos os filtros têm a mesma interface: onde ltThger codegt pode ser sma. Cma. Ema. Rdp. Sga. Kza. Um exemplo de código simples para usar qualquer um dos filtros na biblioteca está disponível aqui. O filtro de melhor desempenho atualmente é EMA com o parâmetro alfa 0.10. A estratégia de classificação para os filtros é discutida neste artigo.

No comments:

Post a Comment