BMP180 точность измерения
- Войдите на сайт для отправки комментариев
Сб, 20/12/2014 - 21:47
Показания датчика отличаются от данных на сайтеГИС-метео на 10 мм.рт.ст. Городок небольшой. метеостанция находится примерно 30 м выше от моего дома. Атм.давление должен быть по идее выше,а у меня показывает ниже на 10 мм.рт.ст. Кусочек кода которая измеряет давление.
#include <SFE_BMP180.h>
#include <Wire.h>
SFE_BMP180 pressure;
//---------
char status;
double T,P;
status = pressure.startTemperature();
delay(status);
status = pressure.getTemperature(T);
lcd.setCursor(0,1);
lcd.print("T=");
lcd.print(T,2);
// lcd.print("C");
lcd.setCursor(8,1);
lcd.print("D=");
status = pressure.startPressure(3);
delay(status);
status = pressure.getPressure(P,T);
lcd.print(P*0.75006375541921,2);
Если редактировать строку lcd.print(P*0.75006375541921,2); можно добиться приемлимую точность показаний
Если редактировать строку lcd.print(P*0.75006375541921,2); можно добиться приемлимую точность показаний
Дойдите до метеостанции и спросите у них: может там прибор врет на те самые 10мм.
где у вас находится датчик при проведении измерений ? ещё желательно знать высоту места вашего датчика ( AMSL ) , высоту места барометра метеостанции можно узнать у них....
точнее будет - разместить ваш датчик рядом с их барометром , кроме того - сделать усреднение
#include "Arduino.h" //================================================================= float AverageArray( float *Array , byte dimension ) { const float kStdnt = 2.33; float total , mo , disp , delta , lowLimit , highLimit; byte m , n; total = 0; for( n = 0; n < dimension; n++ ) { total = total + Array[ n ]; } mo = total / dimension; total = 0; for ( n = 0; n < dimension; n++ ) { total = total + pow( ( mo - Array[ n ] ), 2 ); } disp = sqrt( total / dimension ); delta = disp * kStdnt; lowLimit = mo - delta; highLimit = mo + delta; m = 0; total = 0; for ( n = 0; n < dimension; n++ ) { if ( Array[ n ] >= lowLimit && Array[ n ] <= highLimit ) { total = total + Array[ n ]; m++; } } return total / m; } //=================================================================/* * LCD -VCC pin 1 to GND * LCD +VCC pin 2 to +5 V * LCD V0 pin 3 to 10K resistor: * ends to +5V and ground * wiper to LCD * LCD A0/RS pin 4 to digital pin 8 * LCD R/W pin 5 to GND * LCD Enable pin 6 to digital pin 9 * LCD D0 pin 7 * LCD D1 pin 8 * LCD D2 pin 9 * LCD D3 pin 10 * LCD D4 pin 11 to digital pin 10 * LCD D5 pin 12 to digital pin 11 * LCD D6 pin 13 to digital pin 12 * LCD D7 pin 14 to digital pin 13 * LCD Brigtness pin 15 to +5 V * LCD Brigtness pin 16 to GND * LiquidCrystal( A0/RS , RW_x , Enable , D0_x , D1_x , D2_x , D3_x , D4 , D5 , D6 , D7 ) * * Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!) * Connect GND to Ground * Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5 * Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4 * EOC is not used, it signifies an end of conversion * XCLR is a reset pin, also not used here */ #include "File_Func.h" #include <Wire.h> #include <Adafruit_BMP085.h> Adafruit_BMP085 BMP; #include <LiquidCrystal.h> LiquidCrystal LCD( 8, 9, 10, 11, 12, 13 ); byte DeltaChar[8] ={ B00000 , B00100 , B01010 , B01010 , B10001 , B10001 , B11111 , B00000 }; const float kPaToMmHg = 0.0075006375541921; float pressureQFE; float pressureQNH; const byte count = 25; float temperatureArray[ count ]; float pressureArray[ count ]; float altitudeArray[ count ]; float temperature; float pressure; float altitude; unsigned long timeBMPlive; byte timeBMPdelta = 30; byte i = 0; //======================================================================================================== void setup() { LCD.begin( 20 , 4 ); LCD.createChar( 0 , DeltaChar ); // LCD.print( '\0' ); if ( ! BMP.begin( BMP085_ULTRAHIGHRES ) ) { Out_to_LCD_ERROR_BMP085(); } pressureQNH = 101325; timeBMPlive = millis(); } //======================================================================================================== void loop() { if ( ( millis() - timeBMPlive ) > timeBMPdelta ) { temperatureArray[ i ] = BMP.readTemperature(); pressureArray[ i ] = BMP.readPressure(); altitudeArray[ i ] = BMP.readAltitude( pressureQNH ); i++; if ( i > count - 1 ) { i = 0; } temperature = AverageArray( temperatureArray , count ); pressure = AverageArray( pressureArray , count ); altitude = AverageArray( altitudeArray , count ); timeBMPlive = millis(); } Out_to_LCD_t_T_QFE_QNH_AMSL(); } //======================================================================================================== void Out_to_LCD_ERROR_BMP085() { LCD.setCursor( 0 , 0 ); LCD.write( "Could not find a" ); LCD.setCursor( 0 , 1 ); LCD.write( "valid BMP085 sensor," ); LCD.setCursor( 0 , 2 ); LCD.write( "check wiring ! " ); while ( 1 ) {} } //======================================================================================================== void Out_to_LCD_t_T_QFE_QNH_AMSL() { // очистка экрана LCD.clear(); // вывод температуры в градусах LCD.setCursor( 1 , 0 ); LCD.print( temperature , 1 ); LCD.print( " \x99""C" ); // вывод времени LCD.print( " 00:00:00" ); // вывод QFE в паскалях LCD.setCursor( 0 , 1 ); LCD.print( "QFE " ); pressureQFE = pressure; // вывод стрелки LCD.print( pressureQFE , 0 ); LCD.print( " -> " ); // вывод QFE в мм.рт.ст. LCD.print( pressureQFE * kPaToMmHg , 1 ); LCD.setCursor( 0 , 2 ); // вывод QNH в паскалях LCD.print( "QNH " ); LCD.print( pressureQNH , 0 ); // вывод стрелки LCD.print( " -> " ); // вывод QNH в мм.рт.ст. LCD.print( pressureQNH * kPaToMmHg , 1 ); // вывод AMSL в метрах LCD.setCursor( 0 , 3 ); LCD.print( "AMSL " ); LCD.print( altitude , 1 ); LCD.print( " \xBC" ); } //========================================================================================================в этом варианте точность измерения высоты - +/- 35 см , давления и температуры - +/- 0 ( сравнивал с показаниями четырёх порогов двух ВПП Пулково....
И ЕЩЁ - какое давление вы получаете от метеостанции ? скорее всего - QNH минимальное приведённое давление по району ( площади ) ( ПРИВЕДЁННОЕ к среднему уровню моря AMSL ) - как расчитать его из QFE СТАНЦИИ - узнайте на станции...
ваш датчик даёт QFE !!!!!!!!!!!!!!!!!!!!!!!!!!!!! позвоните на метео, попросите QFE и сравните с вашим.....
из ваших данных можно высчитать , что высота рельфа у вас = 10 мм.рт.ст * 11 м/мм.рт.ст. = 110 м AMSL , а метеостанции = 140 м
кататак :)
в этом варианте точность измерения высоты - +/- 35 см , давления и температуры - +/- 0 ( сравнивал с показаниями четырёх порогов двух ВПП Пулково....
И ЕЩЁ - какое давление вы получаете от метеостанции ? скорее всего - QNH минимальное приведённое давление по району ( площади ) ( ПРИВЕДЁННОЕ к среднему уровню моря AMSL ) - как расчитать его из QFE СТАНЦИИ - узнайте на станции...
ваш датчик даёт QFE !!!!!!!!!!!!!!!!!!!!!!!!!!!!! позвоните на метео, попросите QFE и сравните с вашим.....
из ваших данных можно высчитать , что высота рельфа у вас = 10 мм.рт.ст * 11 м/мм.рт.ст. = 110 м AMSL , а метеостанции = 140 м
кататак :)
У меня на стене висит аналоговый барометр, есть самодельный варик на BMP180 и вариометр достаточно известной фирмы, так вот, все три барометра показывают разные значения, причем показания самоделки ближе к аналоговому барометру, чем дорогой вариометр. Так что не факт, что местная метеостанция называет вам точные цифры.
датчики вариометров скоростные, для них важен не абсолютный результат, а скорость изменения давления. а зачем вам дома вариометр ?
еще интересно - кто-нибудь сравнивал bmp180 и bmp085 по точности ?
моя - нет ! у миня нету 180....
У меня на стене висит аналоговый барометр, есть самодельный варик на BMP180 и вариометр достаточно известной фирмы, так вот, все три барометра показывают разные значения, причем показания самоделки ближе к аналоговому барометру, чем дорогой вариометр. Так что не факт, что местная метеостанция называет вам точные цифры.
точность как и ВОСТОК - дело тонкое, Петруха !
сравнивать показания трёх датчиков без ЮСТИРОВОЧНОГО/ОБРАЗЦОВОГО - трата времени
сравнивать показания трёх датчиков без ЮСТИРОВОЧНОГО/ОБРАЗЦОВОГО - трата времени
Я их сравниваю а не калибрую, и свое время трачу на что хочу. Я лишь говорил, что и на станции так же врать прибор может.
А дома вариометр мне нужен ровно затем, зачем он вообще пришел из авиации в портативные устройства - парапланеризм.
Я просто хотел сделать игрушку, типа низкое давление на экране плавает рыбка (что можно на рыбалку). А оказывается на рыбалку влияет не точное значение атм.дав. ,а его изменение за определенный промежуток времени. Я не рыбак и это подсказали заядлые рыбаки. Всем спасибо за советы!
сравнивать показания трёх датчиков без ЮСТИРОВОЧНОГО/ОБРАЗЦОВОГО - трата времени
Я их сравниваю а не калибрую, и свое время трачу на что хочу. Я лишь говорил, что и на станции так же врать прибор может.
А дома вариометр мне нужен ровно затем, зачем он вообще пришел из авиации в портативные устройства - парапланеризм.
и на станции так же врать прибор может - может, но в допуске !!!!!!!!!!! самолётики не сшибают же антенны с крыш 17-ти этажек, и землю не роют.....
Карлсона встретите - привет ему ! , ( я про встречу на земле, а не в полёте ) и Энгельсону - тоже привет !
Я просто хотел сделать игрушку, типа низкое давление на экране плавает рыбка (что можно на рыбалку). А оказывается на рыбалку влияет не точное значение атм.дав. ,а его изменение за определенный промежуток времени. Я не рыбак и это подсказали заядлые рыбаки. Всем спасибо за советы!
И кто Вам мешает? У меня все три прибора всегда имеют одинаковое отличие. Если на одном давление упадет на 10 условных енотов, то и на всех это будет 10 условных енотов. Вот и Вы просто сдвиньте рамки нужного Вам давления по показаниям Вашего же прибора.
А дома вариометр мне нужен ровно затем, зачем он вообще пришел из авиации в портативные устройства - парапланеризм.
а, ну так бы и сказал. это ж не совсем дома. хотя может у тебя какие-нибудь предгорные угодья в Чегеме, хз ))
Карлсона встретите - привет ему ! , ( я про встречу на земле, а не в полёте ) и Энгельсону - тоже привет !
Энгельсону можете сами передать https://paraplan.ru/forum/profile.php?mode=viewprofile&u=17033 :-)
видимо придется самому глянуть. у мну лежат на полке bpm 085, bmp180 и ms5611
Если редактировать строку lcd.print(P*0.75006375541921,2); можно добиться приемлимую точность показаний
к этой строке надо прибавлять или отнимать дельту (разницу высот) от того что говорит ваша станция и говорит гисметео
так ВОВСЕ делать низя ! опасно для здоровья... даже кашлянуть не успеете...
Наземные службы еще пытались что-то уточнить, но ведущий гнул свою линию: «Фенол, я шестьсот двадцать третий, разрешите снижение». Не слушал генерал и ведомых. Едва 601-й (ведущий левой пары и группы Су-27) начал докладывать расположение истребителей, как Гребенников его оборвал: «Да подожди, надо снизиться сначала!»
В кабине Ил-76 в момент, предшествующий катастрофе, шел крутой мужской разговор - штурман Кряжевских пытался вмешаться в события и объяснить Гребенникову рискованность маневра. Однако кусок ленты с самописца, на которой был зафиксирован этот скандал, таинственным образом исчез.В кабине Ил-76 в момент, предшествующий катастрофе, шел крутой мужской разговор - штурман Кряжевских пытался вмешаться в события и объяснить Гребенникову рискованность маневра. Однако кусок ленты с самописца, на которой был зафиксирован этот скандал, таинственным образом исчез.
604-й: Шестой, у тебя работает хоть что-нибудь?
606-й: А кто его знает!
В такой обстановке от РП должна была прозвучать единственная команда пилотам - «Всем немедленно в набор высоты!», но она не прозвучала.
При выполнении четвертого разворота в кабине Ил-76 сработала сигнализация, предупреждающая об опасном сближении с рельефом местности. Замигало желтое табло: «Опасно, земля!», прерывисто зазвучала сирена. Руководство по летной эксплуатации предписывает в этом случае немедленно и энергично перевести самолет в режим набора высоты, увеличить режим работы двигателей вплоть до максимального. Гребенников обязан был предупредить ведомых об опасности и предстоящем маневре.
Ил-76 счастливым образом прошел по небольшой лощине в горах, на высоте 32 м над землей, прежде чем пойти на набор высоты.
по данным приборов ИЛ-76, летевшие впереди Су-27 снизились до 600 м
Всё оффициальное.... Это про точность... И - кто какое давление использует... Рыбаки или пилоты....
https://paraplan.ru/forum/profile.php?mode=viewprofile&u=17033 :-)
...с таким прибором - вероятен ПОЛОН РОТ ЗЕМЛИ :(
Если редактировать строку lcd.print(P*0.75006375541921,2); можно добиться приемлимую точность показаний
к этой строке надо прибавлять или отнимать дельту (разницу высот) от того что говорит ваша станция и говорит гисметео
НЕТ ! не в этой ! Вы что, все постоянные под сибя собираетесь забрать ?
...Бойль-Мариотт , Планк и др. В этой - Лаплас...
Если редактировать строку lcd.print(P*0.75006375541921,2); можно добиться приемлимую точность показаний
к этой строке надо прибавлять или отнимать дельту (разницу высот) от того что говорит ваша станция и говорит гисметео
для рыбаков - да, можно.... если для пилотов так считать - то не нано нам такого !!!!!!
Я просто хотел сделать игрушку, типа низкое давление на экране плавает рыбка (что можно на рыбалку). А оказывается на рыбалку влияет не точное значение атм.дав. ,а его изменение за определенный промежуток времени. Я не рыбак и это подсказали заядлые рыбаки. Всем спасибо за советы!
И кто Вам мешает? У меня все три прибора всегда имеют одинаковое отличие. Если на одном давление упадет на 10 условных енотов, то и на всех это будет 10 условных енотов. Вот и Вы просто сдвиньте рамки нужного Вам давления по показаниям Вашего же прибора.
вам - #18 :(
Я просто хотел сделать игрушку, типа низкое давление на экране плавает рыбка (что можно на рыбалку). А оказывается на рыбалку влияет не точное значение атм.дав. ,а его изменение за определенный промежуток времени. Я не рыбак и это подсказали заядлые рыбаки. Всем спасибо за советы!
И кто Вам мешает? У меня все три прибора всегда имеют одинаковое отличие. Если на одном давление упадет на 10 условных енотов, то и на всех это будет 10 условных енотов. Вот и Вы просто сдвиньте рамки нужного Вам давления по показаниям Вашего же прибора.
вам - #18 :(
в формуле Лапласса - ЕНОТЫ не сокращаются , а учитываются пропорционально , и ещё с извращениями математическими....
у вас классные приборы, раз кажут так дружно.... A чо кажут-то ??????
основное - не для рыбалки - QNE , QNH , QFE - нет ?
вариометр - это в полёте.... просто производная.....
Я просто хотел сделать игрушку, типа низкое давление на экране плавает рыбка (что можно на рыбалку). А оказывается на рыбалку влияет не точное значение атм.дав. ,а его изменение за определенный промежуток времени. Я не рыбак и это подсказали заядлые рыбаки. Всем спасибо за советы!
ДЫК, сделал ???????????? парашютисты не валят ? не приползают побить морду лица ? :)