Dispositivo de nivelamento eletrônico baseado em Arduino

Dispositivo de nivelamento eletrônico baseado em Arduino

Você já teve dificuldade para fixar pregos em uma parede perfeitamente paralela ao chão ou ao teto? Neste projeto, modelamos um dispositivo de nível eletrônico útil para colocar qualquer coisa perfeitamente paralela. Este dispositivo é prototipado na popular placa microcontroladora – o Arduino. Ele usa poucos componentes para construir, apenas um sensor acelerômetro e uma luz LED. Vamos construir rapidamente este dispositivo em nosso Arduino UNO favorito e deixar tudo perfeitamente alinhado.

Componentes necessários

  1. Arduino UNO x1
  2. Sensor Acelerômetro ADXL345 x1
  3. LEDx1
  4. Resistência 330Ω x1
  5. Breadboard ou placa de prototipagem
  6. Conectando fios ou fios de jumper
  7. Escala de medição em forma de L

Conexões de circuito

Este dispositivo é construído conectando o Arduino com um sensor acelerômetro ADXL345 e um LED. O ADXL345 é um sensor digital que se comunica com o Arduino através de uma interface I2C. Para fazer a interface do ADXL345 com o Arduino, conecte os pinos SDA e SCL do sensor aos pinos SDA e SCL de uma das portas I2C do Arduino. A imagem a seguir mostra as portas I2C disponíveis no Arduino UNO.

Os pinos VCC e GND do ADXL345 estão conectados à saída 5V e a um dos pinos terra do Arduino UNO. Um LED também faz interface com o Arduino no pino 2. O ânodo do LED está conectado a 5V da saída do Arduino UNO, enquanto seu cátodo está conectado ao pino 2 do Arduino. Há um resistor limitador de corrente de 330Ω em série com o LED.

Recomenda-se montar o circuito em uma placa de prototipagem e anexar uma escala de medida L à placa. A escala de medição L deve estar perfeitamente alinhada com as bordas da placa de prototipagem ou com a caixa geral do dispositivo.

Dispositivo de nivelamento baseado em Arduino

Diagrama de circuito

Esboço do Arduino

Como funciona

ADXL345 é um sensor acelerômetro MEMS de 3 eixos. É um sensor inercial digital que utiliza um design de acelerômetro capacitivo. Possui uma faixa selecionável pelo usuário de até +/- 16g, uma resolução de saída máxima de 13 bits, uma sensibilidade de 3,9 mg/LSB e uma taxa de dados de saída máxima de 3200 Hz. ADXL345 mede a aceleração estática devido à gravidade, bem como a aceleração dinâmica resultante de movimento ou choque. Ele pode detectar a aceleração linear em 3 eixos e detectar a inclinação e a queda livre de um objeto. O valor de aceleração obtido em unidades de gravidade pode variar de +2 g a -2g, ou +4g a -4g, ou +8g a -8g ou +16g a -16g, dependendo da faixa de medição selecionada. O valor da aceleração inclui acelerações estáticas devido à gravidade e aceleração dinâmica devido ao movimento ou choque. A imagem a seguir mostra os valores de aceleração em unidades de gravidade devido à gravidade –

A inclinação do sensor pode ser detectada pelo sinal e valor da aceleração nos eixos x, y e z. Quando apenas a aceleração estática estiver funcionando no sensor ADXL345, o valor da aceleração ao longo de um determinado eixo será de aproximadamente +1g ou -1g.

Ao examinar o sinal e o valor da aceleração em todos os eixos, a orientação exata do sensor ADXL345 em um quadro de 3 eixos pode ser determinada. Este projeto usa o mesmo princípio de examinar a orientação do sensor ADXL345. Sempre que o sensor estiver perfeitamente alinhado a um dos planos, o valor da aceleração em um dos eixos será 1, enquanto nos outros dois eixos será 0.

O Arduino está programado para detectar quando o ADXL345 está perfeitamente inclinado em um dos três planos. Lembre-se de que nosso circuito também está perfeitamente inclinado com uma escala de medida L. Assim, quando perfeitamente inclinado em um dos três planos, o Arduino acende o LED indicador. Isto indicará que o dispositivo e a escala de medição L estão perfeitamente paralelos a um plano horizontal ou vertical. Usando a escala de medição L, podem ser marcados pontos paralelos ao plano horizontal ou vertical. Isto pode ser usado para fixar pregos perfeitamente paralelos ao chão ou ao teto ou para colocar objetos perfeitamente paralelos no solo. Também pode ser usado para detectar se uma parede ou piso está inclinado ou plano.

No código do Arduino, consideramos alguma tolerância de 5% a 10% em valores de aceleração, pois precisamos apenas determinar situações em que um dos valores de aceleração se aproxima de 1 ou -1. Em contraste, os outros dois valores de aceleração se aproximam de um valor de zero. Sempre que essas condições são correspondidas, o LED acende por 5 segundos e depois desliga. Essa busca constante pelas condições correspondentes ajuda a evitar erros humanos na marcação de pontos paralelos.

O código

O esboço do Arduino configura o sensor ADXL345 para uma faixa de medição de +/- 2g e usa uma resolução de 10 bits. O script lê os dados de aceleração de todos os eixos e os converte em unidades de gravidade. Os valores de aceleração nos eixos x, y e z são de 10 bits e justificados à direita. Conseqüentemente, os valores são derivados de registradores de 16 bits. Na resolução de 10 bits, o valor da aceleração na unidade de gravidade é obtido multiplicando-se por 4 mg, ou seja, multiplicando-se por 0,004. Após obter os valores de aceleração para todos os eixos, são consultadas as condições de correspondência, ou seja, se um dos valores de aceleração se aproxima de 1 ou -1. Em contraste, os outros dois valores de aceleração aproximam-se do valor zero. Se qualquer condição de correspondência for considerada verdadeira, o dispositivo e a escala de medição L estarão perfeitamente inclinados em relação ao plano horizontal ou vertical no espaço, e pontos paralelos poderão ser marcados usando a escala L.

A correspondência das condições é indicada pelo acendimento de um LED. O LED é conectado ao Arduino de forma que absorva a corrente do pino do Arduino. O LED acende por 5 segundos configurando o pino do Arduino para LOW. Em seguida, o LED é novamente desligado configurando o respectivo pino do Arduino em ALTO. O sensor do acelerômetro é configurado na função setup . Os valores de aceleração nos eixos X, Y e Z são determinados na função loop . As condições correspondentes também são consultadas na função loop , então o Arduino continua repetindo-as.

Resultado

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.