Мазмуну:
Video: Particle Photon - MPL3115A2 Precision Altimeter Sensor үйрөткүчү: 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
MPL3115A2 так басым/бийиктик жана температура маалыматын берүү үчүн I2C интерфейси бар MEMS басым сенсорун колдонот. Сенсордун жыйынтыктары жогорку разряддуу 24-бит ADC менен санариптештирилет. Ички иштетүү MCU тутумунун компенсация милдеттерин жок кылат. Бул 0,05 кПадагы өзгөрүүнү аныктоого жөндөмдүү, бул бийиктиктин 0,3 м өзгөрүшүнө барабар. Бул жерде Particle Photon менен анын көрсөтмөсү.
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 Mini Module менен иштөө үчүн иштелип чыккан
#кошуу
#кошуу
// MPL3115A2 I2C дареги 0x60 (96)
#define 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)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [2] = Wire.read ();
маалымат [3] = Wire.read ();
data [4] = Wire.read ();
маалымат [5] = Wire.read ();
}
// Маалыматтарды 20 битке айландырыңыз
tHeight = ((((узун) маалымат [1] * (узун) 65536) + (маалымат [2] * 256) + (маалымат [3] & 0xF0)) / 16);
темп = ((маалыматтар [4] * 256) + (маалыматтар [5] & 0xF0)) / 16;
бийиктик = tHeight / 16.0;
cTemp = (темп / 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 байт маалыматтарды окуңуз
// статус, пресс msb1, пресс msb, pres lsb
эгер (Wire.available () == 4)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [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дин ар кандай тиркемелери жогорку тактык алтиметриясын, смартфондорду/планшеттерди, персоналдык электроника алтиметриясын ж.б. камтыйт.
Сунушталууда:
Particle Photon - TCN75A Температура сенсорунун үйрөткүчү: 4 кадам
Particle Photon-TCN75A Температура сенсорунун үйрөткүчү: TCN75A-температурадан цифралык которгуч менен кошулган эки зымдуу сериялык температура сенсору. Бул температураны сезүүчү колдонмолор үчүн ийкемдүүлүктү камсыз кылган колдонуучу программалоочу реестрлери менен коштолгон. Каттоо жөндөөлөрү колдонуучуларга
Particle Photon - ADT75 Температура сенсорунун үйрөткүчү: 4 кадам
Particle Photon - ADT75 Temperature Sensor Tutorial: ADT75 - абдан так, санарип температура сенсору. Бул диапазондогу температура сенсорунан жана температураны көзөмөлдөө жана санариптештирүү үчүн санариптик конвертерге 12-биттен турат. Анын өтө сезгич сенсору мага жетиштүү компетенттүү кылат
Particle Photon - STS21 Температура сенсорунун үйрөткүчү: 4 кадам
Бөлүкчө Фотон - STS21 Температура Сенсорунун Үйрөткүчү: STS21 Санарип Температура Сенсору жогорку өндүрүмдүүлүктү жана мейкиндикти үнөмдөөчү изди сунуштайт. Бул санарип, I2C форматында калибрленген, сызыктуу сигналдарды берет. Бул сенсордун жасалышы CMOSens технологиясына негизделген, ал жогорку сапаттарга таандык
Particle Photon - HDC1000 Температура сенсорунун үйрөткүчү: 4 кадам
Particle Photon - HDC1000 Температура Сенсорунун Үйрөткүчү: HDC1000 - бул санариптик нымдуулук сенсору, ал өтө төмөн кубаттуулукта эң сонун өлчөө тактыгын камсыз кылат. Аппарат нымдуулукту жаңы сыйымдуу сенсордун негизинде өлчөйт. Нымдуулук жана температура сенсорлору бетке
Particle Photon - TMP100 Температура сенсорунун үйрөткүчү: 4 кадам
Particle Photon-TMP100 Температура сенсорунун үйрөткүчү: TMP100 Жогорку тактык, Аз кубаттуулук, Санарип Температура Сенсор I2C MINI модулу. TMP100 узартылган температураны өлчөө үчүн идеалдуу. Бул түзмөк калибрлөөнү же тышкы компоненттин сигналын кондициялоону талап кылбастан ± 1 ° C тактыкты сунуштайт. Ал