From 90bd89b468db7e3d2e2de2c1433b558eb186c64f Mon Sep 17 00:00:00 2001 From: Ken Baker Date: Sun, 6 Oct 2024 22:59:17 -0400 Subject: [PATCH] Initial NPI-19 pressure sensor documentation (#4105) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/images/npi19.jpg | Bin 0 -> 5761 bytes components/sensor/npi19.rst | 108 +++++++++++++++++++++++++++++ images/npi19.jpg | Bin 0 -> 5761 bytes index.rst | 1 + 4 files changed, 109 insertions(+) create mode 100644 components/sensor/images/npi19.jpg create mode 100644 components/sensor/npi19.rst create mode 100644 images/npi19.jpg diff --git a/components/sensor/images/npi19.jpg b/components/sensor/images/npi19.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2d19be739c3ffa0a35d7d26b5243c5b4161331c GIT binary patch literal 5761 zcmb7IXIN8Pvt9{=P$eOtpdcLq>0OG3CLKY_p$JG7qz7p#2+~BVB1$KqRO!;2bfk%j zAc_=0I)XGoTJ8?#eCK>W?zzu%=h>P4=3O%@Gb^(uYlkpOm;xxx%Nmyf3=#pD004v| zfKkTTTi>#`WAk;o<;bR{p`%BbhL>q5D_iMZy>eMYTNSbf0FHODb@d_@0l?Mm7VfH= z5}S#s85?o|kO4TL1$=T0EW<7X%7I9oB{yP4QTFb|B^R3AmhB)T2KLjR3xtF3BGEHNPyR~*SkAeV* zYmfG7Ge;=h z5ded#8mX&aC`!Z5!QU&q{iQ2@Wozi($w`$h-MYb2JwQJ$h`svG{4#a@YB}WZ0hMQ#*9Tz^R(xz=!jQJ;sLBL*(yUK#$smu z?3+>J&HmicL7k$K^zyMU0FXytfuA$=?Z;RZL}}5u*PG3bF&99|ImPN1eekIakCszY zZ_h5aDucKanmPGeI^~0o!{h0>xP2@{!E=k&)67P?j!wnC{Ui_xF@UVBqiEIjES`vo zatSH|LFhXs10+bOdjBNebOL1E7F zolEi>&GU3_T#CJJTKV(cg@O2Vlf0=`zxt?O{4BNxKR^7$AGoSEND#oMoNsyGT4~$! zU)yATki0}Kua4c7WcJ~oCXJ+Z7Nt&6_S;L?)L}P~O7!@GJ!Po5=k3=u>|e>uUEtyK zvXASglMGH(9Y26s{=)xF#PiA%GlzyeiRIfCFUuy}rkD!JL=9z+eq@Flv78?tP?NFR z2M@@}ry@k)mr_*In7Y8+>63`gO7^}C)|wvWT)R%Lj#2b@yK$cAOy6S86`U`cc~jgK zKW4Hv78}?OWXghw!Apr4k1;I<;;4Y_N8k4*UF<%a~ zpdWugpNY%Pxn9p7^>l@{G4ZO$2X!ykGu7WSK85`@!rg^;qD$4QqkZ;zIvyp+x_*iq zc*~iZtTcpy%goiNc$&NlWTmvzJ5>8H$iO@I_IqxB=;;avx$bxI-Sm5?%87Y}HqOxA zo>=$S_XTjY3_k2e`=40T)Vc(D8eMEeA8dYMZ*$13Oo zZ|km?8nXFZks<#&QWZS&&tbvmb^~Y!qu&UR)}vKlLU+!RS-{fz#g0lCV!Rx)5XO z?|5YNsj5D%|EHriUutRZ&BP}&y{E`kSScFq<-|}fvnSfMJO@LvsK``tm`)=})zrtM zB2qjjOgYAowAl6uCUd&+(QkWR{s&IfFZixt1ISsOp=@MOP&P19B!Y|#YSu&{HhVNF z9lI!oLqt*E8ix||3~oiRabCTjMbD-5sQf3^DqefzXgzQan4rV(=g8D-g^EnO~!!8XRgjd zZ_;P05?&PSCM+~RS$*PD`gmB}wvpV{IVz5uB}k$EoHN}dLWlFU_uY}pGU4%>C!Ji; zfznOcNMFIyN{jR3>@I7z&b1^#mV*Zp(st1@{cEXvs0MkH)n-&h+b=CX>5}s879I_I z=cxwe4EElho0SIIOI022SsbrjbE-x!lqAoure@#C4m4pI8~!C5*P!^IRmxeskDRfV zWq+9LT%<8=5do~MOs){XjpmgLS|W$nB82+o%O`elh^KNI2eBzM+(cOk=sR^ZU*w6lf;PmJ?ruIHrpo>pYO`#L^tEJLsB zI@QeNb$Pu`+5TMxb|z*7-1Bx!)f|({azl4gne13^IwY-lbtJZ&Gv#`2&bidRIchTM zTi1D(_YrpKz5aCU+$(lf!Edi+3m3DcO+yertSSU-*TxSGvm2NDb-Zq72Yo$pFd4Qww^L#FRN*f@34RLA_h~wsrXZAS-~p1Nay!^Fw#iLS*7}t!l1FK2J+F1{O9?lpx+rqpt(qh4 zuEBRfQ2U9LRqCbR`QjFY^H2AZ)=vnwREvx(jhV5+9a?yhR75RJ$FTNdP(Ta$wZu1F z`D^mu8QyfAYn(|Q)nH_0NmAQr6_#4N%g(G*|Gq*frQIR1TWmKN zYr3-jc`VE6g-*S=!eedMz2DkElrV(i$-^hWeUzf9_wfjC!k<5w2HZJO!b-h~v4o-Wq!=x6K-kExk+ zDL1<`+M;jg!^_y7sw|@Ts7y43r&8};0F~kNRC%GKRvfZ+EUL`bAeaD(VOIId^QQI9w0J-ELY6x)N#+3dM|+IZ2fK1{q4YzNV~=O1AJ+q?T!=wQe4rrx!aXC z7?tor|IBJu&)40hqToNmvznXV;q;70wyrflW1twrR?5YXTXy7k`=pz*N4jmDpbXOr zY!E!4P4+9Uv*by>t#ZE}O90UyVNZPene*Lg)4j7?4Sk#&9eWcf9Q zsXJL+v2^Tyld^om2r?n};V*~H!8y6Tn-vGGnlHY_ZYPPziSu!jC=U!}Xt!`-INaY) z;N$7D4tfXT-Qz8!Zr3_!m}^bkaABEKypeQ*1(88U02q%TIXNs}e0tD&L=E!M93SdJcL}x6@w<2U(vJ*t<>IMYVFJOzpLW2O&Q== z5`m-WMD8=nM6k9mMBHT2W(>_I>*M7(728o)5|Vh~vv|J~gO&5scPEGKvlXHiv_#IV zyRID`{!Twq@jP8xIEN&us6&@E56%4%q;1_u!^No|-uCVgtJzd`Zue+F8ZyBl{wG z=Nozq8EpCpc+e8r?zii%b0$%zTm3#sk_L>LWchBS7GBL`FJAej(_|XeDmkmdYqz@_ zg)8CwI$vETm#uKWzV%@d<0RMJAJ!CGNlC7-9|VvGHT&a}{PDvO>ahlGV-MG34W5K# zNOO7a6LlCfQ9oX#CTh1CqP{Fv0cnk)Fi5LQcNakVjKf!mVGe5j_*g@R+?wLC276wB zN}vXp4s}L~23Pp$*~g|_@gjG+esDd;A}hNgV=7t-;>^K=ME$VyJ8@<*(?;rf>Zd8(jYP zaRl`{Z~ibddw!u-wfU0)!`sP#l3Kdjv9(6?8Fy#t*xku5of$rNes~MH8Kc#W8Y~7v zM8s6n(AFkWK8Q!Q(Mk^;$QeHQ=VxEbJ~u7XQM?zM9nd8)N0Q4o&H5C*5pC8GgIh3* zc}`08nQl@9zqX$OM_^^m{cs;?YnK!|Y8dz>5_xaTe-mh?((;@hXt~xVj5TGX#O5FU$xFfPhfxzXr&wji$VaKpSseDV+%@2xf_ zCGB}M%Hey@${1M}@T!Xd)(>oKVy&tXx3?A2Zp#bj4eJxYbj5~USIe@?VOi(*JzQCn z+U?tUr;g6Utrijv=34?Ifd9vUig=)VcCc{%@Xq%Fgk0I+SWLc5?eGV;gR*vS*1Vmi z@P-(F=J7B;8oibgr^h-cxFTmjW~gAUcS)8!d9=$#522*4)2kLL_<~;e?HBztE&jK_ z``OuRy07q8CB9zwyF^`m$J+r{kjLWrG;p9GN-<)D>S-I5?jNes0k70^YK0WDM#Br= zT+z8+62ih|2FqqWm&Pq>=Z)f~=bYqY1}%vnUECYi!qlIA2$sSeiUzCVhH?A&SAb|JpLbDH@}*5__uFx z7}ApOv8k$c;%}=+Q^dmZybAU^Mc7-IhgNECZThz$%}J3F5i^uovVyOfEO5QXoc^rc zlirixr=##8epvx}lslfbCE~QFa*hZtU06#O#FBDG)$W1tn>= z@aG!=-U{S0@H1~5U=H`|Yey+tUU-}Sp~rOjN37x#S;a~3 z6HTIXvV5>IABkp>ii-Ph@VBgNC+SYPE(F7MhccP$cJ+1PKJ|AN*A9kBs#wYN_w?2` zQ}U-~g~GaXvjog^R`+G}Lf;j*oKQ1}HmQ{HTL?uqSumNOzxG5)q);1E8Yy{Ujo-r( z*YHTmh?ZNbUe2w)Za{~Hq#;zE;)2oU?vZ=;TZDCqH=M=8r2uWRH5TLK(efRp;vwm) z$u^NLO0tR9esUuMbSXK$7T!K`QeTff z-9xins+V&jsRV8Ehj6rjf(0^~V)EWbQhfFk;XWCak1S=%?J*?y*g1teU1R)Fd|&Ws@*3^iDv3_AxGVYhehWbV3yQw7&{3;X)Bycju@KD7#>$2tcsi zpQY6LVy5AbG@Aiq@`__, +`product page `__) pressure sensors with ESPHome. + +.. figure:: images/npi19.jpg + :align: center + :width: 50.0% + + NPI-19 Pressure Sensor. + + +Configuration +------------- +:ref:`I²C ` bus is required to be set up in your configuration for this sensor to work. + +.. code-block:: yaml + + # Example configuration entry + sensor: + - platform: npi19 + raw_pressure: + name: "Raw Pressure" + temperature: + name: Temperature + + +Configuration variables +----------------------- + +- **raw_pressure** (*Optional*): The information for the pressure sensor. See :ref:`npi19-converting`. + + - All other options from :ref:`Sensor `. + +- **temperature** (*Optional*): The information for the temperature sensor. Readings in degrees celsius (°C). + + - All other options from :ref:`Sensor `. + +- **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`I²C Component `. Defaults to the default I²C bus. + +- **address** (*Optional*, int): Manually specify the I²C address of the sensor. + All known sensors currently configured to ``0x28``. Defaults to ``0x28``. + + +.. _npi19-converting: + +Converting units +----------------- + +The NPI-19 pressure sensor is not calibrated to units, you have to convert the measurement to units yourself. + +Estimated +********* + +On page 1 of the `product application note `__ +the value ``1638`` maps to approximately ``10%`` of the maximum value of the sensor (e.g. ``0.5`` psi for a ``5`` psi sensor); +the value ``14746`` maps to approximately ``90%`` of the maximum value of the sensor (e.g. ``4.5`` psi for a ``5`` psi sensor). +Use ``calibrate_linear`` filter to map these sensor values: + +.. code-block:: yaml + + # Extract of configuration + filters: + - calibrate_linear: + - 1638 -> 0.5 + - 14746 -> 4.5 + +Calibrated +********** +1. Expose the sensor to a low known pressure, for example ``5`` psi. +2. Observe the value of the raw pressure sensor, for example ``1500``. +3. Expose the sensor to a high pressure, for example ``90`` psi. +4. Observe the value of the raw pressure sensor, for example ``14500``. +5. Use ``calibrate_linear`` filter to map the incoming value to the calibrated one: + +.. code-block:: yaml + + # Extract of configuration + filters: + - calibrate_linear: + - 1500 -> 5.0 + - 14500 -> 90.0 + + +Notes +----- + +The NPI-19 I²C has a temperature output, however the manufacturer does +not specify its accuracy on the published datasheet. They indicate +that the sensor should not be used as a calibrated temperature +reading; it’s only intended for curve fitting data during +compensation. + + +See Also +-------- + +- :ref:`sensor-filters` +- `NPI-19 Product Page `__ +- `NPI-19 Datasheet `__ +- `NPI-19 Product Application Note `__ +- :ghedit:`Edit` diff --git a/images/npi19.jpg b/images/npi19.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2d19be739c3ffa0a35d7d26b5243c5b4161331c GIT binary patch literal 5761 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