সুচিপত্র:

কণা ফোটন - MPL3115A2 যথার্থ আলটিমিটার সেন্সর টিউটোরিয়াল: 4 টি ধাপ
কণা ফোটন - MPL3115A2 যথার্থ আলটিমিটার সেন্সর টিউটোরিয়াল: 4 টি ধাপ
Anonim
Image
Image

MPL3115A2 সঠিক চাপ/উচ্চতা এবং তাপমাত্রার তথ্য প্রদানের জন্য I2C ইন্টারফেস সহ একটি MEMS চাপ সেন্সর নিয়োগ করে। সেন্সর আউটপুট একটি উচ্চ রেজল্যুশন 24-বিট এডিসি দ্বারা ডিজিটালাইজড হয়। অভ্যন্তরীণ প্রক্রিয়াকরণ হোস্ট এমসিইউ সিস্টেম থেকে ক্ষতিপূরণ কাজগুলি সরিয়ে দেয়। এটি মাত্র 0.05 kPa তে পরিবর্তন সনাক্ত করতে সক্ষম যা উচ্চতায় 0.3 মিটার পরিবর্তনের সমান। এখানে কণা ফোটনের সাথে এর প্রদর্শন।

ধাপ 1: আপনার যা প্রয়োজন..

তুমি কি চাও..!!
তুমি কি চাও..!!

1. কণা ফোটন

2. MPL3115A2

3. I²C কেবল

4. কণা ফোটনের জন্য I²C শিল্ড

ধাপ 2: সংযোগ:

সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ

কণা ফোটনের জন্য একটি I2C ieldাল নিন এবং কণা ফোটনের পিনের উপর আলতো করে চাপ দিন।

তারপর I2C তারের এক প্রান্ত MPL3115A2 সেন্সরের সাথে এবং অন্য প্রান্তটি I2C ieldালের সাথে সংযুক্ত করুন।

উপরের ছবিতে কানেকশন দেখানো হয়েছে।

ধাপ 3: কোড:

কোড
কোড

MPL3115A2 এর কণা কোডটি আমাদের Github সংগ্রহস্থল-DCUBE স্টোর থেকে ডাউনলোড করা যাবে।

এখানে লিঙ্ক আছে।

আমরা পার্টিকেল কোডের জন্য দুটি লাইব্রেরি ব্যবহার করেছি, যেগুলো application.h এবং spark_wiring_i2c.h। সেন্সরের সাথে I2C যোগাযোগের সুবিধার্থে Spark_wiring_i2c লাইব্রেরি প্রয়োজন।

আপনি এখান থেকে কোডটি অনুলিপি করতে পারেন, এটি নিম্নরূপ দেওয়া হয়েছে:

// একটি স্বাধীন ইচ্ছা লাইসেন্স দিয়ে বিতরণ করা হয়।

// এটি যে কোন উপায়ে ব্যবহার করুন, মুনাফা বা বিনামূল্যে, যদি এটি তার সংশ্লিষ্ট কাজের লাইসেন্সের সাথে খাপ খায়।

// MPL3115A2

// এই কোডটি MPL3115A2_I2CS I2C মিনি মডিউলের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত

// MPL3115A2 I2C ঠিকানা হল 0x60 (96)

#সংযোজনকারী 0x60

ফ্লোট cTemp = 0.0, fTemp = 0.0, চাপ = 0.0, উচ্চতা = 0.0;

int temp = 0, tHeight = 0; long pres = 0;

অকার্যকর সেটআপ()

{

// পরিবর্তনশীল সেট করুন

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

Particle.variable ("cTemp", cTemp);

Particle.variable ("চাপ", চাপ);

Particle.variable ("উচ্চতা", উচ্চতা);

// I2C যোগাযোগ শুরু করুন

Wire.begin ();

// সিরিয়াল কমিউনিকেশন শুরু করুন, বড রেট = 9600 সেট করুন

Serial.begin (9600);

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// নিয়ন্ত্রণ নিবন্ধন নির্বাচন করুন

Wire.write (0x26);

// অ্যাক্টিভ মোড, ওএসআর = 128, আলটিমিটার মোড

Wire.write (0xB9);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডাটা কনফিগারেশন রেজিস্টার নির্বাচন করুন

Wire.write (0x13);

// উচ্চতা, চাপ, তাপমাত্রার জন্য ডেটা প্রস্তুত ইভেন্ট সক্ষম

Wire.write (0x07);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

বিলম্ব (300);

}

অকার্যকর লুপ ()

{

স্বাক্ষরবিহীন int ডেটা [6];

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// নিয়ন্ত্রণ নিবন্ধন নির্বাচন করুন

Wire.write (0x26);

// অ্যাক্টিভ মোড, ওএসআর = 128, আলটিমিটার মোড

Wire.write (0xB9);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

বিলম্ব (1000);

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডাটা রেজিস্টার নির্বাচন করুন

Wire.write (0x00);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 6 বাইট ডেটা অনুরোধ করুন

Wire.requestFrom (Addr, 6);

// 0x00 (00) ঠিকানা থেকে 6 বাইট ডেটা পড়ুন

// অবস্থা, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

যদি (Wire.available () == 6)

{

ডেটা [0] = ওয়্যার.রেড ();

ডেটা [1] = ওয়্যার.রেড ();

ডেটা [2] = ওয়্যার.রেড ();

ডেটা [3] = ওয়্যার.রেড ();

তথ্য [4] = Wire.read ();

তথ্য [5] = ওয়্যার.রেড ();

}

// ডেটাকে 20-বিটে রূপান্তর করুন

tHeight = ((((দীর্ঘ) তথ্য [1] * (দীর্ঘ) 65536) + (তথ্য [2] * 256) + (তথ্য [3] এবং 0xF0)) / 16);

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

উচ্চতা = tHeight / 16.0;

cTemp = (temp / 16.0);

fTemp = cTemp * 1.8 + 32;

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// নিয়ন্ত্রণ নিবন্ধন নির্বাচন করুন

Wire.write (0x26);

// সক্রিয় মোড, ওএসআর = 128, ব্যারোমিটার মোড

Wire.write (0x39);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডাটা রেজিস্টার নির্বাচন করুন

Wire.write (0x00);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

বিলম্ব (1000);

// 4 বাইট ডেটার অনুরোধ করুন

Wire.requestFrom (Addr, 4);

// 4 বাইট ডেটা পড়ুন

// স্ট্যাটাস, প্রেস এমএসবি 1, প্রেস এমএসবি, প্রেস এলএসবি

যদি (Wire.available () == 4)

{

ডেটা [0] = ওয়্যার.রেড ();

ডেটা [1] = ওয়্যার.রেড ();

ডেটা [2] = ওয়্যার.রেড ();

ডেটা [3] = ওয়্যার.রেড ();

}

// ডেটাকে 20-বিটে রূপান্তর করুন

pres = (((long) data [1] * (long) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16;

চাপ = (প্রেস / 4.0) / 1000.0;

// ড্যাশবোর্ডে আউটপুট ডেটা

Particle.publish ("উচ্চতা:", স্ট্রিং (উচ্চতা));

Particle.publish ("চাপ:", স্ট্রিং (চাপ));

Particle.publish ("সেলসিয়াস তাপমাত্রা:", স্ট্রিং (cTemp));

Particle.publish ("ফারেনহাইট তাপমাত্রা:", স্ট্রিং (fTemp));

বিলম্ব (1000);

}

ধাপ 4: অ্যাপ্লিকেশন:

MPL3115A2 এর বিভিন্ন অ্যাপ্লিকেশনের মধ্যে রয়েছে উচ্চ নির্ভুলতা Altimetry, স্মার্টফোন/ট্যাবলেট, ব্যক্তিগত ইলেকট্রনিক্স Altimetry ইত্যাদি এটি জিপিএস ডেড রিকোনিং, জরুরী পরিষেবার জন্য জিপিএস বর্ধন, ম্যাপ অ্যাসিস্ট, নেভিগেশনের পাশাপাশি ওয়েদার স্টেশন যন্ত্রপাতি অন্তর্ভুক্ত করতে পারে।

প্রস্তাবিত: