ዝርዝር ሁኔታ:

ለ BMP280 እና ለ BME280 ቤተ -መጽሐፍት -7 ደረጃዎች
ለ BMP280 እና ለ BME280 ቤተ -መጽሐፍት -7 ደረጃዎች

ቪዲዮ: ለ BMP280 እና ለ BME280 ቤተ -መጽሐፍት -7 ደረጃዎች

ቪዲዮ: ለ BMP280 እና ለ BME280 ቤተ -መጽሐፍት -7 ደረጃዎች
ቪዲዮ: አርዱዪኖ ናኖ፣ BME280 እና SSD1306 OLED የአየር ሁኔታ ጣቢያ 2024, ሀምሌ
Anonim
ለ BMP280 እና ለ BME280 ቤተ -መጽሐፍት
ለ BMP280 እና ለ BME280 ቤተ -መጽሐፍት
ለ BMP280 እና BME280 ቤተ -መጽሐፍት
ለ BMP280 እና BME280 ቤተ -መጽሐፍት
ለ BMP280 እና BME280 ቤተ -መጽሐፍት
ለ BMP280 እና BME280 ቤተ -መጽሐፍት

መግቢያ

ይህንን ቤተመፃሕፍት ለመጻፍ አልነሳሁም። BMP280 ን የሚጠቀም የጀመርኩት ፕሮጀክት የጎንዮሽ ውጤት ሆኖ “ተከሰተ”። ያ ፕሮጀክት ገና አልተጠናቀቀም ፣ ግን ቤተ -መጽሐፍት ለሌሎች ለማካፈል ዝግጁ ይመስለኛል። በመቀጠልም ለ BMP280 ግፊት እና የሙቀት አቅም የእርጥበት መጠን የሚጨምር BME280 ን መጠቀም ነበረብኝ። BME280 ከ BMP280 ጋር “ወደ ኋላ ተኳሃኝ” ነው - ማለትም ፣ ሁሉም መመዝገቢያዎች እና ከ BME280 ግፊት እና የሙቀት መጠንን ለማንበብ የሚያስፈልጉ እርምጃዎች ለ BMP280 ከሚጠቀሙት ጋር ተመሳሳይ ናቸው። ለ BME280 ብቻ የሚተገበረውን እርጥበት ለማንበብ ተጨማሪ መመዝገቢያዎች እና እርምጃዎች አሉ። ይህ ጥያቄውን ያስነሳል ፣ ለሁለቱም አንድ ቤተ -መጽሐፍት ፣ ወይም ሁለት የተለያዩ ቤተ -መጻሕፍት። የሁለቱ መሣሪያ ዓይነቶች ሃርድዌር ሙሉ በሙሉ ሊለዋወጥ የሚችል ነው። የሚሸጡ ብዙ ሞጁሎች እንኳን (ለምሳሌ በኤባይ እና አሊክስፕስ ላይ) BME/P280 የሚል ስያሜ ተሰጥቷቸዋል። የትኛው ዓይነት እንደሆነ ለማወቅ በአነፍናፊው ራሱ ላይ ያለውን (ሚኒስክሌል) ጽሑፍ ማየት ወይም የመሣሪያውን መታወቂያ ባይት መሞከር አለብዎት። ወደ አንድ ቤተ -መጽሐፍት ለመሄድ ወሰንኩ። እሺ የሰራ ይመስላል።

ግብረመልስ ፣ በተለይም የማሻሻያ ሀሳቦች ሁሉ ይደነቃሉ።

የቤተ -መጻህፍት ባህሪዎች እና ችሎታዎች

ቤተመፃህፍት ሁሉንም የጥራጥሬ ዝርዝሮችን መቋቋም ሳያስፈልግ ለፕሮግራም አድራጊው የመሣሪያውን ችሎታዎች እንዲጠቀም የመተግበሪያ ፕሮግራም በይነገጽ (ኤፒአይ) የሚያቀርብ የሶፍትዌር አካል ነው። በሚያምር ሁኔታ ፣ ለመሣሪያው ችሎታዎች ሙሉ ብዝበዛን በሚሰጥበት ጊዜ ኤፒአይ ቀላል መስፈርቶችን ላለው ለጀማሪ ቀላል መሆን አለበት። በሚያምር ሁኔታ ቤተመጽሐፉ ማንኛውንም የመሣሪያ አምራች ፣ እንዲሁም አጠቃላይ የሶፍትዌር ጥሩ ልምድን ማንኛውንም ልዩ መመሪያዎችን መከተል አለበት። እነዚህን ሁሉ ለማሳካት ጥረት አድርጌያለሁ። ከ BMP280 ጋር ስጀምር ለእሱ 3 የተለያዩ ቤተ -መጻሕፍት አገኘሁ - Adafruit_BMP280; አይቷል_BMP280; እና አንዱ ከመሣሪያው አምራች BMP280 ይባላል። አዳፍሩትም ሆነ Seeed የተራዘሙ ችሎታዎችን አልሰጡም ፣ ምንም እንኳን ጥሩ ቢሠሩም ለመሠረታዊ ትግበራዎች ለመጠቀም ቀላል ቢሆኑም። በመሳሪያው አምራች (Bosch Sensortec) የተሰራውን እንዴት እንደምንጠቀም መገመት አልቻልኩም። ይህ የእኔ ሳይሆን የእኔ ጉድለት ሊሆን ይችላል። ሆኖም ቤተ -መጽሐፍቱ ከሌሎቹ ሁለቱ በጣም የተወሳሰበ ነበር ፣ ምንም መመሪያዎችን ወይም የአጠቃቀም ምሳሌዎችን ማግኘት አልቻልኩም (በኋላ ምሳሌዎች በ ‹bmp280_support.c› ፋይል ውስጥ ነበሩ ፣ ግን እነዚህ በተለይ ለእኔ አልረዱኝም)።

በእነዚህ ምክንያቶች የተነሳ ለ BMP280 የራሴን ቤተመፃሕፍት ለመጻፍ ወሰንኩ።

ለ BME280 የቤተመፃህፍት ሁኔታ ስመለከት የተለየ ቤተመፃህፍት አገኘሁት Adafruit_BME280 ፣ Seed_BME280 እና ሌላ አንድ BME280_MOD-1022 በተካተተ አድቬንቸርስ የተፃፈ። አንዳቸውም ቢኤም 280 ን ለመጠቀም በሚችል ቤተ -መጽሐፍት ውስጥ ለ BMP280 ተግባሮችን አጣምረዋል። አንዳቸውም ቢሆኑ መሣሪያው እና ተቆጣጣሪው ማይክሮፕሮሰሰር በሚተኛበት ጊዜ የመሣሪያዎቹን አቅም ጥቂት መረጃዎችን ለማከማቸት በግልፅ አልደገፈም (ይህ ችሎታ በውሂብ ሉህ ውስጥ ግልፅ ነው እና እኔ በጻፍኩት እና እዚህ በገለጽኩት ቤተ -መጽሐፍት ውስጥ የተደገፈ ነው)።

የተዋሃደ ቤተ -መጽሐፍት ለሁሉም የ BME280 ችሎታዎች ድጋፍ ሊኖረው ይገባል ፣ ነገር ግን ከ BMP280 ጋር ጥቅም ላይ ሲውል ጥቅም ላይ ካልዋሉ ተግባራት ማንኛውንም ትርፍ ማስገኘት የለበትም። የተዋሃደ ቤተ-መጽሐፍት ጥቅሞች ለማስተዳደር ጥቂት የቤተ-መጽሐፍት ፋይሎችን ፣ በአንድ ፕሮጀክት ውስጥ የተለያዩ መሣሪያዎችን በቀላሉ መቀላቀል እና ማዛመድ ፣ እና ከሁለት ይልቅ በአንድ ቦታ ብቻ መደረግ ለሚኖርባቸው የጥገና ወይም የማሻሻያ ለውጦች ቀለል ያሉ ለውጦችን ያካትታሉ። እነዚህ ምናልባት ሁሉም በጣም ትንሽ ፣ ምንም እንኳን እዚህ ግባ የማይባሉ ፣ ግን…

የመሣሪያ ችሎታዎች

BMP280 እና BME280 5 ሚሜ ካሬ እና 1 ሚሜ ከፍታ ያላቸው ወለል ላይ የሚገጠሙ መሣሪያዎች ናቸው። 2 የተለያዩ የኃይል ግብዓት ፓዳዎችን እና ሁለት የመሬት ፓዳዎችን ጨምሮ 8 በይነገጽ ንጣፎች አሉ። እነሱ በ 4 ወይም በ 6 ፒኖች አምጥተው እንደ ሞጁል በ eBay ላይ ይገኛሉ። ባለ 4-ፒን ሞዱል ቋሚ I2C አድራሻ አለው እና የ SPI ፕሮቶኮልን ለመጠቀም ሊዋቀር አይችልም።

ባለ 6-ፒን ሞዱል ወይም ባዶ መሣሪያው በ I2C ወይም በ SPI ፕሮቶኮሎች መጠቀም ይቻላል። በ I2C ሞድ ውስጥ ሁለት የተለያዩ አድራሻዎች ሊኖሩት ይችላል ፣ የ SDO ን ፒን ከመሬት (ከመነሻ አድራሻ = 0x76) ወይም ከ Vdd (ለመነሻ አድራሻ +1 = 0x77) በማገናኘት የተገኘ። በ SPI ሞድ ውስጥ 1 ሰዓት ፣ 2 ውሂብ (አንድ ለእያንዳንዱ አቅጣጫ) እና የመሣሪያ መምረጫ ፒን (ሲኤስ) የተለመደው ዝግጅት አለው።

እዚህ የጻፍኩት እና የገለጽኩት ቤተ -መጽሐፍት I2C ን ብቻ ይደግፋል። Adafruit_BMP280 እና BME_MOD-1022 ቤተ-መጻሕፍት ለሁለቱም i2C እና SPI ድጋፍ አላቸው።

ቤተ -መጽሐፍት እዚህ ማውረድ ይችላል-

github.com/farmerkeith/BMP280- ቤተ-መጽሐፍት

ደረጃ 1 - ሃርድዌርን ማቀናበር

ሃርድዌር ማቀናበር
ሃርድዌር ማቀናበር

ቤተ መፃህፍቱ ጠቃሚ ከመሆኑ በፊት ማይክሮ መቆጣጠሪያውን ከ BMP280 (ወይም ከፈለጋችሁ ከሁለቱ) ማገናኘት አስፈላጊ ነው።

እኔ WeMos D1 mini pro ን ተጠቀምኩ ፣ ስለዚህ ግንኙነቶቹን አሳይሻለሁ። ሌሎች የማይክሮ መቆጣጠሪያዎች ተመሳሳይ ይሆናሉ ፣ የ SDA እና SCL ፒኖችን በትክክል እንዲገናኙ ማድረግ ያስፈልግዎታል።

በ WeMos D1 mini pro ሁኔታ ውስጥ ግንኙነቶቹ የሚከተሉት ናቸው

ተግባር WeMos ፒን BMP280 ፒን ማስታወሻዎች

SDA D2 SDA SCL D1 SCL Vdd 3V3 ቪን በስም 3.3V መሬት GND አድራሻ ቁጥጥር SDO Ground ወይም Vdd I2C CSB Vdd ን ይምረጡ (GND SPI ን ይመርጣል)

በአንዳንድ የ MP280 ሞጁሎች ላይ የኤስዲኦ ፒን ኤስዲዲ የተሰየመ መሆኑን ልብ ይበሉ ፣ እና የ Vdd ፒን ቪሲሲ ተብሎ ሊሰየም ይችላል። ማሳሰቢያ-የ SDA እና SCL መስመሮች በመስመሩ እና በቪን ፒን መካከል የሚጎትቱ ተከላካዮች ሊኖራቸው ይገባል። በተለምዶ የ 4.7 ኪ ዋጋ እሺ መሆን አለበት። አንዳንድ የ BMP280 እና የ BME280 ሞጁሎች በሞጁሉ ውስጥ የተካተቱ 10 ኬ መጎተት መከላከያዎች አሏቸው (ይህ ጥሩ ልምምድ አይደለም ፣ ምክንያቱም ብዙ መሳሪያዎችን በ I2C አውቶቡስ ላይ ማድረጉ ከመጠን በላይ ሊጭነው ስለሚችል)። ነገር ግን በተመሳሳይ አውቶቡስ ውስጥ ሌሎች ብዙ መሣሪያዎች እስካልተገኙ ድረስ የሚጎትቱ ተከላካዮች ባሉበት ጊዜ እያንዳንዳቸው 2 ቢኤምኤ/ፒ 280 ሞጁሎችን እያንዳንዳቸው በ 10 ኪ resistor በመጠቀም በተግባር ላይ ችግር መሆን የለበትም።

አንዴ ሃርድዌር ከተገናኘ በኋላ እዚህ ሊያገኙት የሚችለውን ረቂቅ I2CScan_ID ን በማሄድ መሣሪያዎ BMP280 ወይም BME280 መሆኑን በቀላሉ ማረጋገጥ ይችላሉ-

እንዲሁም መሣሪያውን ራሱ በመመልከት BMP280 ወይም BME280 እንዳለዎት ማረጋገጥ ይችላሉ። ይህንን ለማድረግ ዲጂታል ማይክሮስኮፕን መጠቀም አስፈላጊ ሆኖ አግኝቼዋለሁ ፣ ግን የዓይን እይታዎ በጣም ጥሩ ከሆነ ያለ ምንም እገዛ ማድረግ ይችሉ ይሆናል። በመሳሪያው መያዣ ላይ ሁለት የማተሚያ መስመሮች አሉ። ቁልፉ በሁለተኛው መስመር ላይ የመጀመሪያው ፊደል ነው ፣ ይህም በ BMP280 መሣሪያዎች ሁኔታ “ኬ” እና በ BME280 መሣሪያዎች ውስጥ “ዩ” ነው።

ደረጃ 2 ፦ በቤተ መፃህፍት የቀረቡ ኤፒአይዎች

በቤተ መፃህፍት የቀረቡ ኤፒአይዎች
በቤተ መፃህፍት የቀረቡ ኤፒአይዎች
በቤተ መፃህፍት የቀረቡ ኤፒአይዎች
በቤተ መፃህፍት የቀረቡ ኤፒአይዎች

በስዕሉ ውስጥ ቤተ -መጽሐፉን ጨምሮ

ቤተ -መጽሐፍት መግለጫውን በመጠቀም በመደበኛ መንገድ በስዕል ውስጥ ተካትቷል

#"ገበሬ_እምነት_BMP280.h" ን ያካትቱ

ይህ መግለጫ የማዋቀር () ተግባር ከመጀመሩ በፊት በስዕሉ መጀመሪያ ክፍል ውስጥ መካተት አለበት።

የ BME ወይም BMP ሶፍትዌር ነገር መፍጠር

የ BMP280 ሶፍትዌር ነገርን ለመፍጠር 3 ደረጃዎች አሉ። በጣም ቀላሉ ልክ ነው

bme280 የነገር ስም; ወይም bmp280 የነገር ስም;

ለምሳሌ ፣ BMP280 bmp0;

ይህ በ 0x76 ነባሪ አድራሻ (ማለትም ከመሬት ጋር ለተገናኘ ኤስዲኦ) የሶፍትዌር ነገርን ይፈጥራል።

BME280 ወይም BMP280 የሶፍትዌር ነገርን ለመፍጠር ቀጣዩ ደረጃ እንደሚከተለው 0 ወይም 1 መለኪያ አለው።

bme280 objectNameA (0);

bmp280 objectNameB (1);

ሁለት BME280 ወይም BMP280 መሣሪያዎች በተመሳሳይ I2C አውቶቡስ (እያንዳንዱን ጨምሮ) ላይ እንዲጠቀሙ መለኪያው (0 ወይም 1) ወደ I2C የመሠረቱ አድራሻ ታክሏል።

BME ወይም BMP280 የሶፍትዌር ነገርን ለመፍጠር ሦስተኛው ደረጃ ሁለት መለኪያዎች አሉት። 0 ወይም 1 የሆነው የመጀመሪያው ግቤት ለአድራሻው ፣ እንደ ቀደመው ጉዳይ ነው። ሁለተኛው ግቤት የማረም ህትመትን ይቆጣጠራል። ወደ 1 ከተዋቀረ ፣ ከሶፍትዌር ዕቃው ጋር ያለው እያንዳንዱ ግብይት ፕሮግራሙ የግብይቱን ዝርዝሮች ለማየት የሚያስችለውን Serial.print ውጤቶች ያስገኛል። ለምሳሌ:

bmp280 objectNameB (1, 1);

የማረሚያ ህትመት መለኪያው ወደ 0 ከተዋቀረ የሶፍትዌሩ ነገር ወደ መደበኛው ባህሪ ይመለሳል (ማተም የለም)።

ይህ መግለጫ ወይም መግለጫዎች ከ #ማካተት እና ከማዋቀር () ተግባር በፊት መካተት አለባቸው።

የ BME ወይም BMP የሶፍትዌር ነገርን ማስጀመር

ጥቅም ላይ ከመዋሉ በፊት የመለኪያ ልኬቶችን ከመሣሪያው ማንበብ እና ለማንኛውም የመለኪያ ሁናቴ ፣ ከመጠን በላይ ማተም እና የማጣሪያ ቅንጅቶች ተገቢ ናቸው።

ለቀላል ፣ ለአጠቃላይ ዓላማ መነሻነት ፣ መግለጫው የሚከተለው ነው-

objectName.begin ();

ይህ የመነሻ () ስሪት ከመሣሪያው የመለኪያ ልኬቶችን ያነብባል እና osrs_t = 7 (16 የሙቀት መለኪያዎች) ፣ osrs_p = 7 (16 የግፊት መለኪያዎች) ፣ ሞድ = 3 (ቀጣይ ፣ መደበኛ) ፣ t_sb = 0 (0.5 ms መካከል የመለኪያ ስብስቦች) ፣ ማጣሪያ = 0 (K = 1 ፣ ስለዚህ ማጣሪያ የለም) እና spiw_en = 0 (SPI ተሰናክሏል ፣ ስለዚህ I2C ን ይጠቀሙ)። በ BME280 ሁኔታ ፣ ለ 16 የእርጥበት ልኬቶች ተጨማሪ መለኪያ osrs_h = 7 አለ።

ሁሉንም ስድስት (ወይም 7) መለኪያዎች የሚወስድ ሌላ የጅማሬ () ስሪት አለ። ከላይ ከተጠቀሰው መግለጫ ጋር እኩል ነው

objectName.begin (7, 7, 3, 0, 0, 0); // osrs_t ፣ osrs_p ፣ ሁነታ ፣ t_sb ፣ ማጣሪያ ፣ spiw_en

ወይም objectName.begin (7, 7, 3, 0, 0, 0, 7); // osrs_t ፣ osrs_p ፣ ሁነታ ፣ t_sb ፣ ማጣሪያ ፣ spiw_en ፣ osrs_h

ሙሉ የኮዶች ዝርዝር እና ትርጉማቸው በ BME280 እና BMP280 የውሂብ ሉህ ውስጥ ፣ እንዲሁም በቤተ -መጽሐፍት ውስጥ ባለው.cpp ፋይል ውስጥ በአስተያየቶች ውስጥ ይገኛል።

ቀላል የሙቀት መጠን እና የግፊት መለኪያ

የሙቀት መለኪያን ለማግኘት ቀላሉ መንገድ ነው

ድርብ ሙቀት = objectName.readTemperature (); // የሙቀት መጠንን ይለኩ

የግፊት መለኪያ ለማግኘት ቀላሉ መንገድ ነው

ድርብ ግፊት = objectName.readPressure (); // ግፊትን ይለኩ

የእርጥበት መለኪያ ለማግኘት ቀላሉ መንገድ ነው

ድርብ እርጥበት = objectName.readHumidity (); // እርጥበት ይለካ (BME280 ብቻ)

ሁለቱንም የሙቀት መጠን እና ግፊት ለማግኘት ከላይ የተጠቀሱት ሁለት መግለጫዎች አንድ በአንድ እርስ በእርስ ጥቅም ላይ ሊውሉ ይችላሉ ፣ ግን ሌላ አማራጭ አለ ፣ እሱም

ድርብ ሙቀት;

ድርብ ግፊት = ነገርName.readPressure (ሙቀት); // ግፊትን እና የሙቀት መጠንን ይለኩ

ይህ መግለጫ ከ BME280 ወይም ከ BMP280 መሣሪያ የተገኘውን መረጃ አንድ ጊዜ ብቻ ያነባል ፣ እና ሁለቱንም የሙቀት መጠን እና ግፊት ይመልሳል። ይህ የ I2C አውቶቡሱን በትንሹ ቀልጣፋ አጠቃቀም እና ሁለቱ ንባቦች ከተመሳሳይ የመለኪያ ዑደት ጋር የሚዛመዱ መሆናቸውን ያረጋግጣል።

ለ BME 280 ፣ ሦስቱን እሴቶች (እርጥበት ፣ የሙቀት መጠን እና ግፊት) የሚያገኝ ጥምር መግለጫ -

ድርብ ሙቀት ፣ ግፊት ፣ ድርብ እርጥበት = የነገር ስም። // እርጥበት ፣ ግፊት እና የሙቀት መጠን ይለኩ

ይህ መግለጫ ውሂቡን ከ BMP280 መሣሪያ አንድ ጊዜ ብቻ ያነባል እና ሦስቱን እሴቶች ይመልሳል። ይህ የ I2C አውቶቡስን በመጠኑ የበለጠ ቀልጣፋ አጠቃቀም እና ሦስቱ ንባቦች ከተመሳሳይ የመለኪያ ዑደት ጋር የሚዛመዱ መሆናቸውን ያረጋግጣል። የተለዋዋጮቹ ስሞች ተጠቃሚው ወደሚወደው ማንኛውም ነገር ሊለወጡ እንደሚችሉ ልብ ይበሉ ፣ ግን የእነሱ ትዕዛዝ ተስተካክሏል - የሙቀት መጠኑ መጀመሪያ ይመጣል ፣ እና ግፊት ሁለተኛ ይመጣል።

እነዚህ የአጠቃቀም ጉዳዮች መሠረታዊው Temperature.ino ፣ BasicPressure.ino ፣ BasicHumidity.ino ፣ BasicTemperatureAndPressure.ino እና baseHumidityAndTemperatureAndPressure.ino በመሆን በቤተ -መጽሐፍት በተሰጡ ምሳሌ ንድፎች ተሸፍነዋል።

ይበልጥ የተራቀቀ የሙቀት መጠን እና የግፊት መለኪያ

ምንም እንኳን ከላይ የተገለጹት ተከታታይ መግለጫዎች ያለችግር ቢሰሩም ፣ ሁለት ጉዳዮች አሉ-

  1. መሣሪያው ያለማቋረጥ እየሰራ ነው ፣ እና ስለሆነም በከፍተኛው ደረጃ ኃይልን እየተጠቀመ ነው። ኃይሉ ከባትሪ የሚመጣ ከሆነ ፣ ይህንን መቀነስ አስፈላጊ ሊሆን ይችላል።
  2. በተጠቀመው ኃይል ምክንያት መሣሪያው ማሞቅ ያጋጥመዋል ፣ ስለሆነም የሚለካው የሙቀት መጠን ከአከባቢው የሙቀት መጠን ከፍ ያለ ይሆናል። ይህንን በበለጠ በሚቀጥለው ደረጃ እሸፍናለሁ።

አነስተኛ ኃይልን የሚጠቀም ፣ እና ለአከባቢው ቅርብ የሆነ የሙቀት መጠን የሚሰጥ ውጤት ፣ (እንቅልፍ) በሚያስቀምጡ መለኪያዎች (ለምሳሌ ሞድ = 0) በመጠቀም ሊገኝ ይችላል። ለምሳሌ:

objectName.begin (1, 1, 0, 0, 0, 0 [, 1]); // osrs_t ፣ osrs_p ፣ ሁነታ ፣ t_sb ፣ ማጣሪያ ፣ spiw_en [፣ osrs_h]

ከዚያ ፣ መለኪያው በሚፈለግበት ጊዜ ተገቢውን የ osrs_h ፣ osrs_t እና osrs_p ፣ plus mode = 1 (ነጠላ ምት ሁናቴ) የሚያስቀምጡ F2 (አስፈላጊ ከሆነ) እና F4 ለመመዝገብ መሣሪያውን በማዋቀሪያ ትእዛዝ ያነቃቁት። ለምሳሌ:

[objectName.updateF2Control (1);] // osrs_h - ለ BMP280 በጭራሽ አያስፈልግም ፣

// እና የመለኪያ ቁጥር ካልተቀየረ/ ከጅምሩ () ከተሰጠው እሴት // ለ BME280 አያስፈልግም። objectName.updateF4Control (1, 1, 1); // osrs_t ፣ osrs_p ፣ ሁነታ

መሣሪያውን ከእንቅልፉ ነቅቶ መለካት ይጀምራል ፣ ግን ውጤቱ በተወሰኑት የመለኪያዎች ብዛት ላይ በመመስረት ለተወሰኑ ሚሊሰከንዶች አይገኝም - ቢያንስ 4 ሚ.ሜ ፣ ምናልባትም እስከ 70 ሚ.ሜ ወይም ከዚያ በላይ። የተነበበው ትዕዛዝ ወዲያውኑ ከተላከ መሣሪያው እሴቶቹን ከቀዳሚው ልኬት ይመልሳል - በአንዳንድ መተግበሪያዎች ተቀባይነት ሊኖረው ይችላል ፣ ግን በአብዛኛዎቹ ሁኔታዎች አዲሱ ልኬት እስኪገኝ ድረስ መዘግየቱ የተሻለ ይሆናል።

ይህ መዘግየት በበርካታ መንገዶች ሊከናወን ይችላል።

  1. ረጅሙን የሚጠብቀውን መዘግየት ለመሸፈን የተወሰነ ጊዜ ይጠብቁ
  2. በአንድ ልኬት (ከ 2.3ms) ከከፍተኛው የመለኪያ ጊዜ የተሰላውን የጊዜ መጠን ይጠብቁ ፣ የመለኪያዎችን ብዛት ፣ ከአናት በላይ ፣ እና ህዳግ።
  3. ከላይ እንደተሰላው አጠር ያለ የጊዜ መጠን ይጠብቁ ፣ ነገር ግን በስመ የመለኪያ ጊዜ (ማለትም 2 ሚ.ሜ) እና ከላይ በላይ በመጠቀም ፣ እና በሁኔታ መመዝገቢያ ውስጥ ያለውን “እኔ እለካለሁ” የሚለውን ቢት ማረጋገጥ ይጀምሩ። የሁኔታው ቢት 0 ን ሲያነብ (ማለትም ፣ መለካት አይደለም) ፣ የሙቀት መጠኑን እና የግፊት ንባቦችን ያግኙ።
  4. የሁኔታ መመዝገቢያውን ወዲያውኑ መፈተሽ ይጀምሩ ፣ እና የሁኔታ ቢት 0 ሲያነብ የሙቀት እና የግፊት ንባቦችን ያግኙ ፣

ትንሽ ቆይቶ ይህንን የማድረግ አንድ መንገድ ምሳሌን አሳያለሁ።

የውቅረት መመዝገቢያ ክዋኔዎች

ይህ ሁሉ እንዲሆን ገና ያላስተዋወቅኳቸው በርካታ መሣሪያዎች ያስፈልጉናል። ናቸው:

ባይት ንባብ ይመዝገቡ (ሬጅ)

ባዶነት ዝመና ይመዝገቡ (መዝገብ ፣ እሴት)

እያንዳንዳቸው በቤተ መፃህፍት ውስጥ በርካታ የመነጩ ትዕዛዞች አሏቸው ፣ ይህም ሶፍትዌሩን ለተወሰኑ እርምጃዎች ትንሽ ቀለል ያደርገዋል።

ምሳሌው powerSaverPressureAndTemperature.ino ዘዴ ቁጥር 3. ይጠቀማል ተደጋጋሚ ፍተሻ የሚያደርገው የኮድ መስመር

ሳለ (bmp0.readRegister (0xF3) >> 3); // loop untl F3bit 3 == 0

ይህ ንድፍ ለ ESP8266 ማይክሮ መቆጣጠሪያ መሆኑን ልብ ይበሉ። እኔ WeMos D1 ሚኒ ፕሮፌሰርን እጠቀም ነበር። ስዕሉ ለመተኛት የተለያዩ መመሪያዎች ካላቸው ከአሜጋ ማይክሮ መቆጣጠሪያዎች ጋር አይሰራም። ይህ ንድፍ ብዙ ሌሎች ትዕዛዞችን ይለማመዳል ፣ ስለዚህ ያንን ንድፍ በበለጠ ዝርዝር ከመግለሴ በፊት ሁሉንም አስተዋውቃለሁ።

ማይክሮ መቆጣጠሪያው ከ BMP280 አነፍናፊ ጋር በትይዩ ሲተኛ ፣ 6 መለኪያዎች በመጠቀም የ “አነፍናፊ” ውቅረት ለሚያስፈልጉት ልኬቶች በጅምር () ትእዛዝ ውስጥ ሊከናወን ይችላል። ሆኖም ማይክሮ መቆጣጠሪያው ካልተተኛ ፣ ግን አነፍናፊው ከሆነ ፣ በሚለካበት ጊዜ አነፍናፊው ከእንቅልፉ መነሳት እና የመለኪያ ውቅሩን መንገር አለበት። ይህ በቀጥታ ጋር ሊደረግ ይችላል

updateRegister (reg, value)

ግን በሚከተሉት ሶስት ትዕዛዞች ትንሽ ይቀላል-

updateF2Control (osrs_h); // BME280 ብቻ

updateF4Control (osrs_t ፣ osrs_p ፣ mode) ፤ updateF5Config (t_sb ፣ ማጣሪያ ፣ spi3W_en);

ልኬቱ ከተደረገ በኋላ ጥቅም ላይ የዋለው ሞድ ነጠላ ምት (የግዳጅ ሞድ) ከሆነ መሣሪያው በራስ -ሰር ወደ እንቅልፍ ይመለሳል። ሆኖም ፣ የመለኪያ ስብስብ ቀጣይ (መደበኛ) ሁነታን በመጠቀም ብዙ ልኬቶችን የሚያካትት ከሆነ ፣ BMP280 እንደገና እንዲተኛ ማድረግ ያስፈልጋል። ይህ ከሁለቱ ከሚከተሉት ትዕዛዞች በአንዱ ሊከናወን ይችላል-

updateF4Control16xSleep ();

updateF4ControlSleep (እሴት);

እነዚህ ሁነታዎች ሁነታን ወደ 00 (ማለትም የእንቅልፍ ሁኔታ) ያዋቅራሉ። ሆኖም የመጀመሪያው osrs_t እና osrs_p ን ወደ 111 (ማለትም 16 መለኪያዎች) ያዘጋጃል ፣ ሁለተኛው ደግሞ ዝቅተኛውን 6 ቢት ከ ‹እሴት› ወደ 0xF4 መመዝገቢያ 7: 2 ያከማቻል።

በተመሳሳይ ሁኔታ የሚከተለው መግለጫ የ ‹እሴት› ን ዝቅተኛ ስድስት ቢት በ 0xF5 መዝገብ ውስጥ ወደ ቢት 7 2 ያከማቻል።

updateF5ConfigSleep (እሴት);

የእነዚህ የመጨረሻዎቹ ትዕዛዞች አጠቃቀም በ BMP280 ውስጥ 12 ቢት መረጃን ለማከማቸት ያስችላል F4 እና F5። ቢያንስ በ ESP8266 ጉዳይ ላይ ፣ ማይክሮ መቆጣጠሪያው ከእንቅልፍ ጊዜ በኋላ ከእንቅልፉ ሲነቃ ፣ ከእንቅልፍ ትዕዛዙ በፊት ስለ ሁኔታው ምንም ዕውቀት በሌለው ረቂቅ መጀመሪያ ላይ ይጀምራል። ከእንቅልፍ ትዕዛዙ በፊት የእሱን ሁኔታ ዕውቀት ለማከማቸት ፣ EEPROM ተግባሮችን በመጠቀም ወይም SPIFFS ን በመጠቀም ፋይል በመፃፍ መረጃ በፍላሽ ማህደረ ትውስታ ውስጥ ሊከማች ይችላል። ይሁን እንጂ ፍላሽ ማህደረ ትውስታ ከ 10, 000 እስከ 100, 000 ባለው ቅደም ተከተል የመፃፍ ዑደቶች ውስንነት አለው። ይህ ማለት ማይክሮ መቆጣጠሪያው በየጥቂት ሰከንዶች ውስጥ በእንቅልፍ መቀስቀሻ ዑደት ውስጥ የሚሄድ ከሆነ ከሚፈቀደው ማህደረ ትውስታ መጻፍ መብለጥ ይችላል ማለት ነው። በጥቂት ወሮች ውስጥ ይገድቡ። በ BMP280 ውስጥ ጥቂት መረጃዎችን ማከማቸት እንደዚህ ያለ ገደብ የለውም።

በመመዝገቢያ F4 እና F5 ውስጥ የተቀመጠው መረጃ ማይክሮ መቆጣጠሪያው ትዕዛዞችን በመጠቀም ከእንቅልፉ ሲነቃ መልሶ ማግኘት ይችላል

readF4Sleep ();

readF5Sleep ();

እነዚህ ተግባራት ተጓዳኝ መዝገቡን ያነባሉ ፣ ይዘቱን ይቀይሩ 2 ኤልኤስቢዎችን ለማስወገድ እና ቀሪዎቹን 6 ቢት ለመመለስ። እነዚህ ተግባራት በምስል ረቂቅ ኃይል ውስጥ ‹SaverPressureAndTemperatureESP.ino ›ን በሚከተለው መልኩ ያገለግላሉ።

// የ EventCounter ን ያንብቡ ከ bmp0 ተመለስ

ባይት bmp0F4value = bmp0.readF4Sleep (); // ከ 0 እስከ 63 ባይት bmp0F5 ዋጋ = bmp0.readF5Sleep (); // ከ 0 እስከ 63 ክስተት ኮይተር = bmp0F5 ዋጋ*64+bmp0F4value; // ከ 0 እስከ 4095

እነዚህ ተግባራት ተጓዳኝ መዝገቡን ያነባሉ ፣ ይዘቱን ይቀይሩ 2 ኤልኤስቢዎችን ለማስወገድ እና ቀሪዎቹን 6 ቢት ለመመለስ። እነዚህ ተግባራት በምስል ንድፍ ኃይል ‹SaverPressureAndTemperature.ino› ውስጥ እንደሚከተለው ያገለግላሉ።

// የ EventCounter ን ያንብቡ ከ bmp1 ተመለስ

ባይት bmp1F4value = bmp1.readF4Sleep (); // ከ 0 እስከ 63 ባይት bmp1F5 ዋጋ = bmp1.readF5Sleep (); // ከ 0 እስከ 63 ክስተት ኮተር = bmp1F5 ዋጋ*64+bmp1F4 ዋጋ; // ከ 0 እስከ 4095

ጥሬ የሙቀት እና የግፊት ተግባራት

መሠረታዊው የንባብ ሙቀት ፣ የንባብ ግፊት እና የንባብ እርጥበት ተግባራት ሁለት ክፍሎች አሏቸው። በመጀመሪያ ጥሬው 20-ቢት የሙቀት መጠን እና የግፊት እሴቶች ከ BME/P280 ፣ ወይም ጥሬው 16-ቢት እርጥበት ዋጋ ከ BME280 የተገኘ ነው። ከዚያ የማካካሻ ስልተ ቀመር የውጤት እሴቶችን በሴልሺየስ ፣ በ hPa ወይም በ %RH ውስጥ ለማመንጨት ያገለግላል።

ጥሬው የሙቀት መጠን ፣ የግፊት እና የእርጥበት መረጃ ሊገኝ እና ምናልባትም በሆነ መንገድ ሊታለል ስለሚችል ቤተ -መጻህፍቱ ለእነዚህ ክፍሎች የተለያዩ ተግባራትን ይሰጣል። ከእነዚህ ጥሬ እሴቶች የሙቀት መጠኑን ፣ ግፊቱን እና እርጥበትን ለማምጣት ስልተ ቀመሩም ተሰጥቷል። በቤተመጽሐፍት ውስጥ እነዚህ ስልተ ቀመሮች ባለ ሁለት ርዝመት ተንሳፋፊ ነጥብ ሂሳብን በመጠቀም ይተገበራሉ። እሱ ባለ 32 ቢት አንጎለ ኮምፒውተር እና ለ “ድርብ” ተንሳፋፊ ተለዋዋጮች 64 ቢት በሚጠቀም ESP8266 ላይ በጥሩ ሁኔታ ይሠራል። እነዚህን ተግባራት ተደራሽ ማድረግ ለሌሎች ስሌት መድረኮች ስሌትን ለመገምገም እና ለመለወጥ ጠቃሚ ሊሆን ይችላል።

እነዚህ ተግባራት -

RawPressure (ጥሬ የሙቀት መጠን) ን ያንብቡ // ከ BME/P280readRawHumidity (ጥሬ ሙቀት ፣ ጥሬ ግፊት) ጥሬ ግፊት እና የሙቀት መረጃን ያነባል ፤ // ጥሬ እርጥበት ፣ የሙቀት እና የግፊት መረጃን ከ BME280 calcTemperature (ጥሬ ቴምፕሬተር ፣ t_fine) ያነባል ፤ calcPressure (ጥሬ ግፊት ፣ t_fine); ካልሲ እርጥበት (ጥሬ እርጥበት ፣ t_fine)

ለእነዚህ ተግባራት “t-fine” የሚለው ክርክር ትንሽ ማብራሪያ አለው። ሁለቱም የግፊት እና የእርጥበት ማካካሻ ስልተ ቀመሮች በ t_fine ተለዋዋጭ በኩል የሚገኘውን የሙቀት ጥገኛ አካልን ያካትታሉ። የ calcTemperature ተግባር በሙቀት ማካካሻ ስልተ -ቀመር አመክንዮ መሠረት በ t_fine ውስጥ አንድ እሴት ይጽፋል ፣ ከዚያ በኋላ በሁለቱም በካልፕሬስ እና በካልሲም እርጥበት ውስጥ እንደ ግብዓት ሆኖ ያገለግላል።

የእነዚህ ተግባራት አጠቃቀም ምሳሌ በምሳሌው ረቂቅ ጥሬPressureAndTemperature.ino እና እንዲሁም በቤተ -መጽሐፍት.cpp ፋይል ውስጥ ለ readHumidity () ተግባር በኮድ ውስጥ ይገኛል።

ከፍታ እና የባህር ደረጃ ግፊት

በከባቢ አየር ግፊት እና ከፍታ መካከል የታወቀ ግንኙነት አለ። የአየር ሁኔታም በግፊት ላይ ተጽዕኖ ያሳድራል። የአየር ሁኔታ ድርጅቶች የከባቢ አየር ግፊትን መረጃ ሲያትሙ ፣ ብዙውን ጊዜ ለከፍታ ያስተካክሉትታል እናም ስለዚህ “ሲኖፕቲክ ገበታ” የባሕር ጠለልን ማለት ደረጃውን የጠበቀ ኢሶባሮችን (የቋሚ ግፊት መስመሮችን) ያሳያል። ስለዚህ በዚህ ግንኙነት ውስጥ በእውነቱ 3 እሴቶች አሉ ፣ እና ሁለቱንም ማወቅ የሶስተኛውን መፈጠርን ያስችላል። 3 እሴቶቹ -

  • ከባህር ጠለል በላይ ከፍታ
  • በዚያ ከፍታ ላይ ትክክለኛ የአየር ግፊት
  • በባህር ወለል ላይ ተመጣጣኝ የአየር ግፊት (የበለጠ በጥብቅ ፣ አማካይ የባህር ከፍታ ፣ ምክንያቱም ፈጣን የባህር ደረጃ በየጊዜው ይለወጣል)

ይህ ቤተ -መጽሐፍት ለዚህ ግንኙነት ሁለት ተግባሮችን ይሰጣል ፣ እንደሚከተለው

calcAlitude (ግፊት ፣ seaLevelhPa);

calc መደበኛ ያልሆነ ግፊት (ግፊት ፣ ከፍታ);

እንዲሁም ቀለል ያለ ስሪት አለ ፣ እሱም የመደበኛ የባህር ደረጃ ግፊት 1013.15 hPa ነው።

calcAlitude (ግፊት); // መደበኛ የባህር ደረጃ ግፊት ተጭኗል

ደረጃ 3 BMP280 የመሣሪያ ዝርዝሮች

BMP280 የመሣሪያ ዝርዝሮች
BMP280 የመሣሪያ ዝርዝሮች

የሃርድዌር ችሎታዎች

BMP280 ብዙ የመለኪያ እና የውሂብ ውፅዓት አማራጮችን ለመቆጣጠር የሚያገለግል 2 ባይት የውቅረት ውሂብ (በመመዝገቢያ አድራሻዎች 0xF4 እና 0xF5) አለው። እንዲሁም ጥሬውን የሙቀት መጠን እና የግፊት እሴቶችን ወደ ተለመደው የሙቀት እና የግፊት አሃዶች ለመለወጥ የሚያገለግሉ 2 ቢት የሁኔታ መረጃን እና 24 ባይት የመለኪያ ልኬቶችን ይሰጣል። BME280 እንደሚከተለው ተጨማሪ መረጃ አለው -

  • ብዙ የእርጥበት ልኬቶችን ለመቆጣጠር ጥቅም ላይ በሚውለው አድራሻ 0xF2 1 የውቅረት መረጃ።
  • ጥሬ እርጥበት ዋጋን ወደ አንጻራዊ እርጥበት መቶኛ ለመለወጥ የሚያገለግሉ 8 ተጨማሪ ባይት የመለኪያ መለኪያዎች።

ለ BME280 የሙቀት መጠን ፣ ግፊት እና የሁኔታ መመዝገቢያዎች ከ BMP280 ጋር በጥቂቱ የማይካተቱ ከሚከተሉት ጋር ተመሳሳይ ናቸው

  • የ BME280 “መታወቂያ” ቁርጥራጮች ወደ 0x60 ተቀናብረዋል ፣ ስለሆነም ከ BMP280 ሊለይ ይችላል ፣ ይህም 0x56 ፣ 0x57 ወይም 0x58 ሊሆን ይችላል
  • በ BMP280 (2000 ms እና 4000 ms) ውስጥ ያሉት ሁለት ረጅም ጊዜዎች በቢኤም 280 ውስጥ በ 10 ሚሴ እና በ 20 ሚ.ሜ አጭር ጊዜ እንዲተካ የእንቅልፍ ጊዜ መቆጣጠሪያ (t_sb) ተለውጧል። በ BME280 ውስጥ ከፍተኛው የእንቅልፍ ጊዜ 1000 ሚሴ ነው።
  • በ BME280 ውስጥ ማጣሪያ ከተተገበረ የሙቀት እና የግፊት ጥሬ እሴቶች ሁል ጊዜ 20 ቢት ናቸው። ከ 16 እስከ 19 ቢት እሴቶች መጠቀማቸው ማጣሪያ በሌላቸው ጉዳዮች ብቻ የተገደበ ነው (ማለትም ማጣሪያ = 0)።

የሙቀት መጠን እና ግፊት እያንዳንዱ 20 ቢት እሴቶች ናቸው ፣ ይህም ለሙቀት 3 16 ቢት የመለኪያ ልኬቶችን ፣ እና 9 16 ቢት የመለኪያ ልኬቶችን እና የግፊት የሙቀት መጠኑን በመጠቀም ወደ ውስብስብ የሙቀት እና ግፊት ወደ ውስብስብ የሙቀት ስልተ ቀመር መለወጥ ያስፈልጋል። የ 16 ቢት ንባብ ጥቅም ላይ ከዋለ የሙቀት መጠኑ ልኬት ቢያንስ ለትንሽ ጉልህ ለውጥ (20 ቢት ንባብ) 0.0003 ዲግሪ ሴልሺየስ ነው።

እርጥበት 8 ፣ 12 እና 16 ቢት ድብልቅ የሆኑ 6 የመለኪያ ልኬቶችን በመጠቀም በሌላ ውስብስብ ስልተ ቀመር በኩል ወደ አንጻራዊ እርጥበት መለወጥ የሚያስፈልገው የ 16 ቢት እሴት ነው።

የውሂብ ሉህ ከ 0 እስከ 65 ሴ ባለው ክልል ውስጥ ከ +-0.5 ሴ በ 25 ሴ እና +-1 ሲ ያለውን የሙቀት ንባብ ፍጹም ትክክለኛነት ያሳያል።

የግፊት መለኪያው ግዝፈት 0.15 ፓስካሎች (ማለትም 0.0015 ሄክቶ ፓስካልስ) በ 20 ቢት ጥራት ወይም 2.5 ፓስካል በ 16 ቢት ጥራት ነው። ጥሬው የግፊት እሴቱ በሙቀቱ ተጎድቷል ፣ ስለሆነም በ 25 C አካባቢ ፣ የ 1 ዲግሪ ሴንቲግሬድ የሙቀት መጠን መጨመር የሚለካውን ግፊት በ 24 ፓስካል ይቀንሳል። የሙቀት ትብነት በመለኪያ ስልተ ቀመር ውስጥ ተቆጥሯል ፣ ስለዚህ የተሰጡት የግፊት እሴቶች በተለያዩ የሙቀት መጠኖች ትክክለኛ መሆን አለባቸው።

የውሂብ ሉህ ከ 0 C እስከ 65 ሲ መካከል ባለው የሙቀት መጠን እንደ +-1 hPa ያለውን የግምገማ ፍፁም ትክክለኛነት ያሳያል።

የእርጥበት ትክክለኝነት በመረጃ ወረቀቱ ውስጥ እንደ +-3% አርኤች ፣ እና +-1% ሀይሴሬሲስ ተሰጥቷል።

እንዴት እንደሚሰራ

24 ባይት የሙቀት እና የግፊት የመለኪያ መረጃ ፣ እና እንዲሁም በ BME280 ሁኔታ 8 ባይት የእርጥበት መለካት መረጃ ከመሣሪያው ተነቦ በተለዋዋጮች ውስጥ መቀመጥ አለበት። እነዚህ መረጃዎች በተናጥል በፋብሪካው ውስጥ ባለው መሣሪያ ውስጥ ተቀርፀዋል ፣ ስለሆነም የተለያዩ መሣሪያዎች የተለያዩ እሴቶች አሏቸው - ቢያንስ ለአንዳንድ መለኪያዎች። BME/P280 ከሁለት ግዛቶች በአንዱ ሊሆን ይችላል። በአንድ ግዛት ውስጥ ይለካል። በሌላ ሁኔታ እየጠበቀ (ተኝቷል)።

0xF3 ን በመመዝገብ ቢት 3 ን በመመልከት በየትኛው ሁኔታ ውስጥ እንዳለ ማረጋገጥ ይቻላል።

መሣሪያው ተኝቶ ወይም መለካት ምንም ይሁን ምን ተጓዳኝ የውሂብ እሴቱን በማንበብ የቅርቡ የመለኪያ ውጤቶች በማንኛውም ጊዜ ሊገኙ ይችላሉ።

BME/P280 ን ለማንቀሳቀስ ሁለት መንገዶችም አሉ። አንደኛው በመለኪያ እና በእንቅልፍ ግዛቶች መካከል በተደጋጋሚ የሚሽከረከር የማያቋርጥ ሁናቴ (በውሂብ ሉህ ውስጥ መደበኛ ሁኔታ ይባላል)። በዚህ ሁነታ መሣሪያው የመለኪያ ስብስቦችን ያካሂዳል ፣ ከዚያ ይተኛል ፣ ከዚያ ለሌላ የመለኪያ ስብስብ ይነሳል ፣ ወዘተ. የግለሰብ መለኪያዎች ብዛት እና የዑደቱ የእንቅልፍ ክፍል የሚቆይበት ጊዜ ሁሉ በማዋቀሪያ መመዝገቢያዎች በኩል ቁጥጥር ሊደረግበት ይችላል።

BME/P280 የሚሠራበት ሌላኛው መንገድ ነጠላ ሾት ሁናቴ (በውሂብ ሉህ ውስጥ የግዳጅ ሞድ ይባላል)። በዚህ ሁኔታ መሣሪያው ለመለካት በትእዛዝ ከእንቅልፍ ይነቃል ፣ የመለኪያ ስብስቦችን ይሠራል ፣ ከዚያ ወደ እንቅልፍ ይመለሳል። በስብስቡ ውስጥ የግለሰብ ልኬቶች ብዛት መሣሪያውን በሚነቃው የውቅረት ትእዛዝ ውስጥ ቁጥጥር ይደረግበታል።

በ BMP280 ውስጥ ፣ አንድ ልኬት ከተሰራ ፣ በዋጋው ውስጥ ያሉት 16 በጣም ጉልህ ቢቶች በሕዝብ የተሞሉ ናቸው ፣ እና በእሴት ንባብ ውስጥ ያሉት አራቱ በጣም አስፈላጊ ቢቶች ሁሉም ዜሮዎች ናቸው። የመለኪያዎቹ ቁጥር ወደ 1 ፣ 2 ፣ 4 ፣ 8 ወይም 16 ሊዋቀር ይችላል እና የመለኪያዎች ብዛት ሲጨምር በመረጃ የተሞሉ ቢቶች ብዛት ይጨምራል ፣ ስለሆነም በ 16 መለኪያዎች ሁሉም 20 ቢት በመለኪያ ውሂብ ተሞልተዋል። የመረጃው ሉህ ይህንን ሂደት ከመጠን በላይ ማሸግን ያመለክታል።

በ BME280 ውጤቱ እስካልተጣራ ድረስ ተመሳሳይ ዝግጅት ይተገበራል። ማጣሪያ ጥቅም ላይ ከዋለ ፣ በእያንዳንዱ የመለኪያ ዑደት ውስጥ ምን ያህል መለኪያዎች ቢወሰዱ ፣ እሴቶቹ ሁል ጊዜ 20 ቢት ናቸው።

እያንዳንዱ የግለሰብ ልኬት 2 ሚሊሰከንዶች ይወስዳል (የተለመደው እሴት ፣ ከፍተኛው እሴት 2.3 ሚሴ ነው)። በዚህ ላይ ወደ 2 ሚ.ሜ (ብዙውን ጊዜ ትንሽ ያነሰ) የተስተካከለ አናት ያክሉ ማለት ከ 1 እስከ 32 የግለሰብ ልኬቶችን ሊያካትት የሚችል የመለኪያ ቅደም ተከተል ከ 4 ሜሴ እስከ 66 ሚ.ሜ ሊወስድ ይችላል ማለት ነው።

የውሂብ ሉህ ለተለያዩ አፕሊኬሽኖች የሚመከረው የሙቀት እና የግፊት ከመጠን በላይ የመጫን ጥምረት ይሰጣል።

የውቅረት መቆጣጠሪያ መዝገቦች

በ BMP280 ውስጥ ያሉት ሁለቱ የማዋቀሪያ መቆጣጠሪያ መመዝገቢያዎች በመመዝገቢያ አድራሻዎች 0xF4 እና 0xF5 ላይ ናቸው ፣ እና በ 6 የግለሰብ ውቅረት ቁጥጥር እሴቶች ላይ ተቀርፀዋል። 0xF4 የሚከተሉትን ያጠቃልላል

  • 3 ቢት osrs_t (የሙቀት መጠን 0 ፣ 1 ፣ 2 ፣ 4 ፣ 8 ወይም 16 ጊዜ ይለኩ);
  • 3 ቢት osrs_p (ግፊትን 0 ፣ 1 ፣ 2 ፣ 4 ፣ 8 ወይም 16 ጊዜ ይለኩ); እና
  • 2 ቢት ሞድ (እንቅልፍ ፣ በግዳጅ (ማለትም ነጠላ ጥይት) ፣ መደበኛ (ማለትም ቀጣይ)።

0xF5 የሚከተሉትን ያጠቃልላል

  • 3 ቢት t_sb (የመጠባበቂያ ጊዜ ፣ 0.5ms እስከ 4000 ሚሴ);
  • 3 ቢት ማጣሪያ (ከዚህ በታች ይመልከቱ); እና
  • SPI ወይም I2C ን የሚመርጥ 1 ቢት spiw_en።

የማጣሪያው ግቤት በጥሬ ግፊት እና የሙቀት መጠን እሴቶች (ግን ለእርጥበት እሴቶች አይደለም) የተተገበረውን የመጥፋት መበስበስ ስልተ ቀመር ፣ ወይም ወሰን የሌለው የግፊት ምላሽ (IIR) ማጣሪያን ይቆጣጠራል። ቀመር በውሂብ ሉህ ውስጥ ተሰጥቷል። ሌላው የዝግጅት አቀራረብ -

እሴት (n) = እሴት (n-1) * (K-1) / ኬ + መለኪያ (n) / ኬ

(n) በጣም የቅርብ ጊዜውን የመለኪያ እና የውጤት ዋጋን የሚያመለክት; እና ኬ የማጣሪያ ልኬት ነው። የማጣሪያ መለኪያው ኬ እና ወደ 1 ፣ 2 ፣ 4 ፣ 8 ወይም 16. ሊዋቀር ይችላል። የማጣሪያ ልኬቱ ኮድ ማድረጉ-

  • ማጣሪያ = 000 ፣ K = 1
  • ማጣሪያ = 001 ፣ K = 2
  • ማጣሪያ = 010 ፣ K = 4
  • ማጣሪያ = 011 ፣ K = 8
  • ማጣሪያ = 1xx ፣ K = 16

ቢኤምኢ 280 በአድራሻ 0xF2 ፣ “ctrl_hum” ላይ ባለ አንድ ባለ 3-ቢት መለኪያ osrs_h (ተጨማሪ እርጥበት 0 ፣ 1 ፣ 2 ፣ 4 ፣ 8 ወይም 16 ጊዜ ይለካ) ተጨማሪ የውቅረት መቆጣጠሪያ መዝገብ ያክላል።

ደረጃ 4 - የመለኪያ እና የማንበብ ጊዜ

ትዕዛዞችን እና የመለኪያ ምላሾችን ጊዜ በማሳየት ይህንን በኋላ ላይ ለማከል አቅጃለሁ።

Iddt - በሙቀት መለኪያ የአሁኑ። የተለመደው እሴት 325 ዩአ

Iddp - በግፊት ልኬት ላይ የአሁኑ። የተለመደው እሴት 720 ዩአ ፣ ቢበዛ 1120 ዩአ

Iddsb - በመጠባበቂያ ሞድ ውስጥ የአሁኑ። የተለመደው እሴት 0.2 uA ፣ ከፍተኛ 0.5 uA

Iddsl - በእንቅልፍ ሁኔታ ውስጥ የአሁኑ። የተለመደው እሴት 0.1 uA ፣ ከፍተኛ 0.3 uA

ደረጃ 5 የሶፍትዌር መመሪያዎች

የሶፍትዌር መመሪያዎች
የሶፍትዌር መመሪያዎች
የሶፍትዌር መመሪያዎች
የሶፍትዌር መመሪያዎች

I2C ፍንዳታ ሁኔታ

የ BMP280 የውሂብ ሉህ ስለ መረጃ ንባብ መመሪያ (ክፍል 3.9) ይሰጣል። እሱ “የፍንዳታ ንባብን ለመጠቀም እና እያንዳንዱን መመዝገቢያ ለየብቻ እንዳያስተናግድ በጥብቅ ይመከራል። ይህ ከተለያዩ ልኬቶች የተውጣጡ ባይቶች እንዳይቀላቀሉ እና የበይነገጽ ትራፊክን ይቀንሳል” ይላል። የማካካሻ/የመለኪያ መለኪያዎች ንባብን በተመለከተ መመሪያ አይሰጥም። ምናልባት እነዚህ ጉዳዮች አይደሉም ምክንያቱም እነሱ የማይለወጡ እና የማይለወጡ ናቸው።

ይህ ቤተ -መጽሐፍት በአንድ ተነባቢ አሠራር ውስጥ ሁሉንም ተዛማጅ እሴቶችን ያነባል - በሙቀት እና የግፊት ማካካሻ መለኪያዎች ሁኔታ 24 ባይት ፣ 6 ባይት ለሙቀት እና ግፊት ተጣምረው ፣ እና 8 ባይት እርጥበት ፣ የሙቀት መጠን እና ግፊት ተጣምረው። የሙቀት መጠን ብቻ ሲመረመር 3 ባይት ብቻ ይነበባሉ።

የማክሮዎች አጠቃቀም (#ጥራት ወዘተ)

በዚህ ቤተ -መጽሐፍት ውስጥ ከተለመደ ቤተ -መጽሐፍት ውስጥ ማባዛትን የሚከለክል “ዘበኛን ያካተተ” ማክሮ ካልሆነ በስተቀር ማክሮዎች የሉም።

ሁሉም ቋሚዎች የ const ቁልፍን በመጠቀም ይገለፃሉ ፣ እና የማረም ማተም በመደበኛ ሲ ተግባራት ቁጥጥር ይደረግበታል።

ለእኔ አንዳንድ እርግጠኛ አለመሆን ምንጭ ሆኖልኛል ፣ ግን በዚህ ርዕሰ ጉዳይ ላይ ብዙ ልጥፎችን በማንበብ የምሰጠው ምክር #ዴፊኔን ለቋሚነት መግለጫ (ቢያንስ) እና (ምናልባትም) የማረም ማተሚያ መቆጣጠሪያ አላስፈላጊ እና የማይፈለግ ነው።

#ከመገለጥ ይልቅ የ const አጠቃቀም ጉዳይ በጣም ግልፅ ነው - const እንደ #ዴፊን (ማለትም ኒል) ተመሳሳይ ሀብቶችን ይጠቀማል እና የውጤት እሴቶቹ የመለኪያ ደንቦችን ይከተላሉ ፣ በዚህም የስህተቶችን ዕድል ይቀንሳል።

ለማረም የህትመት ቁጥጥር ጉዳይ ትንሽ ግልፅ ነው ፣ ምክንያቱም እኔ ያደረግሁበት መንገድ የመጨረሻው ኮድ ለማረም የሕትመት መግለጫዎች አመክንዮ ይይዛል ማለት ነው ፣ ምንም እንኳን በተግባር ላይ ባይሆኑም። ቤተ -መጻህፍት በጣም ውስን በሆነ ማህደረ ትውስታ በማይክሮ መቆጣጠሪያ ላይ በአንድ ትልቅ ፕሮጀክት ውስጥ ጥቅም ላይ የሚውል ከሆነ ይህ ጉዳይ ሊሆን ይችላል። እድገቴ ትልቅ ፍላሽ ማህደረ ትውስታ ባለው ESP8266 ላይ ስለነበረ ፣ ይህ ለእኔ ጉዳይ አይመስለኝም።

ደረጃ 6 - የሙቀት አፈፃፀም

ይህንን በኋላ ላይ ለማከል አቅጃለሁ።

ደረጃ 7 - የግፊት አፈፃፀም

ይህንን በኋላ ላይ ለማከል አቅጃለሁ።

የሚመከር: