Monday, 27 November 2017

Arduino moving average library no Brasil


Estou trabalhando em um robô móvel controlado através de um wireless 2 receptor de 4 GHz é conectado ao Arduino Uno que serve a bordo como o controlador principal O mais crítico e principal canal de entrada proveniente do receptor produz um sinal muito ruidoso, o que leva a lotes de Pequenas alterações na saída dos atuadores, mesmo que estes não são needed. I estou procurando bibliotecas que podem executar alisamento eficiente Há alguma bibliotecas de suavização de sinal disponível para o Arduino Uno. asked Feb 16 14 em 13 57.I acho que vejo Um monte de picos de ruído de uma única amostra em seu sinal ruidoso. O filtro mediano faz melhor em se livrar de picos de ruído de amostra única do que qualquer filtro linear É melhor do que qualquer filtro de baixa passagem, média móvel, média móvel ponderada, etc em termos Do seu tempo de resposta e sua capacidade de ignorar tais outliers. Por exemplo, há muitas bibliotecas de suavização de sinal para o Arduino, muitas das quais incluem um filtro mediano. signal-suavização bibliotecas at. signal - as bibliotecas de suavização em github. Would algo como este trabalho em seu robô A mediana de 3 requer muito pouco poder da CPU, e, portanto, fast. You poderia filtrar isso digitalmente usando um filtro passa baixa. Change o 0 99 para alterar o corte Freqüência mais próxima de 1 0 é menor freqüência A expressão real para esse valor é exp -2 pi f fs onde f é a freqüência de corte que você quer e fs é a freqüência de dados é amostrada em. Outro tipo de filtro digital é um filtro de eventos Funciona bem em dados que têm outliers ex 9,9,8,10,9,25,9 Um filtro de evento retorna o valor mais freqüente Estatisticamente este é o modo. Médias estatísticas, como Média, Modo etc. podem ser calculadas usando o Arduino Average Library. An exemplo tirado da página da Biblioteca Arduino referido. Uma das principais aplicações para a placa Arduino é a leitura e registro de dados do sensor Por exemplo, um monitora a pressão a cada segundo do dia Como taxas de amostragem alta freqüentemente gera picos nos gráficos um Também quer ter um avera Ge das medições Como as medições não são estáticas no tempo o que muitas vezes precisamos é de uma média de corrida Esta é a média de um determinado período e muito valioso ao fazer análise de tendência. A forma mais simples de uma média em execução pode ser feita por um código que se baseia A média anterior de execução. Se não quiser usar matemática de ponto flutuante - como isso ocupa a memória e diminui a velocidade - pode-se fazer o mesmo completamente no domínio inteiro A divisão por 256 no código de exemplo é um shift-right 8, Que é mais rápido do que dizer divisão por, por exemplo, 100 Isso é verdade para cada poder de 2 como divisor e um só deve ter cuidado a soma dos pesos é igual ao poder de 2 E, claro, deve ter cuidado não há transbordamento intermediário considere usar unsigned Se você precisa de uma média de execução mais precisa, in concreto das últimas 10 medições, você precisa de uma matriz ou lista vinculada para mantê-los Esta matriz age como um buffer circular e com cada nova medição a mais antiga é removida Verage é calculado como a soma de todos os elementos divididos pelo número de elementos na matriz O código para a média em execução será algo como this. Drawback deste código é que a matriz para armazenar todos os valores pode se tornar bastante grande Se você tiver um Medição por segundo e você quer uma média de execução por minuto que você precisa de uma matriz de 60 uma média por hora precisaria de uma matriz de 3600 Isso couldn t ser feito desta forma em um Arduino como ele só tem 2K de RAM No entanto, A média pode ser abordada bastante bem não para todas as medições No código psuedo. Como uma nova matriz estática interna é necessária para cada função runningAverage, isso grita para ser implementado como uma biblioteca class. RunningAverage. A biblioteca runningAverage faz uma classe da função Acima para que ele possa ser usado várias vezes em um esboço Desacopla o adicionar ea função avg para ser um pouco mais flexível por exemplo, pode-se chamar a média várias vezes sem adicionar uma coisa Observe que cada instância o F a classe adiciona sua própria matriz para realizar medições e que isso acrescenta-se ao uso de memória A interface da classe é mantida o menor possível. Nota com versão 0 2 os nomes dos métodos são todos mais descritivos. Esboço mostra como ele pode ser usado Um gerador aleatório é usado para imitar um sensor. In configuração myRA é desmarcada para que possamos começar a adicionar novos dados. No primeiro loop um número aleatório é gerado e convertido em um flutuador para ser adicionado ao myRA Então O runningAverage é impresso para a porta serial Um também poderia exibi-lo em algum LCD ou enviar sobre ethernet etc Quando 300 itens são adicionados myRA é limpo para recomeçar novamente. Para usar a biblioteca, faça uma pasta em suas libraries SKETCHBOOKPATH com o nome RunningAverage E colocar o h e não Opcionalmente fazer um subdiretório de exemplos para colocar a amostra app.2017-01-30 inicial version.2017-02-28 fixo destrutor em falta h file.2017-02-28 removido padrão constructor.2017- - trimValue Yuval Naveh adicionou trimValue encontrado em web.2017- 11-21 refactored.2017-12-30 adicionado fillValue refatorado para publishing.2017-07-03 código de proteção de memória adicionado - se matriz interna não pode ser alocada tamanho torna-se 0 Isso é para resolver o problema descrito here. Test extensively. Template class. RunningAverage H. RunningAverage. Latest versão sobre - Github. One das principais aplicações para a placa Arduino é a leitura e registro de dados do sensor Por exemplo, um monitora a temperatura ea pressão do ar a cada minuto do dia Como isso implica uma grande quantidade de registros, muitas vezes Quer a média e desvio padrão para obter uma imagem das variações da temperatura daquele dia. Statistic library. The estatística biblioteca apenas calcula a média e stdev de um conjunto de dados flutua Além disso, mantém os valores mínimo e máximo inseridos A interface consiste De nove funções versão 0 3 3 em Github. Internally a biblioteca não registra os valores individuais, apenas a contagem, soma e squared sum sum sum, minimum e maximum Estes cinco são suficientes para ca Lculate a média e stdev A parte agradável é que não importa se um adiciona 10, 100 ou 1000 valores. Um pequeno esboço mostra como ele pode ser usado Um gerador aleatório é usado para imitar um sensor. In configuração myStats é limpa assim Podemos começar a adicionar novos dados. No primeiro loop um número aleatório é gerado e convertido para um flutuador a ser adicionado ao myStats Então a contagem, a média e std desvio até agora é impresso para a porta serial também pode exibi-lo em algum LCD Ou enviar por Ethernet etc Quando 300 itens são adicionados myStats é limpo para começar de novo again. In a primeira versão que eu coletei todos os exemplos em uma matriz, mas que resultou em bastante uso de memória eo usuário tinha que saber o número de amostras de antemão para Alocar espaço suficiente Como eu achei isso não é bastante aceitável, portanto, eu despojado a matriz de dados da classe para torná-lo mais elementar. Para usar a biblioteca, faça uma pasta em suas libraries SKETCHBOOKPATH com o estatístico de nome e coloque o h e there. Looking A um nível mais alargado Estatística lib.2010-11-01 Adicionado stdev, minimum and maximum.2017-01-07 Gil Ross enviar-me uma versão melhorada da biblioteca que é numericamente mais estável Esta é a versão 0 3 Thanx Gil.2017-05-19 Adicionado NAN Como erro em vez de -1 que estava incorreto.2017-03-07 - versão 0 3 3 - mudou de flutuador para o dobro para apoiar ARM proc. Statistic h arquivo.

No comments:

Post a Comment