<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=8&amp;t=20688&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2020-10-18T14:48:56+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=20688&amp;mode</id>
<entry>
<author><name><![CDATA[amilo_pa]]></name></author>
<updated>2020-10-18T14:48:56+01:00</updated>
<published>2020-10-18T14:48:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=229445#p229445</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=229445#p229445"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=229445#p229445"><![CDATA[
Witam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Pozwolicie, że odgrzeję kotleta <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Postanowiłem sam napisać bibliotekę do BMP280, ale coś jest nie tak.<br /><br />W pierszym kroku odczytuję wszystkie dig_Tx i dig_Px i w wyniku otrzymuję taki zestaw danych:<br /><br /><a href="https://obrazkiforum.atnel.pl/3824/c96e61b1a764a99d0afc9d30b4c9635e.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3824/c96e61b1a764a99d0afc9d30b4c9635e.png" alt="Obrazek" /></a><br /><br />a deklaracja struktury wygląda następująco:<br />[syntax=c]typedef union {<br />uint8_t bt&#91;24&#93;;<br /><br />struct {<br />uint16_t dig_T1;<br />int16_t dig_T2;<br />int16_t dig_T3;<br />uint16_t dig_P1;<br />int16_t dig_P2;<br />int16_t dig_P3;<br />int16_t dig_P4;<br />int16_t dig_P5;<br />int16_t dig_P6;<br />int16_t dig_P7;<br />int16_t dig_P8;<br />int16_t dig_P9;<br />//int16_t reserved;<br />};<br />} TCOEF;[/syntax]<br /><br />w kolejnym kroku (/*1*/), zgodnie z datasheetem czujnika, odczytuję cały zestaw surowych wartości dla temperatury i ciśnienia: <br /><br /><br />[syntax=c]void BMP280_ReadTP(void)<br />{<br />uint8_t temp&#91;6&#93;;<br />int32_t var1, var2, t_fine;<br /><br /><br />/*1*/I2C_READ(BMP280_ADDR, 0xF7, 6, temp);<br /><br />switch(conf_BMP280.osrs_t)<br />{<br />case(BMP280_TEMPERATURE_16BIT):<br />/*2*/bmp.adc_T = (temp&#91;3&#93; &lt;&lt; 8) | temp&#91;4&#93;;<br />break;<br />}<br /><br />/*3*/var1 = ((((bmp.adc_T &gt;&gt; 3) - ((int32_t)bmp.coef.dig_T1 &lt;&lt; 1))) * ((int32_t)bmp.coef.dig_T2)) &gt;&gt; 11;<br />/*4*/var2 = (((((bmp.adc_T &gt;&gt; 4) - ((int32_t)bmp.coef.dig_T1)) * ((bmp.adc_T &gt;&gt; 4) - ((int32_t)bmp.coef.dig_T1))) &gt;&gt; 12) * ((int32_t)bmp.coef.dig_T3)) &gt;&gt; 14;<br />/*5*/t_fine = var1 + var2;<br />/*6*/bmp.temperature  = (t_fine * 5 + 128) &gt;&gt; 8;<br />}[/syntax]<br /><br /><a href="https://obrazkiforum.atnel.pl/3824/58e93bdf545fb986bbaf23c70ecb02bc.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3824/58e93bdf545fb986bbaf23c70ecb02bc.png" alt="Obrazek" /></a><br /><br />Po odczytaniu danych, przesówam wartość temp[3] (rejestr <em>temp_msb</em> z noty czujnika) o 8 miejsc w lewo i doklejam do niego wartość temp[4] (rejestr <em>temp_lsb</em>)-&gt; patrz pkt. /*2*/.<br /><br />w kolejnych krokach obliczam <em>var1</em>, <em>var2</em>, <em>t_fine</em> i na końcu otrzymuję obliczoną temperaturę <em>bmp.temperature</em> i niestety ale za każdym razem wychodzi taka dziwna ujemna wartośc = -12814:<br /><br /><a href="https://obrazkiforum.atnel.pl/3824/1bdeb74570926c2867355de2e066df41.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3824/1bdeb74570926c2867355de2e066df41.png" alt="Obrazek" /></a><br /><br />Miał ktoś taki przypadek ? <br />Może znajdzie się ktoś kto przeanalizuje ten kod i znajdzie gdzie mam błąd ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3824">amilo_pa</a> — 18 paź 2020, o 14:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2018-08-15T19:58:32+01:00</updated>
<published>2018-08-15T19:58:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210749#p210749</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210749#p210749"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210749#p210749"><![CDATA[
Może źle je wysyłam przez uart. korzystam ze zwykłej funkcji c BB put_int(value, 10);<br /><br />Ciągle mi coś chodzi po glowie że mam jakiś problem ze zmianą tych typów na stringa.<br /><br />Jednak źle je wysyłałem na UART. Takie są prawidłowe wartości rejestrów<br /><br />T1: 28363                                                                <br />T2: 26585                                                                <br />T3: 50                                                                 <br />P1: 36354                                                               <br />P2: -10386                                                         <br />P3: 3024                                                       <br />P4: 8737                                                        <br />P5: -215                                                <br />P6: -7                                                          <br />P7: 15500                                                        <br />P8: -14600                                                         <br />P9: 6000<br />                                                                <br />UT: 538072                                                     <br />UP: 336044                                                      <br />t_fine: 136748                                                        <br />T: 2671                                                <br />P: 33134<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 15 sie 2018, o 19:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2018-08-15T19:30:11+01:00</updated>
<published>2018-08-15T19:30:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210748#p210748</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210748#p210748"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210748#p210748"><![CDATA[
trochę się różnią od tych z noty<br /><a href="https://obrazkiforum.atnel.pl/4651/07f2e4a6006c42d3ecf725cc96be7c18.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/4651/07f2e4a6006c42d3ecf725cc96be7c18.jpg" alt="Obrazek" /></a><br />Co do stringa to ja mam<br />[syntax=c]bmp.t1 = bmp.T/100;<br />bmp.t2 = abs(bmp.T%100)/10;<br />itoa(bmp.t1, string, 10);<br />itoa(bmp.t2, string, 10);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 15 sie 2018, o 19:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2018-08-15T17:41:42+01:00</updated>
<published>2018-08-15T17:41:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210745#p210745</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210745#p210745"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210745#p210745"><![CDATA[
[syntax=html4strict]P1: -29182                                        <br />P2: -10386                                                   <br />P3: 3024                                                  <br />P4: 8737                                                    <br />P5: -215                                                        <br />P6: -7                                                      <br />P7: 15500                                                              <br />P8: -14600                                                <br />P9: 6000                                                         <br />UT: 15423                                                  <br />UP: 8480                                                  <br />t_fine: 139397                                               <br />T: 2723                                                <br />P: 98735[/syntax]<br /><br />może robię gdzieś błąd w zamienie uint_32t na stringa i wyswietlanie na LCD. Mam tak:<br /><br />[syntax=c]ultoa(val, bufor, 10)[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 15 sie 2018, o 17:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2018-08-15T17:27:54+01:00</updated>
<published>2018-08-15T17:27:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210743#p210743</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210743#p210743"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210743#p210743"><![CDATA[
Jak możesz to pokaż odczytane wartości parametrów kalibracyjnych dig_T1 do dig_P9<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 15 sie 2018, o 17:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2018-08-15T15:55:43+01:00</updated>
<published>2018-08-15T15:55:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210740#p210740</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210740#p210740"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=210740#p210740"><![CDATA[
Cześć.<br /><br />Próbuję uruchomić ten czujnik, z pomocą kodu stworzonego przez <strong><span style="color: #000080">mczarny</span></strong> coś tam powoli się udaje ruszyć <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Nie wiem w czym jest problem ale temperaturę mam dziwnie za wysoką - jakieś 27 stopni i ciśnienie jakby zbyt niskie ok 986 hPa. <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br />#include &quot;BMP280.h&quot;<br /><br />TBMP bmp;<br /><br />int main(void)<br />{<br />lcd_init();<br /><br />DDRA |= (1&lt;&lt;PA7);<br />PORTA |= (1&lt;&lt;PA7);<br /><br />i2cSetBitrate(100);<br /><br />BMP280_init();<br /><br />while(1)<br />{<br />BMP280_temp();<br />BMP280_press();<br />lcd_cls();<br />lcd_int(bmp.T);<br />lcd_locate(1,0);<br />lcd_uint(bmp.P);<br />_delay_ms(1000);<br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 15 sie 2018, o 15:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Slawek5791]]></name></author>
<updated>2018-05-09T17:36:06+01:00</updated>
<published>2018-05-09T17:36:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207545#p207545</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207545#p207545"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207545#p207545"><![CDATA[
Cześć.<br />Też trochę męczyłem się z BMP280. Aby można było porównywać ciśnienia w różnych miejscach, należy zredukować je do poziomu morza. Dołączam funkcję obliczenia ciśnienia zredukowanego do poziomu morza, czyli takiego jak przedstawiają w serwisach pogodowych.<br /><br />temp - aktualna temperatura w miejscu pomiaru<br />p_bezw - ciśnienie odczytane z BMP280 skompensowane temperaturowo<br />altitude - aktualna wysokość npm w miejscu pomiaru<br />bmp.pressure_redu - wartość ciśnienia zredukowanego do poziomu morza czyli to co widzimy np. w pogodynce.<br /><br />[syntax=c]/*************************************************************************/<br />/*  funkcja obliczenia ciśnienia zredukowanego do poziomu morza */<br />/*************************************************************************/<br />void BMP280_sea_level(int16_t temp, uint32_t p_bezw, uint32_t altitude){<br /><br />uint16_t st_baryczny,tpm,t_sr;<br />uint32_t p0,p_sr;<br /><br />st_baryczny=(800000*(1000+4*temp)/(p_bezw));      //obliczenie stopnia barycznego wg. wzoru Babineta<br />p0=p_bezw+(100000*altitude/(st_baryczny));//obliczenie przybliżonej wartości ciśnienia na poziomie morza<br />p_sr=(p_bezw+p0)/2;//obliczenie średniego ciśnienienia dla warstwy pomiędzy poziomem morza a stacją<br />tpm=temp+((6*altitude)/1000);//obliczenie średniej temperatury dla warstwy powietrza<br />t_sr=(temp+tpm)/2;//obliczenie średniej temperatury dla warstwy pomiędzy poziomem morza a stacją<br />st_baryczny=(800000*(1000+4*t_sr)/(p_sr));//obliczenie bardziej dokładnie stopnia barycznego<br />bmp.pressure_redu = p_bezw+(100000*altitude/(st_baryczny));        //obliczenie dokładniejszej wartości ciśnienia na poziomie morza<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8744">Slawek5791</a> — 9 maja 2018, o 17:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2018-05-07T06:32:10+01:00</updated>
<published>2018-05-07T06:32:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207478#p207478</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207478#p207478"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207478#p207478"><![CDATA[
No tak Tomku tak jak rozmawialiśmy trzeba znać ciśnienie na poziomie morza.<br />Z drugiej strony przekształcając wzór i znając wysokość na której jest czujnik możemy obliczyć ciśnienie na poziomie morza.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 7 maja 2018, o 06:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2018-05-06T20:21:16+01:00</updated>
<published>2018-05-06T20:21:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207470#p207470</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207470#p207470"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207470#p207470"><![CDATA[
Aktualnie stanąłem na wzorze<br /><br />[syntax=c]bmp.altitude = (1-pow(bmp.press/1024, 0.1903)) / 0.0000225577;[/syntax]<br /><br />3428 czyli 34 metry 28 cm<br />obniżając lub podwyższając czujnik wartości płynnie się zmieniają, różnicy nie mierzyłem z miarą.<br />Wartość 1024 to aktualna wartość ciśnienia do poziomu morza.<br /><br />Dla mnie i tak ten wzór jest ułomny i trzeba wymyślić coś dokładniejszego.<br /><br /><br />Temp:  26.48 *C<br />Pressure:  1021 hPa<br />Altitude: 3430<br /><br /><br /><br />Temp:  26.42 *C<br />Pressure:  1021 hPa<br />Altitude: 3429<br /><br /><br /><br />Temp:  26.37 *C<br />Pressure:  1021 hPa<br />Altitude: 3428<br /><br /><br />+/- różnica jednego metra<br /><br />Akurat miejsce w którym leży czujnik to faktycznie 34 metry nad poziomem morza.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 6 maja 2018, o 20:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anonimowy]]></name></author>
<updated>2018-05-06T19:33:19+01:00</updated>
<published>2018-05-06T19:33:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207469#p207469</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207469#p207469"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207469#p207469"><![CDATA[
<div class="quotetitle">majster napisał(a):</div><div class="quotecontent"><br />nie jest to problemem gdyż ciśnienie na poziomie morza można łatwo przeliczyć na podstawie odczytanego ciśnienia.<br /></div><br />To prawda, czujniki mierzą ciśnienie względne, ale aby przeliczyć je na ciśnienie zredukowane do poziomu morza, potrzebujemy znać wysokość na jakiej znajduje się czujnik. <br />Moim zdaniem jedna wartość jako odniesienie jest konieczna. I nieważne czy będzie to aktualne ciśnienie na poziomie morza, czy wartość ciśnienia bezwzględnego odczytana z czujnika znajdującego się na znanej nam wysokości. Wtedy wystarczy tylko odpowiednio przekształcić wzór.<br /><div class="quotetitle">majster napisał(a):</div><div class="quotecontent"><br />Właśnie rozpoczynam starcie z altitude zobaczymy jak to wyjdzie.<br /></div><br />Czekam na informacje o postępach  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3542">anonimowy</a> — 6 maja 2018, o 19:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2018-05-06T18:55:09+01:00</updated>
<published>2018-05-06T18:55:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207468#p207468</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207468#p207468"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207468#p207468"><![CDATA[
<div class="quotetitle">anonimowy napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">majster napisał(a):</div><div class="quotecontent">Dodatkowo w nocie katalogowej jest zapis że czujnik może podawać altitude, ja jestem właśnie na tym etapie aby dokonywać obliczeń i uzyskiwać wysokość na której znajduje się dany czujnik.<br /></div><br /><br />Popraw mnie jeśli się mylę, ale wydaje mi się, że do tego potrzebne jest ciśnienie odniesienia, będące najczęściej ciśnieniem na poziomie morza. <br />Wtedy wysokość można obliczyć za pomocą tego wzoru:<br /><br /><a href="https://obrazkiforum.atnel.pl/3542/587b96e3cf48a76a24d7c5fa043b43a6.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3542/587b96e3cf48a76a24d7c5fa043b43a6.PNG" alt="Obrazek" /></a><br /><br />Gdzie p-ciśnienie odczytane przez nasz czujnik, p<span style="font-size: 85%; line-height: normal">0</span> -ciśnienia na poziomie morza.</div><br /><br /><br />Z tego co wyczytałem to ciśnienie nieskompresowane oraz ciśnienie odczytane, będę walczył bynajmniej nie jest to problemem gdyż ciśnienie na poziomie morza można łatwo przeliczyć na podstawie odczytanego ciśnienia.<br /><br />BMP180 podaje ciśnienie atmosferyczne natomiast moja stacja przelicza ciśnienie na poziomie morza<br /><br />Właśnie rozpoczynam starcie z altitude zobaczymy jak to wyjdzie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 6 maja 2018, o 18:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2018-05-06T16:03:38+01:00</updated>
<published>2018-05-06T16:03:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207463#p207463</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207463#p207463"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207463#p207463"><![CDATA[
<div class="quotetitle">anonimowy napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">majster napisał(a):</div><div class="quotecontent">Dodatkowo w nocie katalogowej jest zapis że czujnik może podawać altitude, ja jestem właśnie na tym etapie aby dokonywać obliczeń i uzyskiwać wysokość na której znajduje się dany czujnik.<br /></div><br /><br />Popraw mnie jeśli się mylę, ale wydaje mi się, że do tego potrzebne jest ciśnienie odniesienia, będące najczęściej ciśnieniem na poziomie morza. <br /></div><br /><br />No właśnie <strong>majster</strong> coś mi się nie zgadzało, że na podstawie tylko jednego parametru możemy wyliczyć wysokość npm.<br />Ale może masz na to sposób - czekamy<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 6 maja 2018, o 16:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anonimowy]]></name></author>
<updated>2018-05-06T14:56:04+01:00</updated>
<published>2018-05-06T14:56:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207459#p207459</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207459#p207459"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207459#p207459"><![CDATA[
<div class="quotetitle">majster napisał(a):</div><div class="quotecontent"><br />Dodatkowo w nocie katalogowej jest zapis że czujnik może podawać altitude, ja jestem właśnie na tym etapie aby dokonywać obliczeń i uzyskiwać wysokość na której znajduje się dany czujnik.<br /></div><br /><br />Popraw mnie jeśli się mylę, ale wydaje mi się, że do tego potrzebne jest ciśnienie odniesienia, będące najczęściej ciśnieniem na poziomie morza. <br />Wtedy wysokość można obliczyć za pomocą tego wzoru:<br /><br /><a href="https://obrazkiforum.atnel.pl/3542/587b96e3cf48a76a24d7c5fa043b43a6.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3542/587b96e3cf48a76a24d7c5fa043b43a6.PNG" alt="Obrazek" /></a><br /><br />Gdzie p-ciśnienie odczytane przez nasz czujnik, p<span style="font-size: 85%; line-height: normal">0</span> -ciśnienia na poziomie morza.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3542">anonimowy</a> — 6 maja 2018, o 14:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2018-05-06T14:33:45+01:00</updated>
<published>2018-05-06T14:33:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207456#p207456</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207456#p207456"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207456#p207456"><![CDATA[
Dodatkowo w nocie katalogowej jest zapis że czujnik może podawać altitude, ja jestem właśnie na tym etapie aby dokonywać obliczeń i uzyskiwać wysokość na której znajduje się dany czujnik.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 6 maja 2018, o 14:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2018-05-06T13:54:27+01:00</updated>
<published>2018-05-06T13:54:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207453#p207453</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207453#p207453"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207453#p207453"><![CDATA[
<div class="quotetitle">anonimowy napisał(a):</div><div class="quotecontent"><br />Zastanawia mnie tylko Twoja funkcja BMP280_temp, której ostatnia linijka wygląda następująco:<br />[syntax=c]bmp.T  = (bmp.t_fine * 5 - 5000 ) &gt;&gt; 8;[/syntax]<br />gdzie pdf podaje:<br />[syntax=c]T = (t_fine * 5 + 128) &gt;&gt; 8;[/syntax]<br /></div><br /><br />Ha i słusznie - już wyjaśniam.<br />Mam dwa takie czujniki i o ile w pierwszym porównanie temperatury z DS10B20 jest ok. różnica to 0,1*C to drugi czujnik przekłamywał na plus o ok.0,6*C i dlatego tak zostało a ja nie zwróciłem uwagi.<br />Powinno być oczywiście<br />[syntax=c]T = (t_fine * 5 + 128) &gt;&gt; 8;[/syntax]<br />poprawiłem - dzięki za zwrócenie uwagi<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 6 maja 2018, o 13:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anonimowy]]></name></author>
<updated>2018-05-06T12:12:48+01:00</updated>
<published>2018-05-06T12:12:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207447#p207447</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207447#p207447"/>
<title type="html"><![CDATA[Re: BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207447#p207447"><![CDATA[
Hej.<br />Kod zapewne niejednemu się przyda, dobrze że postanowiłeś się nim podzielić z innymi. <br />Z swojej strony mogę polecić czujnik BME280, od BMP różni się dodatkowo pomiarem wilgotności. U mnie pracuje ich kilka, na razie niedługo, trochę ponad rok i i odpukać, żaden jeszcze nie odmówił współpracy  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Czujniki te są na tyle dobrze udokumentowane, że w nocie katalogowej jest nawet przykładowy kod do obsługi w C  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Zastanawia mnie tylko Twoja funkcja BMP280_temp, której ostatnia linijka wygląda następująco:<br />[syntax=c]bmp.T  = (bmp.t_fine * 5 - 5000 ) &gt;&gt; 8;[/syntax]<br />gdzie pdf podaje:<br />[syntax=c]T = (t_fine * 5 + 128) &gt;&gt; 8;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3542">anonimowy</a> — 6 maja 2018, o 12:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2018-05-06T13:49:20+01:00</updated>
<published>2018-05-05T22:06:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207438#p207438</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207438#p207438"/>
<title type="html"><![CDATA[BMP280]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20688&amp;p=207438#p207438"><![CDATA[
Koledzy<br />ponieważ dostałem sporo zapytań na PW jak również na mail-a odnośnie obsługi czujnika ciśnienia wrzucam funkcje do inicjalizacji i odczytu danych z czujnika.<br />Na początek trzeba odczytać parametry kalibracyjne zaszyte w pamięci przez producenta oraz ustawić rejestr pomiaru temperatury i ciśnienia <strong>ctrl_meas</strong><br />Parametry kalibracyjne trzeba sobie zapisać gdzieś w tablicy lub strukturze. Niestety tego nie pokażę bo wykorzystałem sposób z <span style="color: #FF4040">YB</span> z biblioteki do BMP180.<br />Funkcja odczytująca dane parametrów<br />[syntax=c]void BMP280_init( void ) {<br />// config<br /><br />// read callibration data<br /><br />    TWI_read_buf( BMP280_ADRES, 0x88, 24, bmp.coef.bt ); // zapis parametrów do struktury<br />    uint8_t mt = 0xCF;                                                   // temp.20bit, press.20bit, pomiar ciągły<br />    TWI_write_buf(BMP280_ADRES, 0xF4, 1, &amp;mt);             // zapis do rej. ctrl_meas<br /><br />}[/syntax]<br /><br />funkcje odczytu i obliczania temperatury<br />[syntax=c]void BMP280_getut( void ) {<br /><br />        //read uncompensed temperature<br />uint8_t buf&#91;3&#93;;<br />TWI_read_buf(BMP280_ADRES, 0xFA, 3, buf);<br />bmp.UT = (int32_t)((((uint32_t)(buf&#91;0&#93;))&lt;&lt; 12)| (((uint32_t)(buf&#91;1&#93;))&lt;&lt; 4)| ((uint32_t)buf&#91;2&#93;&gt;&gt;4));<br /><br />}<br /><br /><br />void BMP280_temp(void){<br /><br />    int32_t var1, var2;<br />BMP280_getut();<br /><br />var1  = ((((bmp.UT&gt;&gt;3) - ((int32_t)bmp.coef.dig_T1&lt;&lt; 1))) * ((int32_t)bmp.coef.dig_T2))&gt;&gt;11;<br />var2  = (((((bmp.UT&gt;&gt;4) - ((int32_t)bmp.coef.dig_T1)) * ((bmp.UT&gt;&gt;4) - ((int32_t)bmp.coef.dig_T1)))&gt;&gt;12)<br />*((int32_t)bmp.coef.dig_T3)) &gt;&gt; 14;<br />bmp.t_fine = var1 + var2;<br />bmp.T  = (bmp.t_fine * 5 + 128 ) &gt;&gt; 8;<br />}[/syntax]<br /><br />i ciśnienia<br />[syntax=c]void BMP280_getup( void){<br /><br />uint8_t buf&#91;3&#93;;<br />TWI_read_buf(BMP280_ADRES, 0xF7, 3, buf);<br /><br />bmp.UP = (int32_t)((((uint32_t)(buf&#91;0&#93;))&lt;&lt;12) | (((uint32_t)(buf&#91;1&#93;))&lt;&lt;4) | ((uint32_t)buf&#91;2&#93;&gt;&gt;4));<br /><br />}<br /><br /><br />void BMP280_press(void){<br /><br />    BMP280_getup();<br /><br /><br />    int32_t var1, var2, p;<br /><br />    var1 = bmp.t_fine/2 -64000;<br />    var2 = (((var1&gt;&gt;2) * (var1&gt;&gt;2)) &gt;&gt; 11 ) * ((int32_t)bmp.coef.dig_P6);<br />    var2 = var2 + ((var1*((int32_t)bmp.coef.dig_P5))&lt;&lt;1);<br />    var2 = (var2&gt;&gt;2)+(((int32_t)bmp.coef.dig_P4)&lt;&lt;16);<br />    var1 = (((bmp.coef.dig_P3 * (((var1&gt;&gt;2) * (var1&gt;&gt;2)) &gt;&gt; 13 )) &gt;&gt; 3) + ((((int32_t)bmp.coef.dig_P2) * var1)&gt;&gt;1))&gt;&gt;18;<br />    var1 =((((32768+var1))*((int32_t)bmp.coef.dig_P1))&gt;&gt;15);<br /><br />    p = (((uint32_t)(((int32_t)1048576) - bmp.UP) - (var2&gt;&gt;12)))*3125;<br />    if<br />    (p &lt; 0x80000000)<br />    {<br />    p = (p &lt;&lt; 1) / ((uint32_t)var1);<br />    }<br />    else<br />    {<br />    p = (p / (uint32_t )var1) * 2;<br />    }<br /><br />    var1 = (((int32_t)bmp.coef.dig_P9) * ((int32_t)(((p&gt;&gt;3) * (p&gt;&gt;3))&gt;&gt;13)))&gt;&gt;12;<br />    var2 = (((int32_t)(p&gt;&gt;2)) * ((int32_t)bmp.coef.dig_P8))&gt;&gt;13;<br />    p = (int32_t)((int32_t)p + ((var1 + var2 + bmp.coef.dig_P7) &gt;&gt; 4));<br />    bmp.P = p;[/syntax]<br />powodzenia<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 5 maja 2018, o 22:06</p><hr />
]]></content>
</entry>
</feed>