Spisu treści:

Pomiar pola magnetycznego za pomocą HMC5883 i Arduino Nano: 4 kroki
Pomiar pola magnetycznego za pomocą HMC5883 i Arduino Nano: 4 kroki

Wideo: Pomiar pola magnetycznego za pomocą HMC5883 i Arduino Nano: 4 kroki

Wideo: Pomiar pola magnetycznego za pomocą HMC5883 i Arduino Nano: 4 kroki
Wideo: Arduino. Rowerowy licznik kadencji (2/2) - miniaturyzacja i zmiana koncepcji 2024, Lipiec
Anonim
Image
Image

HMC5883 to cyfrowy kompas przeznaczony do wykrywania pola magnetycznego o niskim polu. To urządzenie ma szeroki zakres pola magnetycznego +/-8 Oe i częstotliwość wyjściową 160 Hz. Czujnik HMC5883 zawiera automatyczne sterowniki paska rozmagnesowania, anulowanie przesunięcia i 12-bitowy przetwornik ADC, który zapewnia dokładność kierunku kompasu od 1° do 2°. Wszystkie moduły I²C Mini są zaprojektowane do pracy przy 5VDC.

W tym samouczku wyjaśnimy szczegółowo działanie HMC5883 z Arduino nano.

Krok 1: Wymagany sprzęt:

Wymagany sprzęt
Wymagany sprzęt
Wymagany sprzęt
Wymagany sprzęt
Wymagany sprzęt
Wymagany sprzęt

Materiały, których potrzebujemy do realizacji naszego celu, obejmują następujące komponenty sprzętowe:

1. HMC5883

2. Arduino Nano

3. Kabel I2C

4. Tarcza I2C dla Arduino Nano

Krok 2: Podłączenie sprzętu:

Podłączenie sprzętu
Podłączenie sprzętu
Podłączenie sprzętu
Podłączenie sprzętu

Sekcja podłączania sprzętu zasadniczo wyjaśnia połączenia okablowania wymagane między czujnikiem a arduino nano. Zapewnienie prawidłowych połączeń jest podstawową koniecznością podczas pracy na dowolnym systemie o pożądanej mocy. Tak więc wymagane połączenia są następujące:

HMC5883 będzie działał przez I2C. Oto przykładowy schemat okablowania, pokazujący, jak okablować każdy interfejs czujnika.

Po wyjęciu z pudełka, płyta jest skonfigurowana do interfejsu I2C, dlatego zalecamy korzystanie z tego podłączenia, jeśli jesteś agnostykiem. Wszystko czego potrzebujesz to cztery przewody!

Wymagane są tylko cztery połączenia Vcc, Gnd, SCL i SDA, które są połączone za pomocą kabla I2C.

Połączenia te są pokazane na powyższych zdjęciach.

Krok 3: Kod Arduino do pomiaru natężenia pola magnetycznego:

Kod Arduino do pomiaru natężenia pola magnetycznego
Kod Arduino do pomiaru natężenia pola magnetycznego
Kod Arduino do pomiaru natężenia pola magnetycznego
Kod Arduino do pomiaru natężenia pola magnetycznego

Zacznijmy teraz od kodu Arduino.

Korzystając z modułu czujnika z Arduino, dołączamy bibliotekę Wire.h. Biblioteka "Wire" zawiera funkcje ułatwiające komunikację i2c pomiędzy czujnikiem a płytką Arduino.

Cały kod Arduino podano poniżej dla wygody użytkownika:

#włączać

// HMC5883 I2C adres to 0x1E(30)

#define Addr 0x1E

pusta konfiguracja()

{

// Zainicjuj komunikację I2C jako MASTER

Wire.początek();

// Zainicjuj komunikację szeregową, ustaw szybkość transmisji = 9600

Serial.początek(9600);

// Rozpocznij transmisję I2C

Wire.beginTransmisja(Addr);

// Wybierz konfigurację rejestru A

Wire.write(0x00);

// Ustaw normalną konfigurację pomiaru, szybkość wyprowadzania danych = 0,75 Hz

Wire.write(0x60);

// Zatrzymaj transmisję I2C

Wire.endTransmission();

// Rozpocznij transmisję I2C

Wire.beginTransmisja(Addr);

// Wybierz rejestr trybu

Wire.write(0x02);

// Ustaw pomiar ciągły

Wire.write(0x00);

// Zatrzymaj transmisję I2C

Wire.endTransmission();

opóźnienie(300);

}

pusta pętla()

{

dane int bez znaku[6];

// Rozpocznij transmisję I2C

Wire.beginTransmisja(Addr);

// Wybierz rejestr danych

Wire.write(0x03);

// Zatrzymaj transmisję I2C

Wire.endTransmission();

// Żądaj 6 bajtów danych

Wire.requestFrom(Addr, 6);

// Odczytaj 6 bajtów danych

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

if(Przewód.dostępny() == 6)

{

dane[0] = Przewód.odczyt();

dane[1] = Drut.odczyt();

dane[2] = Przewód.odczyt();

dane[3] = Przewód.odczyt();

dane[4] = Przewód.odczyt();

dane[5] = Wire.read();

}

opóźnienie(300);

// Konwertuj dane

int xMag = ((dane[0] * 256) + dane[1]);

int zMag = ((dane[2] * 256) + dane[3]);

int yMag = ((dane[4] * 256) + dane[5]);

// Dane wyjściowe do monitora szeregowego

Serial.print("Pole magnetyczne w osi X: ");

Serial.println(xMag);

Serial.print("Pole magnetyczne w osi Y: ");

Serial.println(yMag);

Serial.print("Pole magnetyczne w osi Z: ");

Serial.println(zMag);

opóźnienie(300);

}

W bibliotece przewodów Wire.write() i Wire.read() są używane do zapisywania poleceń i odczytywania wyjścia czujnika. Kolejna część kodu ilustruje odczyt wyjścia czujnika.

// Odczyt 6 bajtów danych // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb if(Wire.available() == 6) { data[0] = Wire.read(); dane[1] = Drut.odczyt(); dane[2] = Przewód.odczyt(); dane[3] = Przewód.odczyt(); dane[4] = Przewód.odczyt(); dane[5] = Wire.read(); }

Serial.print() i Serial.println() służą do wyświetlania wyjścia czujnika na monitorze szeregowym Arduino IDE.

Wyjście czujnika pokazano na powyższym obrazku.

Krok 4: Aplikacje:

Aplikacje
Aplikacje

HMC5883 to wieloukładowy moduł do montażu powierzchniowego przeznaczony do wykrywania pola magnetycznego niskiego pola z interfejsem cyfrowym do zastosowań takich jak niedrogie kompasy i magnetometria. Jego dokładność i precyzja na poziomie od jednego do dwóch stopni umożliwia nawigację pieszych i aplikacje LBS.

Zalecana: