اتصال قطب نما HMC5883L به آردوینو

  • ۹۰ بازدید

آیا برای پروژه خود نیاز به شناسایی جهت قطب شمال دارید و گیج شده اید که چه کاری انجام دهید؟ و چه سنسور مغناطیس متری را انتخاب کنیم؟ این مقاله به شما آشنایی مختصری می دهد.


این پروژه از مغناطیس‌سنج سه محوره HMC5883L از Honeywell استفاده می‌کند که یک ماژول چند تراشه‌ای (بهتر است به‌ صورت بریک اوت بخرید) است و برای سنجش میدان مغناطیسی کم با رابط دیجیتال برای کاربردهایی مانند قطب‌ نما و مغناطیس سنج طراحی شده است.

از تکنیک رابط I²C (مدار یکپارچه) برای برقراری ارتباط با میکروکنترلرها استفاده می کند و با ولتاژ 2.16-3.6 ولت جریان کمی مصرف می کند و وضوح 5 میلی گاوس را ارائه می دهد.

برد بریک اوت

اتصال آردوینو

Vcc برد برد را به منبع برق 3.3 ولت آردوینو و Gnd را به Gnd آردوینو وصل کنید. SDA (خط داده سریال) را به A4 و SCL (خط ساعت سریال) را به A5 آردوینو وصل کنید. اکنون به سراغ کد آردوینو می رویم و کتابخانه HMC5883L را از اینجا دریافت کنید.  در آنجا می توانید از یک مثال ساده برای خواندن داده های حسگر به صورت سریال به قطب نمای مغناطیسی گرافیکی با استفاده از کد پردازش بیابید.

کد آردوینو

مثال ساده برای خواندن سنسور HMC5883L

#include <Wire.h> //I2C Arduino Library

#define address 0x1E //0011110b, I2C 7bit address of HMC5883

void setup(){
  //Initialize Serial and I2C communications
  Serial.begin(9600);
  Wire.begin();
  
  //Put the HMC5883 IC into the correct operating mode
  Wire.beginTransmission(address); //open communication with HMC5883
  Wire.send(0x02); //select mode register
  Wire.send(0x00); //continuous measurement mode
  Wire.endTransmission();
}
  void loop(){
  
  int x,y,z; //triple axis data

  //Tell the HMC5883L where to begin reading data
  Wire.beginTransmission(address);
  Wire.send(0x03); //select register 3, X MSB register
  Wire.endTransmission();
  
 
 //Read data from each axis, 2 registers per axis
  Wire.requestFrom(address, 6);
  if(6<=Wire.available()){
    x = Wire.receive()<<8; //X msb
    x |= Wire.receive(); //X lsb
    z = Wire.receive()<<8; //Z msb
    z |= Wire.receive(); //Z lsb
    y = Wire.receive()<<8; //Y msb
    y |= Wire.receive(); //Y lsb
  }
  
  //Print out values of each axis
  Serial.print("x: ");
  Serial.print(x);
  Serial.print("  y: ");
  Serial.print(y);
  Serial.print("  z: ");
  Serial.println(z);
  
  delay(250);
}

نمونه داده های پورت سریال

منابع

کتابخانه آردوینو HMC5883L

برگه اطلاعات HMC5883L-FDS