Filtre dados I2C
Na comunicação de um circuito integrado (I2C), um dispositivo mestre pode conversar com até 128 dispositivos escravos. Cada escravo é identificado por um endereço exclusivo e a transferência de dados ocorre na linha Serial Data (SDA). A outra linha é a linha Serial Clock (SCL). O I2C também é conhecido como interface de dois fios (TWI).
Neste exemplo, um Arduino Nano foi programado para ler os dados de um acelerômetro e um giroscópio de um sensor MPU-6050. O ângulo de orientação do sensor pode ser calculado com as leituras do acelerômetro ou do giroscópio. Esses cálculos são imprecisos porque o primeiro sinal é barulhento e o segundo oscila durante o estado estacionário. Portanto, é usado um filtro complementar, que combina os dois valores. Os valores não filtrados e filtrados serão enviados de volta pelo barramento serial e visualizados.
A aceleração ao longo dos eixos e , a temperatura e a velocidade angular ao longo do eixo axis are stored in two bytes, são armazenadas em dois bytes, cada um começando no endereço 0x3D. A seguir está a especificação para obter esses 8 bytes.
A especificação de inicialização.
O endereço do MPU-6050 é 0x68. Aqui está a especificação completa.
A conversão para cada canal de entrada.
A especificação completa do microcontrolador.
Um bloco pré-filtro calcula o ângulo em graus dos dados do acelerômetro e também a velocidade angular em graus por segundo dos dados do giroscópio.
Um filtro complementar pega as saídas do pré-filtro e calcula um valor de ângulo filtrado.
Um integrador calcula o ângulo apenas integrando a velocidade angular.
O modelo completo dos sistemas.
Implemente o código.
Abra uma conexão com o Arduino Nano.
Crie uma tarefa para ler os dados.
Analise e faça um gráfico dos dados.
Exclua a tarefa e encerre a conexão com o dispositivo.