Índice:

LEDs e gravidade?: 4 etapas
LEDs e gravidade?: 4 etapas

Vídeo: LEDs e gravidade?: 4 etapas

Vídeo: LEDs e gravidade?: 4 etapas
Vídeo: MUITO CUIDADOS POIS ELES IMITAM TUDO 2024, Novembro
Anonim
LEDs e gravidade?
LEDs e gravidade?

Este projeto não tem uso prático algum, mas foi iniciado como um exercício de implementação de fórmulas físicas relacionadas à gravidade em código C em um Arduino. Para tornar as coisas visíveis, uma faixa de LED de neopixel com 74 LEDs foi usada. O efeito da aceleração gravitacional em um objeto é demonstrado usando um acelerômetro MPU-6050 e um chip giroscópio. Este chip é fisicamente conectado à faixa de LED, então quando a faixa de LED é mantida em um determinado ângulo, o chip mede o ângulo da faixa de LED e o Arduino usa essa informação para atualizar a posição de um objeto virtual como se ele era uma bola que é equilibrada em uma viga e rola de um lado para o outro se a viga for mantida em ângulo. A posição do objeto virtual é indicada na faixa de LED como um único LED que é iluminado.

Para atualizar a posição de um objeto virtual que está caindo na terra sob a influência da gravidade, usamos a fórmula:

y = y0 + (V0 * t) + (0,5 * a * t ^ 2)

Com:

y = distância percorrida em metros y0 = distância inicial em metros v0 = velocidade inicial em metros / segundo a = aceleração (gravidade) em metros / segundo ^ 2 t = tempo em segundos

Etapa 1: circuito

O circuito
O circuito

O Arduino Pro Mini é alimentado pela alimentação de uma fonte de + 5 V diretamente no pino de + 5 V, que é a saída do regulador de 5 V integrado. Isso pode parecer um pouco ortodoxo, mas quando o Vin é deixado aberto, isso não cria um problema, contanto que você não inverta a polaridade, porque isso certamente faria seu Arduino durar.

O acelerômetro MPU6050 e o chip do giroscópio são alimentados por um módulo conversor de 5V para 3V3 de baixa potência e se comunica com o Arduino por meio de uma interface I2C (SDA, SCL). Com o Arduino Pro Mini, o SDA é conectado ao A4 e o SCL é conectado ao A5, ambos localizados no Arduino Pro Mini PCB. Com a versão Pro Mini que eu uso, A4 e A5 estavam localizados dentro do PCB (2 orifícios) e não eram acessíveis através dos cabeçotes de pino nas laterais do PCB. O MPU6050 também possui uma saída de interrupção (INT) que é usada para informar ao Arduino quando há novos dados disponíveis. A faixa de LED de neopixel WS2812B com 74 LEDs é alimentada diretamente pela fonte de 5V e possui 1 linha de dados (DIN) que é conectada a uma saída do Arduino.

Etapa 2: Software

Coloquei todos os drivers usados pelo esboço (.ino) na mesma pasta do esboço em vez de usar bibliotecas. A razão para isso é que eu não quero que os drivers sejam atualizados, para evitar que bugs se insinuem e para evitar que as alterações que fiz nos drivers sejam substituídas por atualizações.

Aqui está uma lista dos arquivos do projeto:

  • Balancing_LED_using_MPU6050gyro.ino: arquivo de esboço
  • MPU6050.cpp / MPU6050.h: acelerômetro MPU6050 e driver do giroscópio
  • MPU6050_6Axis_MotionApps20.h: definições e funções MPU6050 DMP (processador de movimento digital)
  • helper_3dmath.h: Definições de classe para quatérnions e vetores inteiros ou flutuantes.
  • I2Cdev.cpp / I2Cdev.h: driver I2C usando a biblioteca de fios do Arduino
  • LEDMotion.cpp / LEDMotion.h: Implementação do equilíbrio do LED de gravidade usando a faixa de LED e o ângulo medido pelo MPU6050

Etapa 3: imagens

Recomendado: