Сканироваие 1-Wire. Массив DS18B20

Вопросы по встроенным блокам
Ответить
Igor
Рядовой
Сообщения: 55
Зарегистрирован: 28.11.2020{, 06:20}
Репутация: 3
Имя: test

Сканироваие 1-Wire. Массив DS18B20

#1

Сообщение Igor » 12.05.2022{, 15:14}

Приветствую!
1. Я правильно понял что сканирование шины с записью в массив нескольких датчиков на одной шине не работает?
Неужели каждый датчик на отдельный пин сажать. Смысл тогда этой шины.
Цель такая - есть шина с несколькими датчиками, один вышел из строя, его просто меняем и сканируем. Продолжаем работу.

2. Как в EEPROM записать и считать массив (адрес датчиков)? Городить огород из 16 блоков (8 запись, 8 чтение)? И это только на один датчик (((

Аватара пользователя
karen
Рядовой
Сообщения: 66
Зарегистрирован: 15.01.2016{, 22:45}
Репутация: 30
Откуда: Mars
Имя: Karen
Контактная информация:

Сканироваие 1-Wire. Массив DS18B20

#2

Сообщение karen » 12.05.2022{, 17:42}

Как я понял можно вешать и на 1 пин просто при скане не понятно какой 1 какой 3 ds, я пока повесил так, каждый ds на разный пин.
karens4

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Сканироваие 1-Wire. Массив DS18B20

#3

Сообщение Phazz » 12.05.2022{, 18:23}

Работает, но автоматически трудно понять какой датчик заменили

Отправлено спустя 2 минуты 28 секунд:
Есть вариант одна шина для чтения всех датчиков и одна для сканирования при замене. А потом копировать отсканированный массив на место неисправного датчика

artemka19
Лейтенант
Сообщения: 540
Зарегистрирован: 03.09.2020{, 15:41}
Репутация: 216
Откуда: Питер
Имя: Артем

Сканироваие 1-Wire. Массив DS18B20

#4

Сообщение artemka19 » 12.05.2022{, 18:49}

Phazz,
но это с перепрошивкой только?

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Сканироваие 1-Wire. Массив DS18B20

#5

Сообщение Phazz » 12.05.2022{, 19:17}

Нет, копирование массива доступно без перепрошивки. Я даже как-то на форуме делал такое

Igor
Рядовой
Сообщения: 55
Зарегистрирован: 28.11.2020{, 06:20}
Репутация: 3
Имя: test

Сканироваие 1-Wire. Массив DS18B20

#6

Сообщение Igor » 12.05.2022{, 19:42}

Phazz, Не пойдет, нужно готовое устройство с дисплеем для человека который может только поменять датчик и понажимать на кнопки настроек, похоже придется каждый датчик вешать на отдельный пин. Буду разбираться как сделать меню для сканирования каждой шины. Может есть у кого наработки? Дисплей 1602, 3 канала (датчик +реле) через меню настройка температуры и гистерезиса. Сканирование тоже через меню. Настройки и адреса отсканированных датчиков сохранять в EEPROM.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Сканироваие 1-Wire. Массив DS18B20

#7

Сообщение Phazz » 12.05.2022{, 20:30}

Не нужно отдельно сканировать шину если только 1 датчик на пине. Есть автосканирование

Отправлено спустя 6 минут 1 секунду:
Можно конечно извернуться и сначала отсканировать и вписать все датчики. А когда нужно будет заменить датчик, просто меняем и нажимаем в меню сканировать. При сканировании он сверяет установленные датчики с теми что в памяти и при нахождении непарного значения записываем туда новый датчик

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Сканироваие 1-Wire. Массив DS18B20

#8

Сообщение Rovki » 12.05.2022{, 20:40}

Делал до 16 датчиков на 1 шину , сканировал по очереди в веб интерфейсе все настройки
Электронщик до мозга костей и не только

artemka19
Лейтенант
Сообщения: 540
Зарегистрирован: 03.09.2020{, 15:41}
Репутация: 216
Откуда: Питер
Имя: Артем

Сканироваие 1-Wire. Массив DS18B20

#9

Сообщение artemka19 » 12.05.2022{, 21:17}

Rovki писал(а):
12.05.2022{, 20:40}
Делал до 16 датчиков на 1 шину , сканировал по очереди в веб интерфейсе все настройки
как я понял, при замене одного датчика, нужно ВСЕ остальные отсоединять.

Igor
Рядовой
Сообщения: 55
Зарегистрирован: 28.11.2020{, 06:20}
Репутация: 3
Имя: test

Сканироваие 1-Wire. Массив DS18B20

#10

Сообщение Igor » 12.05.2022{, 21:45}

Rovki, Супер!
Ребята, посмотрите мой проект, что я не так делаю?
5 кнопок, долгое нажатие кнопки меню вход и выход из меню, далее в меню настройки температуры и гистерезиса для 1 и 2 реле, а на 3 канале реле не будет, просто зуммер будет пищать при достижении минимума или максимума (это 5 плата, там еще не рисовал схему). У меня какой то бред на дисплее отображается(((
ЗЫ. Решил все таки сделать для 3-х датчиков отдельные пины. Думаю так удобнее.
MyThermostat 1.1.flp
(773.33 КБ) 50 скачиваний

Igor
Рядовой
Сообщения: 55
Зарегистрирован: 28.11.2020{, 06:20}
Репутация: 3
Имя: test

Сканироваие 1-Wire. Массив DS18B20

#11

Сообщение Igor » 21.05.2022{, 08:23}

Все сделал, работает как и задумывалось кроме одного - датчики сканируются, но после отключения питания нужно опять сканировать.
Как записать адреса найденных датчиков в EEPROM ? три датчика и у каждого по 9 байт. И как потом адреса считывать из памяти и подсунуть программе?
Что ни у ко нет мыслей?

rogekam
Рядовой
Сообщения: 77
Зарегистрирован: 24.06.2020{, 21:21}
Репутация: 28
Откуда: RUS31
Имя: Egor

Сканироваие 1-Wire. Массив DS18B20

#12

Сообщение rogekam » 21.05.2022{, 22:30}

av писал(а):
21.05.2022{, 11:32}
Igor писал(а):
21.05.2022{, 08:23}
Что ни у ко нет мыслей?
Поменяйте блок датчика на пользовательский блок с автосканированием, здесь на форуме где то был.
Ранее выкладывал где то. Вносил изменения. Последняя версия, рабочая.
1.jpg
1.jpg (25.6 КБ) 1325 просмотров
ds18b20_021_no_delay_master_(Code_-_Basic).ubi
(4.06 МБ) 83 скачивания

Igor
Рядовой
Сообщения: 55
Зарегистрирован: 28.11.2020{, 06:20}
Репутация: 3
Имя: test

Сканироваие 1-Wire. Массив DS18B20

#13

Сообщение Igor » 21.05.2022{, 22:59}

av писал(а):
21.05.2022{, 11:32}
Поменяйте блок датчика на пользовательский блок с автосканированием, здесь на форуме где то был.
Вы не поймете - мне не нужно автосканитрование - нужно только при подключении МК к питанию, дальше при выборе в меню какой датчик сканировать -- он и сканируется. Тут загвоздка в том чтобы ---нажал скан1--датчик нашелся и его адрес был записан в память. 3 датчика на 3 пинах. через неделю включил и все датчики работают. А сканировать при каждом чихе - думаю это извращение.

Отправлено спустя 15 минут 14 секунд:
rogekam, Спасибо. Посмотрю ваш код. И все таки спортивный интерес -- штатным блоком датчики сканируются -- норм! но адреса не записаны

Igor
Рядовой
Сообщения: 55
Зарегистрирован: 28.11.2020{, 06:20}
Репутация: 3
Имя: test

Сканироваие 1-Wire. Массив DS18B20

#14

Сообщение Igor » 24.05.2022{, 11:49}

И опять все не то.
Есть три датчика, есть либо один пункт меню, либо три для сканирования.
Подключил три датчика - нажал один раз кнопку сканирования - все адреса записались в память.
Зачем постоянно сканировать их? Думаю в момент сканирования у реле будет свистопляска.
Контроль исправности можно и по показаниям определять.

Отправлено спустя 19 минут 25 секунд:
В выше приведенном блоке вообще какой то каламбур))
#include <string.h> зачем это? уже есть в компиляторе

Отправлено спустя 3 минуты 56 секунд:
Вообще вопрос то был простой - как отсканировать шину в массив, записать массив в EEPROM и при любых сбоях с питанием продолжать работу уже без сканирования?

Igor
Рядовой
Сообщения: 55
Зарегистрирован: 28.11.2020{, 06:20}
Репутация: 3
Имя: test

Сканироваие 1-Wire. Массив DS18B20

#15

Сообщение Igor » 29.05.2022{, 05:46}

rogekam, Как то не правильно работает блок
При 1 на вход En и при задании timeout в 60000 то происходит не сканирование раз в минуту, а считывание показаний с датчика раз в минуту
Правильней было бы так:
1. настройка сканирования - 1 раз в час (например)
2. настройка считывания показаний - раз в 3 сек

На выходе add выводится строка с адресом датчика, ну и что мне с ней делать?
Нужно чтобы подключил датчик, нажал кнопочку сканировать (через меню)- адрес записался в память.
Далее работаем с известным нам адресом датчика
Зачем это автосканирование? Если только для контроля работоспособности раз в час например.

rogekam
Рядовой
Сообщения: 77
Зарегистрирован: 24.06.2020{, 21:21}
Репутация: 28
Откуда: RUS31
Имя: Egor

Сканироваие 1-Wire. Массив DS18B20

#16

Сообщение rogekam » 29.05.2022{, 09:30}

Igor писал(а):
24.05.2022{, 12:12}
В выше приведенном блоке вообще какой то каламбур))
#include <string.h> зачем это? уже есть в компиляторе
Игорь, сюдя по вашим замечаниям, вам по силам самому написать пользовательский блок, согласно вашего технического задания. Успехов!))

Igor
Рядовой
Сообщения: 55
Зарегистрирован: 28.11.2020{, 06:20}
Репутация: 3
Имя: test

Сканироваие 1-Wire. Массив DS18B20

#17

Сообщение Igor » 29.05.2022{, 12:04}

rogekam, Спасибо!
Я так и делаю, За пол дня написал скетч собранный из разных источников.
1. сканирует шину 1ware
2. записывает адрес датчика в массив
3.массив записывает по назначенному адресу в EEPROM
4. читает из адреса еепром в массив
библиотека подхватывает и показывает температуру совсем на другом скетче, без всяких сканирований!

Я совсем не программист, буду дальше развивать, думал уже есть решения ))

Igor
Рядовой
Сообщения: 55
Зарегистрирован: 28.11.2020{, 06:20}
Репутация: 3
Имя: test

Сканироваие 1-Wire. Массив DS18B20

#18

Сообщение Igor » 30.05.2022{, 16:06}

Накидал простейший блок на библиотеке DallasTemperature.h -- ее нужно установить, и конечно OneWire.h
Думаю библиотека DallasTemperature.h должна идеально подойти для разных задач с DS18B20
Никаких сканирований, в настройках только пин датчика, при 1 на входе блок отработает (рекомендую раз в 2 сек)
Пример проекта
Dallas1.flp
(131 КБ) 66 скачиваний
Блок
Dallas1_(Code_-_Basic).ubi
(44.61 КБ) 65 скачиваний

Ответить

Вернуться в «Штатные блоки»