Свежие апдейты: корпус приехал! ЕМС из Китая за 6 дней.
Собрал за пару дней, размеры сошлись, всё встало без проблем. Только в одном месте плата регулятора мощности уперлась в заднюю стенку - сам балбес, не проверил соударения деталей в 3д модели. Чутка поднапильничал текстолит.
Запустил на пробной прошивке от старой автоматики, всё работает. Красиво, блин.
Теперь надо допиливать прошивку, делать всё красиво и запускать в дело.
Автоматика дистилляции, "HDA-2000"
Hold
Специалист
Томск
129 89
Отв.180 02 Мая 18, 08:44
mak
Модератор
Екатеринбург
6.3K 1.8K
Отв.181 02 Мая 18, 12:43
круть
отлично получилось
отлично получилось
сообщение удалено
Hold
Специалист
Томск
129 89
Отв.182 02 Мая 18, 17:39
Мне некому писать под планшеты. Ресурсы мк экран почти не есть - он аппаратно поддерживается. Буквально сегодня замерял производительность - проц нагружается на 25% при самом тяжелом GUI, одновременной закачкой по FTP на флешку, генерация html странички с обновлением и всех остальных задачах. А оперативки и так дофига - 32 мбайта, даже половину не забил. Экран можно и круче подцепить на каком нибудь MIPI-DSI, только стоят они негуманно уже.
Hold
Специалист
Томск
129 89
Отв.183 06 Мая 18, 19:21
Неспешно накидываю новый UI уже ориентированный только под пальцы, никакого стилуса. DPI неплохое - экран 800х480 при скромных 5 дюймах диагонали, можно использовать antialiased-шрифты. Времени катастрофически не хватает.
Sany531
Кандидат наук
Саяногорск
397 137
Отв.184 06 Мая 18, 20:46
Какая цена будет?
Hold
Специалист
Томск
129 89
Отв.185 06 Мая 18, 20:51, через 5 мин
Фиг его знает. Корпус я привез один, цена только корпуса с доставками - $585. Плюс начинка... Немало в общем. Кто хочет поиграться - я готов расстаться со старой макетной автоматикой. Она функциональна, но прошивка там так и не доделана.
Hold
Специалист
Томск
129 89
Отв.186 26 Мая 18, 20:44
Небольшой апдейт. Времени катастрофически не хватает, такими темпами к осени запущу.
Решил полностью переписать код регулятора мощности, многое выкинул, еще больше оптимизировал, добавил новых плюшек. Можно выбирать любой алгоритм управления: брезенхема(BRSHM) или фазового управления углом открытия симистора(PAC - Phase Angle Control). Менять можно хоть на лету, надо только дождаться, пока ПИД-регулятор настроится(хотя есть идейка сделать практически безболезненное переключение, вопрос надо ли). На видео отчетливо видна точность удержания мощности каждого алгоритма, время реагирования. Есть еще что допилить, но основной костяк сделан. Мощность по прежнему измеряется через ADE7953, симистор BTA41+MOC3051+защиты, активное охлаждение подключается при температуре выше 45°С. При температуре выше 70°С - аварийный останов. Хотя не знаю что там надо подключить, чтобы такой радиатор раскочегарить до 70°С. На старте регулятор даёт полное открытие симистора на долю секунды, чтобы замерить максимальную мощность, благодаря этому параметры ПИД-регулятора не зависят от номинала нагрузки, удобно. Хоть лампочку на 50Вт подключай, хоть ТЭН на 2кВТ, держит одинаково хорошо. Конечно брезенхем, с разрешением 100 шагов на 2000 Вт держит куда куже, чем фазовое с микросекундной подстройкой и быстрым реагирование на рассогласование. Старшие товарищи говорили, что им надо ±5Вт удерживать, тут выходит ±2...3 Вт при фазовом регулировании. А брезенхем вполне сгодится на дистилляцию, чтобы не сильно гадить в сеть. GUI пока в зачаточном состоянии, решил более вдумчиво пересмотреть весь код, красоту потом будем наводить.
P.S.: шум на видео - подопытный чайник примерно на 2кВт, который терпел все мои издевательства.
Решил полностью переписать код регулятора мощности, многое выкинул, еще больше оптимизировал, добавил новых плюшек. Можно выбирать любой алгоритм управления: брезенхема(BRSHM) или фазового управления углом открытия симистора(PAC - Phase Angle Control). Менять можно хоть на лету, надо только дождаться, пока ПИД-регулятор настроится(хотя есть идейка сделать практически безболезненное переключение, вопрос надо ли). На видео отчетливо видна точность удержания мощности каждого алгоритма, время реагирования. Есть еще что допилить, но основной костяк сделан. Мощность по прежнему измеряется через ADE7953, симистор BTA41+MOC3051+защиты, активное охлаждение подключается при температуре выше 45°С. При температуре выше 70°С - аварийный останов. Хотя не знаю что там надо подключить, чтобы такой радиатор раскочегарить до 70°С. На старте регулятор даёт полное открытие симистора на долю секунды, чтобы замерить максимальную мощность, благодаря этому параметры ПИД-регулятора не зависят от номинала нагрузки, удобно. Хоть лампочку на 50Вт подключай, хоть ТЭН на 2кВТ, держит одинаково хорошо. Конечно брезенхем, с разрешением 100 шагов на 2000 Вт держит куда куже, чем фазовое с микросекундной подстройкой и быстрым реагирование на рассогласование. Старшие товарищи говорили, что им надо ±5Вт удерживать, тут выходит ±2...3 Вт при фазовом регулировании. А брезенхем вполне сгодится на дистилляцию, чтобы не сильно гадить в сеть. GUI пока в зачаточном состоянии, решил более вдумчиво пересмотреть весь код, красоту потом будем наводить.
P.S.: шум на видео - подопытный чайник примерно на 2кВт, который терпел все мои издевательства.
Hold
Специалист
Томск
129 89
Отв.187 14 Июня 18, 20:27
Первые тесты уже на ТЭНе.
Кулер охлаждения оказался неисправен, решил попробовать на пассивном охлаждении. Оказалось, что его вполне хватает - температура даже за 60 не перевалила.
Кулер охлаждения оказался неисправен, решил попробовать на пассивном охлаждении. Оказалось, что его вполне хватает - температура даже за 60 не перевалила.
Hold
Специалист
Томск
129 89
Отв.188 12 Сент. 18, 22:48
Давненько не заходил, а рассказать есть о чем.
Доделал систему охлаждения, умеет:
- питание 24В
- работать по проводному RS-485, поддержка ModBus RTU
- работать по радиоканалу на CC1101. И да, по нему сверху проложен тот же ModBus RTU.
- два ШИМ канала 16 кГц для управления насосами. Пока подключен только один. Ток на канал ограничен источником питание в 120 Вт
- канал управления для ЭМ-клапана подачи воды
- подключение двух датчиков уровня для контроля уровня воды в емкости
- подключение двух термодатчиков - температура входящая и выходящая
- подключение расходомера
Сегодня погонял на водичке, новый насос справляется отлично. Выдает максимум около 60 л/ч, хватает чтобы утилизировать 2 кВт кипящей воды, регулятор держит на выходе требуемую температуру.
Умеет считать кол-во потраченной воды. А зная текущий расход и разницу входа и выхода, несложно прикинуть сколько Ватт мы утилизируем охлаждением. К примеру, сегодня на воде, вдувая 1800 Вт, охлаждение тратило лишь 1200 ккал, или около 1400 Вт. Т.е. около 400Вт грели воздух и прочие потери.
Установил всё под мойку, получилось компактно, наружу торчат только шланги, теперь никаких проводов. Связь стабильная, ошибки корректно обрабатываются. Корпус для охлаждения с Али, рублей за 400, отверстия под разъемы фрезернули.
Доделал систему охлаждения, умеет:
- питание 24В
- работать по проводному RS-485, поддержка ModBus RTU
- работать по радиоканалу на CC1101. И да, по нему сверху проложен тот же ModBus RTU.
- два ШИМ канала 16 кГц для управления насосами. Пока подключен только один. Ток на канал ограничен источником питание в 120 Вт
- канал управления для ЭМ-клапана подачи воды
- подключение двух датчиков уровня для контроля уровня воды в емкости
- подключение двух термодатчиков - температура входящая и выходящая
- подключение расходомера
Сегодня погонял на водичке, новый насос справляется отлично. Выдает максимум около 60 л/ч, хватает чтобы утилизировать 2 кВт кипящей воды, регулятор держит на выходе требуемую температуру.
Умеет считать кол-во потраченной воды. А зная текущий расход и разницу входа и выхода, несложно прикинуть сколько Ватт мы утилизируем охлаждением. К примеру, сегодня на воде, вдувая 1800 Вт, охлаждение тратило лишь 1200 ккал, или около 1400 Вт. Т.е. около 400Вт грели воздух и прочие потери.
Установил всё под мойку, получилось компактно, наружу торчат только шланги, теперь никаких проводов. Связь стабильная, ошибки корректно обрабатываются. Корпус для охлаждения с Али, рублей за 400, отверстия под разъемы фрезернули.
IvanAltay
Доцент
Бийск
1.6K 326
Отв.189 13 Сент. 18, 20:49
Hold, круто! Как на счёт ESP32? Сейчас, ESP32 мучаю. У меня лучше всего завёлся ESP32 DEVKIT V1. Такой -
https://ru.aliexpress.com/....77d033edeEJ3bG
Aurduino IDE прям сразу встал на окно 7. Только, с подключением библиотек вечный гиммор...
Ещё таких вот модулей LoRa прикупил пару, на 433 мГц.
https://ru.aliexpress.com/....77d033edeEJ3bG
Пока только антенны на них делал, не прошивал покамест. Сразу, с малюсеньким телевизором на борту....
https://ru.aliexpress.com/....77d033edeEJ3bG
Aurduino IDE прям сразу встал на окно 7. Только, с подключением библиотек вечный гиммор...
Ещё таких вот модулей LoRa прикупил пару, на 433 мГц.
https://ru.aliexpress.com/....77d033edeEJ3bG
Пока только антенны на них делал, не прошивал покамест. Сразу, с малюсеньким телевизором на борту....
Hold
Специалист
Томск
129 89
Отв.190 14 Сент. 18, 09:19
ESP установлена на главной плате, но руки пока не дошли. Arduino не использую.
Mnz
Магистр
Город
254 86
Отв.191 14 Сент. 18, 20:48
Aurduino IDEIvanAltay, 13 Сент. 18, 20:49Arduino IDE это игрушка (она не поддерживает даже такую элементарную вещь как отладка). В одной из тем я про это писал и приводил примеры.
m16
Модератор
Тамбов
1.9K 1K
Отв.192 15 Сент. 18, 12:36
(она не поддерживает даже такую элементарную вещь как отладка)Mnz, 14 Сент. 18, 20:48отчего же, если ардуина на меге328 то в AVR studio отладка по DW, если на меге2560 то по житагу. нет проблем.
Mnz
Магистр
Город
254 86
Отв.193 15 Сент. 18, 14:23
Я про ArduinoIDE, а не платы.
Отладчик с интерфейсом DebugWire нормальных денег стоит. JTAG дешевле, но 328 его не поддерживает.
Отладчик с интерфейсом DebugWire нормальных денег стоит. JTAG дешевле, но 328 его не поддерживает.
m16
Модератор
Тамбов
1.9K 1K
Отв.194 15 Сент. 18, 16:38
а я про что. нахрен эта Arduino IDE ? AVR studio поддерживает все дуины с их либами
Hold
Специалист
Томск
129 89
Отв.196 27 Сент. 18, 16:01
Итак, провел вторую перегонку мелассного СС на ром. Всё отработало штатно, без косяков.
В 22:35:05 запустил автоматику:
В 23:18:14 СС, объемом 17.5 л вскипел, температура в дефе превысила 35°, автоматика включила охлаждение, выставила работую мощность 1500 Вт, замерила стартовый спирт. Запустился таймер на 35 минут, работа на себя. В процессе, входная температура в систему охлаждения повысилась, ночью температура холодной воды выше, надо долго спускать чтобы пошла холодная. Температура на выходе охлаждения превысила 42°, насос работал на полную, и автоматика уронила мощность сразу на 500Вт. Затем каждые 5 минут повышала на 200 Вт, до выхода на мощность до ограничения.
Вкратце, график разгона и работы на себя выглядит примерно так:
Правая ось - текущая мощность на ТЭНе.
В 23:53:14 таймер дотикал 35 минут, включился отбор голов со скоростью 96 мл/ч. Зная стартовый спирт и объем куба, автоматика вычислила требуемый объем голов, запустила отсчет.
Всю ночь автоматика отбирала головы, под утро, отобрав 800 мл голов, включился отбор тела.
В 8:17:07 старт отбора тела. Автоматика сама глянула на температуру в дефе, выставила уставку для алгоритма старт/стоп:
График отбора тела ниже, правая ось - атмосферное давление:
В 11:27:22, когда температура в кубе доросла до 90.5°, вручную запустил отбор хвостов. Тут автоматизации пока нет, да и ром капризный, не поймешь когда пойдут невкусные штуки. Иногда на 90 уже вонючки, а иногда до 92 идёт вполне себе годный дистиллят.
В 15:04:05 автоматика засекла, что температура в кубе не растет уже 10 минут, и запустила завершение процесса. Отключила ТЭН, затем 3 минуты гоняла воду по системе охлаждения.
Затем дожидалась, когда вода в емкости закончится (сработает нижний датчик уровня) и еще 2 минуты осушала систему охлаждения.
В 15:09:22 автоматика завершила процесс, отключила всё, завершила лог:
Суммарное время процесса 16:34:17, за это время было потрачено 22.1 кВт*ч энергии (~55 руб), и 598.5 литров воды (~40 руб). На выходе 2.8 литра дистиллята 95° на ром, и около 3 литров хвостов.
Ни одной критичной ошибки не было, единственную ситуацию с повышением входной температуры в охлаждение автоматика отработала штатно.
Система охлаждения также отработала без проблем, связь по радиоканалу не терялась. Оценил удобство - не надо ничего делать, кроме подключения входа/выхода и открытия запорного вентиля. Всю регулировку температуры автоматика делает сама. Да и воду расходует крайне экономно, порядка 38-39 л/ч. Судя по дельте температур входа и выхода система охлаждения утилизировала порядка 800-900 Вт, при 1500 Вт на ТЭНе. Есть смысл подумать насчет теплоизоляции колонны и куба, чтобы не греть понапрасну воздух.
Лог файл процесс прилагаю.
В 22:35:05 запустил автоматику:
В 23:18:14 СС, объемом 17.5 л вскипел, температура в дефе превысила 35°, автоматика включила охлаждение, выставила работую мощность 1500 Вт, замерила стартовый спирт. Запустился таймер на 35 минут, работа на себя. В процессе, входная температура в систему охлаждения повысилась, ночью температура холодной воды выше, надо долго спускать чтобы пошла холодная. Температура на выходе охлаждения превысила 42°, насос работал на полную, и автоматика уронила мощность сразу на 500Вт. Затем каждые 5 минут повышала на 200 Вт, до выхода на мощность до ограничения.
Вкратце, график разгона и работы на себя выглядит примерно так:
Правая ось - текущая мощность на ТЭНе.
В 23:53:14 таймер дотикал 35 минут, включился отбор голов со скоростью 96 мл/ч. Зная стартовый спирт и объем куба, автоматика вычислила требуемый объем голов, запустила отсчет.
Всю ночь автоматика отбирала головы, под утро, отобрав 800 мл голов, включился отбор тела.
В 8:17:07 старт отбора тела. Автоматика сама глянула на температуру в дефе, выставила уставку для алгоритма старт/стоп:
График отбора тела ниже, правая ось - атмосферное давление:
В 11:27:22, когда температура в кубе доросла до 90.5°, вручную запустил отбор хвостов. Тут автоматизации пока нет, да и ром капризный, не поймешь когда пойдут невкусные штуки. Иногда на 90 уже вонючки, а иногда до 92 идёт вполне себе годный дистиллят.
В 15:04:05 автоматика засекла, что температура в кубе не растет уже 10 минут, и запустила завершение процесса. Отключила ТЭН, затем 3 минуты гоняла воду по системе охлаждения.
Затем дожидалась, когда вода в емкости закончится (сработает нижний датчик уровня) и еще 2 минуты осушала систему охлаждения.
В 15:09:22 автоматика завершила процесс, отключила всё, завершила лог:
Суммарное время процесса 16:34:17, за это время было потрачено 22.1 кВт*ч энергии (~55 руб), и 598.5 литров воды (~40 руб). На выходе 2.8 литра дистиллята 95° на ром, и около 3 литров хвостов.
Ни одной критичной ошибки не было, единственную ситуацию с повышением входной температуры в охлаждение автоматика отработала штатно.
Система охлаждения также отработала без проблем, связь по радиоканалу не терялась. Оценил удобство - не надо ничего делать, кроме подключения входа/выхода и открытия запорного вентиля. Всю регулировку температуры автоматика делает сама. Да и воду расходует крайне экономно, порядка 38-39 л/ч. Судя по дельте температур входа и выхода система охлаждения утилизировала порядка 800-900 Вт, при 1500 Вт на ТЭНе. Есть смысл подумать насчет теплоизоляции колонны и куба, чтобы не греть понапрасну воздух.
Лог файл процесс прилагаю.
IvanAltay
Доцент
Бийск
1.6K 326
Отв.197 08 Окт. 18, 19:52
Hold, красиво всё у тебя. Мне да такого, как до луны пешком. Я вот сегодня, наконец освоил, тупо управление дисплеем модуля LoRa ESP32 от Heltec/HTIT-WB32LA. Привернул к нему градусник ds18b20. С вышеупомянутыми библиотеками, можно градусник привинтить на порты 0 или 15. На GPIO15 телевизор висит, значит только GPIO0 (порт номер 0). На GIPIО-0 и припаял DS18B20. В сериал порт данные с датчика идут, на дисплей пока не хватает ума вывести.
P/S А город у вас замечательный/только холодный, учился я в ТГУ на Радиофизическом факультете некогда(РФФ)/1995г.
Добавлено через 32мин.:
http://files.homedistiller.ru/216916.jpg
http://files.homedistiller.ru/216917.jpg
http://files.homedistiller.ru/216918.jpg
http://files.homedistiller.ru/216919.jpg
Добавлено через 46мин.:
Скетч,
#include <OneWire.h>//T
#include <DallasTemperature.h>//T
#include <Wire.h> // Only needed for Arduino 1.6.5 and earlier
#include "SSD1306.h" // alias for `#include "SSD1306Wire.h"`
#include "images.h"
//OLED pins to ESP32 GPIOs via this connecthin:
//OLED_SDA -- GPIO4
//OLED_SCL -- GPIO15
//OLED_RST -- GPIO16
#define ONE_WIRE_BUS 0//T
#define SDA 4
#define SCL 15
#define RST 16 //RST must be set by software
#define V2 1
#ifdef V2 //WIFI Kit series V1 not support Vext control
#define Vext 21
#endif
SSD1306 display(0x3c, SDA, SCL, RST);
#define DEMO_DURATION 3000
typedef void (*Demo)(void);
int demoMode = 0;
int counter = 1;
OneWire oneWire(ONE_WIRE_BUS);//T
DallasTemperature sensors(&oneWire);//T
void setup() {
pinMode(Vext,OUTPUT);
digitalWrite(Vext, LOW); // OLED USE Vext as power supply, must turn ON Vext before OLED init
delay(50);
Serial.begin(115200);
Serial.println();
Serial.println();
// Initialising the UI will init the display too.
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
}
void drawFontFaceDemo() {
// Font Demo1
// create more fonts at http://oleddisplay.squix.ch/
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_24);
display.drawString(0, 0, "SAMOGON");
}
Demo demos[] = {drawFontFaceDemo};
int demoLength = (sizeof(demos) / sizeof(Demo));
long timeSinceLastModeSwitch = 0;
void loop() {
// clear the display
display.clear();
// draw the current demo method
demos[demoMode]();
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(10, 128, String(millis()));
// write the buffer to the display
display.display();
if (millis() - timeSinceLastModeSwitch > DEMO_DURATION) {
demoMode = (demoMode + 1) % demoLength;
timeSinceLastModeSwitch = millis();
}
counter++;
delay(10);
Serial.begin(9600);//T
sensors.begin();//T
sensors.requestTemperatures();//T
Serial.println(sensors.getTempCByIndex(0));
}
Добавлено через 6дн. 18ч. 54мин.:
Победил я таки этот супердевайс HTIT-WB32LA от Heltec. К девайсу(на фото) припаяны 3шт градусников ds18b20, на порт номер "0". Библиотеки OneWire.h/DallasTemperature.h/Wire.h - одна из них(или несколько), умеет работать только с портами номер 0 или 15. На 15-м порту, сидит телевизор. Потому, припаял все градусники к D0. Два шт. ds18b20 в мелкотранзисторном исполнении, один в герметичном(капсуле) с красивыми/разноцветными проводами.
СкетчЬ.
#include <OneWire.h>//T
#include <DallasTemperature.h>//T
#include <Wire.h> // Only needed for Arduino 1.6.5 and earlier
#include "SSD1306.h" // alias for `#include "SSD1306Wire.h"`
#include "images.h"
#define ONE_WIRE_BUS 0//T
#define SDA 4
#define SCL 15
#define RST 16 //RST must be set by software
#define V2 1
#ifdef V2 //WIFI Kit series V1 not support Vext control
#define Vext 21
#endif
SSD1306 display(0x3c, SDA, SCL, RST);
#define DEMO_DURATION 3000
typedef void (*Demo)(void);
int demoMode = 0;
int counter = 1;
OneWire oneWire(ONE_WIRE_BUS);//T
DallasTemperature sensors(&oneWire);//T
void setup() {
pinMode(Vext,OUTPUT);
digitalWrite(Vext, LOW); // OLED USE Vext as power supply, must turn ON Vext before OLED init
delay(50);
Serial.begin(115200);
Serial.println();
Serial.println();
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
}
void drawFontFaceDemo() {
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_24);
display.drawString(0, 0, "TEMP 18B20");
}
Demo demos[] = {drawFontFaceDemo};
int demoLength = (sizeof(demos) / sizeof(Demo));
long timeSinceLastModeSwitch = 0;
void loop() {
Serial.begin(9600);//T
sensors.begin();//T
sensors.requestTemperatures();//T
Serial.println(sensors.getTempCByIndex(0));
Serial.begin(115200);
display.clear();
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 0,String(sensors.getTempCByIndex(0)));
display.display();
Serial.begin(9600);//T
sensors.begin();//T
sensors.requestTemperatures();//T
Serial.println(sensors.getTempCByIndex(1));
Serial.begin(115200);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 10,String(sensors.getTempCByIndex(1)));
display.display();
Serial.begin(9600);//T
sensors.begin();//T
sensors.requestTemperatures();//T
Serial.println(sensors.getTempCByIndex(2));
Serial.begin(115200);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 30,String(sensors.getTempCByIndex(2)));
display.display();
}
http://files.homedistiller.ru/217266.jpg
http://files.homedistiller.ru/217268.jpg
http://files.homedistiller.ru/217269.jpg
http://files.homedistiller.ru/217270.jpg
http://files.homedistiller.ru/217271.jpg
http://files.homedistiller.ru/217272.jpg
P/S А город у вас замечательный/только холодный, учился я в ТГУ на Радиофизическом факультете некогда(РФФ)/1995г.
Добавлено через 32мин.:
http://files.homedistiller.ru/216916.jpg
http://files.homedistiller.ru/216917.jpg
http://files.homedistiller.ru/216918.jpg
http://files.homedistiller.ru/216919.jpg
Добавлено через 46мин.:
Скетч,
#include <OneWire.h>//T
#include <DallasTemperature.h>//T
#include <Wire.h> // Only needed for Arduino 1.6.5 and earlier
#include "SSD1306.h" // alias for `#include "SSD1306Wire.h"`
#include "images.h"
//OLED pins to ESP32 GPIOs via this connecthin:
//OLED_SDA -- GPIO4
//OLED_SCL -- GPIO15
//OLED_RST -- GPIO16
#define ONE_WIRE_BUS 0//T
#define SDA 4
#define SCL 15
#define RST 16 //RST must be set by software
#define V2 1
#ifdef V2 //WIFI Kit series V1 not support Vext control
#define Vext 21
#endif
SSD1306 display(0x3c, SDA, SCL, RST);
#define DEMO_DURATION 3000
typedef void (*Demo)(void);
int demoMode = 0;
int counter = 1;
OneWire oneWire(ONE_WIRE_BUS);//T
DallasTemperature sensors(&oneWire);//T
void setup() {
pinMode(Vext,OUTPUT);
digitalWrite(Vext, LOW); // OLED USE Vext as power supply, must turn ON Vext before OLED init
delay(50);
Serial.begin(115200);
Serial.println();
Serial.println();
// Initialising the UI will init the display too.
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
}
void drawFontFaceDemo() {
// Font Demo1
// create more fonts at http://oleddisplay.squix.ch/
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_24);
display.drawString(0, 0, "SAMOGON");
}
Demo demos[] = {drawFontFaceDemo};
int demoLength = (sizeof(demos) / sizeof(Demo));
long timeSinceLastModeSwitch = 0;
void loop() {
// clear the display
display.clear();
// draw the current demo method
demos[demoMode]();
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(10, 128, String(millis()));
// write the buffer to the display
display.display();
if (millis() - timeSinceLastModeSwitch > DEMO_DURATION) {
demoMode = (demoMode + 1) % demoLength;
timeSinceLastModeSwitch = millis();
}
counter++;
delay(10);
Serial.begin(9600);//T
sensors.begin();//T
sensors.requestTemperatures();//T
Serial.println(sensors.getTempCByIndex(0));
}
Добавлено через 6дн. 18ч. 54мин.:
Победил я таки этот супердевайс HTIT-WB32LA от Heltec. К девайсу(на фото) припаяны 3шт градусников ds18b20, на порт номер "0". Библиотеки OneWire.h/DallasTemperature.h/Wire.h - одна из них(или несколько), умеет работать только с портами номер 0 или 15. На 15-м порту, сидит телевизор. Потому, припаял все градусники к D0. Два шт. ds18b20 в мелкотранзисторном исполнении, один в герметичном(капсуле) с красивыми/разноцветными проводами.
СкетчЬ.
#include <OneWire.h>//T
#include <DallasTemperature.h>//T
#include <Wire.h> // Only needed for Arduino 1.6.5 and earlier
#include "SSD1306.h" // alias for `#include "SSD1306Wire.h"`
#include "images.h"
#define ONE_WIRE_BUS 0//T
#define SDA 4
#define SCL 15
#define RST 16 //RST must be set by software
#define V2 1
#ifdef V2 //WIFI Kit series V1 not support Vext control
#define Vext 21
#endif
SSD1306 display(0x3c, SDA, SCL, RST);
#define DEMO_DURATION 3000
typedef void (*Demo)(void);
int demoMode = 0;
int counter = 1;
OneWire oneWire(ONE_WIRE_BUS);//T
DallasTemperature sensors(&oneWire);//T
void setup() {
pinMode(Vext,OUTPUT);
digitalWrite(Vext, LOW); // OLED USE Vext as power supply, must turn ON Vext before OLED init
delay(50);
Serial.begin(115200);
Serial.println();
Serial.println();
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
}
void drawFontFaceDemo() {
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_24);
display.drawString(0, 0, "TEMP 18B20");
}
Demo demos[] = {drawFontFaceDemo};
int demoLength = (sizeof(demos) / sizeof(Demo));
long timeSinceLastModeSwitch = 0;
void loop() {
Serial.begin(9600);//T
sensors.begin();//T
sensors.requestTemperatures();//T
Serial.println(sensors.getTempCByIndex(0));
Serial.begin(115200);
display.clear();
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 0,String(sensors.getTempCByIndex(0)));
display.display();
Serial.begin(9600);//T
sensors.begin();//T
sensors.requestTemperatures();//T
Serial.println(sensors.getTempCByIndex(1));
Serial.begin(115200);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 10,String(sensors.getTempCByIndex(1)));
display.display();
Serial.begin(9600);//T
sensors.begin();//T
sensors.requestTemperatures();//T
Serial.println(sensors.getTempCByIndex(2));
Serial.begin(115200);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 30,String(sensors.getTempCByIndex(2)));
display.display();
}
http://files.homedistiller.ru/217266.jpg
http://files.homedistiller.ru/217268.jpg
http://files.homedistiller.ru/217269.jpg
http://files.homedistiller.ru/217270.jpg
http://files.homedistiller.ru/217271.jpg
http://files.homedistiller.ru/217272.jpg
zaroleg
Специалист
Иркутск
118 48
Отв.198 06 Марта 19, 07:09
Красота получилась! Молодец!
Hold
Специалист
Томск
129 89
Отв.199 07 Июля 19, 11:52
Ух, давно ничего не писал. А рассказать есть что. Для коллеги форумчанина собрал еще одну автоматику, ровно такую же.
Допилил большУю часть функционала:
- термодатчику можно привязать любую функцию (читай место установки): температура жидкости, пара, трубки ТСА, дефлегматора и прочее. Теперь не надо запоминать ROM датчиков или втыкать в определенный разъем. Пока нет сохранения привязки ROM и фукнции, но в дальнейшем добавлю.
- у любого термодатчика можно настроить компенсацию температуры по АД. У кубового датчика в формулу компенсации добавляется еще и диф. давление в кубе.
- диф.датчики давления на MPXV5010 теперь можно калибровать по мин-макс значениям. Настраивается аварийный порог давления, при котором автоматика останавливается по аварии. Снижение мощности при захлебе еще не реализовано.
Попутно разрабатывается контроллер для НБК, корпус должен прийти на днях, будем пробовать запускать. Контроллер будет способен работать как в связке с главным блоков так и автономно. Насос от Kamoer с ШД.
Допилил большУю часть функционала:
- термодатчику можно привязать любую функцию (читай место установки): температура жидкости, пара, трубки ТСА, дефлегматора и прочее. Теперь не надо запоминать ROM датчиков или втыкать в определенный разъем. Пока нет сохранения привязки ROM и фукнции, но в дальнейшем добавлю.
- у любого термодатчика можно настроить компенсацию температуры по АД. У кубового датчика в формулу компенсации добавляется еще и диф. давление в кубе.
- диф.датчики давления на MPXV5010 теперь можно калибровать по мин-макс значениям. Настраивается аварийный порог давления, при котором автоматика останавливается по аварии. Снижение мощности при захлебе еще не реализовано.
Попутно разрабатывается контроллер для НБК, корпус должен прийти на днях, будем пробовать запускать. Контроллер будет способен работать как в связке с главным блоков так и автономно. Насос от Kamoer с ШД.