Автор Тема: Цифровой датчик давления для РОСЫ  (Прочитано 543 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн BeatonАвтор темы

  • Опытный
  • ***
  • Сообщений: 340
  • Спасибо
  • -Отправлено: 119
  • -Получено: 190
Всем привет, Друзья!

Да простит меня Игорь, что замахнулся на святое, но карантин даёт о себе знать. От скуки решил сделать цифровой датчик давления для РОСЫ с реакцией на превышение порога давления  + термометр на базе DS18B20. Рабочее название – DDT (Датчик Давления, Термометр). Значение давления и температуры выводится циклически с интервалом 3 секунды.




Возможности:
1)   Показывает давление от 0 до 400 мм. водяного столба . Точность рабочего диапазона 200-400 мм. вод. столба  +/- 0,7 %. Датчик опрашивается каждые 6 секунд 50 раз, потом из массива результатов выводится усредненное медианное значение приведенное к единицам  мм.вод. столба.
2)   Показывает, что произошло с давлением по отношению к предыдущему значению. В первой ячейке дисплея выводится либо верхняя черточка (повысилось) либо нижняя черточка (понизилось) либо верхняя и нижняя одновременно (давление без изменений).
3)   При превышении порога 400 мм. вод. столба срабатывают выходы реле, которые замыкают порт «ПОТОП» на РОСЕ, останавливая таким образом нагрев. При этом на экран DDT выводится надпись “STOP”. DDT остается в таком состоянии до его перезагрузки. Для перезагрузки достаточно выключить и включить питание.
4)   Показывает температуру с датчика DS18B20 в интервале 0 – 99,9 градусов Цельсия.  Датчик опрашивается с интервалом 6 секунд и возвращает значение с разрешением 12 бит.  Выводит значение в виде 26:5 и знак градуса. Десятичные значения температуры отделены двоеточием. Если температура ниже нуля на экране пишется “t Lo”, если больше 99.9, то выводится “t hi”.

Для сборки ДДТ необходимо:
- Плата ARDUINO NANO V3.0 с преобразователем CH340G ~ $3.5 - http://www.kosmodrom.com.ua/prodlist.php?name=Arduino%20Nano%20v3.0%20Blue
- Кабель miniUSB для ее прошивки и дальнейшего подключения к питанию (обычно идет в комплекте с Arduino) ~ $0,3 - http://www.kosmodrom.com.ua/el.php?name=CabUSBAMiniUSB0.8
- Зарядное от телефона с портом USB. Максимальное потребление этого устройства - 150мА
- Двухканальный релейный модуль  2-Channel 5V Relay Module for Arduino ~ 1,2$ - http://www.kosmodrom.com.ua/el.php?name=2CH5VRMA
- Датчик малых давлений MPX5010DP ~14$ - http://www.kosmodrom.com.ua/el.php?name=MPX5010DP
- Светодиодный индикатор четырехсимвольный на TM1637 c разделителем двоеточие (Clock) ~ 1,7$ - http://www.kosmodrom.com.ua/el.php?name=4-DigitGREEN30x14Clock
- Резистор постоянного сопротивления 4,7 Ком любой мощности ~ 0,1$ - https://radiodetali.com.ua/product/rezistor-06-vt-47-kom-1-d2-l6-mf06w-15871
- Герметичный датчик температуры на базе DS18B20 (1 метр) ~ $1,3 - http://www.kosmodrom.com.ua/el.php?name=DS18B20-1M-TUBE-IP67
- Набор проводов-перемычек различной длины. 13 видов по 10 шт, ну или кусок провода монтажного ~ $0,7 -  http://www.kosmodrom.com.ua/el.php?name=KIT-WIRE-130PCS
- Корпус и разъемы подключения всего этого добра подбирается под свой вкус на том же Космодроме.

Так же надо кусачки, термоусадка, паяльник, припой и флюс.

Сборка производится согласно картинке-схеме ниже. Цветовая маркировка проводов гильзованного датчика DS18b20 соответствует цветам соединений на картинке. Если применяется безкорпусной датчик – выводы обозначены на схеме. При подключении датчика давления MXP5010DP обратите внимание на правильное его расположение – ножка с выборкой в виде полумесяца должна быть слева, к ней надо подключать минус питания – черный провод на рисунке. На релейном модуле перемычкой должны быть закорочены ноги JD-VCC и VCC.

86518-0

Далее надо записать исполняющий код в Ардуино.  Займет это меньше минуты, со всеми настройками программы.

NOTE: По хорошему, еще надо внести правильный офсет для вашего датчика в текст программы и записать программу заново. Но так как этот офсет гуляет туда-сюда на 10 единиц, это будет вносить дополнительную погрешность  в 10 мм.вод. столба или дополнительные 3,5% погрешности. Цифра не критична и в принципе можно на эту манипуляцию забить, но я ее всё равно опишу.

Что нам надо для залива прошивки:
0) Принять на грудь 378 грамм хорошего крепкого напитка. При меньшей дозе страх побеждает интерес и ничего не получается.
1) Программное обеспечение ARDUINO IDE, скачиваем отсюда, раздел  Download the Arduino IDE, выбираете вашу операционную систему -  https://www.arduino.cc/en/main/software
2) Драйвер для ARDUINO NANO V3.0 с преобразователем CH340G – где его скачать и как его установить описано здесь - https://myrobot.ru/downloads/driver-ch340g-arduino.php
3) 3 библиотеки для компилирования кода программы - GyverTM1637.h.zip, OneWire.h.zip, DallasTemperature.h.zip  и код исполняемой программы DDT.ino.  Все они в архиве внизу сообщения.


Действия для записи прошивки:


1)   Устанавливаем Драйвер для ARDUINO NANO V3.0 с преобразователем CH340G (см выше)
2)   Устанавливаем ARDUINO IDE, заходим в папку с программой запускаем файл  «arduino.exe» (имя может быть просто «arduino» без exe.)
3)   Подключаем библиотеки – верхнее меню программы  - > нажимаем  «Скетч» -> «Подключить библиотеку» -> «Добавить .zip библиотеку» . Таким образом подключаем по очереди все 3 библиотеки.
4)   Открываем код программы  «Файл» -> «Открыть» -> выбираем файл с архива «DDT.ino» и нажимаем «Открыть».
Далее работаем с окном в котором открылся текст программы:
5)   Подключаем плату ARDUINO NANO кабелем mini USB к компьютеру.
6)   Выбираем плату Ардиуино , ее порт и загрузчик для работы – верхнее меню программы-> «Инструменты» -> «Плата» -> выбираем ARDUINO NANO. Чуть ниже «Процессор» -> выбираем ATMega328P (old bootloader). Еще ниже – «Порт» -> выбираем «Com 5»  (ЦИФРА МОЖЕТ БЫТЬ ЛЮБОЙ ДРУГОЙ!). И предпоследний пункт – «Программатор» -> выбираем «USBtinyISP».
7)   Проверяем корректность подключения – верхнее меню программы-> «Инструменты» -> «Получить информацию о плате». При корректном подключении появится окошко с очень мелким текстом где будет написано что-то типа такого: «BN: Неизвестная плата VID: 1A86  PID: 7523 SN: Загрузить любой скетч, для использования.». Это значит что все  получилось настроить и можно записывать прошивку.
8 )   Для записи прошивки - верхнее меню программы-> «Скетч» -> «Загрузка». Дождаться загрузки, внизу окна с текстом программы будет написано «Загрузка завершена».
9)   Программа записана, плата готова к работе.

P.S. Как ранее обещал, для любителей точности расcказываю как выставить правильный офсет:
1)   В 19 строчке текста программы int offset = 43; // офсет датчика в ед. с порта без давления число 43 меняем на 0.
2)   Записываем программу в Ардуино
3)   После записи запускаем последовательный монитор порта – нажимаем Ctrl+Shift+M или нажимаем вверху программы «Инструменты» -> «Монитор порта»
4)   В открывшемся окне  в столбик каждые 6 секунд будет появляться отрицательная цифра (скорей всего эта цифра будет от -40 до -50.
5)   В 19 строчке текста программы  int offset = 43; // офсет датчика в ед. с порта без давления ранее установленное число 0 меняем на это число БЕЗ ЗНАКА МИНУС (если выводит -46, то пишем 46).
6)   Записываем программу в Ардуино


Дисклеймер: Сразу приношу извинения перед гуру программирования за «говнокод». До этого с программированием не сталкивался (разве что примитивные вещи в Blynk), изучить программирование ARDUINO и написать этот код у меня заняло две ночи. Можете использовать/исправлять/модифицировать/улучшать этот «говнокод» как желаете.

Важный момент - Игорь предупредил что при закипании возможен краткосрочный подъем давления выше критического, что может вызвать отключение РОСЫ из за команды "Потоп". Я промониторю этот момент. Если такое будет наблюдаться  скорей всего можно подключить датчик к порту включения клапана воды, чтобы нивелировать этот момент.
« Последнее редактирование: 01-04-2020, 17:57:26 от Beaton »

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 15299
  • Спасибо
  • -Отправлено: 1106
  • -Получено: 9560
  • Думи мої думи...
    • Каптерка
К входам датчика потопа можно подключать что угодно "сухоконтактное" и в любом количестве. Как только сопротивление между входами станет меньш мегаома (или двух?), Роса насторожится, а через 7 секунд остановит нагрев, отбор и воду, и станет бимбомкать в звонок.


Но я бы не тал использовать схемы с релюхами, которые могут дать искру, причем в самый неподходящий момент. Да и вообще - не вижу смысл использовать что-то сложное, целую плату, если можно обойтись одной - двумя детальками.


МУП дает сигнал Росе на остановку с поимощью всего двух деталек. Если эту схемку передачи сигнала использовать в ДДТ, то она упростится до такого вида.




Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 15299
  • Спасибо
  • -Отправлено: 1106
  • -Получено: 9560
  • Думи мої думи...
    • Каптерка
Кроме того... схема потопа в Росе питается от отдельного 5-вольтового источника питания, который легко даст 300-500 миллиампер. В некоторых Росах использованы блоки на 4,2 вольта, но и это напряжение вполне подойдет для питания ардуинки. Его можно взять прямо с контактов потопа на мозгах Росы. 
В этом случае схему передачи сигнала Росе можно вообще упростить до одного резистора.
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн BeatonАвтор темы

  • Опытный
  • ***
  • Сообщений: 340
  • Спасибо
  • -Отправлено: 119
  • -Получено: 190
Кроме того... схема потопа в Росе питается от отдельного 5-вольтового источника питания, который легко даст 300-500 миллиампер. В некоторых Росах использованы блоки на 4,2 вольта, но и это напряжение вполне подойдет для питания ардуинки. Его можно взять прямо с контактов потопа на мозгах Росы. 
В этом случае схему передачи сигнала Росе можно вообще упростить до одного резистора.

Игорь, сппасибо за комментарии. Реле и все остальное применил потому что это все валалось под рукой :). Согласен с тобой что физически размыкающихся контактов в схеме быть не не должно, если есть риск появления паров, что могут возгореть.
Я не знал что в РОСЕ есть внутренне питание потопа от 5 вольт. Если есть внутренне питание это супер! Я себе внутри городил БП.
Правда 4,2 вольта - этого мало для питания MPX5010dp, для него нижний рекомендуемый предел 4,6 вольт. Можно добавить повышающий модуль за 0,25$ - http://www.kosmodrom.com.ua/el.php?name=DC-DC-BOOST-MOD-GREEN-0.9V-5V

А можешь в кратце описать алгоритм подключения к внутреннему БП РОСЫ  (нужна ли разборка?) и реакцию на потоп? Получается надо чтобы на пине АРДУИНО появился высокий уровень и его через 1кОм резистор завести на пин "Потоп" Росы ?

Оффлайн Игорь

  • Администратор
  • Эксперт
  • *****
  • Сообщений: 15299
  • Спасибо
  • -Отправлено: 1106
  • -Получено: 9560
  • Думи мої думи...
    • Каптерка
Можно добавить повышающий модуль за 0,25$
Нет. Нужно не городить этажи, а просто выбросить из Росы 4,2-вольтовую зарядку и поставить 5-вольтовую.
Я не знал что в РОСЕ есть внутренне питание потопа от 5 вольт.
Роса использует бестрансформаторное питание, поэтому ее ноль соединен с сетью. С фазой или с нулем, в зависимости от того, как ты воткнешь сетевую вилку. В такой ситуации невозможно сделать безопасный датчик потопа без отдельного источника питания. В Росе в его качестве использованы копеечные китайские зарядки, какие попадутся, на 4,2 или на 5 вольт.


Дальше.
Есть два варианта Росы. Ранний имел 5 винтовых разъемов на верхней стороне коробочки мозгов, нынешний имеет 6. Я опишу действия для 6-контактного (их больше). Понадобится информация для 5-контактного - разберемся.


Назначение контактов на мозгах Росы расписано и отмечено на наклейках возле контактов. Питание можно взять с контактов плюса и минуса для линии потопа, пин потопа подключить к среднему контакту, параллельно штатному проводу датчика потопа через редистор на 10-100 килоом. Надо поиграться.


По твоему алгоритму...  есть непонятные моменты, но это потом. Есть вопрос. Сколько стоит такая ардуиновская плата и нет ли желания избавиться от проводов для изменения прошивки?

« Последнее редактирование: 02-04-2020, 17:07:36 от Игорь »
Не тот глуп, кто не знает, но тот, кто знать не хочет.
Григорий Сковорода

Оффлайн BeatonАвтор темы

  • Опытный
  • ***
  • Сообщений: 340
  • Спасибо
  • -Отправлено: 119
  • -Получено: 190
Можно добавить повышающий модуль за 0,25$
Нет. Нужно не городить этажи, а просто выбросить из Росы 4,2-вольтовую зарядку и поставить 5-вольтовую.
Я не знал что в РОСЕ есть внутренне питание потопа от 5 вольт.
Роса использует бестрансформаторное питание, поэтому ее ноль соединен с сетью. С фазой или с нулем, в зависимости от того, как ты воткнешь сетевую вилку. В такой ситуации невозможно сделать безопасный датчик потопа без отдельного источника питания. В Росе в его качестве использованы копеечные китайские зарядки, какие попадутся, на 4,2 или на 5 вольт.


Дальше.
Есть два варианта Росы. Ранний имел 5 винтовых разъемов на верхней стороне коробочки мозгов, нынешний имеет 6. Я опишу действия для 6-контактного (их больше). Понадобится информация для 5-контактного - разберемся.


Назначение контактов на мозгах Росы расписано и отмечено на наклейках возле контактов. Питание можно взять с контактов плюса и минуса для линии потопа, пин потопа подключить к среднему контакту, параллельно штатному проводу датчика потопа через редистор на 10-100 килоом. Надо поиграться.


По твоему алгоритму...  есть непонятные моменты, но это потом. Есть вопрос. Сколько стоит такая ардуиновская плата и нет ли желания избавиться от проводов для изменения прошивки?



Игорь у меня Роса с номером 588, там винтовая колодка на 6 разьемов. Нет ли у меня желания избавится от проводов? Есть конечно! Ради этого все и затевалось,  особено после того как мне дважды на ногу напоромер упал..... Я тебя наберу, поговорим оба этом.