Talaan ng mga Nilalaman:

Pagsukat ng Magnetic Field Gamit ang HMC5883 at Arduino Nano: 4 na Hakbang
Pagsukat ng Magnetic Field Gamit ang HMC5883 at Arduino Nano: 4 na Hakbang

Video: Pagsukat ng Magnetic Field Gamit ang HMC5883 at Arduino Nano: 4 na Hakbang

Video: Pagsukat ng Magnetic Field Gamit ang HMC5883 at Arduino Nano: 4 na Hakbang
Video: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, Hulyo
Anonim
Image
Image

Ang HMC5883 ay isang digital na kompas na dinisenyo para sa mababang patlang na pandama sa magnet. Ang aparatong ito ay may malawak na saklaw ng magnetic field na +/- 8 Oe at isang rate ng output na 160 Hz. Ang sensor ng HMC5883 ay may kasamang awtomatikong mga degaussing strap driver, offset na pagkansela, at isang 12-bit ADC na nagbibigay-daan sa katumpakan ng heading na 1 ° hanggang 2 °. Ang lahat ng mga Mini Module ng I²C ay idinisenyo upang mapatakbo sa 5VDC.

Sa tutorial na ito, ipapaliwanag namin ang detalyadong pagtatrabaho ng HMC5883 kasama ang Arduino nano.

Hakbang 1: Kinakailangan ang Hardware:

Kinakailangan ang Hardware
Kinakailangan ang Hardware
Kinakailangan ang Hardware
Kinakailangan ang Hardware
Kinakailangan ang Hardware
Kinakailangan ang Hardware

Ang mga materyal na kailangan namin para makamit ang aming layunin ay may kasamang mga sumusunod na bahagi ng hardware:

1. HMC5883

2. Arduino Nano

3. I2C Cable

4. I2C Shield Para kay Arduino Nano

Hakbang 2: Hardware Hookup:

Hardware Hookup
Hardware Hookup
Hardware Hookup
Hardware Hookup

Karaniwang ipinapaliwanag ng seksyon ng hookup ng hardware ang mga koneksyon sa mga kable na kinakailangan sa pagitan ng sensor at ng arduino nano. Ang pagtiyak sa tamang mga koneksyon ay ang pangunahing pangangailangan habang nagtatrabaho sa anumang system para sa nais na output. Kaya, ang mga kinakailangang koneksyon ay ang mga sumusunod:

Gagana ang HMC5883 sa paglipas ng I2C. Narito ang halimbawa ng diagram ng mga kable, na nagpapakita kung paano i-wire ang bawat interface ng sensor.

Sa labas ng kahon, naka-configure ang board para sa isang interface ng I2C, dahil inirerekumenda namin ang paggamit ng hookup na ito kung hindi ka agnostiko. Ang kailangan mo lang ay apat na wires!

Apat na koneksyon lamang ang kinakailangan ng Vcc, Gnd, SCL at SDA pin at ang mga ito ay konektado sa tulong ng I2C cable.

Ang mga koneksyon na ito ay ipinakita sa mga larawan sa itaas.

Hakbang 3: Arduino Code upang Sukatin ang Intensity ng Magnetic Field:

Arduino Code upang Sukatin ang Intensity ng Magnetic Field
Arduino Code upang Sukatin ang Intensity ng Magnetic Field
Arduino Code upang Sukatin ang Intensity ng Magnetic Field
Arduino Code upang Sukatin ang Intensity ng Magnetic Field

Magsimula tayo sa Arduino code ngayon.

Habang ginagamit ang module ng sensor sa Arduino, isinasama namin ang Wire.h library. Naglalaman ang library ng "Wire" ng mga pagpapaandar na nagpapadali sa komunikasyon ng i2c sa pagitan ng sensor at ng Arduino board.

Ang buong Arduino code ay ibinibigay sa ibaba para sa kaginhawaan ng gumagamit:

# isama

// HMC5883 I2C address ay 0x1E (30)

# tukuyin ang Addr 0x1E

walang bisa ang pag-setup ()

{

// Initialise I2C na komunikasyon bilang MASTER

Wire.begin ();

// Initialise Serial Communication, itakda ang baud rate = 9600

Serial.begin (9600);

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Piliin ang i-configure ang rehistro A

Wire.write (0x00);

// Itakda ang normal na pagsasaayos ng pagsukat, rate ng output ng data = 0.75Hz

Wire.write (0x60);

// Stop I2C Transmission

Wire.endTransmission ();

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Select Mode register

Wire.write (0x02);

// Itakda ang tuluy-tuloy na pagsukat

Wire.write (0x00);

// Stop I2C Transmission

Wire.endTransmission ();

pagkaantala (300);

}

walang bisa loop ()

{

unsigned int data [6];

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Piliin ang pagrehistro ng data

Wire.write (0x03);

// Stop I2C Transmission

Wire.endTransmission ();

// Humiling ng 6 bytes ng data

Wire.requestFrom (Addr, 6);

// Basahin ang 6 bytes ng data

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

kung (Wire.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

data [4] = Wire.read ();

data [5] = Wire.read ();

}

pagkaantala (300);

// I-convert ang data

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

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

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

// Output data sa serial monitor

Serial.print ("Magnetic Field sa X-Axis:");

Serial.println (xMag);

Serial.print ("Magnetic Field sa Y-Axis:");

Serial.println (yMag);

Serial.print ("Magnetic Field sa Z-Axis:");

Serial.println (zMag);

pagkaantala (300);

}

Sa wire library Wire.write () at Wire.read () ay ginagamit upang isulat ang mga utos at basahin ang output ng sensor. Ang sumusunod na bahagi ng code ay naglalarawan ng pagbabasa ng output ng sensor.

// Basahin ang 6 bytes ng data // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb kung (Wire.available () == 6) {data [0] = Wire.read (); data [1] = Wire.read (); data [2] = Wire.read (); data [3] = Wire.read (); data [4] = Wire.read (); data [5] = Wire.read (); }

Ginagamit ang Serial.print () at Serial.println () upang ipakita ang output ng sensor sa serial monitor ng Arduino IDE.

Ang output ng sensor ay ipinapakita sa larawan sa itaas.

Hakbang 4: Mga Aplikasyon:

Mga Aplikasyon
Mga Aplikasyon

Ang HMC5883 ay isang pang-ibabaw, multi-chip module na dinisenyo para sa mababang patlang na magnetikong sensing na may isang digital interface para sa mga application tulad ng mababang gastos na kumpas at magnetometry. Ang isa hanggang dalawang degree na mataas na antas ng kawastuhan at katumpakan ay nagbibigay-daan sa Pedestrian Navigation at LBS Applications.

Inirerekumendang: