Страница 1 из 1
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 12 май 2022, 15:14
Igor
Приветствую!
1. Я правильно понял что сканирование шины с записью в массив нескольких датчиков на одной шине не работает?
Неужели каждый датчик на отдельный пин сажать. Смысл тогда этой шины.
Цель такая - есть шина с несколькими датчиками, один вышел из строя, его просто меняем и сканируем. Продолжаем работу.
2. Как в EEPROM записать и считать массив (адрес датчиков)? Городить огород из 16 блоков (8 запись, 8 чтение)? И это только на один датчик (((
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 12 май 2022, 17:42
karen
Как я понял можно вешать и на 1 пин просто при скане не понятно какой 1 какой 3 ds, я пока повесил так, каждый ds на разный пин.
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 12 май 2022, 18:26
Phazz
Работает, но автоматически трудно понять какой датчик заменили
Отправлено спустя 2 минуты 28 секунд:
Есть вариант одна шина для чтения всех датчиков и одна для сканирования при замене. А потом копировать отсканированный массив на место неисправного датчика
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 12 май 2022, 18:49
artemka19
[ref=#808080]Phazz[/ref],
но это с перепрошивкой только?
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 12 май 2022, 19:17
Phazz
Нет, копирование массива доступно без перепрошивки. Я даже как-то на форуме делал такое
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 12 май 2022, 19:42
Igor
[ref=#808080]Phazz[/ref], Не пойдет, нужно готовое устройство с дисплеем для человека который может только поменять датчик и понажимать на кнопки настроек, похоже придется каждый датчик вешать на отдельный пин. Буду разбираться как сделать меню для сканирования каждой шины. Может есть у кого наработки? Дисплей 1602, 3 канала (датчик +реле) через меню настройка температуры и гистерезиса. Сканирование тоже через меню. Настройки и адреса отсканированных датчиков сохранять в EEPROM.
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 12 май 2022, 20:36
Phazz
Не нужно отдельно сканировать шину если только 1 датчик на пине. Есть автосканирование
Отправлено спустя 6 минут 1 секунду:
Можно конечно извернуться и сначала отсканировать и вписать все датчики. А когда нужно будет заменить датчик, просто меняем и нажимаем в меню сканировать. При сканировании он сверяет установленные датчики с теми что в памяти и при нахождении непарного значения записываем туда новый датчик
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 12 май 2022, 20:40
Rovki
Делал до 16 датчиков на 1 шину , сканировал по очереди в веб интерфейсе все настройки
https://youtu.be/wSVMBMNyP5I
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 12 май 2022, 21:17
artemka19
Rovki писал(а): 12 май 2022, 20:40
Делал до 16 датчиков на 1 шину , сканировал по очереди в веб интерфейсе все настройки
как я понял, при замене одного датчика, нужно ВСЕ остальные отсоединять.
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 12 май 2022, 21:45
Igor
[ref=#ff8000]Rovki[/ref], Супер!
Ребята, посмотрите мой проект, что я не так делаю?
5 кнопок, долгое нажатие кнопки меню вход и выход из меню, далее в меню настройки температуры и гистерезиса для 1 и 2 реле, а на 3 канале реле не будет, просто зуммер будет пищать при достижении минимума или максимума (это 5 плата, там еще не рисовал схему). У меня какой то бред на дисплее отображается(((
ЗЫ. Решил все таки сделать для 3-х датчиков отдельные пины. Думаю так удобнее.
MyThermostat 1.1.flp
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 21 май 2022, 08:23
Igor
Все сделал, работает как и задумывалось кроме одного - датчики сканируются, но после отключения питания нужно опять сканировать.
Как записать адреса найденных датчиков в EEPROM ? три датчика и у каждого по 9 байт. И как потом адреса считывать из памяти и подсунуть программе?
Что ни у ко нет мыслей?
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 21 май 2022, 22:30
rogekam
av писал(а): 21 май 2022, 11:32
Igor писал(а): 21 май 2022, 08:23
Что ни у ко нет мыслей?
Поменяйте блок датчика на пользовательский блок с автосканированием, здесь на форуме где то был.
Ранее выкладывал где то. Вносил изменения. Последняя версия, рабочая.
1.jpg
ds18b20_021_no_delay_master_(Code_-_Basic).ubi
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 21 май 2022, 23:14
Igor
av писал(а): 21 май 2022, 11:32
Поменяйте блок датчика на пользовательский блок с автосканированием, здесь на форуме где то был.
Вы не поймете - мне не нужно автосканитрование - нужно только при подключении МК к питанию, дальше при выборе в меню какой датчик сканировать -- он и сканируется. Тут загвоздка в том чтобы ---нажал скан1--датчик нашелся и его адрес был записан в память. 3 датчика на 3 пинах. через неделю включил и все датчики работают. А сканировать при каждом чихе - думаю это извращение.
Отправлено спустя 15 минут 14 секунд:
[ref]rogekam[/ref], Спасибо. Посмотрю ваш код. И все таки спортивный интерес -- штатным блоком датчики сканируются -- норм! но адреса не записаны
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 24 май 2022, 12:12
Igor
И опять все не то.
Есть три датчика, есть либо один пункт меню, либо три для сканирования.
Подключил три датчика - нажал один раз кнопку сканирования - все адреса записались в память.
Зачем постоянно сканировать их? Думаю в момент сканирования у реле будет свистопляска.
Контроль исправности можно и по показаниям определять.
Отправлено спустя 19 минут 25 секунд:
В выше приведенном блоке вообще какой то каламбур))
#include <string.h> зачем это? уже есть в компиляторе
Отправлено спустя 3 минуты 56 секунд:
Вообще вопрос то был простой - как отсканировать шину в массив, записать массив в EEPROM и при любых сбоях с питанием продолжать работу уже без сканирования?
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 29 май 2022, 05:46
Igor
[ref]rogekam[/ref], Как то не правильно работает блок
При 1 на вход En и при задании timeout в 60000 то происходит не сканирование раз в минуту, а считывание показаний с датчика раз в минуту
Правильней было бы так:
1. настройка сканирования - 1 раз в час (например)
2. настройка считывания показаний - раз в 3 сек
На выходе add выводится строка с адресом датчика, ну и что мне с ней делать?
Нужно чтобы подключил датчик, нажал кнопочку сканировать (через меню)- адрес записался в память.
Далее работаем с известным нам адресом датчика
Зачем это автосканирование? Если только для контроля работоспособности раз в час например.
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 29 май 2022, 09:30
rogekam
Igor писал(а): 24 май 2022, 12:12
В выше приведенном блоке вообще какой то каламбур))
#include <string.h> зачем это? уже есть в компиляторе
Игорь, сюдя по вашим замечаниям, вам по силам самому написать пользовательский блок, согласно вашего технического задания. Успехов!))
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 29 май 2022, 12:04
Igor
[ref]rogekam[/ref], Спасибо!
Я так и делаю, За пол дня написал скетч собранный из разных источников.
1. сканирует шину 1ware
2. записывает адрес датчика в массив
3.массив записывает по назначенному адресу в EEPROM
4. читает из адреса еепром в массив
библиотека подхватывает и показывает температуру совсем на другом скетче, без всяких сканирований!
Я совсем не программист, буду дальше развивать, думал уже есть решения ))
Сканироваие 1-Wire. Массив DS18B20
Добавлено: 30 май 2022, 16:06
Igor
Накидал простейший блок на библиотеке DallasTemperature.h -- ее нужно установить, и конечно OneWire.h
Думаю библиотека DallasTemperature.h должна идеально подойти для разных задач с DS18B20
Никаких сканирований, в настройках только пин датчика, при 1 на входе блок отработает (рекомендую раз в 2 сек)
Пример проекта
Dallas1.flp
Блок
Dallas1_(Code_-_Basic).ubi