ዝርዝር ሁኔታ:

ቅንጣት ፎቶን - MPL3115A2 ትክክለኛነት የአልቲሜትር ዳሳሽ ትምህርት 4 ደረጃዎች
ቅንጣት ፎቶን - MPL3115A2 ትክክለኛነት የአልቲሜትር ዳሳሽ ትምህርት 4 ደረጃዎች

ቪዲዮ: ቅንጣት ፎቶን - MPL3115A2 ትክክለኛነት የአልቲሜትር ዳሳሽ ትምህርት 4 ደረጃዎች

ቪዲዮ: ቅንጣት ፎቶን - MPL3115A2 ትክክለኛነት የአልቲሜትር ዳሳሽ ትምህርት 4 ደረጃዎች
ቪዲዮ: የኳንተም ህክምና በመፍትሄ ሥረይ መፅሀፍ 2024, ህዳር
Anonim
Image
Image

MPL3115A2 ትክክለኛ የግፊት/ከፍታ እና የሙቀት መጠን መረጃን ለማቅረብ በ I2C በይነገጽ የ MEMS ግፊት ዳሳሽ ይጠቀማል። የአነፍናፊው ውጤቶች በከፍተኛ ጥራት ባለ 24 ቢት ኤዲሲ በዲጂታል ይደረጋሉ። ውስጣዊ አሠራር ከአስተናጋጁ MCU ስርዓት የማካካሻ ተግባሮችን ያስወግዳል። በከፍታ 0.3 ሜትር ለውጥ ጋር የሚመጣጠን በ 0.05 ኪፒኤ ብቻ ለውጥን የመለየት ችሎታ አለው። ከፓርቲካል ፎቶን ጋር ያለው ማሳያ እዚህ አለ።

ደረጃ 1: እርስዎ የሚፈልጉት..

ምንድን ነው የሚፈልጉት..!!
ምንድን ነው የሚፈልጉት..!!

1. ቅንጣት ፎቶን

2. MPL3115A2

3. I²C ኬብል

4. I²C ጋሻ ለ Particle Photon

ደረጃ 2: ግንኙነቶች

ግንኙነቶች ፦
ግንኙነቶች ፦
ግንኙነቶች ፦
ግንኙነቶች ፦
ግንኙነቶች ፦
ግንኙነቶች ፦
ግንኙነቶች ፦
ግንኙነቶች ፦

ለ ቅንጣት ፎቶቶን የ I2C ጋሻ ውሰድ እና በንጥል ፎቶቶን ፒኖች ላይ በቀስታ ይግፉት።

ከዚያ የ I2C ገመዱን አንድ ጫፍ ከ MPL3115A2 ዳሳሽ እና ሌላውን ከ I2C ጋሻ ጋር ያገናኙ።

ግንኙነቶች ከላይ በስዕሉ ላይ ይታያሉ።

ደረጃ 3 ኮድ

ኮድ ፦
ኮድ ፦

የ MPL3115A2 ቅንጣት ኮድ ከኛ የ Github ማከማቻ- DCUBE መደብር ሊወርድ ይችላል።

አገናኙ እዚህ አለ።

እኛ ሁለት ቤተ -ፍርግሞችን ለ ቅንጣት ኮድ ተጠቀምን ፣ እነሱም application.h እና spark_wiring_i2c.h ናቸው። የ I2C ግንኙነትን ከአነፍናፊው ጋር ለማመቻቸት Spark_wiring_i2c ቤተ -መጽሐፍት ያስፈልጋል።

እንዲሁም ኮዱን ከዚህ መገልበጥ ይችላሉ ፣ እሱ እንደሚከተለው ተሰጥቷል

// በነፃ ፈቃድ ፈቃድ ተሰራጭቷል።

// በተጓዳኝ ሥራዎቹ ፈቃዶች ውስጥ የሚስማማ ከሆነ በፈለጉት ፣ በትርፍም ሆነ በነጻ ይጠቀሙበት።

// MPL3115A2

// ይህ ኮድ ከ MPL3115A2_I2CS I2C ሚኒ ሞዱል ጋር ለመስራት የተነደፈ ነው

#ያካትቱ

#ያካትቱ

// MPL3115A2 I2C አድራሻ 0x60 (96) ነው

#መግለፅ Addr 0x60

ተንሳፋፊ cTemp = 0.0 ፣ fTemp = 0.0 ፣ ግፊት = 0.0 ፣ ከፍታ = 0.0;

int temp = 0, tHeight = 0; ረጅም pres = 0;

ባዶነት ማዋቀር ()

{

// ተለዋዋጭ አዘጋጅ

Particle.variable ("i2cdevice", "MPL3115A2");

ቅንጣት። ተለዋዋጭ (“cTemp” ፣ cTemp);

ቅንጣት። ተለዋዋጭ (“ግፊት” ፣ ግፊት);

ቅንጣት። ተለዋዋጭ (“ከፍታ” ፣ ከፍታ);

// I2C ግንኙነትን ያስጀምሩ

Wire.begin ();

// የመጀመርያ ደረጃ ተከታታይ ግንኙነት ፣ የባውድ መጠን = 9600 ያዘጋጁ

Serial.begin (9600);

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የቁጥጥር መመዝገቢያ ይምረጡ

Wire.write (0x26);

// ገባሪ ሁናቴ ፣ OSR = 128 ፣ የአልሜሜትር ሁኔታ

Wire.write (0xB9);

// I2C ስርጭትን ያቁሙ

Wire.endTransmission ();

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ ውቅረት መመዝገቢያ ይምረጡ

Wire.write (0x13);

// የውሂብ ዝግጁ ክስተት ከፍታ ፣ ግፊት ፣ የሙቀት መጠን ነቅቷል

Wire.write (0x07);

// I2C ስርጭትን ያቁሙ

Wire.endTransmission ();

መዘግየት (300);

}

ባዶነት loop ()

{

ያልተፈረመ int ውሂብ [6];

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የቁጥጥር መመዝገቢያ ይምረጡ

Wire.write (0x26);

// ገባሪ ሁናቴ ፣ OSR = 128 ፣ የአልሜሜትር ሁኔታ

Wire.write (0xB9);

// I2C ስርጭትን ያቁሙ

Wire.endTransmission ();

መዘግየት (1000);

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ መመዝገቢያ ይምረጡ

Wire.write (0x00);

// I2C ስርጭትን ያቁሙ

Wire.endTransmission ();

// 6 ባይት ውሂብን ይጠይቁ

Wire.requestFrom (Addr, 6);

// 6 ባይት መረጃን ከአድራሻ 0x00 (00) ያንብቡ

// ሁኔታ ፣ tHeight msb1 ፣ tHeight msb ፣ tHeight lsb ፣ temp msb ፣ temp lsb

ከሆነ (Wire.available () == 6)

{

ውሂብ [0] = Wire.read ();

ውሂብ [1] = Wire.read ();

ውሂብ [2] = Wire.read ();

ውሂብ [3] = Wire.read ();

ውሂብ [4] = Wire.read ();

ውሂብ [5] = Wire.read ();

}

// ውሂቡን ወደ 20-ቢት ይለውጡ

tHeight = ((((ረጅም) ውሂብ [1] * (ረጅም) 65536) + (ውሂብ [2] * 256) + (ውሂብ [3] & 0xF0)) / 16))

temp = ((ውሂብ [4] * 256) + (ውሂብ [5] & 0xF0)) / 16;

ከፍታ = tHeight / 16.0;

cTemp = (temp / 16.0);

fTemp = cTemp * 1.8 + 32;

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የቁጥጥር መመዝገቢያ ይምረጡ

Wire.write (0x26);

// ገባሪ ሁናቴ ፣ OSR = 128 ፣ ባሮሜትር ሁኔታ

Wire.write (0x39);

// I2C ስርጭትን ያቁሙ

Wire.endTransmission ();

// I2C ማስተላለፍን ይጀምሩ

Wire.begin ማስተላለፊያ (Addr);

// የውሂብ መመዝገቢያ ይምረጡ

Wire.write (0x00);

// I2C ስርጭትን ያቁሙ

Wire.endTransmission ();

መዘግየት (1000);

// 4 ባይት ውሂብን ይጠይቁ

Wire.requestFrom (Addr, 4);

// 4 ባይት መረጃዎችን ያንብቡ

// ሁኔታ ፣ ቅድመ msb1 ፣ pres msb ፣ pres lsb

ከሆነ (Wire.available () == 4)

{

ውሂብ [0] = Wire.read ();

ውሂብ [1] = Wire.read ();

ውሂብ [2] = Wire.read ();

ውሂብ [3] = Wire.read ();

}

// ውሂቡን ወደ 20-ቢት ይለውጡ

pres = (((ረጅም) ውሂብ [1] * (ረጅም) 65536) + (ውሂብ [2] * 256) + (ውሂብ [3] & 0xF0)) / 16;

ግፊት = (pres / 4.0) / 1000.0;

// የውሂብ ውፅዓት ወደ ዳሽቦርድ

Particle.publish ("Altitude:", String (ከፍታ));

Particle.publish ("ግፊት:", ሕብረቁምፊ (ግፊት));

Particle.publish ("የሙቀት መጠን በሴልሲየስ:", ሕብረቁምፊ (cTemp));

Particle.publish ("በፋራናይት ሙቀት:", ሕብረቁምፊ (fTemp));

መዘግየት (1000);

}

ደረጃ 4: ማመልከቻዎች

የ MPL3115A2 የተለያዩ አፕሊኬሽኖች ከፍተኛ ትክክለኛነት አልቲሜትሪ ፣ ስማርትፎኖች/ጡባዊዎች ፣ የግል ኤሌክትሮኒክስ አልቲሜትሪ ወዘተ ያጠቃልላል። እንዲሁም በጂፒኤስ የሞተ ቆጠራ ፣ ለድንገተኛ ጊዜ አገልግሎቶች የጂፒኤስ ማሻሻያ ፣ የካርታ ረዳት ፣ ዳሰሳ እንዲሁም የአየር ሁኔታ ጣቢያ መሣሪያዎች ውስጥ ሊካተት ይችላል።

የሚመከር: