#1 2022-01-18 21:49:59

ytry
Учасник
Зареєстрований: 2018-01-12
Повідомлень: 17

Мониторинг ошибки на OneWire

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

ВСТУПЛЕНИЕ:
Есть примитивный скетч для управления отоплением. В системе установлены 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" - ХОТЯ, все показания на датчиках есть..

ВОПРОС:

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

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

Остання редакція ytry (2022-01-18 21:51:17)

Неактивний

#2 2022-01-18 21:56:37

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 875

Re: Мониторинг ошибки на OneWire

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

Неактивний

#3 2022-01-18 22:02:35

ytry
Учасник
Зареєстрований: 2018-01-12
Повідомлень: 17

Re: Мониторинг ошибки на OneWire

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

Неактивний

#4 2022-01-18 22:10:47

ytry
Учасник
Зареєстрований: 2018-01-12
Повідомлень: 17

Re: Мониторинг ошибки на OneWire

Вот щит внутри
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

Неактивний

#5 2022-01-18 22:24:26

г0сть
Гість

Re: Мониторинг ошибки на OneWire

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();

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

#6 2022-01-18 22:35:00

ytry
Учасник
Зареєстрований: 2018-01-12
Повідомлень: 17

Re: Мониторинг ошибки на OneWire

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

Неактивний

#7 2022-01-18 23:24:08

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 414

Re: Мониторинг ошибки на OneWire

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

Неактивний

#8 2022-01-19 00:45:05

г0сть
Гість

Re: Мониторинг ошибки на OneWire

Honey пише:

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

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

#9 2022-01-19 00:50:06

ytry
Учасник
Зареєстрований: 2018-01-12
Повідомлень: 17

Re: Мониторинг ошибки на OneWire

г0сть пише:
Honey пише:

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

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

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

Неактивний

#10 2022-01-19 00:54:35

г0сть
Гість

Re: Мониторинг ошибки на OneWire

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

#11 2022-01-19 08:25:04

уравнитель
Гість

Re: Мониторинг ошибки на OneWire

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

#12 2022-01-19 11:34:21

ytry
Учасник
Зареєстрований: 2018-01-12
Повідомлень: 17

Re: Мониторинг ошибки на OneWire

уравнитель пише:

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

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

Неактивний

#13 2022-01-19 14:32:44

ytry
Учасник
Зареєстрований: 2018-01-12
Повідомлень: 17

Re: Мониторинг ошибки на OneWire

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

Неактивний

#14 2022-01-20 00:24:21

ytry
Учасник
Зареєстрований: 2018-01-12
Повідомлень: 17

Re: Мониторинг ошибки на OneWire

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

Остання редакція ytry (2022-01-20 00:25:17)

Неактивний

Швидке повідомлення

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

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