concorda com minhas ideias,
quer mais?
Curta o post no final da página, use o Disqus, compartilhe em sua rede social. Isso me ajuda e motiva, trazendo cada vez mais conhecimento, resumido e prático. Se quiser contribuir financeiramente, assim posso comprar mais placas e fazer outros tutoriais, use o PIX: consultoria@carlosdelfino.eti.br Obrigado.
Analog Sampling no Arduino
O Arduino pode fazer em torno de 7000 (sete mil) leituras por segundo, em média, na porta analógica em um código comum, porém não mais que 300 (trezentas) leituras por segundo em úm código mais elaborado, ou seja, é um sampling máximo de 300Hz, claro estes valores são muito impressivos, não há como sermos determinístico, já que além de estarmos usando a porta serial (problemas com o buffer entre o arduino e o PC) e também interrupções de controle interno como a usada para contagem de milessegundos desde que o arduino foi ligado.
Poderíamos fazer um sampling em pacotes, porém para nossos testes não é interessante, pois seriam rajadas de dados, e não haveria uma constante leitura, havendo perdas durante os intervalos que serão criados no sampling para processa-lo, prepara-lo e envia-lo pela serial, neste tempo nõa haveriam coletas, mas vou analisar isso e postar abaixo os resultados.
Antes vejam o gráfico abaixo do teste que eu fiz de leitura de um piezo elétrico, o código usado está a seguir e pode ser criticado e sugerido melhorias.
Abaixo o segundo inicial de leitura, representado pelo gráfio a seguir:
Time(s) | Analog | Piezo | Piezo media | Intervalo geral(s) | Freq. geral(1Hz) | Freq. sample(1Hz) | Freq. sample media (1Hz) |
---|---|---|---|---|---|---|---|
0.0050 | 0 | 542 | 541 | 0.0530 | 18.5185 | 7017.5439 | 7017.5439 |
0.0610 | 0 | 541 | 540 | 0.0530 | 18.5185 | 3508.7719 | 4678.3627 |
0.1170 | 0 | 540 | 540 | 0.0540 | 18.5185 | 2339.1813 | 3508.7719 |
0.1740 | 0 | 540 | 540 | 0.0530 | 18.8679 | 1769.9114 | 2816.9011 |
0.2290 | 0 | 540 | 540 | 0.0550 | 18.1818 | 1428.5715 | 2358.4904 |
0.2870 | 0 | 541 | 540 | 0.0560 | 17.8571 | 1186.9437 | 2025.3162 |
0.3460 | 0 | 541 | 540 | 0.0550 | 17.8571 | 1017.8117 | 1774.3978 |
0.4040 | 0 | 541 | 540 | 0.0550 | 17.8571 | 884.9558 | 1576.3546 |
0.4620 | 0 | 541 | 540 | 0.0560 | 17.5439 | 782.7788 | 1416.7650 |
0.5210 | 0 | 540 | 540 | 0.0530 | 18.8679 | 705.4674 | 1287.0010 |
0.5760 | 0 | 539 | 540 | 0.0530 | 18.5185 | 645.1613 | 1180.2574 |
0.6320 | 0 | 540 | 540 | 0.0540 | 18.1818 | 588.2353 | 1088.9291 |
0.6890 | 0 | 539 | 540 | 0.0530 | 18.8679 | 544.2177 | 1011.0830 |
0.7450 | 0 | 540 | 540 | 0.0520 | 18.8679 | 506.3291 | 943.8732 |
0.8000 | 0 | 540 | 540 | 0.0540 | 18.1818 | 472.2550 | 884.9558 |
0.8570 | 0 | 540 | 540 | 0.0530 | 18.8679 | 443.4590 | 833.1163 |
0.9120 | 0 | 540 | 540 | 0.0530 | 18.5185 | 417.1012 | 786.9459 |
0.9680 | 0 | 539 | 540 | 0.0530 | 18.8679 | 394.0887 | 745.6503 |
1.0250 | 0 | 540 | 540 | 0.0520 | 18.8679 | 374.1815 | 708.6246 |
Este é o código inicial para nosso testes:
Vamos melhor um pouco?
Vamos melhor o código usarmos interrupções para fazermos o sampling dos dados, usaremos um buffer-ring para obter dados da porta analógica e jogaremos em rajadas na porta sérial.
Como todos sabem uso estes artigos em meu site para anotar aquilo vou aprendendo, quando consolido um conhecimento de forma a se tornar útil, ofereço como consultoria e tutoria, assim contribuo para que outros possam crescer também.
Clique aqui para saber em detalhes "Porque cobro pelo meus serviços".