Мазмұны:

Бөлшек фотон - MPL3115A2 дәлдіктегі альтиметр сенсорының оқулығы: 4 қадам
Бөлшек фотон - MPL3115A2 дәлдіктегі альтиметр сенсорының оқулығы: 4 қадам

Бейне: Бөлшек фотон - MPL3115A2 дәлдіктегі альтиметр сенсорының оқулығы: 4 қадам

Бейне: Бөлшек фотон - MPL3115A2 дәлдіктегі альтиметр сенсорының оқулығы: 4 қадам
Бейне: Элементар бөлшек- фотонның ашылу тарихы. 2024, Қараша
Anonim
Image
Image

MPL3115A2 қысым/биіктік және температура туралы нақты деректерді беру үшін I2C интерфейсі бар MEMS қысым датчигін қолданады. Сенсордың шығысы жоғары ажыратымдылықтағы 24 биттік ADC көмегімен цифрланған. Ішкі өңдеу хост MCU жүйесінен өтемақы тапсырмаларын жояды. Ол тек 0,05 кПа өзгерісін анықтай алады, бұл биіктіктің 0,3 м өзгеруіне тең. Міне, оның бөлшек фотонмен демонстрациясы.

1 -қадам: Сізге не керек..

Сізге не керек.. !!
Сізге не керек.. !!

1. Бөлшек фотон

2. MPL3115A2

3. I²C кабелі

4. Бөлшек фотонға арналған I²C қалқаны

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

float 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);

Бөлшек.өзгермелі («қысым», қысым);

Бөлшек.өзгермелі («биіктік», биіктік);

// I2C байланысын бастаңыз

Wire.begin ();

// Сериялық байланысты орнатыңыз, жіберу жылдамдығы = 9600

Serial.begin (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

егер (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;

биіктік = t Биіктігі / 16.0;

cTemp = (temp / 16.0);

fTemp = cTemp * 1.8 + 32;

// I2C жіберуді бастау

Wire.beginTransmission (Addr);

// Басқару регистрін таңдаңыз

Wire.write (0x26);

// Белсенді режим, OSR = 128, барометр режимі

Wire.write (0x39);

// I2C берілуін тоқтату

Wire.endTransmission ();

// I2C жіберуді бастау

Wire.beginTransmission (Addr);

// Деректер регистрін таңдаңыз

Wire.write (0x00);

// I2C берілуін тоқтату

Wire.endTransmission ();

кешіктіру (1000);

// 4 байт деректерді сұрау

Wire.requestFrom (Addr, 4);

// 4 байт деректерді оқу

// күй, pres 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;

қысым = (прес / 4,0) / 1000,0;

// Деректерді бақылау тақтасына шығару

Particle.publish («Биіктік:», Жол (биіктік));

Particle.publish («Қысым:», Жол (қысым));

Particle.publish («Цельсий бойынша температура:», String (cTemp));

Particle.publish («Фаренгейт температурасы:», String (fTemp));

кешіктіру (1000);

}

4 -қадам: Өтініштер:

MPL3115A2 әр түрлі қосымшаларына жоғары дәлдіктегі алтиметрия, смартфондар/планшеттер, дербес электроника алиметриясы және т.б. кіреді. Ол GPS -тің өлу есебіне, төтенше қызметтерге GPS -ті жақсартуға, картаға көмекке, навигацияға, сондай -ақ метеорологиялық станция жабдықтарына қосылуы мүмкін.

Ұсынылған: