Как подвязать программу не к самим датчикам ds18b20, а к их разъемам?

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

ты слов не жалей, ты же хочешь, чтоб мы чонибуть поняли? 

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

Прошу прощения, как-то неправильно что-то нажал... Пожалуйста, дайте ссылку, где посмотреть следующее решение (желательно, без использования библиотеки Dallas Temperature). Насколько я понял, при параллельном подключении сенсоров данные считываются в связи с их серийными номерами. На практике подключение датчиков будет произвольным: возможно - не все датчики, возможно все, но в произвольном порядке. Или замена датчика при выходе из строя. Мне нужно, чтобы температура снималась, будучи подвязанной именно к разъемам. К примеру: 1 разъем - температура за окном, 2 разъем - в подвале, 3 разъем в комнате, 4 разъем - на чердаке. Заранее спасибо!

sadman41
Offline
Зарегистрирован: 19.10.2016

Без особых трудозатрат - только рассадив далласы на разные пины контроллера.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017
struct {

uint8_t PlaceIndex;

uint64_t SensorAddress;

};

Меню городить придёцца, чтоб вручную привязывать адрес даччика к его месту установки. 
Хранить в ROM.
Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

Спасибо, но ой-йой! Лучше на разные пины: в Меге их за глаза :)

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

Понял, спасибо!

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Дед, какое меню?
Садим каждый на свой пин и читаем то что есть.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

ну дак если Мега, тогда смысл вопроса теряется. 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Да даже если не Мега, то можно их подключить в несколько раз больше, чем на картинке.

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

struct {
uint8_t PlaceIndex;
uint64_t SensorAddress;
};

Меню городить придёцца, чтоб вручную привязывать адрес даччика к его месту установки.
Хранить в ROM.

поясни свою мысль. - не понял.

На мой взгляд, если подключать как на картинке ТС - задача нерешаемая в принципе. Два параллельных провода невозможно различить программно...

sadman41
Offline
Зарегистрирован: 19.10.2016

b707 пишет:

DetSimen пишет:

struct {
uint8_t PlaceIndex;
uint64_t SensorAddress;
};

поясни свою мысль. - не понял.

Адрес #1 - место #1 (сортир), адрес #2 - место #2 (диван). Потом просто в цыкле всё делаем.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

дак оне адресами отличаются, можно привязать каждый адрес даччика к месту установки, через структуру, хранить в ROM.  Как только один из даччиков в каком либо месте поменялся - сохранить вместо прежнего. Константой будет PlaceIndex - место где установлен даччик (типа номер разъема, как хочет ТС), а адреса даччиков структурой будут привязаны к ним.  

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

b707 пишет:

 

На мой взгляд, если подключать как на картинке ТС - задача нерешаемая в принципе

Да чойта?  всё решается. 

b707
Offline
Зарегистрирован: 26.05.2017

ну ладно...значит я понял задачу по другому

nik182
Offline
Зарегистрирован: 04.05.2015

С этими датчиками точно не решается сидя на одной линии. Задача - не лазя в программу заменить датчик и должно работать. Как определить в какую структуру что писать если заменили сразу два датчика?

SLKH
Offline
Зарегистрирован: 17.08.2015

nik182 пишет:

С этими датчиками точно не решается сидя на одной линии. Задача - не лазя в программу заменить датчик и должно работать. Как определить в какую структуру что писать если заменили сразу два датчика?

Повесить инструкцию: менять по одному.

Но читать её не будут.

b707
Offline
Зарегистрирован: 26.05.2017

SLKH пишет:

Повесить инструкцию: менять по одному.

Но читать её не будут.

Даже если прочтут - это ничего не гарантирует, трактовок идеи  "менять по одному" может быть несколько :)

Logik
Offline
Зарегистрирован: 05.08.2014

SLKH пишет:

nik182 пишет:

С этими датчиками точно не решается сидя на одной линии. Задача - не лазя в программу заменить датчик и должно работать. Как определить в какую структуру что писать если заменили сразу два датчика?

Повесить инструкцию: менять по одному.

Но читать её не будут.

Какие еще инструкции для себя родимого! По одному все блеск. А по несколько - делаю с "меню" т.е. списком точек установки. Но у меня везде экран есть где такая проблема. А вот без экрана и если датчики погорели... наверно никак.

Хотя есть там регистры EEPROM для тригера. В них перед установкой нового датчика можно зашить код места установки. Если устройство обнаруживает ранее неизвестный датчик то читает куда его поставили из его же памяти. Но я так не пробовал.

Вариант с подключением на разные пины имеет минус - много лишних проводов.

vk007
Offline
Зарегистрирован: 16.06.2015

Logik пишет:

Вариант с подключением на разные пины имеет минус - много лишних проводов.

Ну это только если все датчики одним пучком в одном месте, рядом или размещены последовательно, а если

Sonologist пишет:

1 разъем - температура за окном, 2 разъем - в подвале, 3 разъем в комнате, 4 разъем - на чердаке

то - что в лоб, что по лбу, один хрен тянуть кучу проводов надо.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Sonologist пишет:

 Мне нужно, чтобы температура снималась, будучи подвязанной именно к разъемам. К примеру: 1 разъем - температура за окном, 2 разъем - в подвале, 3 разъем в комнате, 4 разъем - на чердаке. Заранее спасибо!

 

Если для комнат, то, как уже здесь сказали, без дополнительных проводв - никак. 

Если для колонны, то можно автоопределять датчики по грандиенту роста температур после включения нагрева.

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

asam пишет:

Если для колонны, то можно автоопределять датчики по грандиенту роста температур после включения нагрева.

Это правда. Но представим себе ситуацию, что аппарат стоит в теплом помещении. Заливаем в куб холодное содержимое (брага, СС...). И ага? То есть, надо ждать некоторое время для разгрева и только потом автоопределять датчики. Неизящный выход. Но спасибо за мнение. Выудил из темы, что (и для колонны и для комнат-окон-чердаков) надо сажать датчики на разные пины. Самое простое решение.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Всё очень просто:
Входим в режим привязки.
Греем первый датчик зажигалкой, сохраняем под номером 1
И так далее...

Logik
Offline
Зарегистрирован: 05.08.2014

не. не очень. Если датчики внутри оборудования, той же колонны, то с зажигалкой к ним не доберешся. И даже пальцем не нагреешь (я обычно где можно достать без зажигалки обхожусь). Но у контроллеров таких серьезных устройств как правило есть экран, а значить меню и без вопросов. Кстати "режим привязки" как бы тоже предполагает то самое меню.  А вот лишние провода в оборудовании создают проблему  не только сами по себе, им еще раземы нужны многоконтактные, что сводит на нет основное преимущество интерфейса. Так уж лучше терморезисторы ставить.

Logik
Offline
Зарегистрирован: 05.08.2014

Sonologist пишет:

То есть, надо ждать некоторое время для разгрева и только потом автоопределять датчики. Неизящный выход. 

Очень изящный на самом деле, т.к. "автоопределять датчики" только раз при первом пуске (например пробном, на воде), потом сохранить в eeprom и пользоватся готовым.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

В меню устройства сделать служебный пункт "Замена датчиков", железка опрашивает все датчики - вытаскиваем "больной" - прога говорит датчик №Х удален, вставляем новый - скетч спрашивает это вставили в №Х? - говорим да - MAC адрес привязался к нужному месту.

 

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

В общем, тема позволила сделать мне следующие выводы:

1. Что так, что так - будет одинаковое количество проводов (такова уж конфигурация устройства) .

2. На Меге пинов достаточно, поэтому городить программный огород нет смысла: буду ставить сенсоры каждый на свой пин.

Всем большое спасибо!