Índice:

Medição de ângulo usando giroscópio, acelerômetro e Arduino: 5 etapas
Medição de ângulo usando giroscópio, acelerômetro e Arduino: 5 etapas

Vídeo: Medição de ângulo usando giroscópio, acelerômetro e Arduino: 5 etapas

Vídeo: Medição de ângulo usando giroscópio, acelerômetro e Arduino: 5 etapas
Vídeo: Arduino - Usando o módulo giroscópio/acelerômetro 2024, Novembro
Anonim
Medição de ângulo usando giroscópio, acelerômetro e Arduino
Medição de ângulo usando giroscópio, acelerômetro e Arduino

O dispositivo é um protótipo grosseiro do que eventualmente se tornará um robô de autoequilíbrio, esta é a segunda parte do buraco (leia o acelerômetro e controle um motor para o autoequilíbrio). A primeira parte com apenas o giroscópio pode ser encontrada aqui. Neste instrutível, mediremos o ângulo usando o giroscópio e o acelerômetro, e usando uma técnica para mesclar os dois sensores para obter um sinal suave. A técnica é chamada de "filtro complementar". Anterior

Etapa 1: O que precisamos:

O que precisamos
O que precisamos
O que precisamos
O que precisamos
O que precisamos
O que precisamos
O que precisamos
O que precisamos

Alguma parte pode ser substituída, e algumas modificações no código devem ser feitas para se adequar ao seu hardware. Neste projeto usaremos: - Breadboard- Microcontrolador, usei o Arduinoboard- Wire- Jumper Wires- Gyroscope XV-8100- Nunchuck Wii (para o acelerômetro) - Adaptador Nunchuck Wii para Arduino

Etapa 2: Construindo …

Construção…
Construção…
Construção…
Construção…
Construção…
Construção…

O circuito consiste em um giroscópio conectado diretamente à porta 0 em seu arduino e um nunchuck wii conectado na porta I2C. Montagem do giroscópio: 1. - conecte o giroscópio no breadboard2. - conecte cada coisa: - Pino Vo do giroscópio conectado à porta 0 analógica no arduino (fio laranja claro) - Pino G do giroscópio conectado ao aterramento (fio branco) - Pino V + do giroscópio conectado ao Vdd (3,3V) (fio laranja) Montagem o acelerômetro: 1. - conecte o adaptador ao nunchuck2. - conecte o nunchuck no arduino usando o adaptador3. - coloque o sensor de aceleração como na foto acima

Etapa 3: algumas informações extras antes de prosseguirmos

Algumas informações extras antes de prosseguirmos
Algumas informações extras antes de prosseguirmos
Algumas informações extras antes de prosseguirmos
Algumas informações extras antes de prosseguirmos
Algumas informações extras antes de prosseguirmos
Algumas informações extras antes de prosseguirmos

De ambos os sensores podemos medir o ângulo, mas usando duas técnicas distintas. Para medir o ângulo usando o giroscópio, temos que integrar o sinal. Mas por que temos que fazer isso? Como o giroscópio nos dá a taxa angular, uma maneira simples de obter o ângulo é multiplicar a taxa angular pelo tempo [ângulo = ângulo + w * dt]. Para medir o ângulo usando um acelerômetro, temos que sentir a gravidade em cada eixo do acelerômetro, o que significa, a projeção da aceleração da gravidade em cada direção do sensor nos dá uma ideia sobre o ângulo. [angle_accel = arctg (Ay / sqrt (Ax ^ 2 + Az ^ 2))] Então, por que usaremos dois sensores em vez de um? Para aproveitar as vantagens de ambas as propriedades do sensor. Se você olhar no gráfico o aumento contínuo dos dados do giroscópio, isso é chamado de drift e os dados do acelerômetro mudam muito em um pequeno intervalo de tempo. E como mesclar os dois sinais? Usaremos uma técnica chamada filtro complementar. Não sei a teoria exata por trás disso, mas funciona bem. Existem algumas informações na internet, basta pesquisar no Google se precisar de mais informações. Este link contém muitas informações e pode ser útil. Ângulo_filtrado = HPF * (ângulo_filtrado + w * dt) + LPF * (acel_angulo); onde HPF + LPF = 1Os valores de HPF e LPF podem ser encontrados neste link, no arquivo filter.pdf. Obrigado a vocês do "The DIY Segway". Apenas para fins de teste, vamos definir esses valores como este, HPF = 0,98 e LPF = 0,02.

Etapa 4: Código:

O código é uma adaptação de um código que usei em outro projeto. Provavelmente, existem algumas variáveis não utilizadas. Usei uma biblioteca para ler os dados do nunchuck de https://todbot.com/blog/. Obrigado Tod E. Kurt. Os comentários sobre o código são em português, assim que eu tiver um tempo livre, irei traduzi-lo. A saída do código pela linha serial alguns números com este padrão: dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: accel_angle: filter_angle $ Assim, você pode salvar esses valores em um terminal serial e traçar um gráfico ou usar o ângulo para outras coisas. Se você precisar de alguma explicação sobre o código, pode perguntar. O código é ziped. Basta descompactar, abrir e fazer upload para o seu arduino.

Etapa 5: Teste e Conclusão

Teste e Conclusão
Teste e Conclusão
Teste e Conclusão
Teste e Conclusão

Para testar o sistema, salvei os dados usando um programa chamado Termite, depois importei esses dados no excel e plotei o gráfico para ver o quão bom é o meu filtro. Os resultados são surpreendentes. Claro que você pode usar o sinal para acionar um motor, ou outras coisas. Qualquer comentário, qualquer dúvida, alguma informação faltando, é só me avisar e eu corrijo. Por favor, se gostarem, avaliem. Obrigado a todos.

Recomendado: