Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Абсолютный датчик давления MS5611

Форум самогонщиков Приборы и электр(он)ика
1 2 3 1
makh Профессор Sаmara 2.1K 1.1K
30 Апр. 19, 03:31
Несколько месяцев назад, в процессе вялотекущего обмена репликами вокруг оборудования для вакуумных дел, Игорь232 дал наводку на MS5611-01BA03. Написанное по ссылке сильно понравилось, и тому были причины.
Во-первых, ТТХ -- разрешение 1 Па (10 см воздуха) и рабочий диапазон (1-120[1] КПа), как бык овцу покрывающий любые хотелки самогонщика, от совсем холодного вакуума до эмульгационных колонн высокого давления.
Во-вторых, конечно же, индивидуальная заводская калибровка, что есть особо привлекательно в контексте отсутствия "эталонных" измерительных средств для самостоятельной калибровки. Даже звучат предложения калибровать градусники по этому датчику ,)

Китаец продает удобный модуль GY-63, вполне бюджетно, можно брать и радостно пользоваться[2], предварительно научив электронику работать с этим девайсом.

Далее речь пойдет о том, что можно предпринять, чтобы не учить электронику лишнему. У этой хотелки тоже есть причины.
В некоторые из используемых автоматов код работы с датчиком просто не войдет, где-то не хватит памяти, где-то не хватит скорости, где-то концептуально не подружится. От некоторых девайсов утеряны исходники, некоторые васче китаец с али послал.
Но! У них у всех есть нечто общее -- способность работать с градусниками DS18B20. Т.е., если бы у бабушки был градусник вместо цельсиев показывал килопаскали, то это был бы манометр .) Берем микропроцессор ATtiny85, с одной стороны учим его читать MS5611, с другой прикидываться 1Wire-градусником. Который показывает килопаскали, а не цельсии -- автоматам без разницы, гуманоид в курсе..

Да, разрешение DS18B20 в 62.5 раза ниже, чем у MS5611 (0.0625КПа vs 0.001 КПа). Но, как бы, не сильно-то и надо -- все-равно в тех отрезанных битах шум большей частью. Зато легким пинком можно превратить китайский термостат в вакуум-контроллер, например. Конечно, если сильно хочется, то можно выдавить из него оригинальное разрешение, см. исходник.

Вариант реализации:

dscf1809.jpg
Dscf1809. Абсолютный датчик давления MS5611. Приборы и электр(он)ика.
dscf1790.jpg
Dscf1790. Абсолютный датчик давления MS5611. Приборы и электр(он)ика.
dscf1804.jpg
Dscf1804. Абсолютный датчик давления MS5611. Приборы и электр(он)ика.
dscf1797.jpg
Dscf1797. Абсолютный датчик давления MS5611. Приборы и электр(он)ика.


Сложнейшая схема устройства:

circuit.png Абсолютный датчик давления MS5611
circuit.png Абсолютный датчик давления MS5611. Приборы и электр(он)ика.


Прошивка (hex) в аттаче. Там же исходник и правленные файлы из OneWireHub.
Asus Доцент Москва 1.4K 691
Отв.1  03 Мая 19, 09:59
способность работать с градусниками DS18B20makh, 30 Апр. 19, 03:31
А как ты решил сделать узел индикации и исполнительной коммутации?
makh Профессор Sаmara 2.1K 1.1K
Отв.2  03 Мая 19, 11:44
Asus, так весь этот цирк с далласовским интерфейсом и был для того, чтобы ничего такого не делать, а пользовать то, что уже есть.
makh Профессор Sаmara 2.1K 1.1K
Отв.3  04 Мая 19, 17:54
Еще несколько моментов, о которых забыл упомянуть выше.

Самописный мастер может идентифицировать устройство по ROM-коду и читать скратчпад через 40+ мс после команды CONVERT_T (700+ мс у настоящего DS18B20).

SEARCH_ALARM функционал DS-ки не имплементирован (в HIRES-режиме байты TL и TH скратчпада могут быть использованы самописным мастером для получения цифры высокого разрешения).

Светодиод включается при получении CONVERT_T и выключается при получении READ_SCRATCHPAD, т.е. простенький такой, но эффективный отладочно-мониторинговый инструмент.

На схеме забыт 100н конденсатор между ножками питания тиньки.

Ну и собственно по ТТХ датчиков MS5611 несколько картинок -- три штуки на шине, атмосферное давление и откачка в нижнюю часть диапазона. Разница в показаниях есть, и по всему диапазону она стабильна. Вспоминая подобные опыты с другими датчиками -- очень неплохо, скорее очень даже хорошо.

1.png
1. Абсолютный датчик давления MS5611. Приборы и электр(он)ика.
2.png
2. Абсолютный датчик давления MS5611. Приборы и электр(он)ика.
3.png
3. Абсолютный датчик давления MS5611. Приборы и электр(он)ика.

makh Профессор Sаmara 2.1K 1.1K
Отв.4  29 Февр. 20, 03:11
У буржуйских продаванов радиодеталей (farnell, mouser, и т.д.) датчик MS5611 стоит 12+ евроденег в розницу, не считая еще 8-20 тех же денег за доставку.
А китаец продает за 5 баксов с обвеской и доставкой. И, как очередной раз подтверждается, продает фабричную отбраковку .)

Купил поиграться еще 4 модуля. Два как все, а еще два -- деленные на два:

u2.png
U2. Абсолютный датчик давления MS5611. Приборы и электр(он)ика.
u1.png
U1. Абсолютный датчик давления MS5611. Приборы и электр(он)ика.


Т.е. впринципе пользоваться можно, разрешение в два раза ниже.. Но все равно фигня какая-то..
Неужели придется учиться паять мелкоту, которую глаза уже не видят? ,)

Добавлено через 10мин.:

Насколько с полтыка понятно, одна из 16-тибитных калибровочных цифирь, читаемых из ROM двтчика, сдвинута на бит влево.. Прошито криво, или ошибается при выдаче в шину..
А если так, то нельзя исключать возможность того, что будет что-то не так с еще какой-нибудь калибровочной цифрой, влияние которой на результат не будет вот так хорошо заметно невооруженным глазом.
Вобщем, измерительный кремний лучше брать у буржуев. Покупать микроскоп и учиться паять мелкоту .)
Любитель_выпить Магистр Где-то на севере 225 91
Отв.5  02 Марта 20, 08:41
Прошито криво, или ошибается при выдаче в шину..makh, 29 Февр. 20, 03:11
Очень часто такая ошибка возникает при неправильной настройке SPI - не теми фронтами работает!
Сам использую такие датчики - все отлично.
Asus Доцент Москва 1.4K 691
Отв.6  02 Марта 20, 09:21, через 41 мин
неправильной настройке SPIЛюбитель_выпить, 02 Марта 20, 08:41
Володя, начав говорить, никогда не обрывай свою мысль на половине, но показывай товарищам её основания для верного восприятия твоей идеи, практики или догадки. Не все владеют тонкостями темы по умолчанию.
Что значит настройка SPI, это SCLK или SCK, "железная" крутизна фронтов, их фазы, или ты имеешь ввиду передние vs задние?
И что конкретно надо посмотреть и исправить?
Давай, выкладывайся уже до конца оснований, а то ветер унесёт твои слава как пустые для большинства жителей форума.
makh Профессор Sаmara 2.1K 1.1K
Отв.7  03 Марта 20, 00:50
при неправильной настройке SPIЛюбитель_выпить, 02 Марта 20, 08:41
Я их по двухпроводному интерфейсу пользую.. Три I2C библиотеки перепробовал, везде одинаковый результат.. Попробую, конечно, и по SPI прочитать..

Вчера купил десяток чипов у фарнела и заказал платы, сделаю свой модуль, с блэкджеком и шлюхами.. )
makh Профессор Sаmara 2.1K 1.1K
Отв.8  03 Марта 20, 01:04, через 14 мин
Ах да, забыл еще интересное рассказать.. На самом деле, диапазон у датчика этого шире, чем написано в даташите. Превысил по неосторожности..
Как минимум 127+49 верхний потолок, а может и больше. Неизвестно, какая там точность, но цифра есть, можно проверить..

PGK_20200302_225937.png
PGK_20200302_225937. Абсолютный датчик давления MS5611. Приборы и электр(он)ика.
Любитель_выпить Магистр Где-то на севере 225 91
Отв.9  03 Марта 20, 08:47
Что значит настройка SPI, это SCLK или SCK, "железная" крутизна фронтов, их фазы, или ты имеешь ввиду передние vs задние?Asus, 02 Марта 20, 09:21
Мастер SPI по клоку может 4 режима иметь - передача по переднему заднему фронту + начальный уровень высокий или низкий. Надо внимательно читать описание на микросхему и настраивать правильно.

makh, при использовании I2C немного проще - там все стандартизовано. Главное скорость не превысить.
Попробуй сделать подряд несколько чтений массива коэффициентов и сравни их.
Три I2C библиотеки перепробовалmakh, 03 Марта 20, 00:50

Ничего не могу по этому сказать, как там сделано - я сам всегда пишу для себя библиотеки.
Если есть возможность "снять" посылку анализатором - тогда проще что говорить.
Попробую, конечно, и по SPI прочитать..makh, 03 Марта 20, 00:50
Попробуй, и если это ошибка в кристалле - выявится сразу.
Не забудь отписаться потом - интересно.

Использую BMP280 в системе (еще 1 шт в другом устройстве) - проблем с коэффициентами не было (протокол SPI, т.к. расстояние до датчика маленькое).
Еще 2 шт BME280 в сушильной камере - тоже никаких проблем (протокол I2C - датчики выносные на 5 метров)
А на вакууме - именно этот датчик по SPI.
У этих датчиков пакеты близкие.
makh Профессор Sаmara 2.1K 1.1K
Отв.10  03 Марта 20, 15:10
Скорость шины менял по-всякому, серию циклов чтения ROM тоже делал -- все то же самое.. SPI еще не пробовал, но даже если там получится, все-рано не попользуюсь, оно мне на двухпроводной шине надо.. Год назад брал пять датчиков от того же продавана, все были в порядке, ну а в этот раз не выиграл в китайскую лотерею )

Добавлено через 14ч. 36мин.:

I2C - датчики выносные на 5 мЛюбитель_выпить, 03 Марта 20, 08:47
Ой, а можно подробнее? Пятивольтовая шина? Кабель, и прочие нюансы?
Помню как нервничал когда делал двухметровые концы из витухи, не ожидал стабильной работы, да еще в условиях всякого рода помех от регуляторов мощи, а оно работает .) Но пять метров.. У..
Любитель_выпить Магистр Где-то на севере 225 91
Отв.11  04 Марта 20, 11:21
Ой, а можно подробнее? Пятивольтовая шина? Кабель, и прочие нюансы?makh, 03 Марта 20, 15:10
Поясню - 5 метров на сушильном шкафе, там нет силовых регуляторов с большой мощностью.
Кабель обычный многожильный UTP - две пары на клок и данные, две на землю и питание.
Питание 5 вольт. Подключены напрямую на ноги STM32f103 (на те что выдерживают 5 вольт питания).
I2C делал сам специально программно, чтобы чтение каждого бита делать не 1 раз а 3!!! (Но это похоже перестраховка была)
Скорость снижал до 100.
Резисторы подтяжки из расчета МАХ тока на вывод датчика (у меня 3 мА).
m16 Модератор Тамбов 1.9K 1K
Отв.12  04 Апр. 20, 20:15
Насколько с полтыка понятно, одна из 16-тибитных калибровочных цифирь, читаемых из ROM двтчика, сдвинута на бит влево.. Прошито криво, или ошибается при выдаче в шину..makh, 29 Февр. 20, 03:11
какой из С1...С6 ?
Вчера купил десяток чипов у фарнела и заказал платы, сделаю свой модуль, с блэкджеком и шлюхами.. )makh, 03 Марта 20, 00:50
и что фарнеловские кажут?

в наличии 3 платы GY63, мега128, интерфейс I2C, SCLK=100кгц. пока гоняю на атмосферном. все три показывают одинаковую температуру и атм давление но присутствует непонятный баг . что бы считать коэффициент нужно выдать команду затем считать два байта так же и данные ацп температуры и давления. так вот после каждой операции чтения/записи модуль TWI меги выдаёт ошибки, если отладчиком шагать по операциям чтения/записи то ошибок нет. опытным путём после каждой операции добавил задержку в 3,6мС (Карл!!!) всё стало чики-пуки , датчик читается без ошибок. как бы с дровами I2C всё ОК, потому как на шине висят DS1307, BMP180, 24C32 и с ними всё нормально всё по даташиту , сижу уши ломаю.
makh Профессор Sаmara 2.1K 1.1K
Отв.13  04 Апр. 20, 21:12, через 57 мин
какая изm16, 04 Апр. 20, 20:15
Счас вот с полтыка уже не вспомню. Завтра по идее будет время подключу еще раз.
что фарнеловские кажутm16, 04 Апр. 20, 20:15
Лежат датчики, лежат платы, надо ехать к паяльщикам.. У которых вдруг прибавилось работы, совершенно непонятным на общем фоне образом.. Психовирус этот.. Больше двух не собираться и из дому только на работу.. Так что ждем-с чем этот цирк закончится.. Так же лежат Si7051, тоже интересная тема..
что бы считать коэффициент нужно выдать команду затем считать два байта так же и данные ацп температуры и давленияm16, 04 Апр. 20, 20:15
ИМХО, после чтения каждого коэффициента не надо читать АЦП.. Читаем все C1-C6, а потом уже занимаемся давлением и температурой.. По крайней мере я их так понял.. Подключал и к 328-й меге с ардуиновской Wire-либой, было все гладко..

Добавлено через 14мин.:

Еще один момент есть с этими датчиками.. Если опрашивать с малым интевалом (от десятков до нескольких сотен мс), то показания будут другими, нежели с опросом раз в секунду, например. С некоторыми интервалами будут стабильно другими, с некоторыми будут за несколько десятков сек сползать от "нормальных" к "другим" или наоборот.. И даташит не дает ответов на вопрос, как же правильно его надо опрашивать.. Не нашол по крайней мере.. С одной стороны нефик его греть, с другой -- оно по дизайну альтиметр, для дронов наверное, там наверное скорость опроса покритичней чем в нашем случае..
m16 Модератор Тамбов 1.9K 1K
Отв.14  04 Апр. 20, 21:34, через 23 мин
Читаем все C1-C6, а потом уже занимаемся давлением и температурой.makh, 04 Апр. 20, 21:12
разумеется так и делаю, естественно коэффициенты читаются один раз при включении а далее только ацп. СRC-4 не считаю , муторно везде пишут об алгоритме, забил. а ты не пробовал код из AN-520? там правильный эмбеддерский код без всяких глючных либ, кроме математики.

ENG_SS_AN520_C-code_example_for_MS56xx_A.pdf
makh Профессор Sаmara 2.1K 1.1K
Отв.15  04 Апр. 20, 21:54, через 20 мин
Не пробовал, не доковырял до этого док-та..
 D2=cmd_adc(CMD_ADC_D2+CMD_ADC_4096); // read D2
D1=cmd_adc(CMD_ADC_D1+CMD_ADC_4096); // read D1
Т.е. они сперва читают температуру, а потом давление.. В даташите не так, и может быть оно пофик..
А в cmd_adc() у них нет прописанной в даташите паузы (что-то порядка 8 мс для 4096 сэмплов, не помню точно) после i2c_send(CMD_ADC_READ), что уже выглядит странно, ибо помню как у мну без этой задержки не хотело.. Не там смотрел, все есть..
m16 Модератор Тамбов 1.9K 1K
Отв.16  04 Апр. 20, 22:20, через 27 мин
в шите
The MS5611-01BA has only five basic commands:
1. Reset
2. Read PROM (128 bit of calibration words)
3. D1 conversion
4. D2 conversion
5. Read ADC result (24 bit pressure / temperature)
но я думаю это не принципиально

(что-то порядка 8 мс для 4096 сэмплов, не помню точно) послеmakh, 04 Апр. 20, 21:54
я изначально ввёл задежку в 10мС с запасом.

Добавлено через 1ч. 5мин.:

интересные вещи наблюдаю: поочерёдно опрашиваются два датчика BMP180 и MS5611-01BA03. разность давлений 0,1 мм рт ст , разность температур 1,6°С
makh Профессор Sаmara 2.1K 1.1K
Отв.17  05 Апр. 20, 06:24
будет время подключуmakh, 04 Апр. 20, 21:12
BD12 C83A 73C7 6952 7EA0 6BDA
CFED D1B4 7F77 7AB5 7EAA 69A8
C7F5 C15C 7B6C 6E28 7E81 6A45
93EE 8868 5EBC 5581 7FF8 7002
9920 90F4 6222 5E0F 84A0 6DF0
Первый - из купленных год назад, на фотке с желтыми дырками. Остальные куплены в этом году у того же продавана. Последние два показывают половину давления. Выразительные отличия в двух первых коэффициентах, да и в третьем тоже.. И это не потеря бита, как с перепугу показалось.. У второго с третьим разница по давлению единиц триста, если не больше.. Очень хочется сравнить с кучкой "фирменных"..

modules.jpg
Modules. Абсолютный датчик давления MS5611. Приборы и электр(он)ика.


Добавлено через 14мин.:

разность температур 1,6°Сm16, 04 Апр. 20, 22:20
Это, ИМХО, цифра интересная только в контексте температурной компенсации цифры давления.. Массогабариты модульков разные, теплообмены с окружающей средой тоже, греться могут по-разному.. Обвеска всякая может греть, LDO например рядом с датчиками..

Поднимать-опускать датчики на длинных проводах не пробовал? И в самом деле можно альтиметр колдырить, никогда б не подумал..
m16 Модератор Тамбов 1.9K 1K
Отв.18  05 Апр. 20, 22:18
о задежке в 3 мС в шите ни слова, не зря я их натыкал, блин. что зачит хорошая документация у боша - заводится с полтыка, а здесь нужно изгаляться.
//******************************************************** 
//! @brief send reset sequence
//!
//! @return none
//********************************************************
void cmd_reset(void)
{
      i2c_send(CMD_RESET);          // send reset sequence
      _delay_ms(3);                  // wait for the reset sequence timing
}
makh Профессор Sаmara 2.1K 1.1K
Отв.19  05 Апр. 20, 23:17, через 60 мин
Из исходника в начале темы.. Где-то что-то есть про 3 мс, не сам же я выдумал.. Но только после ресета..
  ms5611_write_8(0x1e);         // reset
  delay(3);                    // 2.8ms, fig.5