Электронный указатель скорости, высотомер и вариометр.

LDO малошумящий ?

TPS76333
Output noise voltage (BW = 300 Hz to 50 kHz) 140 µV
PSRR Ripple rejection f = 1 kHz   60 dB

Вроде - не очень шумный. 🙂

Есть возможность на то-же посадочное место поставить LP2985, но у него  "Ripple rejection" хуже.

LP2985-3.3
Output Noise (BW = 300 Hz to 50 kHz) 30 µV
Ripple Rejection f = 1 kHz   45 dB

Нет в мире совершенства. 🙁
Что посоветуешь, учитывая, что у LPS331 внутрях вроде-бы еще свой стабилизатор стоИт?

Может в цепь питания и подключения цифровых линий установить Feed Through Capacitors ?
Где-то в тумбочке должны быть фильтры NFR21GD1014702. Только их ставить в этом варианте разводки некуда. Сигнальные линии к контроллеру сделал очень короткими (на этой картинке хорошо видно). По питанию стоЯт RC фильтры. Только из ДШ на этот датчик неясно, есть ли отдельная аналоговая земля.

В целом, шум на выходе примерно такой-же (если считать в абсолютном давлении) как и в предыдущей версии (где отдельно датчик - отдельно АЦП). Поэтому, по поводу шума, особо не напрягаюсь. Тем более что имеются несколько явно видимых путей по снижению шума (повышению точности):
1. Работать с LPS331 по пинам готовности, а не опросом регистров.
2. Разораться и использовать режим внутреннего усреднения LPS331
3. Уводить управляющий контроллер в один из спящих режимов (прямо сейчас он молотит без остановки на 72 МГц)

В общем - есть куда двигаться. 🙂
 
Для питания лучше отдельный БП, например использовать ADP150-1.8 для аналоговых частей.
Короткие линии хорошо, но резисторы последовательные лучше 🙂 Они импендансы согласуют. Я так понимаю что нет подтяжек - не IIC интерфейс ? Спать ЦПУ не надо. ИМХО отключить подтяжки и на время измерений прижать все выводы к нулю. А еще лучше установить EZASC на все линии ВВ.
NFR совсем не стоит ставить, лучше NFM.
 
SeregaB писал(а) 28.01.13 :: 10:04:14:Еще заметил, что при освещении лампой отверстия в датчике для забора давления, показания изменяются примерно на 1 мм.рт.ст. и начинают шуметь значительно больше.Попробуй прикрыть от света, особенно если у тебя свет от ЛДС. Они мигают очень сильно.

Подтверждаю, это может влиять на показания, если барометрический прибор попадает под световой поток от лампы! Только это будет не белый шум, а появляется гармонический сигнал -100 Гц, синхронизованый с сетью - поэтому многие принимают его за наводку (или с частотой модуляции потока - открыл-закрыл). Соответственно, если чатота дикретизации не будет синхнонизована с частотой моделяции потока, то на выходе АЦП это будет выглядеть как шум.
Кстати, лампы накаливания тоже от этого не избавлены и дают будь здоров какой поток ИК с переменной составляющей на 100 Гц. Все барометрические приборы это чувствуют, если регистрирующая система видит переменную составляющую.
А микрофоны - так вообще гудят на 100 Гц от этого!

Этот эффект используется в узкой области научных изысканий -   это называется Фото-Акустическая Спектроскопия. Применяется так же в СВЧ и КВЧ диапазонах. Долго этим занимался.
Поэтому при настройке прибора "под ламочкой" это надо принимать во внимание!
 
Перепроверь - давление в МИЛЛИМЕТРАХ ртутного столба, а высота в МЕТРАХ. Не нужно наоборот
Понравилось. 😀

Только для вариометра с разрешалкой 0,1м/с желательно измерять изменение высоты 100мм за секунду. 🙁
Хоть и сто, но все-же миллиметров. 🙂
 
ADP150-1.8 для аналоговых частей.

Классно. Все-таки приблизиться к совершенству возможно. 🙂
Идея с питанием аналоговых внутренностей как-то не приходила в голову.  :'( Спасибо. Правда, в реале работал с 16-ти битными АЦП. Там шумы были на уровне LSB. А тут 24 бита и полезло.

Короткие линии хорошо, но резисторы последовательные лучше Улыбка Они импендансы согласуют. Я так понимаю что нет подтяжек - не IIC интерфейс ? Спать ЦПУ не надо. ИМХО отключить подтяжки и на время измерений прижать все выводы к нулю. 
Интерфейс пользую SPI, Подтяжка внутренняя в контроллере,  только на выходной (от датчика) линии, остальные Push-Pull. Просто, при первом чтении ДШ, не заметил, что там все пины с открытым стоком. Если применить отдельный питальник для аналоговой части датчика - то, наверное, действительно тормозить контроллер не обязательно.

Короткие линии хорошо, но резисторы последовательные лучше
NFR совсем не стоит ставить,
Как-то эти два утверждения не согласуются. 😉 NFR, насколько я понимаю, это хитрый резюк, последовательно.

использовать ADP150-1.8 для аналоговых частей
установить EZASC на все линии ВВ.

Еще раз, спасибо за дельные советы. Учту на будущее.
 
Было бы интересно сравнить с твоими.
Такой лог получился (давление в  паскалях шестнадцатеричное и десятичное). Даже прикидочный статанализ указывает на худшие (на порядок!) результаты.
 

Вложения

Сравнил результаты двух выборок: с работающим OLED дисплейчиком и без оного.
Дисперсия крайней выборки уменьшилась в 2.5 раза. Но, Сергей, до твоей высоты пока не поднялся.
 
Даже прикидочный статанализ указывает на худшие (на порядок!) результаты. 

Я бы оценил разницу всего в 3,5..4 раза. 🙂

Сравнил результаты двух выборок: с работающим OLED дисплейчиком и без оного.
Дисперсия крайней выборки уменьшилась в 2.5 раза. 

Ну вот. Совсем близко. Хотя, ИМХО, шумы OLED , обычно сильно преувеличивают. Здесь писАл свои соображения по этому поводу. Хотя, конечно, преобразователь из 3,3 в 15 (или сколько у него используется?) "гладкости" по питанию не добавляет. 🙂
 
Для питания лучше отдельный БП, например использовать ADP150-1.8 для аналоговых частей.

Попробовал питать аналоговые внутренности датчика LPS331 через отдельный стабилизатор. В "тумбочке" "случайно" нашелся TPS76318. Установил, подключил. И НИЧЕГО не изменилось. 🙁 Он (TPS), конечно, намного хуже по характеристикам чем предлагаемый ADP150-1.8. Но ожидал хотя-бы небольшого улучшения (уменьшения шума).
Еще не удалось сконфигурировать выводы INT1 и INT2 в режиме флагов готовности. 🙁
Может вчера был неправильный день? 🙁

2@DiKey - А ты работаешь по опросам или по внешним флагам готовности?
 
Сейчас опрашиваю, но тоже вижу вариант работы по прерываниям как предпочтительный. Я пока заканчиваю этап "лишь бы запустить" и пытаюсь разобраться в настройках режима DRDY.

Насколько я понял DRDY осуществляется конфигурацией регистра CTRL_REG3, где биты 0..2 формируют отклик на INT1-выход, 3..5 - INT2-выход.
6-ой бит устанавливает способ выдачи сигнала на выход INT1 и INT2. INTERRUPT_CFG, 2-ой бит в режиме "защелкивать" прерывание. Сброс флага INT1/INT2 осуществляется чтением регистра INT_SOURCE.
В DM00036196.pdf есть такая фраза: "INT_SOURCE register is cleared by reading INT_ACK register." Не нашел INT_ACK регистра.
 
I2C_send_byte(LPS331_REG_CTRL_REG1, 0x00); // выключаем датчик
I2C_send_byte(LPS331_REG_RES_CONF, 0x7A);   // RMS noise = 0.020 мBar
I2C_send_byte(LPS331_REG_CTRL_REG3, 0x20); // Push-pull/INT2/Data ready
I2C_send_byte(LPS331_REG_INTERRUPT_CFG, 0x00);     //
I2C_send_byte(LPS331_REG_CTRL_REG1, 0xB4); // включаем датчик, ОDR = 12.5Hz/1Hz

После такой инициализации вроде как работает, и, похоже, что флаг DRDY на INT2 снимается автоматически после чтения регистров температуры/давления.
 
В DM00036196.pdf есть такая фраза: "INT_SOURCE register is cleared by reading INT_ACK register." Не нашел INT_ACK регистра. 

Я эту фразу понял так,  что надо вычитать регистры данных того, что вызвало прерывание (температуры или давления).
 
I2C_send_byte(LPS331_REG_CTRL_REG3, 0x20); // Push-pull/INT2/Data ready

У меня в этот регистр записывается
    //Interrupt config Int1
    //LPS331_WriteByte(LPS331_CTRL_REG3,(0x80|0x04));
т.е. я всего навсего хочу чтобы готовность показывалась низким уровнем.
Ну и
LPS331_WriteByte(LPS331_CTRL_REG1,0xE4);//ODR:12,5-12,5

В остальном все совпадает. Но, флага Int1 не вижу вообще. 🙁
 
Хорошее  дело  парни.  На  мой  взгляд  есть  смысл  обьединить  Ваши  индикаторы  на  одной  плате  , это  несколько  уменьшит  скорость  считывания  информации  особенно  в  момент  максимального  внимания  при  пилотировании.
 
Попробовал с различными режимами INT и ODR. Строб на выходе INT1|INT2 имеет место быть с частотой ODR. 

Два вечера боролся с датчиками. Нашел и устранил косяки в подпрограммах работы с LPS331. Добиться НОРМАЛЬНОЙ работы INT выходов не получилось. Почему-то имеются пропуски срабатываний INT . Т.е. в регистрах флаги уже показывают, что данные готовы, а INT иногда при этом не взводится.
Чуть позже опишу, если интересно, результаты более подробно.

Еще интересно, какая у тебя версия самого датчика? У меня маркировка
1AP
203
Видимо, означает LPS331AP, выпущенная в 2012 году на 03 неделе.
 
Чуть позже опишу, если интересно, результаты более подробно.
Интересно, конечно.

Датчик: 1AP 222

Про пропуски срабатываний. Как часто? Я удовлетворился тем, что посмотрел какое-то время на осциллограмму, определил частоту, ну и все... Синхронность INT и статусного регистра не проверял, может тоже ерунда? Надо будет проверить.
 
Про пропуски срабатываний. Как часто? Я удовлетворился тем, что посмотрел какое-то время на осциллограмму, 

Если на скопе не видно - значит все нормально. Пропуски - как-то случайно. Закономерности не обнаружил. Вот лог подряд идущих измерений. Считывание данных - при появлении флага готовности на INT1, частота выставлена 12,5/12,5. Т.е. время между выборками должно быть около 80мс  Правая колонка - относительное время, в секундах.
Код:
$ 3DADDEh 740,209 740,183 00107.171
$ 3DAF7Dh 740,285 740,190 00107.479
$ 3DADEBh 740,211 740,191 00107.557
$ 3DAE79h 740,237 740,194 00107.788
$ 3DAD55h 740,184 740,193 00107.865
$ 3DADE2h 740,210 740,194 00107.942
$ 3DAD31h 740,177 740,193 00108.097
$ 3DAE96h 740,242 740,196 00108.328
$ 3DAD8Ch 740,194 740,196 00108.406
$ 3DADB3h 740,201 740,196 00108.483
$ 3DACC2h 740,157 740,194 00108.560
$ 3DAD1Bh 740,173 740,193 00108.714
$ 3DACC9h 740,158 740,191 00108.791
$ 3DACD0h 740,159 740,189 00108.869
$ 3DADB5h 740,201 740,189 00108.946
$ 3DADE7h 740,210 740,191 00109.100
 
SeregaB писал(а) Сегодня :: 09:55:31:
Чуть позже опишу, если интересно, результаты более подробно.

Интересно, конечно.

Результаты моих боданий с датчиком LPS331.

1. Запитка аналоговой части датчика от отдельного стабилизатора 1,8В.
ОЩУТИМЫХ результатов не дала. До этого, правда, в питании стоял RC фильтр 10 Ом / 33мкФ+0,1мкФ. Стабилизатор был утолкан вместо 10 Ом резистора.   На это пункт я больше всего рассчитывал, в плане  снижения шумов.

2. Опрос флагов готовности во время преобразования принципиально картину с шумом датчика не изменяет (по сравнению с шумом без опроса). Шум вырастает примерно на 10..15 процентов. Но поскольку это ШУМ, то может и не вырастает. 🙂

3. Бит SELMAIN в регистре AMP_CTRL картину с шумом не меняет. Думал - вдруг дергание питание ОУ приводит к повышению шума.

4. На шум больше всех влияет внутреннее усреднение. AVGP3[3:0] = А в регистре RES_CONF дает наилучшие результаты. Что и следовало ожидать 🙂

5. Флаги INT1/INT2 заставить нормально работать в режиме автоматической выдачи результатов ( ODR[2:0] != 0 ) не удалось. При этом, при запуске "вручную" битом ONE_SHOT - флаги ведут себя полностью адекватно.
Может быть я чего не понимаю, а может у датчиков, которые купил DiKey, за пять месяцев чего в мозгах поправили.

6. При случайном запуске битом ONE_SHOT и уже установленном ODR[2:0]!=0 датчику напрочь сносит крышу. Лечится только сбросом питания или софтовым сбросом по SWRESET + BOOT

7. "Данными" этот датчик считает только давление. Т.е. если вычитывать только регистры температуры, то пины INT1/INT2 НЕ СБРАСЫВАЮТСЯ. Они сбрасываются только при чтении регистров давления. С битами P_DA и T_DA в регистре STATUS_REG все нормально.

8. Точность - не хуже чем у моего домашнего стрелочного высотомера. Показывают одинаковое давление. 🙂


В сухом остатке:

Для высотомера - оценка "пять с минусом". Минус - за траблы с INT1/INT2.
Для вариометра - оценка "четыре с минусом". Сделать можно, получится даже лучше чем "вариометр-будильник". Но я ожидал меньших шумов по выходу.
 
Назад
Вверх