САМОВАР 
×
Меню

Настройка скетча

 
Для  настройки скетча под вашу конфигурацию оборудования нужно открыть в  Arduino IDE и внести изменения в файл Samovar_ini.h
В Arduino IDE открываем файл Samovar.ino из каталога ...\Documents\Arduino\Samovar\.
При этом в Arduino IDE загрузятся все файлы находящиеся в каталоге ..\Documents\Arduino\Samovar\
В верхней строке Arduino IDE находите вкладку Samovar_ini.h и приступаете к редактированию.
 
 
 
Для того чтобы строка кода не компилировалась и соответственно не выполнялась Самоваром, нужно поставить перед строкой символы // (закомментировать).
И наоборот, чтобы строка выполнялась нужно убрать символы // (раскомментировать)
Рекомендуется исключить из выполнения именно те строки, которые относятся к отсутствующему оборудованию, а не отключать подряд все те параметры, которые как вы считает вам не понадобятся.
Для удобства код в файле разделен на блоки.
 
Блок
//Выбор используемой платы ESP32
//********************************************
//#define BOARD DEVKIT
//#define BOARD LILYGO
//#define BOARD ESP32S3
//********************************************
Следует пропустить.
 
Редактирование значений и включение/отключение строк кода можно начинать со строки:
 
//Температура воды, при достижении которой будет оповещен оператор
#define ALARM_WATER_TEMP 70
Где, 70 - это температура в градусах Цельсия. При достижении которой будет сообщение о критической температуре охлаждающей жидкости (далее ОЖ). Если используется зуммер и в интерфейсе включена нотификация событий - Самовар дополнительно оповестит звуком. Оповещения будут приходить постоянно, пока не снизится температура. Если хотите, чтобы оповещение приходило на другую температуру - корректируете цифру 70.
 
//Максимальное значение температуры воды, при котором выключится питание
#define MAX_WATER_TEMP 75
При достижении температуры ОЖ 75° Самовар даст команду отключить нагреватель.
 
//Максимальное значение температуры пара, при котором выключится питание
#define MAX_STEAM_TEMP 98.8
При достижении температуры датчика пара 98.8° Самовар даст команду отключить нагреватель.
 
//Максимальное значение температуры в ТСА, при котором выключится питание
#define MAX_ACP_TEMP 75
При достижении температуры датчика на ТСА 75° Самовар даст команду отключить нагреватель. (дополнительно см. Уставка датчика ТСА)
 
//Значение температуры датчика пара, при котором колонна перейдет из режима разгона в рабочий режим
#define CHANGE_POWER_MODE_STEAM_TEMP 39
При достижении температуры датчика пара (или на верхнем датчике в царге) 39° Самовар даст команды регулятору "стоп разгон" и установит на регуляторе напряжение указанное в первой строке программы отбора.
 
//Значение температуры датчика в кубе, при котором откроется клапан подачи воды и включится насос подачи воды
#define OPEN_VALVE_TANK_TEMP 80
При температуре куба 80° будет дана команда на открытие клапана подачи воды, одновременно будет подан управляющий сигнал ШИМ на включение насоса и послано сообщение оператору о необходимости открыть воду.
Сообщение посылается в любом случае, даже если не используется ни насос, ни клапан или вода уже открыта.
 
#define DELTA_T_CLOSE_VALVE 20
//Разность между заданной Т охлаждения воды и Т воды, до которой будет работать насос после завершения процесса перегонки в режимах дистилляции и ректификации. Значение в градусах С°, можно менять.  Отключать крайне не желательно.  (подробнее см. здесь)
 
//Нижнее значение (в процентах), для работы ШИМ-регулятора для насоса. Необходимо подобрать такое значение, которое обеспечивает поток воды
#define PWM_LOW_VALUE 10
Как известно двигателю для старта нужно напряжение больше, чем для поддержания работы. В данной строке выставляется минимально возможное значение (в процентах) при котором двигатель может поддерживать работу насоса подачи воды и при этом не останавливаться.
 
//Нижнее значение (в процентах), с которого начнет работать ШИМ-регулятор для насоса. Необходимо подобрать такое значение, которое гарантированно обеспечивает запуск мотора
#define PWM_LOW_VALUE 20
Значение в % от номинального напряжения, при котором двигатель насоса гарантированно стартует.
Т.е если ваш насос (при условии, что он уже установлен в системе и в нем есть жидкость) уверенно начинает стартовать при подаче напряжения  от 4 вольт, а при меньшем не стартует, то при его номинальном напряжении 12 вольт, это составляет 30% от номинала. Значит цифру 20 нужно заменить на 30.
 
//Корректировка для угла поворота сервопривода.
int8_t servoDelta[11] = {0, -2, -3, -4, -3, -2, 0, 0, 0, 0, -2};
Корректировка угла поворота сервопривода стола разбора для точного позиционирования. Указывается в градусах. Каждая позиция корректируется индивидуально. От корректировки соседних позиций не зависит.
Например, если коромысло "проскочило" позицию №2 и мы ставим минус 10°, то это значение (-10) не нужно учитывать при корректировке позиции №3.
 
//Разница между целевой температурой и текущей температурой (для режимов пиво и су-вид), до достижения которой нагрев будет вестись на полную мощность (в режиме разгона).
#define HEAT_DELTA 1
Для режимов пиво и су-вид. Значение указывается в градусах Цельсия. Этот параметр относится к основному нагревателю. Означает, что нагрев на полную мощность будет до тех пор, пока разница между реальной температурой и заданной в строке программы затирания будет больше 1°. Как только разница будет меньше или равна указанной в #define HEAT_DELTA, регулятору будет дана команда снизить нагрев, чтобы плавно выйти на заданную температуру и/или сильно не превысить ее.
Если у вас достаточно мощный нагреватель следует увеличить значение, чтобы не "проскакивать" целевую температуру.
 
//Если разница между целевой температурой и текущей температурой (для режимов пиво и су-вид) больше заданной, то при использовании регулятора, управляемого по UART дополнительно реле №4 будет включать разгонный ТЭН, при разнице меньше разгонный ТЭН отключится
#define ACCELERATION_HEATER_DELTA 4
Для режимов пиво и су-вид. Значение указывается в градусах Цельсия Параметр относится исключительно к дополнительному нагревателю.
Если температура куба меньше целевой (в данном случае на 4°) включается дополнительный нагреватель.
 
//Температура кипения (для режима пиво)
#define BOILING_TEMP 98.9
Для режимов пиво и су-вид. Значение указывается в градусах Цельсия. Значение выставляется вручную и сообщает Самовару при какой температуре, на вашем оборудовании, началось реальное кипение в кубе. Значение влияет на алгоритм работы основного и дополнительного нагреватеря
 
 
Настройки использования подсистем Самовара
 
#define SAMOVAR_USE_BLYNK                   //использовать Blynk в проекте
Если не используете Blink данная строка должна быть закомментирована //.
 
#define BLYNK_SAMOVAR_TOOL "samovar-tool.ru" //использовать бесплатный сервер Blynk samovar-tool.ru вместо облачного Blynk
Если используете платный сервер Blink, а не сервер предоставляемый разработчиком строку нужно закомментировать .
 
//#define USE_MQTT    //использовать сохранение логов в облако.
 Для этого необходимо зарегистрироваться на сайте www.samovar-tool.ru и в редактировании своего профиля указать токен Blynk. Все логи с сообщения Самовара будут сохраняться и будут доступны на сайте через меню - Пользователь - Логи.
Если хотите чтобы логи сохранялись в облако, данную строку нужно раскомментировать. Более подробно в разделе - Логи и графики в облаке.
 
#define SAMOVAR_USE_POWER          //использовать регулятор напряжения KVIC в проекте https://alcodistillers.ru/forum/viewtopic.php?id=1524
//#define KVIC_USE_9600                      //использовать для регулятора KVIC скорость обмена по UART 9600 (новые версии), иначе использовать 38400
//#define SAMOVAR_USE_RMVK            //использовать в проекте регулятор напряжения РМВК с управлением по UART
//#define SAMOVAR_USE_SEM_AVR       //использовать в проекте регулятор мощности https://alcodistillers.ru/forum/viewtopic.php?id=1549 с управлением по UART
Блок выбора используемого регулятора. Описание в разделе: Используемые регуляторы напряжения
 
#define SAMOVAR_USE_POWER_START_TIME 2000    //задержка перед отправкой команды на разгон регулятору. Обеспечивает  «холодное» замыкание силовой цепи контактором.
Для избежание возникновения вольтовой дуги на силовых контактах контактора.   После команды «Включить нагрев» срабатывает реле №1 и включает контактор, который в свою очередь замыкает силовую цепь на нагреватель. Через заданное в миллисекундах время регулятор подает напряжение.
Отключение происходит в обратном порядке. Сначала напряжение отключается регулятором, а затем через время, размыкается контактор.
(См. Алгоритм подключения/отключения нагрузки)
 
#define USE_WATERSENSOR                      //использовать датчик потока воды охлаждения. Если используется - в случае отсутствия воды в течении заданного времени Самовар отключит нагрев колонны
Датчик потока работает по принципу датчика Холла. Если есть поток ОЖ Самовар получает периодические импульсы. Если импульсов нет или они приходят слишком редко Самовар отключит нагрев и пришлет оповещение.
 
#define WF_CALIBRATION 98                    //Значение на датчике потока F=98*Q(L/min), для другого датчика необходимо установить другое значение.
Корректировка датчика потока. Если через датчик пропустить 1л воды, то с него будет получено 5880 импульсов. В действительности количество импульсов на 1л будет разным при разных скоростях потока воды. Корректировку можно производить изменяя значение 98.
 
#define USE_HEAD_LEVEL_SENSOR                //использовать датчик уровня флегмы в голове (датчик P-N-P). Если используется - в случае срабатывания датчика, снизит напряжение на 2 вольта
Использовать датчик уровня флегмы, который при срабатывании имеет на выходе логическую единицу.
 
#define IGNORE_HEAD_LEVEL_SENSOR_SETTING //Если датчик флегмы используется, то игнорировать команду на отключение датчика в WEB-интерфейсе. (Если ее закомментировать, в интерфейсе, на вкладке Настройки появится галочка, которой можно включить или отключить использование датчика флегмы.)
 

Например.
Если строка
//define USE_HEAD_LEVEL_SENSOR // использовать датчик уровня флегмы... закомментированна, то датчик не используется, и в каком состоянии (закомментирована или раскомментрованна) следующая строка,  не имеет ни какого значения.
Если строка #define USE_HEAD_LEVEL_SENSOR раскомментированна, то учитывается состояние следующей строки:

  #define IGNORE_HEAD_LEVEL_SENSOR_SETTING -  Если раскомментированна, то галочки управления датчиком флегмы в WEB-интерфейсе   нет. Соответственно датчик из  WEB-интерфейса  отключить невозможно.
Если //#define IGNORE_HEAD_LEVEL_SENSOR_SETTING   закомментрованна, то использование  датчика уровня флегмы можно оперативно 
включать и отключать (п.5) из WEB-интерфейса.

 
//#define WHLS_HIGH_PULL                       //использовать датчик уровня жидкости N-P-N
Использовать датчик уровня флегмы, который при срабатывании имеет на выходе логический ноль.
  
#define USE_WATER_PUMP                       //использовать управление ШИМ для насоса для воды
Если насос для автоматического поддержания температуры ОЖ не используется, строку нужно закомментировать
 
//#define USE_WATER_VALVE LOW                  //использовать управление клапаном для регулировки напора воды
При использовании клапана байпаса - строку нужно раскомментировать. Клапан подключается вместо насоса. Работает по принципу термостата. Если температура превысит установленную - клапан откроется, когда температура станет ниже установленной - закроется. Подробнее здесь.
При использовании на магистрали байпаса нормально закрытого клапана, значение LOW нужно заменить на HIGH.
Если регулировка ОЖ производится вручную или каким-то сторонним устройством - обе строки нужно закомментировать.
 
//#define USE_ALARM_BTN                      //использовать аварийную кнопку.
Нажатие на нее останавливает подачу воды и отключает питание. Можно использовать, установив датчики протечки (допускает неограниченное количество устройств с "сухими контактами" подключенных параллельно), или обыкновенную кнопку (ее так же можно включить параллельно датчикам)
 
//#define USE_BODY_TEMP_AUTOSET              //использовать автоматическую коррекцию Т тела для первой программы отбора тела или предзахлеба после хвостов, а также для программы предзахлеба, если она стоит раньше предпоследней программы отбора тела или предзахлеба
Отбор не будет ставиться на паузу при условии:
Для строки Тело. Если строка Тело идет сразу за строкой Головы и за ней идут две строки Тело или Предзахлеб в любой комбинации.
Для строки Предзахлеб. Если строка Предзахлеб находится в любом месте программы отбора и за ней идут две строки Тело или Предзахлеб в любой комбинации
 
//Необходимо выбрать, какой используется датчик давления, и оставить только одну строку. Другие строки должны быть закомментированы.
//#define USE_BMP180                           //использовать датчик давления BMP180/BMP085
//#define USE_BMP280                           //использовать датчик давления BMP280
//#define USE_BMP280_ALT                   //использовать датчик давления BMP280 с альтернативным адресом
//#define USE_BME280                           //использовать датчик давления BME280
#define USE_BME680                           //использовать датчик давления BME680
Необходимо выбрать, какой используется датчик давления атмосферного давления, и оставить только одну строку. Другие строки должны быть закомментированы. Если датчик атмосферного давления не используется - можно закомментировать все строки. Но тогда Самовар не будет корректировать температуру кипения в зависимости от атмосферного давления.
 
#define USE_BTN                              //использовать кнопку
Использовать универсальную кнопку на Самоваре. Подключается к выходу D39 ESP32. Удобная кнопка, но если не используется желательно отключить.
 
#define USE_UPDATE_OTA      //использовать ArduinoOTA для обновления через WiFi. Удобно при отладке, при работе создает лишнюю нагрузку на ESP32
Если для обновления скетча ESP32 используется последовательное проводное соединение данную строку можно закомментировать.  Обновление по WiFi будет недоступно.
 
//#define USE_EXPANDER 0x20                    //использовать расширитель портов PCF8575
//#define USE_ANALOG_EXPANDER 0x48             //использовать расширитель аналоговых портов PCF8591
//#define USE_LUA                              //использовать lua для написания скриптов для управления Самоваром и расширителем портов
Включение использования расширителей портов и использования скриптового языка Lua. Более подробно в разделе Расширение возможностей
 
//#define USE_STEPPER_ACCELERATION    //использовать плавный старт и торможение шагового двигателя
Включить плавный разгон насоса отбора, останавливаться он будет тоже плавно.
 
//#define STEPPER_REVERSE     //изменить направление вращения шагового двигателя
Если нужно чтобы двигатель насоса отбора (Nema17) вращался в другую сторону - строку нужно раскомментировать.
 
//#define USE_TELEGRAM                         //отправлять уведомления в телеграм, для этого в настройках необходимо указать токен бота и идентификатор пользователя.
Отправка нотификаций (сообщений и предупреждений) в Telegram, так как в Blynk функция перестала работать. Как настроить -  раскомментировать строку, а на вкладке Настройки, в web-интерфесе необходимо указать токен бота, куда будут приходить сообщения, и id пользователя. Инструкция как настроить бота и получить ID.
 
//#define NOT_USE_INTERFACE_UPDATE              //не использовать обновление интерфейса при загрузке
Самовар  сравнивает установленную локально версию интерфейса с версией, доступной удаленно, если они не совпадают, обновляет.
Такой подход позволяет сохранить файлы со своими наработками в Самоваре. При локальном обновлении все перетрется, а при обновлении через интернет обновляется только интерфейс, скрипты и настройки сохраняются.
Для новой версии не нужно загружать интерфейс, он автоматически обновится.
Но, как выяснилось, что-то изменилось и это работает не для всех.
Если этот параметр раскомментировать, интерфейс не будет обновляться через интернет.
 
 
 После редактирования файла необходимо вновь загрузить скетч в ESP32. Для этого нужно нажать на стрелку на верхней панели Arduino IDE и дождаться завершения загрузки.
 
 
Ваш Самовар готов к работе.
 
Примечание.
В дальнейшем, при установке нового релиза, совершенно не обязательно каждый раз редактировать Samovar_ini.h.
При обновлении прошивки достаточно скопировать файл Samovar_ini.h  с заменой в папку ... \User\Documents\Arduino\Samovar из ранее используемой вами версии.
Но, если в новом релизе вводятся новые функции Самовара, редактировать файл Samovar_ini.h необходимо, иначе новые функции будут недоступны и Самовар будет работать не корректно.
Желательно редактировать именно новый файл, а не дополнять старый строками из нового кода - во избежание случайных ошибок (см. Обновление скетча).
Для сравнения и редактирования можно использовать специальные программы способные сравнивать два разных файла, визуально отображая различия между ними. 
 
Внимание.
Рекомендуется скачивать архив с новым релизом Самовара по 
этой ссылке. Это будет стабильная и протестированная версия.
 
________________________________________________________________________________________________________________
 
Другие файлы и строки с пояснениями:
 
файл Samovar.h
TARGET_WATER_TEMP - 15
 
Когда процесс перегона закончится и температура ОЖ на выходе будет меньше установленной на 15° Самовар остановит насос, даст команду на закрытие клапана воды и пришлет оповещение в Blynk и на экран компьютера о необходимости закрыть воду.
 
файл pumppwm.h
define PUMP_PWM_FREQ 15
Минимальная частота в герцах ШИМ насоса охлаждения
 

Вопросы и ответы.