Jak używać magnetyczny enkoder obrotowy AS5600 z Arduino

How to Use the AS5600 Magnetic Rotary Encoder with Arduino

AS5600 jest precyzyjnym magnetycznym enkoderem obrotowym zdolnym do pomiaru kątów z rozdzielczością 12-bitową. Komunikuje się za pośrednictwem I2C lub wyjścia analogowego, dzięki czemu jest idealny do robotyki, kontroli silnika i aplikacji wykrywania pozycji. Ten samouczek poprowadzi Cię przez połączenie i korzystanie z AS5600 z Arduino.


Czego będziesz potrzebować

  1. AS5600 Magnetyczny moduł enkodera obrotowego
  2. Arduino Board (np. UNO, Mega, Nano)
  3. Druty chleba i skoczków
  4. Komputer z zainstalowanym Arduino IDE

Krok 1: Zrozumienie modułu AS5600

AS5600 obsługuje oba I2C I Analog wyjścia. W trybie I2C zapewnia bardzo dokładne dane kąta. Tryb analogowy wyświetla napięcie proporcjonalne do kąta.

Pinout

Szpilka Funkcjonować
VCC Zasilacz (3,3 V/5 V)
GND Grunt
SDA I2C Linia danych
Scl Linia zegara I2C
NA ZEWNĄTRZ Wyjście analogowe (opcjonalnie)
Reż Konfiguracja kierunku
TRYB Konfiguracja trybu wyjściowego

Notatka: . DIR pin konfiguruje kierunek obrotu i MODE PIN wybiera między i2c lub analogowymi trybami wyjściowymi. W przypadku I2C, połącz MODE do GND.


Krok 2: Okablowanie AS5600 do Arduino

Tryb I2C (domyślnie)

Podłącz AS5600 z Arduino w następujący sposób:

AS5600 PIN PIN Arduino
VCC 5v
GND GND
SDA A4
Scl A5

Notatka: W przypadku innych płyt Arduino upewnij się, że używasz odpowiednich pinów I2C.


Krok 3: Zainstaluj wymaganą bibliotekę

Aby ułatwić pracę z AS5600, zainstaluj bibliotekę „AS5600” z Github lub Arduino Library Manager.

Kroki do zainstalowania:

  1. Otwórz Arduino IDE.
  2. Idź do Naszkicować > Uwzględnij bibliotekę > Zarządzaj bibliotekami.
  3. Wyszukaj „AS5600” i kliknij Zainstalować.

Krok 4: Prześlij kod

Oto przykładowy kod do odczytania kąta z AS5600 za pomocą 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
}

Krok 5: Przetestuj konfigurację

  1. Podłącz Arduino do komputera za pomocą USB.
  2. Otwórz Arduino IDE i wybierz poprawne Tablica I Port pod Narzędzia menu.
  3. Prześlij kod, klikając Wgrywać.
  4. Otwórz monitor szeregowy (Narzędzia > Monitor szeregowy) i ustaw wskaźnik transmisji na 9600.
  5. Obróć magnes przed czujnikiem AS5600. Kąt w stopniach powinien być wyświetlany w czasie rzeczywistym.

Opcjonalnie: przy użyciu analogowego trybu wyjściowego

  1. Podłącz OUT Pin z AS5600 do analogowego szpilki na Arduino (np. A0).
  2. Zmodyfikuj kod, aby odczytać napięcie analogowe:
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);
}

Zastosowania AS5600

  1. Wyczuwanie pozycji silnika
  2. Kodery pokrętła obrotowe
  3. Pomiar roboty kątu stawu
  4. Systemy stabilizacji gimbali kamery

Rozwiązywanie problemów

  • Brak danych: Sprawdź połączenia I2C i upewnij się, że prawidłowe piny są zdefiniowane w kodzie.
  • Wartości nieregularne: Upewnij się, że magnes jest prawidłowo ustawiony i wyrównany z czujnikiem.
  • Brak odpowiedzi w trybie analogowym: Potwierdź MODE Pin jest skonfigurowany poprawnie.

Wniosek

Z powodzeniem połączyłeś magnetyczny enkoder obrotowy AS5600 z Arduino w celu pomiaru pozycji kątowej. Niezależnie od tego, czy używasz I2C do precyzyjnych odczytów, czy trybu analogowego dla prostoty, ten czujnik jest wszechstronnym narzędziem do projektów wymagających pomiaru obrotowego. Eksperymentuj dalej, integrując go z projektami kontroli motorycznej lub robotyki!

Zostaw komentarz

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.