Агуулгын хүснэгт:

Arduino Nano - MPL3115A2 нарийвчлалтай өндөр хэмжигч мэдрэгчийн заавар: 4 алхам
Arduino Nano - MPL3115A2 нарийвчлалтай өндөр хэмжигч мэдрэгчийн заавар: 4 алхам

Видео: Arduino Nano - MPL3115A2 нарийвчлалтай өндөр хэмжигч мэдрэгчийн заавар: 4 алхам

Видео: Arduino Nano - MPL3115A2 нарийвчлалтай өндөр хэмжигч мэдрэгчийн заавар: 4 алхам
Видео: Cara mengukur suhu kompor infrared dengan max6675 K-type Thermocoupler (Subtittled) 2024, Долдугаар сарын
Anonim
Image
Image

MPL3115A2 нь MEMS даралт мэдрэгчийг ашиглан I2C интерфэйстэй бөгөөд даралт/өндөр, температурын үнэн зөв мэдээллийг өгдөг. Мэдрэгчийн гаралтыг 24 битийн өндөр нарийвчлалтай ADC ашиглан дижитал хэлбэрт оруулсан болно. Дотоод боловсруулалт нь хүлээн авагчийн MCU системээс нөхөн олговрын даалгавруудыг арилгадаг. Энэ нь ердөө 0.05 кПа -ийн өөрчлөлтийг илрүүлэх чадвартай бөгөөд энэ нь өндрийн 0.3 м -ийн өөрчлөлттэй тэнцэнэ. Ардуино Нанотой хийсэн жагсаал энд байна.

Алхам 1: Танд хэрэгтэй зүйл..

Чамд юу хэрэгтэй вэ..!!
Чамд юу хэрэгтэй вэ..!!

1. Ардуино Нано

2. MPL3115A2

3. I²C кабель

4. I²C Arduino Nano -ийн бамбай

Алхам 2: Холболтууд:

Холболтууд
Холболтууд
Холболтууд
Холболтууд
Холболтууд
Холболтууд
Холболтууд
Холболтууд

Arduino Nano -ийн I2C бамбайг аваад Nano -ийн голын дээгүүр зөөлөн түлхээрэй.

Дараа нь I2C кабелийн нэг үзүүрийг MPL3115A2 мэдрэгч, нөгөө үзүүрийг I2C бамбай руу холбоно уу.

Холболтыг дээрх зураг дээр харуулав.

Алхам 3: Код:

Код
Код

MPL3115A2-ийн arduino кодыг манай github репозитор-DCUBE дэлгүүрээс татаж авах боломжтой.

Үүнтэй ижил холбоос энд байна:

github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino

Бид мэдрэгчийн Arduino самбартай I2c холболтыг хөнгөвчлөх зорилгоор Wire.h номын санг агуулдаг.

Та мөн кодыг эндээс хуулж болно, үүнийг дараах байдлаар өгсөн болно.

// Хүсэл зоригийн лицензээр тараасан.

// Үүнийг холбогдох бүтээлүүдийнхээ лицензтэй нийцсэн тохиолдолд ашиг, үнэгүй ашиглах боломжтой.

// MPL3115A2

// Энэ код нь MPL3115A2_I2CS I2C Mini модультай ажиллахад зориулагдсан болно

#оруулах

// MPL3115A2 I2C хаяг нь 0x60 (96)

#Тодорхойлох Addr 0x60

хүчингүй тохиргоо ()

{

// I2C холболтыг эхлүүлэх

Wire.begin ();

// Цуваа холбоог эхлүүлэх, дамжуулах хурд = 9600

Цуваа эхлэх (9600);

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Хяналтын бүртгэлийг сонгоно уу

Wire.write (0x26);

// Идэвхтэй горим, OSR = 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);

// Идэвхтэй горим, OSR = 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

хэрэв (Утас. боломжтой () == 6)

{

өгөгдөл [0] = Wire.read ();

өгөгдөл [1] = Wire.read ();

өгөгдөл [2] = Wire.read ();

өгөгдөл [3] = Wire.read ();

өгөгдөл [4] = Wire.read ();

өгөгдөл [5] = Wire.read ();

}

// Өгөгдлийг 20 бит болгон хөрвүүлэх

int tHeight = (((урт) (өгөгдөл [1] * (урт) 65536) + (өгөгдөл [2] * 256) + (өгөгдөл [3] & 0xF0)) / 16);

int temp = ((өгөгдөл [4] * 256) + (өгөгдөл [5] & 0xF0)) / 16;

хөвөх өндөр = tHeight / 16.0;

float cTemp = (temp / 16.0);

float fTemp = cTemp * 1.8 + 32;

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Хяналтын бүртгэлийг сонгоно уу

Wire.write (0x26);

// Идэвхтэй горим, OSR = 128, барометрийн горим

Wire.write (0x39);

// I2C дамжуулалтыг зогсооно уу

Wire.endTransmission ();

саатал (1000);

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Өгөгдлийн бүртгэлийг сонгоно уу

Wire.write (0x00);

// I2C дамжуулалтыг зогсооно уу

Wire.endTransmission ();

// 4 байтын өгөгдөл хүсэх

Wire.requestFrom (Addr, 4);

// 4 байтын өгөгдлийг уншина уу

// төлөв, өмнөх msb1, pres msb, pres lsb

хэрэв (Утас. боломжтой () == 4)

{

өгөгдөл [0] = Wire.read ();

өгөгдөл [1] = Wire.read ();

өгөгдөл [2] = Wire.read ();

өгөгдөл [3] = Wire.read ();

}

// Өгөгдлийг 20 бит болгон хөрвүүлэх

long pres = (((урт) өгөгдөл [1] * (урт) 65536) + (өгөгдөл [2] * 256) + (өгөгдөл [3] & 0xF0)) / 16;

хөвөх даралт = (pres / 4.0) / 1000.0;

// Өгөгдлийг цуваа монитор руу гаргадаг

Serial.print ("Өндөр:");

Цуваа.хэвлэх (өндөр);

Serial.println ("m");

Serial.print ("Даралт:");

Цуврал хэвлэх (даралт);

Serial.println ("кПа");

Serial.print ("Цельсийн температур:");

Serial.print (cTemp);

Serial.println ("C");

Serial.print ("Фаренгейт дэх температур:");

Цуваа.хэвлэх (fTemp);

Serial.println ("F");

саатал (500);

}

Алхам 4: Өргөдөл:

MPL3115A2 -ийн янз бүрийн хэрэглээнд өндөр нарийвчлалтай хэмжих хэрэгсэл, ухаалаг гар утас/таблет, хувийн электроник хэмжигч гэх мэт орно. Үүнийг GPS -ийн үхлийн тооцоо, яаралтай тусламжийн үйлчилгээний GPS -ийн сайжруулалт, газрын зургийн туслалцаа, навигаци, цаг уурын станцын тоног төхөөрөмжид оруулж болно.

Зөвлөмж болгож буй: