Ректификационная колонна на базе моргалки

Автор Dunkel, 08 Окт. 2019 в 23:24

« назад - далее »

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

Dunkel

Понимаю, что не формат.
Но я ее сделал!
На профильном форуме не  сложилось. Там посчитали, что я хамлю....  А я ведь даже не начинал!
Так-что вопрос к модераторам - если интересно, я все выложу.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dmitry__

Конечно интересно! (не модератор)
Оформим как средство для протирки электротранспорта  ;-D

serggio

[user]Dunkel[/user], выкладывайте.
А будете хамить, сами знаете что будет)
Так что, когда правила не нарушаете, то не рабей!

Dunkel

Цитата: Dmitry__ от 08 Окт. 2019 в 23:29Конечно интересно!

Ладно, под твою ответственность.





Добавлено 08 Окт. 2019 в 23:52



//  Регулятор-стабилизатор с градусниками для БК
//  (c) dunkel
//  Wemos 9V

#define ver 9190926 // version/data

char auth[] = "сюда свой код"; //blynk

String  Hostname = "сюда свой мак-адрес";  //narmon

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char ssid[] = "точка доступа";
char pass[] = "пароль";

#include <ArduinoOTA.h>
#include <TimeLib.h>
#include <WidgetRTC.h>
#define BLYNK_PRINT Serial
WidgetTerminal terminal(V21);
WidgetRTC rtc;

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 13
#define TEMPERATURE_PRECISION 12
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer = { 0x28, 0xA8, 0x15, 0x94, 0x97, 0x14, 0x3, 0xC5 };
DeviceAddress outsideThermometer   = { 0x28, 0x99, 0x64, 0x94, 0x97, 0xE, 0x3, 0xB4 };
//Адреса DS18b20
//PAR: 28A81594971403C5   28 A8 15 94 97 14 3 C5
//VODA: 28996494970E03B4    28 99 64 94 97 E 3 B4

float tempPAR = 0;
float tempVODA = 0;
const int analogInPin = A0;  // ESP8266 Analog Pin ADC0 = A0
bool Full = 0;  // Форсаж
bool Stop = 0;
int sensorValue = 0;  // value read from the pot
float Uin = 0;
float Uout = 100;
float t = 0;  //пауза, сек
float t2 = 0; //лишняя пауза, сек
int pinSSR = 12;
unsigned long tim = 0;

#define postingInterval  310000 // интервал между отправками данных в миллисекундах (5 минут)
unsigned long lastConnectionTime = 0;           // время последней передачи данных

BLYNK_CONNECTED() {
  // синхронизация значений с сервером Blynk
  Blynk.syncVirtual(V14, V15, V16);
}
//  получаем значения от сервера BLYNK
BLYNK_WRITE(V14) // кнопка
{
  Stop = param.asInt();
}
BLYNK_WRITE(V15) // кнопка
{
  Full = param.asInt();
}
BLYNK_WRITE(V16) // слайдер
{
  Uout = param.asFloat();
}

void setup() {

  Serial.begin(115200);
  pinMode(pinSSR, OUTPUT); // - на реле
  digitalWrite(pinSSR, LOW); //

  Blynk.begin(auth, ssid, pass);
  rtc.begin();
  ArduinoOTA.begin();

  sensors.begin();
  sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION);
  sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION);

  Serial.println(WiFi.localIP()); Serial.println(WiFi.macAddress());
  Serial.print("Narodmon ID: "); Serial.println(Hostname);

  // вывод в терминал Blynk
  terminal.print("START BK ");
  terminal.print(Hostname); terminal.print(" "); terminal.println(WiFi.localIP());
  terminal.println(ver);
  terminal.flush();
}

void loop() {
  Blynk.run();
  ArduinoOTA.handle();

  ////////////////////////  НАГРЕВ 1сек. ///////////////////////
  if (!Stop) digitalWrite(pinSSR, HIGH);
  tim = millis();

  // Опрос DS18b20
  sensors.requestTemperatures();
  tempPAR = sensors.getTempC(insideThermometer);
  tempVODA = sensors.getTempC(outsideThermometer);
  //

  //  ИЗМЕРЕНИЕ НАПРЯЖЕНИЯ
  sensorValue = 0;
  for (int j = 1; j <= 10; j++) {
    sensorValue += analogRead(analogInPin);
  }
  Uin = sensorValue * 0.0396; ///// КОЭФ. БП
  //

  t = Uin * Uin / Uout / Uout - 1; // Вычисляем длительность паузы


    Serial.print("Uin = ");
    Serial.print(Uin);
    Serial.print("  t = ");
    Serial.println(t);
    Serial.print("TempPAR: ");
    Serial.print(tempPAR);
    Serial.print("  TempVODA: ");
    Serial.print(tempVODA);
    Serial.println();
    Serial.println(millis() - tim);
    Serial.println();

  do {
    yield(); // пустой цикл
  }
  while (millis() - tim < 1000);
  if (!Full) digitalWrite(pinSSR, LOW);
  //////////////////////////////////////////////////////////

  ///////////////  ПАУЗА В НАГРЕВЕ ////////////////////////
  tim = millis();

  //Отправка в Blynk
  Blynk.virtualWrite(V0, Uin); //напр. вх.
  Blynk.virtualWrite(V1, t);  //пауза
  Blynk.virtualWrite(V2, tempPAR);
  Blynk.virtualWrite(V3, tempVODA);
  //

  //Народный мониторинг - отправка каждые 5мин.
  if ((millis() - lastConnectionTime) > postingInterval) {
    if (Full) Uout = Uin;
    SendToNarodmon();
    lastConnectionTime = millis();
    String currentTime = String(hour()) + ":" + minute() + ":" + second() + " ";
    terminal.print(currentTime);
    terminal.print(" P ");
    terminal.print(tempPAR);
    terminal.print(" V ");
    terminal.print(tempVODA);
    terminal.print(" U ");
    terminal.println(Uout);
    terminal.flush();
  }
  //

  t2 = (millis() - tim) / 1000 - t; //лишняя пауза

  if ( t2 < 0 ) { //продолжаем паузу t
    do {
      yield(); // пустой цикл
    }
    while ((millis() - tim) < (t * 1000));
  }
  else { //компенсируем лишнюю паузу
    digitalWrite(pinSSR, HIGH);
    delay(t2 / t * 1000);
    digitalWrite(pinSSR, LOW);
  }

  ////////////////////////////////////////////////////////

} ///////////////////////////////////////////////////////////////loop


void SendToNarodmon() {
  WiFiClient client;
  String buf;
  buf = "#" + Hostname + "\r\n"; // заголовок
  buf = buf + "#Uin#" + String(Uin) + "\r\n";  //напр.
  buf = buf + "#Uout#" + String(Uout) + "\r\n";  //напр.
  buf = buf + "#tpa#" + String(t) + "\r\n";  //
  buf = buf + "#PAR#" + String(tempPAR) + "\r\n";  //
  buf = buf + "#VVOD#" + String(tempVODA) + "\r\n";  //
  buf = buf + "##\r\n"; // закрываем пакет
  if (!client.connect("narodmon.ru", 8283)) { // попытка подключения
    Serial.println("connection failed");
  } else
  {
    client.print(buf); // и отправляем данные
    while (client.available()) {
      String line = client.readStringUntil('\r'); // если что-то в ответ будет - все в Serial
      Serial.print(line);
    }
  }
}
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dunkel

Цитата: serggio от 08 Окт. 2019 в 23:43А будете хамить, сами знаете что будет)

Я здесь был тогда, когда вы еще не были модератором. Так что не надо мне  ... и опять скажут, что я хамлю :)

Добавлено 08 Окт 2019 в 23:56




Добавлено 08 Окт 2019 в 23:57




Добавлено 09 Окт. 2019 в 00:00



Думаю, на сегодня хватит.  Все равно никто ничего не понял. Завтра буду объяснять.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dunkel

Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dmitry__

Цитата: Dunkel от 08 Окт. 2019 в 23:55Думаю, на сегодня хватит.  Все равно никто ничего не понял. Завтра буду объяснять.
Чавой это ничего не поняли? :) Все поняли. Вон там колонна, вон там холодильник дефлегматор. Мозги обещают быть интересными, вайфайными :)


Добавлено 09 Окт 2019 в 00:08

Цитата: Dunkel от 09 Окт. 2019 в 00:02Пока писал, хвосты пошли в отбор.
Нам бы тело  ;-D

Dunkel

Цитата: Dmitry__ от 09 Окт. 2019 в 00:07Все поняли. Вон там колонна, вон там холодильник.

Так ты в теме (извини, что на ты - в хамстве меня сегодня уже обвинили, так что терять нечего)
Действительно колонна и холодильник.
Стабильную РК 22мм мало кто делал. А интерфейс облачный - блинк и народный мониторинг.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

yurgen

Цитата: Dunkel от 08 Окт. 2019 в 23:55Все равно никто ничего не понял
Прям так и не понял ,
Я то же иногда балуюсь своей колонной.
У меня она без ардуин и вайфаев  , но зато чисто вся стеклянная , Simax.
Самовар , Кваньшунь 3 кВт , келли 200А,  LG E48 3кВтЧ.
80км/ч     
> 70 000 км

Dunkel

Цитата: yurgen от 09 Окт. 2019 в 00:39но зато чисто вся стеклянная , Simax.

А фото? В яндексе выглядит интересно... Там тарелки?
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dunkel

Идея регулятора очень простая — пропускаем на тэн электроэнергию в течении 1 секунды и смотрим сколько проскочило лишнего (от заданного напряжения U). А дальше делаем паузу t, чтобы  компенсировать излишки.
В результате, за время 1+t должна получиться общая электроэнергия, соответствующая заданному напряжению U.
Пауза t=Uвх^2/U^2 – 1
Для измерения напряжения сети Uвх используется обычный трансформаторный БП (в данном случае 9В), главное, чтобы он был НЕ стабилизированный.
Тогда можно сделать допущение, что его выходное напряжение линейным образом связано с входным, и тем самым легко получить напряжение сети.
В качестве управляющего контроллера используется esp8266, т. к. это наиболее простой путь для организации связи с облачными сервисами.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dunkel

Проиллюстрирую работу графиком погона.



Хорошо видно, как в начале выходят легкокипящие фракции (головы), а потом колонна стабилизируется на спиртовой полке, около 76,3С при сегодняшнем давлении. Там есть небольшие скачки +/- 0,06С, но это дергается младший разряд градусника ds18b20, с этим я ничего не могу поделать. Да и пусть себе дергается, это ни на что не влияет.
В целом колонна работает стабильно, регулятор справляется. В отборе практически чистый спирт, около 95%.

К чему я все это? А к тому, что моргалка с облачным интерфейсом может не только АКБ заряжать, это гибкий и практически универсальный инструмент для контроля и управления бытовыми приборами.
Я ведь этой штукой еще и духовкой управлял. Там никакого регулятора не было, она сильно перегревала. А с этой моргалкой все сделал в лучшем виде.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

yurgen

Она не дома , а на даче.
поэтому фоток нет.
Тарелок нет , хотя изначально планировал.
Насадка простейшая , кольца из тонкостенной ст. трубки.
Знаю что не лучший вариант , но энтузиазм упал , поэтому и так сойдет.

По поводу описания процессов в колонне , вряд ли кому то тут это все будет интересно , уж слишком профиль форума не подходящий.


Добавлено 09 Окт. 2019 в 23:59

ЗЫ
В стеклянной колонне интересно наблюдать как движутся фронты  различных фракций  по насадкам , прямо хоть обучающее кино снимай, особенно когда разгонял смесь  воды ,ацетона , изопропанола и этанола
Самовар , Кваньшунь 3 кВт , келли 200А,  LG E48 3кВтЧ.
80км/ч     
> 70 000 км

Dunkel

Цитата: yurgen от 09 Окт. 2019 в 23:55По поводу описания процессов в колонне , вряд ли кому то тут это все будет интересно , уж слишком профиль форума не подходящий.

А вот тут я не уверен. Все-таки форум коммерческий, а подобные темы увеличивают посещаемость.
Но, это пусть решает администрация. Я тут никак и ничем не заинтересован.
Разве что в смысле  просвещения широких народных масс. Дабы не травились сырцом, а делали хороший спирт.

Цитата: yurgen от 09 Окт. 2019 в 23:55В стеклянной колонне интересно наблюдать как движутся фронты  различных фракций  по насадкам

А как решается вопрос с утеплением? Ведь теплопотери очень существенные!
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dunkel

Цитата: yurgen от 09 Окт. 2019 в 23:55особенно когда разгонял смесь  воды ,ацетона , изопропанола и этанола

Так ведь это и есть обычный самогон.  И некоторые его пьют!
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

yurgen

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

Добавлено 10 Окт. 2019 в 00:32

Цитата: Dunkel от 10 Окт. 2019 в 00:26и есть обычный самогон.  И некоторые его пьют!
Согласен, .:)
Но у меня это был раствор для замачивания тесловских модулей для извлечения из него пальчиков.
Там еще и этилацетат кажется был, но точно не помню уже., давно было.
И раствора этого было много , литров 10 наверное.
Глупо было его выливать в канализацию.
Самовар , Кваньшунь 3 кВт , келли 200А,  LG E48 3кВтЧ.
80км/ч     
> 70 000 км

Dunkel



Спирт закончился, пошли хвосты. Тот самый изопропанол и этилацетат.

Ацетон в головах вышел.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

NikolajR

Т.е. полка на 76,3 С - это "тело"? И можно по температуре отсекать хвосты?