GP2Y1010AU0F. Большая погрешность датчика пыли
- Войдите на сайт для отправки комментариев
Сб, 10/01/2015 - 15:26
Здравствуйте.
Приобрел вот такой датчик пыли: https://www.sparkfun.com/datasheets/Sensors/gp2y1010au_e.pdf
Подключил как описано здесь: http://arduinodev.woofex.net/2012/12/01/standalone-sharp-dust-sensor/ оттуда-же был взят код для расчета плотности пыли мкг/m3.
Кроме это, добавил расчет среднего арифметического и среднего квадратичного отклонения для 30 замеров
Сенсор был плотно обернут в пакет, для уменьшения влияния внешних факторов и лежал нетронутым в течении нескольких часов
Ссылка на логи: https://cloud.mail.ru/public/24d2895fc2c3/Dust%20sensor.rar
В файле ds1.txt можно посмотреть реультаты.
Где (через запятую) :
время между двумя замерами в мс
вольтаж с аналогового выхода
расчетное значение в (мкг/m3).
Ну во первых, при задержке между двумя замерами датчиков в районе 11-17 мс данные явно совсем не те, которые ожидались, вольтаж совсем маленький приходит, хотя, cогласно документации, рекомендуемое время между двумя замерами - 10 мс.
При задержке более 500 мс - данные уже больше похожи на правду (в относительных величинах, реальные значения пыли в мкг/m3 в комнате, где происходили замеры мне не известны).
Но смущает уж слишком сильный разброс значений, учитывая, что все таки датчик изолирован и влияние окружающей среды миниально - значение сигмы в районе 7 (среднее квадратичное отклонение).
Причем похожие значения сигмы были и для не изолированного датчика (см. ds2.txt).
Вот думаю, это такой чувствительный датчик - или я что-то не понимаю?
Кто юзал данный сенсор - поделитесь впечатлениями.
А у меня тоже вопрос по такому датчику. Подключил к ардуине. Он при старте начинает со значений ~700 и опускается до 300-320 чего-то там. Видимо мг/м3. При этом не слезает с этих значений что бы я с ним не делал и куда бы не носил.
он правильно работает? Может как-то отверстие надо разместить? У меня датчик просто на столе лежит. Сверху дырка открыта, снизу соотв. поверхность стола.
кто разбирался - подскажите, плиз.
Раз есть дырка, значит в ней соберётся пыль, если он будет лежать дыркой кверху. В даташите,к сожалению, не указано рабочее положение. Но уж точно в пакет не заворачивать и стеклом не накрывать- он же оптический.
Там ж черным по белому написано, что для проверки дым от MILD SEVEN надо вдувать.
Там ж черным по белому написано, что для проверки дым от MILD SEVEN надо вдувать.
Вот блин, а я звездной пылью на него сыпал. :)
Ну ладно, хоть правильно расположил. Вы меня успокоили, спасибо.
На сколько я понимаю, через датчик пыли, (а так же через датчик влажности, анализатор газов) надо гонять воздух вентилятором. Иначе по ряду причин вокруг датчика образуется застоявшаяся область с тепличными условиями и своими показаниями.
На сколько я понимаю, через датчик пыли, (а так же через датчик влажности, анализатор газов) надо гонять воздух вентилятором. Иначе по ряду причин вокруг датчика образуется застоявшаяся область с тепличными условиями и своими показаниями.
Ну датчик пыли оптический там движуху нечем создавать.
Кто-нибудь разобрался с этим датчиком?
Интересно все-таки как его правильно применять? Например судя по этой статье http://www.howmuchsnow.com/arduino/airquality/ автор продувал воздух через датчик при помощи маленького вентилятора 40х40. Может есть более экономичный и компактный способ это делать? Например если необходимо сделать мобильное устройство для проверки качества воздуха, которое будет работать от аккумуляторов. Думается мне, что вентилятор довольно быстро их разрядит, насколько бы вентилятор ни был маломощным.
И еще вопрос, по формуле, которую вывел автор статьи и которую все копируют (dustdensity = 0.17*voltage-0.1;) - как я понял он вывел ее опытным путем, сравнивая показания с эталонным датчиком. Или она справедлива для любого такого же датчика? В даташите (https://www.sparkfun.com/datasheets/Sensors/gp2y1010au_e.pdf) приведен похожий график зависимости напряжения от запыленности, но есть оговорка, что он показан как пример и верить ему особо нельзя. Тогда как все-таки откалибровать датчик в бытовых условиях?
Ну и еще вопрос по напряжению питания: кто-то питает его от 3,3В, а кто-то от 5В. Сдается мне, что напряжение питания будет влиять на показания датчика. Как минимум яркость и/к светодиода будет разной. Так как же его все-таки правильно питать? Судя по даташиту - он до 7 Вольт выдержит.
У меня уже с пол года пашет, бесперебойно, с датчиком давление/температура в паре. ТФТ экран графики рисует, цветной типа 0154, 2.4 дюйма - самые доступные на али экраны с тачем.
Вентилятор не ставил, датчик приклеил на двусторонюю липкую ленту вертикально, провода вниз, там кажется спилить пришлось пластик чтобы плотно стал. В корпусе прибора дырок насверлил и всё. Диффузия всё остальное делает, на пыль реакция особенно не требуется.
Калибровку не делал, нет эталонного прибора. Да она и ни к чему, в принципе это показометр, но чувствительный. Если задуть спичку на расстоянии с пол метра - зашкаливает. На кухне жарится чего-нить - показания увеличиваются 3-4 раза хотя визуально дыма нет, есть вытяжка.
Показометр - потому что сигнал дрейфует от температуры - у меня ж там второй график и сразу видно как они вместе вверх вниз ползут. Не сильно, но заметно. От напряжения тоже меняется, если на 3.3 там резистор пересчитать надо будет.
Я подключил датчик как написано в приведенных статьях, какие-то странные показания он выдает, иногда даже отрицательные. Пробовал питать его как от 3.3В, так и от 5В - разницы почти нет. Самое интересное - если просунуть что-нибудь в отверстие датчика - напряжение на его выводе повышается почти до 4В, вроде бы все хорошо. Но если датчик просто лежит на столе - показания близки к нулю. Как-то не верится, что в квартире пыль совсем отсутствует. Или это нормальное его поведение?
Думается мне, что либо что-то не так со схемой подключения (возможно не контачит), либо со скетчем (неверная формула, например). Поделитесь пожалуйста куском скетча, где происходит считывание напряжения и преобразование его в мкг/м3.
На всякий случай мой код:
У меня нет простой версии, всё допиливал как комбайн с экраном, тут скачать
Проще будет вам взять пустой скетч и добавлять постепенно, главное начать с ADC и Dust.
Первая накапливает данные как сумму за 1 сек, 122 точки, вторая фильтрует, а в основной программе ещё раз усредняется за час, это кому то может и не потребуется. Тогда просто, по флагу вызывать printDust и печатать val_dust посекундно.
Спасибо за код. Как я понял Вы 122 раза измеряли напряжение на выходе, а потом считали среднее значение. Но почему именно 122?
Я тут решил вспомнить курс школьной математики и понять откуда взялась формула расчета (может кому полезно будет).
За основу берется график из даташита (зависимость напряжения от запыленности):
Часть графика до 3.5В очень похожа на прямую. Формула прямой: y = kx+b, в нашем случае y - это напряжение, а x - содержание пыли (мкг/м3). Возьмем две характерные точки A (0; 0,6) и B (0,4; 3) и составим для них систему уравнений:
0,6 = 0k + b
3 = 0,4k + b
Решая ее получим: b=0,6, k=6. Итоговое уравнение кривой: y=6x+0,6
Из этого уравнения: x = (y-0,6)/6 если каждый член в скобке поделить на 6 и получается формула y = 0.17x - 0.1
Также я попытался "откалибровать" датчик: засунул в отверстие для пыли круглую ручку подходящего диаметра, чтобы имитировать абсолютно загрязненный воздух. По-идее это должна быть горизонтальная часть кривой. На графике она проходит на уровне 3.6-3.7В, у меня же максимальное напряжение получилось 3.2В, поэтому я решил внести изменения в формулу подсчета, занизить график на 0.4В. Таким образом получилось: x = (y-0,2)/6 - думаю такая формула более удобна для корректировок и более точна при вычислениях.
Если верить даташиту - напряжение при отсутствии пыли может быть от 0 до 1,5В, что вроде бы укладывается в мою теорию подсчетов.
Также я решил также измерять напряжение несколько раз, а затем вычислять среднее. Начал с 10 раз, но похоже это не сильно помогло. Значения напряжения пляшут в одних и тех же условиях, возможно нужно на порядок больше измерений. Увеличение длительности импульсов включения ИК-диода тоже практически не влияет на них.
Вывод: без калибровки по эталонному прибору - это всего лишь показометр, который позволяет измерять содержание пыли в довольно условных "попугаях" и показывать лишь приблизительный уровень, а также изменение содержания пыли.
Спасибо за код. Как я понял Вы 122 раза измеряли напряжение на выходе, а потом считали среднее значение. Но почему именно 122?