Ясно. А как насчет показаний температуры у HP03? Наблюдается-ли неповторяемость показаний как я описал выше? И как насчет соответствия показаний с другими термометрами. Правда, возникает вопрос кому из них верить, если нет доступа к баро/термо-камерам. Но у меня 2 датчика SHT15 купленные в разное время из разных источников и BMP085 работают "дых в дых" (отличие не более 0.1 градуса). Я подсчитал, что отличие показаний в 1.5 градуса соответствует отличию параметра dUT (в примере данных констант из даташита сенсора) на 254 единицы. Это в свою очередь приведет к показаниям давления в 996.3 hpa вместо 991.8 hpa в примере из даташита, что соответствует разнице в 4 mmHg.
В Радио за 6/2010 была статья с использованием HP03SA. Там автор тоже сетует на невысокую точность датчика температуры в этом сенсоре, но к сожалению не приводит детали. Поэтому мне интересен Ваш опыт. Может стоит для повышения точности обработки давления измерять температуру другим сенсором, затем пересчитывать ее в dUT (см. алгорит сенсора) и использовать эту величину для обработки "сырых" показаний давления?
Я не решился снять защитную пленку с сенсора, что предотвратить попадание на него пыли. Кто знает, как это ему понравится. Благо, в пленке есть дырка, т.е. если дать сенсору отстояться, то должно быть все пучком. Я пробовал менять время между измерениями и давать больше времени на измерение, также менять тактирующую частоту для HP03S, но это никак не помогает.
Результаты проверки за ~8 часов: 20000 измерений Максимальная разница температур между соседними измерениями 0.34 град (визуально, пока не лень пялиться в экран, температура "скачет" в среднем на 0.11) В начале измерений (ночью) в комнате было 25 град - мерил двумя датчиками DS1820, HP03 показывал ~26,5 (к сожалению точных цифр не записал). В 8:30 утра: в комнате 22.5 град, а HP03 показывает 27.7.
Есть подозрение, что температура в датчике - это температура сенсора, для математической коррекции температурной зависимости. И от окружающей температуры она конечно будет зависеть, но использовать эти данные в качестве термометра не стоит...
_________________ — Не говорите мне что делать и я не скажу куда Вам идти...
//Датчик давления использует тактовую частоту, которую формирует таймер 1 //на выходе OC1A. Для обмена данными с датчиком используется порт I2C, //реализованный программно.
enum { //коды состояний измерителя HP_IDLE, //измеритель в состоянии ожидания HP_MEASD, //измерение давления HP_MEAST, //измерение температуры HP_CALC //вычисление давления };
//---------- Переменные: ----------
static char State; //состояние измерителя static unsigned int Hp_D0; //калибровочный коэффициент D0 static unsigned int Hp_T0; //калибровочный коэффициент T0 static unsigned int Hp_P0; //калибровочный коэффициент P0 static unsigned int Hp_S; //калибровочный коэффициент S static unsigned int Hp_C; //калибровочный коэффициент C
static unsigned int Hp_D1; //измеренный код давления D1 static unsigned int Hp_T1; //измеренный код температуры T1
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Спасибо [b]md5sum[/b] за экспериментальные данные. 20000 измерений за 8 часов - значит интервал между измерениями около 0.7 секунды. Я думаю это может быть слишком быстро и сенсор может от такой скорости прогреваться и показывать завышенную температуру. К сожалению в даташите не указана максимальная частота проведения измерений, но попробуйте ее снизить хотя-бы до 1 измерения в 2 сек. Судя по даташиту (хотя явно это и не указано), в интервале между измерениями сенсор должен автоматически переходить в спящий режим, где его токопотребление снизится с 500 мка до 1 мка и это должно способствовать его остыванию для следующего измерения. Кстати, вы сняли с него защитную пленку?
Конечно, датчик температуры в сенсоре показывает температуру сенсора, но я не думаю что разработчики имели ее в виду для коррекции показаний давления. Для последних небходимо учитывать скорее температуру окружающего воздуха. Кроме того, зачем-бы они привели в даташите формулу как пересчитать "сырую" температуру в "реальную". Форнулы коррекции давления учитывают лишь "сырую" температуру. Кому нужна температура сенсора? Единственное, что причодит на ум - если при быстром проведении серии измерений будет значительное отличие температуры сенсора с температурой среды, показываемой другим датчиком в системе, то пора дать сенсору поостыть. Хотя, гадать тут можно много...
Я сделал видео своего эксперимента с HP03SA и BMP085 (извиняюсь за качество): http://www.youtube.com/watch?v=UF8LgLuc1ag Там показываются данные от HP03SA (с буквой А в начале) и BMP085 с букжой "б" в начале. Числа в диапазоне около 700 - это давление в mmHg, остальные в районе 18-19 - температура. Черная коробка содетжит самодельный датчик температуры и влажности на SHT15 (если на нем видно "H" - то это влажность). Я пробовал подключать дополнительно еше один SHT15, поместив его рядом с сенсорами давления на макетку, но ошутимое отличие с HP03SA по температуре все-равно имеется.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Ковыряю исходник.... Где-то закралась ГРУБАЯ ошибка... Выкинул датчик на балкон, при температуре на улице +19 датчик показывает +32 и давление РЕЗКО подскочило на 14 мм.рт.ст
_________________ — Не говорите мне что делать и я не скажу куда Вам идти...
Советую почитать документацию на свой компилятор. У меня, например, был в начале затык в том, что компилятор C18 из MPLAB (тестовая схема собрана на PIC18) при делении на степени двойки путем сдвига вправо не мультиплицировал знаковый разряд, а просто посылал туда 0 Это приводило к тому, что отрицательные числа при делении на степени двойки становились положительными! Для положительных чисел все работает нормально. Хотя это отличие от стандартного ANSI C и описано в документации, здесь Microchiip проявил себя как другая "Micro"- организация, непонятно зачем поперев существующие стандарты. Короче, я не нашел ничего лучшего для борьбы с этим безобразием, как внедрить в C-код ассемблерные вставки везде, где может быть сдвиг вправо отрицательных чисел. Если интересно, можете посмотреть мой непричесанный исходник.
Кроме того, т.к. я использую свободную версию C18, которая не производит оптимизацию кода, при делении 4-байтных чисел типа long на 2^16 компилятор тупо перемалывал биты вместо того, чтобы просто переставить 3 байта. Подчеркиваю, что код может не работать с другими компиляторами (и заведомо не будет работать с микроконтроллерами других семейств), т.к. у них может быть другая схема организации поинтеров на стек данных и система размещения переменных в банках памяти.
Успеха в отладке! Напишите потом в чем была проблема.
Вложения:
Комментарий к файлу: Подорограммы для HP03SA HP03SA.c [4.2 KiB]
Скачиваний: 373
Успеха в отладке! Напишите потом в чем была проблема.
Спасибо, ошибка была вызвана скорее невнимательностью: не привел тип unsigned к signed до вычислений, оставив это компилятору (avr-gcc). И самое удивительное, что при комнатной температуре ошибка почти не проявляла себя....
24000 измерений, с интервалом 1.5 сек. Максимальная разница температуры между соседними измерениями 0.34. Относительно DS1820 - HP03m меряет на 1 градус меньше.
Давление относительно уровня моря на 14 мм ниже. Где найти высоту места по GPS координатам? Сам GPS вычислил 115 м над морем, но у GPS точность по высоте небольшая.
_________________ — Не говорите мне что делать и я не скажу куда Вам идти...
сама отвалилась Зацепил случайно... Но на сайте хопер нашел касательно HP03M: "The gel protection of the sensor provides a water protection sufficient for 100 m waterproof watches without any additional protection" Раз до 100 м воды,то...
_________________ — Не говорите мне что делать и я не скажу куда Вам идти...
Мдааа... Сильно сказано. Как говорится, нет слов, одни выражения...
Я все-таки думаю, что пленка нужна для предохранения начинки сенсора внутри трубы от пыли, в том числе при хранении и транспортировке. Мой пришел (по почте) просто завернутым в пластиковый мешок. Интересно, как они на складе хранятся, хотя лучше наверное это не знать. То, что пленка предохранит его даже от капли воды я сомневаюсь, т.к. в моем там дырка (см. фото). Я пленку снять так и не решился.
Еще может быть она предохраняет его в какой-то мере от света. Некоторые сенсоры по даташиту не терпят света. Интересно, если вы внутрь трубы направите прямой солнечный свет, изменятся-ли показания? Я свою тестовую плату разобрал.
Интересно, что у моего HP03SA тоже заниженные показания температуры и давления и примерно на столько-же. Учитывая Ваши данные, создается впечатление, что сенсоры не дотягивают. Может в даташите опечатки в формулах? Разница по температуре в 1 градус приемлима, а вот в плане давления разница больше чем я ожидал. Вчера приобрел еще один BMP085 для своего устройства. На днях впаяю его на плату и отпишусь насчет совпадения или несовпадения показаний с другими сенсорами.
Внутри трубы - что-то геле образное, как и писал производитель. Видно по бликам внутри трубы... Да и сама форма конструкции вызвана тем, что в трубу что-то наливают
По ДШ максимальное давление, которое выдерживает датчик - 15 бар. 100 м воды это примерно 9,8 бар... Думаю пленка не нужна... но хозяин-барин.
Точность по давлению можно проверить только в барокамере. Данным аэропортов можно верить, но с учетом того, что они передают в инет (раз в полчаса) -"нельзя использовать для предполетной подготовки" (взято с какого-то сайта аэропорта). Данные передаваемые Домодедово приведены к уровню моря, и с учетом моей высоты 160 м - точность составила 1 мм.рт.ст
Мне на самом деле такая точность ненужна т.к. интересует только динамика за последние 48 часов.
Ser60: СПАСИБО, за то, что сподвигнули меня на тесты, иначе при комнатной температуре я бы нескоро баг в софте обнаружил
Я наконец-то написал в каком-то виде программу своей метеостанции на BMP085 и сравнил ее показания с показаниями друго экземпляра сенсора BMP085 на макетке. Они в точности совпадают (после пересчета в mmHg)! То есть два разных сенсора одной модели показывают в точности одно и то-же значение давления. Весьма впечатляюще для сенсоров.
Вложения:
Комментарий к файлу: Тестовая плата с BMP085 sv400199.jpg [170.35 KiB]
Скачиваний: 688
Комментарий к файлу: Метеостанция на BMP085 и SHT15 sv400200.jpg [90.98 KiB]
Скачиваний: 676
//Датчик давления использует тактовую частоту, которую формирует таймер 1 //на выходе OC1A. Для обмена данными с датчиком используется порт I2C, //реализованный программно.
enum { //коды состояний измерителя HP_IDLE, //измеритель в состоянии ожидания HP_MEASD, //измерение давления HP_MEAST, //измерение температуры HP_CALC //вычисление давления };
//---------- Переменные: ----------
static char State; //состояние измерителя static unsigned int Hp_D0; //калибровочный коэффициент D0 static unsigned int Hp_T0; //калибровочный коэффициент T0 static unsigned int Hp_P0; //калибровочный коэффициент P0 static unsigned int Hp_S; //калибровочный коэффициент S static unsigned int Hp_C; //калибровочный коэффициент C
static unsigned int Hp_D1; //измеренный код давления D1 static unsigned int Hp_T1; //измеренный код температуры T1
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения