Ta strona wykorzystuje pliki cookies. Korzystając ze strony, zgadzasz się na ich użycie. OK Polityka Prywatności Zaakceptuj i zamknij X

GY-271 HMC5883L 3osiowy magnetometr cyfrowy FPV

12-05-2014, 9:45
Aukcja w czasie sprawdzania była zakończona.
Cena kup teraz: 15.99 zł      Najwyzsza cena licytacji: zł      Aktualna cena: 15.99 zł     
Użytkownik simon1234
numer aukcji: 4146714437
Miejscowość Poznań
Licytowało: 1    Wyświetleń: 45   
Koniec: 12-05-2014 09:00:25

Dodatkowe informacje:
Stan: Nowy
Waga (z opakowaniem): 0.50 [kg]
info Niektóre dane mogą być zasłonięte. Żeby je odsłonić przepisz token po prawej stronie. captcha

   

Kompas GY-271 - HMC5883L 3-osiowy magnetometr cyfrowy I2C

Czujnik dla Arduino, FPV i nie tylko!

 
Czujnik do pomiaru pola magnetycznego w trzech osiach w zakresie  ±8 gauss z rodzielczością 5 mili gaus. Zasilany napięciem 2,16 V - 3,6 V, charakteryzuje się niewielkimi rozmiarami, niskim poborem energii oraz prostą obsługą. Komunikuje się poprzez magistralę I2C.
Przyjmujemy płatności PayU
lub wpłaty na konto w mBanku.
70 1140 [zasłonięte] 2[zasłonięte]0040002 [zasłonięte] 253123
PayUmBank 
Dokonując zakupu w naszym sklepie, akceptujesz regulamin. Poniżej znajdują się najważniejsze zasady:
Jeśli kupiłeś na innej aukcji Arduino w folii, bez oryginalnego pudełka, w zaniżonej cenie, to jest to chińska podróbka, a Ty zostałeś oszukany! Nie daj się oszukiwać, zgłoś sprawę do allegro i na Policję! Więcej o tym, jak można rozpoznać podrobione Arduino na stronie producenta oraz w poradniku.

Czujnik do pomiaru pola magnetycznego w trzech osiach w zakresie  ±8 gauss z rodzielczością 5 mili gaus. Zasilany napięciem 2,16 V - 3,6 V, charakteryzuje się niewielkimi rozmiarami, niskim poborem energii oraz prostą obsługą. Komunikuje się poprzez magistralę I2C.

Specyfikacja

  • Komunikacja I2C IIC
  • Pomiar 3 osiowy
  • Pobór prądu 100uA
  • Dokładność kompasu 1-2 stopnie
  • Szybkość wyjścia pomiaru max 160 Hz
  • Pozłacane wyjścia : VCC, GND, SCL, SDA, DRDY
  • Podłączenie:
    • Arduino GND -> HMC5883L GND
    • Arduino 3.3V -> HMC5883L VCC
    • Arduino A4 (SDA) -> HMC5883L SDA
    • Arduino A5 (SCL) -> HMC5883L SCL

Zestaw zawiera listwy Goldpin

 

Przykładowy kod:

 

/*
 * HMC5883L Demo.
 * dipmicro electronics, 2014
 *
 * Hardware Used:
 * 
 * Arduino UNO or compatible
 * GY271 module (dipmicro part DE4196
 *  Arduino GND -> GY271/HMC5883L GND
 *  Arduino 3.3V -> GY271/HMC5883L VCC
 *  Arduino A4 (SDA) -> GY271/HMC5883L SDA
 *  Arduino A5 (SCL) -> GY271/HMC5883L SCL 
 */

#include  //I2C Arduino Library

#define HMC5883L_ADDR 0x1E //[zasłonięte]00111b, I2C 7bit address of HMC5883

bool haveHMC5883L = false;

bool detectHMC5883L ()
{
  // read identification registers
  Wire.beginTransmission(HMC5883L_ADDR); //open communication with HMC5883
  Wire.write(10); //select Identification register A
  Wire.endTransmission();
  Wire.requestFrom(HMC5883L_ADDR, 3);
  if(3 == Wire.available()) {
    char a = Wire.read();
    char b = Wire.read();
    char c = Wire.read();
    if(a == 'H' && b == '4' && c == '3')
      return true;
  }

  return false;
}

void setup()
{
  //Initialize Serial and I2C communications
  Serial.begin(9600);
  Serial.println("GY271 TEST");
  Wire.begin();
  // lower I2C clock http://www.gammon.com.au/forum/?id=10896
  TWBR = 78;  // 25 kHz 
  TWSR |= _BV (TWPS0);  // change prescaler  
}

void loop()
{
  bool detect = detectHMC5883L();

  if(!haveHMC5883L) 
  {
    if(detect) 
    {
      haveHMC5883L = true;
      Serial.println("We have HMC5883L, moving on");
      // Put the HMC5883 IC into the correct operating mode
      Wire.beginTransmission(HMC5883L_ADDR); //open communication with HMC5883
      Wire.write(0x02); //select mode register
      Wire.write(0x00); //continuous measurement mode
      Wire.endTransmission();
    }
    else
    {  
      Serial.println("No HMC5883L detected!");
      delay(2000);
      return;
    }
  }
  else
  {
    if(!detect) {
      haveHMC5883L = false;
      Serial.println("Lost connection to HMC5883L!");
      delay(2000);
      return;
    }
  }
  
  int x,y,z; //triple axis data

  //Tell the HMC5883 where to begin reading data
  Wire.beginTransmission(HMC5883L_ADDR);
  Wire.write(0x03); //select register 3, X MSB register
  Wire.endTransmission();

 //Read data from each axis, 2 registers per axis
  Wire.requestFrom(HMC5883L_ADDR, 6);
  if(6<=Wire.available()){
    x = Wire.read()<<8; //X msb
    x |= Wire.read(); //X lsb
    z = Wire.read()<<8; //Z msb
    z |= Wire.read(); //Z lsb
    y = Wire.read()<<8; //Y msb
    y |= Wire.read(); //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);
}