Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

ytry
2022-01-20 00:24:21

На данном этапе, мне не важна красота кода, мне более важно выжать из контроллера его именно простой функционал..
Непрерывная слежка за параметрами и автоматическая регуляция процессов в управлении простой домашней котельной - не нужны!.
У меня была задача снять нагрузку с оператора котельной, а именно: включать и выключать насосы по помещениям должен контроллер, а не оператор. Это делается для того, чтобы поддерживать температуру в доме и в подсобных помещениях строго в райне заданной. Для этого мне только  и нужно, что опросить Далласы и выполнить простой код, заняв, при этом, 8 портов на релюхи и 1 порт на далласы. Итого 9 портов и 150 строчек кода.
Мне от контроллера за 200 грн больше ничего не надо. Вся его работа - это включать свет по светореле, и измерять и сравнивать и включать релюхи.
Он полностью выполняет свою работу уже около 5-ти лет, а в этом году, вот, появилась лампочка и кнопка перезагрузки. Дисплей врезать не успел. Но, по сути, там все настроено уже точно за все эти годы... Параметры эмпирическим путем получены и вшиты уже прямо в код, ничего не нужно даже менять. В доме есть точно установленная температура 22оС и в подсобных 21оС.
Раньше у оператора котельной был алгоритм: если прошло около часа, котел и бак-накопитель нагрелись до 60оС, а тепло в батареи не пошло, то надо пойти открыть щиток и выключить, а потом включить автомат. А сейчас, если шина ванвайр отвалилась, то лампочка загорится и папа или мама нажмут на кнопку и перезагрузят контроллер по питанию. Это сэкономит время и тепло в дом пойдет четко по расписанию.
В этом, как бы, суть.

ytry
2022-01-19 14:32:44

Ну, все заработало, как надо..

ytry
2022-01-19 11:34:21
уравнитель пише:

сравнивайте, а не присваивайте, (tempC1 == -127) и т.д.

Спасибо. Коротко и емко))

уравнитель
2022-01-19 08:25:04

сравнивайте, а не присваивайте, (tempC1 == -127) и т.д.

г0сть
2022-01-19 00:54:35

Хозяин - барин.

ytry
2022-01-19 00:50:06
г0сть пише:
Honey пише:

Специально для Вас: https://arduino.ua/ru/prod4832-master

С таким монтажом сомневаюсь что даже это поможет. А про секретный код вааще молчу...

С каким это ТАКИМ монтажем, проФФесор?
Лучше ваще молчи, за умного сойдешь))

г0сть
2022-01-19 00:45:05
Honey пише:

Специально для Вас: https://arduino.ua/ru/prod4832-master

С таким монтажом сомневаюсь что даже это поможет. А про секретный код вааще молчу...

Honey
2022-01-18 23:24:08

Специально для Вас: https://arduino.ua/ru/prod4832-master

ytry
2022-01-18 22:35:00

Питание у них свое отдельное через стабилизатор 12-3,3В

г0сть
2022-01-18 22:24:26
ytry пише:

ЗАДАЧА:
Шина Далласов работает не очень хорошо,

РЕШЕНИЕ:
разобраться с питанием и подключением датчиков

ytry пише:

Дописал такую хрень:
   //проверка на ошибки

if ((tempC1 = -127)&&(tempC2 = -127)&&(tempC3 = -127)&&(tempC4 = -127)&&(tempC5 = -127)&&(tempC6 = -127)&&(tempC7 = -127))
  {
    analogWrite (mist, 255); // На пин А1 посадил диод

    Serial.print("ошибка Dallas OneWire");
    Serial.println();

ПРОБЛЕМА ПО СУТИ:
Короче, код перестал работать вообще. Все далласы показывают -127.
Начал крутить-вертеть и оставил кусок кода:
if (tempC1 = -127)
  {
    analogWrite (mist, 255); // На пин А1 посадил диод

    Serial.print("ошибка Dallas OneWire");
    Serial.println();

Вот прям так и пишете?

ytry
2022-01-18 22:10:47

Вот щит внутри
mini_photo_2022-01-18_21-05-29.jpg

Вот кнопка с лампочкой внутри и снаружи

mini_photo_2022-01-18_21-05-32.jpgmini_photo_2022-01-18_21-05-35.jpg

Вот монитор порта с ошибкой (вылезла на ровном месте)
mini_photo_2022-01-18_21-05-25.jpg

ytry
2022-01-18 22:02:35

У меня раз в 10 сек опрос

vvr
2022-01-18 21:56:37

далласы требуют до 1 сек на получение температуры.
надо правильно организовать опрос и всё будет гуд.

ytry
2022-01-18 21:49:59

Добрый день.
Помогите разобраться.

ВСТУПЛЕНИЕ:
Есть примитивный скетч для управления отоплением. В системе установлены 7 датчиков Даллас и они опрашиваются по адресам

DeviceAddress Thermometer1 = {
0x28, 0xFF, 0xF6, 0x1E, 0x51, 0x18, 0x01, 0x4B }; //D3 28 FF F6 1E 51 18 01 4B котел подача
DeviceAddress Thermometer2 = {
0x28, 0xFF, 0xC7, 0x10, 0xA6, 0x16, 0x04, 0x03 }; //D5 28 FF C7 10 A6 16 4 3 дом воздух
DeviceAddress Thermometer3 = {
0x28, 0x61, 0x64, 0x11, 0xB0, 0x76, 0x28, 0x12 };  //D0 28 61 64 11 B0 76 28 12 кухня   
DeviceAddress Thermometer4 = {
0x28, 0xFF, 0x98, 0x94, 0xA6, 0x16, 0x03, 0xAD }; //D2 28 FF 98 94 A6 16 3 AD  верх бака
DeviceAddress Thermometer5 = {
0x28, 0xFF, 0x33, 0x45, 0xA6, 0x16, 0x04, 0xE3 }; //D4 середина бака 28 FF 33 45 A6 16 04 E3
DeviceAddress Thermometer6 = {
0x28, 0xFF, 0xC7, 0x1C, 0xA6, 0x16, 0x04, 0x11 }; //D6  низ бака 28 FF C7 1C A6 16 04 11
DeviceAddress Thermometer7 = {
0x28, 0x61, 0x64, 0x11, 0xB0, 0x76, 0xFD, 0x7A }; //D1  подача на насосы 28 61 64 11 B0 76 FD 7A

Потом в цикле они опрашиваются

float tempC1 = sensors.getTempC(Thermometer1); // котел подача      28 FF DE 16 A6 16 4 85
  float tempC2 = sensors.getTempC(Thermometer2); // дом воздух        28 FF C7 10 A6 16 4 3
  float tempC3 = sensors.getTempC(Thermometer3); // кухня             28 61 64 11 B0 76 28 12
  float tempC4 = sensors.getTempC(Thermometer4); // верх бака         28 FF 98 94 A6 16 3 AD
  float tempC5 = sensors.getTempC(Thermometer5); // середина бака     28 FF 33 45 A6 16 04 E3
  float tempC6 = sensors.getTempC(Thermometer6); // низ бака          28 FF C7 1C A6 16 04 11
  float tempC7 = sensors.getTempC(Thermometer7); // подача на насосы  28 61 64 11 B0 76 FD 7A

Далее выполняю простые команды "иф/элс", например:
if (((tempC3<21)&(tempC7>33))||(tempC3<15))// в кухне меньше 23 и подача теплая ИЛИ котел горячий ИЛИ в (кухне ниже 15)
{
  digitalWrite (kyxnya, LOW), Serial.print("Насос кухня включен ");
 
  Serial.println(); 
}
else
{
  digitalWrite (kyxnya, HIGH), Serial.print("Насос кухня отключен ");
  Serial.println();

ЗАДАЧА:
Шина Далласов работает не очень хорошо, при перепадах напряжения или резких вкл/выкл она отваливается и все значения становятся -127
Перезагрузка контроллера не решает, нужно только дергать питание контроллера. Для этого вывел кнопку на переднюю панель.
Экрана пока нету, поэтому иногда не видишь, что шина отвалилась (случается редко, но метко)
Захотел я добавить кусок кода и лампочку вывести на панель, чтобы включалась, когда отваливается шина.

Дописал такую хрень:
   //проверка на ошибки

if ((tempC1 = -127)&&(tempC2 = -127)&&(tempC3 = -127)&&(tempC4 = -127)&&(tempC5 = -127)&&(tempC6 = -127)&&(tempC7 = -127))
  {
    analogWrite (mist, 255); // На пин А1 посадил диод

    Serial.print("ошибка Dallas OneWire");
    Serial.println();

ПРОБЛЕМА ПО СУТИ:
Короче, код перестал работать вообще. Все далласы показывают -127.
Начал крутить-вертеть и оставил кусок кода:
if (tempC1 = -127)
  {
    analogWrite (mist, 255); // На пин А1 посадил диод

    Serial.print("ошибка Dallas OneWire");
    Serial.println();

Теперь показания в мониторе порта все верные, но диод горит и строка "ошибка Dallas OneWire" - ХОТЯ, все показания на датчиках есть..

ВОПРОС:

а) подскажите, где я неправильно делаю
б) подскажите другое лаконичное решение проверки шины на отвал

Благодарю за внимание к моей проблеме.

Підвал форуму