Como usar o codificador rotativo magnético AS5600 com Arduino

How to Use the AS5600 Magnetic Rotary Encoder with Arduino

O AS5600 é um codificador rotativo magnético preciso capaz de medir ângulos com resolução de 12 bits. Ele se comunica via i2c ou saída analógica, tornando -o ideal para aplicações de robótica, controle de motor e detecção de posição. Este tutorial o guiará através da conexão e do uso do AS5600 com o Arduino.


O que você precisará

  1. Módulo de codificador rotativo magnético AS5600
  2. Board Arduino (por exemplo, Uno, Mega, Nano)
  3. Fios de pão e jumper
  4. Um computador com o Arduino IDE instalado

Etapa 1: Compreendendo o módulo AS5600

O AS5600 suporta ambos I2c e Analógico saídas. No modo I2C, ele fornece dados de ângulo altamente precisos. O modo analógico emite uma tensão proporcional ao ângulo.

Pinout

Alfinete Função
VCC Fonte de alimentação (3,3V/5V)
Gnd Chão
SDA I2C Linha de dados
SCL I2C Linha do relógio
FORA Saída analógica (opcional)
Dir Configuração de direção
MODO Configuração do modo de saída

Observação: O DIR pin configura a direção de rotação e o MODE O pino seleciona entre os modos I2C ou de saída analógica. Para i2c, conecte MODE para gnd.


Etapa 2: Fiação do AS5600 para Arduino

Modo I2C (padrão)

Conecte o AS5600 ao Arduino da seguinte forma:

AS5600 PIN Pino Arduino
VCC 5V
Gnd Gnd
SDA A4
SCL A5

Observação: Para outras placas do Arduino, certifique -se de usar os pinos I2C corretos.


Etapa 3: Instale a biblioteca necessária

Para facilitar o trabalho com o AS5600, instale a biblioteca "AS5600" no Github ou no Arduino Bibliotec Manager.

Etapas para instalar:

  1. Abra o Arduino IDE.
  2. Vá para Esboço > Inclua biblioteca > Gerenciar bibliotecas.
  3. Pesquise por "AS5600" e clique Instalar.

Etapa 4: Faça o upload do código

Aqui está um código de exemplo para ler o ângulo do AS5600 usando I2C:

#include <Wire.h>
#include <AS5600.h>

AS5600 encoder;

void setup() {
  Serial.begin(9600);
  Wire.begin();

  if (!encoder.begin()) {
    Serial.println("AS5600 not detected. Check connections.");
    while (1);
  }

  Serial.println("AS5600 initialized.");
}

void loop() {
  // Read the current angle in degrees
  float angle = encoder.getAngle();
  Serial.print("Angle: ");
  Serial.print(angle);
  Serial.println(" degrees");

  delay(100); // Update every 100ms
}

Etapa 5: teste a configuração

  1. Conecte o Arduino ao seu computador via USB.
  2. Abra o Arduino IDE e selecione o correto Quadro e Porta sob o Ferramentas menu.
  3. Faça o upload do código clicando Carregar.
  4. Abra o monitor serial (Ferramentas > Monitor serial) e definir a taxa de transmissão como 9600.
  5. Gire o ímã na frente do sensor AS5600. O ângulo em graus deve ser exibido em tempo real.

Opcional: usando o modo de saída analógico

  1. Conecte o OUT Pino do AS5600 a um pino analógico no Arduino (por exemplo, A0).
  2. Modifique o código para ler a tensão analógica:
const int analogPin = A0;

void setup() {
  Serial.begin(9600);
  pinMode(analogPin, INPUT);
}

void loop() {
  int value = analogRead(analogPin); // Read analog voltage
  float angle = map(value, 0, 1023, 0, 360); // Convert to degrees

  Serial.print("Analog Angle: ");
  Serial.print(angle);
  Serial.println(" degrees");

  delay(100);
}

Aplicações do AS5600

  1. Detecção da posição do motor
  2. Codificadores do botão rotativo
  3. Medição do ângulo articular robótico
  4. Sistemas de estabilização da câmera Gimbal

Solução de problemas

  • Sem dados: Verifique as conexões I2C e verifique se os pinos corretos estão definidos no código.
  • Valores erráticos: Verifique se o ímã está posicionado corretamente e alinhado com o sensor.
  • Nenhuma resposta no modo analógico: Confirme o MODE O pino está configurado corretamente.

Conclusão

Você interfigurou com sucesso o codificador rotativo magnético AS5600 com Arduino para medir a posição angular. Esteja você usando o I2C para leituras precisas ou modo analógico para simplificar, esse sensor é uma ferramenta versátil para projetos que requerem medição rotacional. Experimente mais, integrando -o em projetos de controle de motor ou robótica!

Deixe um comentário

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.