Բովանդակություն:

Մագնիսական դաշտի չափում ՝ օգտագործելով HMC5883 և Arduino Nano: 4 քայլ
Մագնիսական դաշտի չափում ՝ օգտագործելով HMC5883 և Arduino Nano: 4 քայլ

Video: Մագնիսական դաշտի չափում ՝ օգտագործելով HMC5883 և Arduino Nano: 4 քայլ

Video: Մագնիսական դաշտի չափում ՝ օգտագործելով HMC5883 և Arduino Nano: 4 քայլ
Video: Մագնիսական դաշտի ազդեցությունը հոսանքակիր հաղորդչի և հոսանքակիր շրջանակի վրա: Էլեկտրաշարժիչ 2024, Հուլիսի
Anonim
Image
Image

HMC5883- ը թվային կողմնացույց է, որը նախատեսված է ցածր դաշտի մագնիսական զգայարանների համար: Այս սարքն ունի մագնիսական դաշտի լայն շրջանակ ՝ +/- 8 Օէ և ելքային արագություն ՝ 160 Հց: HMC5883 սենսորը ներառում է ժապավենի ավտոմատ անջատիչ շարժիչներ, օֆսեթ չեղարկում և 12-բիթանոց ADC, որը հնարավորություն է տալիս 1 ° -ից մինչև 2 ° կողմնացույցի վերնագրի ճշգրտություն: Բոլոր I²C մինի մոդուլները նախագծված են 5VDC- ով աշխատելու համար:

Այս ձեռնարկում մենք պատրաստվում ենք բացատրել HMC5883- ի մանրամասն աշխատանքը Arduino nano- ի հետ:

Քայլ 1: Պահանջվում է սարքավորում

Պահանջվող սարքավորում
Պահանջվող սարքավորում
Պահանջվող սարքավորում
Պահանջվող սարքավորում
Պահանջվող սարքավորում
Պահանջվող սարքավորում

Նյութերը, որոնք մեզ անհրաժեշտ են մեր նպատակին հասնելու համար, ներառում են հետևյալ ապարատային բաղադրիչները.

1. HMC5883

2. Արդուինո Նանո

3. I2C մալուխ

4. I2C վահան Arduino Nano- ի համար

Քայլ 2: Սարքավորման միացում

Սարքավորումների միացում
Սարքավորումների միացում
Սարքավորումների միացում
Սարքավորումների միացում

Սարքավորումների միացման բաժինը հիմնականում բացատրում է սենսորի և arduino nano- ի միջև պահանջվող լարերի միացումները: Connectionsանկալի ելքի համար ցանկացած համակարգի վրա աշխատելիս հիմնական անհրաժեշտությունն է հիմնական կապերի ապահովումը: Այսպիսով, անհրաժեշտ կապերը հետևյալն են.

HMC5883- ը կաշխատի I2C- ով: Ահա միացման սխեմայի օրինակ, որը ցույց է տալիս, թե ինչպես միացնել սենսորի յուրաքանչյուր միջերեսը:

Տուփից դուրս, տախտակը կազմաձևված է I2C ինտերֆեյսի համար, ուստի խորհուրդ ենք տալիս օգտագործել այս կապը, եթե այլապես ագնոստիկ եք: Ձեզ անհրաժեշտ է չորս լար:

Միայն չորս միացում է պահանջվում Vcc, Gnd, SCL և SDA կապում, որոնք միացված են I2C մալուխի օգնությամբ:

Այս կապերը ցուցադրվում են վերը նշված նկարներում:

Քայլ 3. Arduino ծածկագիրը Մագնիսական դաշտի ինտենսիվությունը չափելու համար

Arduino կոդ ՝ մագնիսական դաշտի ինտենսիվությունը չափելու համար
Arduino կոդ ՝ մագնիսական դաշտի ինտենսիվությունը չափելու համար
Arduino կոդ ՝ մագնիսական դաշտի ինտենսիվությունը չափելու համար
Arduino կոդ ՝ մագնիսական դաշտի ինտենսիվությունը չափելու համար

Եկեք հիմա սկսենք Arduino կոդով:

Arduino- ի հետ սենսորային մոդուլն օգտագործելիս մենք ներառում ենք Wire.h գրադարանը: «Լար» գրադարանը պարունակում է գործառույթներ, որոնք հեշտացնում են i2c հաղորդակցությունը սենսորի և Arduino տախտակի միջև:

Ամբողջ Arduino ծածկագիրը տրված է ստորև ՝ օգտագործողի հարմարության համար.

#ներառում

// HMC5883 I2C հասցեն ՝ 0x1E (30)

#սահմանեք Addr 0x1E

դատարկ կարգավորում ()

{

// Նախնականացնել I2C հաղորդակցությունը որպես ՎԱՐՊԵՏ

Wire.begin ();

// Սկզբնականացնել սերիական հաղորդակցությունը, սահմանել բաուդ արագություն = 9600

Serial.begin (9600);

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ընտրեք configure register A

Wire.write (0x00);

// Սահմանել չափման նորմալ կազմաձև, տվյալների ելքային արագություն = 0.75 Հց

Wire.write (0x60);

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ընտրեք ռեժիմի գրանցամատյան

Wire.write (0x02);

// Սահմանել շարունակական չափում

Wire.write (0x00);

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

ուշացում (300);

}

դատարկ շրջան ()

{

անստորագիր int տվյալներ [6];

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr);

// Ընտրեք տվյալների գրանցամատյան

Wire.write (0x03);

// Դադարեցնել I2C փոխանցումը

Wire.endTransmission ();

// Պահանջել 6 բայթ տվյալներ

Հաղորդալար. Խնդրում ենք (Addr, 6);

// Կարդացեք տվյալների 6 բայթ

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

եթե (Wire.available () == 6)

{

տվյալներ [0] = Wire.read ();

տվյալներ [1] = Wire.read ();

տվյալներ [2] = Wire.read ();

տվյալներ [3] = Wire.read ();

տվյալներ [4] = Wire.read ();

տվյալներ [5] = Wire.read ();

}

ուշացում (300);

// Փոխարկել տվյալները

int xMag = ((տվյալներ [0] * 256) + տվյալներ [1]);

int zMag = ((տվյալներ [2] * 256) + տվյալներ [3]);

int yMag = ((տվյալներ [4] * 256) + տվյալներ [5]);

// Ելքային տվյալները սերիական մոնիտորին

Serial.print («Մագնիսական դաշտ X- առանցքում.»);

Serial.println (xMag);

Serial.print («Մագնիսական դաշտը Y- առանցքում.»);

Serial.println (yMag);

Serial.print («Մագնիսական դաշտ Z- առանցքում.»);

Serial.println (zMag);

ուշացում (300);

}

Լարային գրադարանում Wire.write () և Wire.read () օգտագործվում են հրամանները գրելու և սենսորի ելքը կարդալու համար: Կոդի հետևյալ հատվածը ցույց է տալիս սենսորների ելքի ընթերցումը:

// Կարդացեք տվյալների 6 բայթ // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb if (Wire.available () == 6) {data [0] = Wire.read (); տվյալներ [1] = Wire.read (); տվյալներ [2] = Wire.read (); տվյալներ [3] = Wire.read (); տվյալներ [4] = Wire.read (); տվյալներ [5] = Wire.read (); }

Serial.print () և Serial.println () օգտագործվում են սենսորի ելքը Arduino IDE- ի սերիական մոնիտորի վրա ցուցադրելու համար:

Սենսորի ելքը ցուցադրվում է վերևի նկարում:

Քայլ 4: Դիմումներ

Դիմումներ
Դիմումներ

HMC5883- ը մակերևույթի վրա տեղադրվող, մի քանի չիպային մոդուլ է, որը նախատեսված է ցածր դաշտի մագնիսական զգայարանների համար `թվային ինտերֆեյսով, այնպիսի ծրագրերի համար, ինչպիսիք են ցածրարժեք կողմնացույցը և մագնիսաչափությունը: Դրա մեկից երկու աստիճանի բարձր մակարդակի ճշգրտությունն ու ճշգրտությունը հնարավորություն է տալիս հետիոտնային նավարկություն և LBS ծրագրեր:

Խորհուրդ ենք տալիս: