Interface do acelerômetro de eixo triplo com AtMega16

Interface do acelerômetro de eixo triplo com AtMega16

Requisitos

  1. AtMega 16 IC /quadro de desenvolvimento
  2. 2. Acelerômetro de 3 eixos
  3. 3. Tela LCD 16X2 (para exibir dados X, Y e Z)

Descrição

Este projeto utiliza três dos oito ADCs presentes no AtMega16 IC para exibir os dados digitais correspondentes das saídas X, Y e Z de um acelerômetro em LCD 16X2.

Acelerômetro

Primeiro vamos falar sobre o IC do Acelerômetro; aqui usei o ADXL-335, que é um módulo acelerômetro de 3 eixos.

Imagem do Módulo Acelerômetro ADXL335

Figura 1: Imagem do Módulo Acelerômetro ADXL335

É muito fácil lidar com esses tipos de módulos, pois eles só precisam da alimentação VCC e GND para começar, o resto é função dele nos fornecer os dados analógicos. Esses módulos trabalham com um conceito simples como o da força agindo sobre um objeto em um plano inclinado. Ele lida com a parte Mg(sin?) e Mg(cos?) da força e determina o ângulo para cálculos posteriores. Agora também percebe a mudança na força a partir da qual a aceleração será calculada.
Esses acelerômetros não respondem a movimentos lineares, eles respondem a movimentos acelerados em escala muito pequena. Olhando a imagem acima você notará que existe um pino ST que trata do valor de 'g' (acelerações devido à gravidade) a ser obtido durante o cálculo do resultado. Confira sua ficha técnica para mais informações. Também funcionará com um valor padrão se você não conectar este pino em nenhum lugar.

Conversor Analógico/Digital

Existem 8 ADCs independentes que compartilham seus pinos com os do PORTA. Esses ADCs têm 10 bits, o que significa simplesmente que eles podem converter um determinado valor analógico em seus dados digitais correspondentes de 10 bits.

Antes de prosseguirmos, devemos primeiro discutir o que são ADCs. ADC significa Conversor Analógico para Digital. Todos nós sabemos que os microcontroladores funcionam apenas com valores digitais, mas e se precisarmos interagir com dispositivos ou valores analógicos. Nessas situações necessitamos de um dispositivo que possa funcionar como comunicador entre a parte analógica e a parte digital. ADCs (conversor analógico para digital) jogam o mesmo jogo; eles convertem os valores analógicos em digitais por algum meio de referência (Vref).

No AtMega16, o pino 32 requer uma tensão de referência (normalmente fornecida +5V) ao trabalhar com ADCs. Também há mais um termo que precisa ser introduzido, ou seja, Resolução. Em termos simples, podemos dizer que é a precisão ou exatidão com que um ADC funciona. Para um ADC de 10 bits trabalhando com Vref de 5V, sua resolução é de 4,88mV. Isto significa ainda que para cada aumento ou queda de 4,88mV na entrada analógica, a saída digital aumentará ou diminuirá em uma unidade, respectivamente. Como é um ADC de 10 bits, os dados de saída variam de 0 a 1023 (2 ^ 10 = 1024) com 1024 valores diferentes. Agora voltando a este projeto, conectei os pinos X, Y e Z ao ADC0-ADC2. Eles fornecem valores analógicos individuais e independentes. Também exibi o resultado digital correspondente no LCD. As conexões do LCD são as seguintes: • Os pinos DATA estão conectados ao PB4-PB7, pois ele funciona no modo de 4 bits • Os pinos RS, RW e ES estão conectados a PB0, 1, 2 respectivamente. Ao assistir a parte do vídeo, você notará que os valores de X, Y e Z variam apenas entre 300-500. Isso ocorre porque meu Vref está configurado para 5V enquanto as saídas do acelerômetro permanecem entre 1,6-1,9V. Na parte de codificação utilizei três arquivos de cabeçalho: • para funções relacionadas a atrasos • para funções relacionadas ao LCD • para funções relacionadas ao ADC

Código fonte do projeto

###


#incluir

#incluir

#incluir

#incluir

vazio principal

{

interno adc0;

ADCinit ;

LCDinit ;

LCDclr ;

Cursor LCD DESLIGADO ;

Caracteres ch(16);

enquanto(1)

{

adc0=ler_adc(0); //lendo dados do eixo X

sprintf(ch,"X: %d",adc0); //convertendo int para char

LCDGotoXY(0,0);

Tela de LCD(CH);

LCDsendChar(' ');

adc0=ler_adc(1); //lendo dados do eixo Y

sprintf(ch,"Y: %d",adc0);

LCDGotoXY(0,10);

Tela de LCD(CH);

LCDsendChar(' ');

adc0=ler_adc(2); //lendo dados do eixo Z

sprintf(ch,"Z: %d",adc0);

LCDGotoXY(1,5);

Tela de LCD(CH);

LCDsendChar(' ');

_atraso_ms(500); //um atraso de meio segundo

}

}

###

Diagramas de circuito

Diagrama de circuito-ADXL335-acelerômetro-módulo-interface-AVR-ATMega16

Vídeo do projeto

Conteúdo Relacionado

Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
ESP32-CAM é um módulo de câmera compacto que combina...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Você provavelmente já se deparou com o termo 'arrastar'...
Você provavelmente tem um Isolador de suporte Se você...
Você provavelmente já viu permanecer um isolante sente-se em...
Você provavelmente já viu Isoladores de manilha entronizados em...
Você provavelmente já passou por situações em que o...
블로그로 돌아가기

댓글 남기기

댓글 게시 전에는 반드시 승인이 필요합니다.