Всё по DS18(B/S)20.
Re: Всё по DS18(B/S)20.
Самое большое неудобство при параллельном включении датчиков, это когда один выходит из строя и не дает общаться с другими!
Подумайте, сколько "теплых" слов в адрес разработчика будет отправлено, когда из за вышедшего из строя одного датчика перестанет функционировать все устройство? Например, в инкубаторе на 1000 яиц? И как назло в это время никого поблизости не было!
Потом, как понять какой из датчиков вышел из строя? Тупо менять вбивая их номера? А если датчиков с десяток или более, а техпроцесс чувствителен к изменению температуры? А если обслуживающему персоналу закрыт доступ к настройкам? .....
Лично я теперь стараюсь придерживаться правила: один датчик - один пин порта.
Подумайте, сколько "теплых" слов в адрес разработчика будет отправлено, когда из за вышедшего из строя одного датчика перестанет функционировать все устройство? Например, в инкубаторе на 1000 яиц? И как назло в это время никого поблизости не было!
Потом, как понять какой из датчиков вышел из строя? Тупо менять вбивая их номера? А если датчиков с десяток или более, а техпроцесс чувствителен к изменению температуры? А если обслуживающему персоналу закрыт доступ к настройкам? .....
Лично я теперь стараюсь придерживаться правила: один датчик - один пин порта.
- Реклама
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Всё по DS18(B/S)20.
Это вы уже в отказоустойчивость ударились, это немного не то.
С таким же успехом можно сказать, что для подключения "один датчик - один пин порта" надо тянуть соотв. количество проводов вместо 2-х (3-х).
Мы обсуждаем программный вопрос этого дела.
С таким же успехом можно сказать, что для подключения "один датчик - один пин порта" надо тянуть соотв. количество проводов вместо 2-х (3-х).
Мы обсуждаем программный вопрос этого дела.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Всё по DS18(B/S)20.
Спасибо за помощь.
Прочитав все вышеперечисленное буду второй садить на другую ножку . Как их менять в зависимости от номера датчика если она прописана у дэфайн?
Прочитав все вышеперечисленное буду второй садить на другую ножку . Как их менять в зависимости от номера датчика если она прописана у дэфайн?
Re: Всё по DS18(B/S)20.
А зачем вам номер датчика??? Он уже не нужен... Вся прелесть подсоединения на разные пины... что пофигу номер и можно цеплять/менять датчики на ходу...
"Я не даю готовых решений, я заставляю думать!"(С)
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Всё по DS18(B/S)20.
оффтоп: давно внес этого товарища в черный список, но иной раз все-таки не удерживаюсь и просматриваю сообщения - а вдруг? всякий раз прихожу к выводу, что пора чудес прошла, ничего, кроме абсолютно бессмысленных изречений категории "прописных истин" и "риторических вопросов" этот товарищ не постит.HHIMERA писал(а):А зачем вам номер датчика??? Он уже не нужен... Вся прелесть подсоединения на разные пины... что пофигу номер и можно цеплять/менять датчики на ходу...
не_оффтоп: номер датчика - это количествнная характеристика проекта, т.е. у него не 1 датчик, а 2 или более. но чтобы это понять, надо умерить свою гордыню великого разработчика и знатока душ человеческих.
вам придется отказаться от дефайна, обозначающего порт/пин подключения датчика и использовать соответствующие переменные, где по ходу пьесы менять маску пина. например, так:
Код: Выделить всё
uint8_t pin_mask = _BV(PB0); // сначала работаем с линией 0
uint8_t get_bit(void){
return PINB & pin_mask != 1;
}тогда будете делать так:
Код: Выделить всё
// первый датчик
pin_mask = _BV(PB0);
int temperature_1 = temp_18b20();
// второй датчик
pin_mask = _BV(PB2);
int temperature_2 = temp_18b20();если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
Re: Всё по DS18(B/S)20.
Ну высрал так высрал... Да хоть десять датчиков... или двадцать... если они на разных пинах,то всё определяется количеством занятых пинов, а не номерами датчиков...ARV писал(а): номер датчика - это количествнная характеристика проекта, т.е. у него не 1 датчик, а 2 или более. но чтобы это понять, надо умерить свою гордыню великого разработчика и знатока душ человеческих.
Кому-то АВР явно весь мозг выел...
"Я не даю готовых решений, я заставляю думать!"(С)
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Всё по DS18(B/S)20.
HHIMERA, если вы что-то пытались возразить мне - напрасно, я не читаю ваш бред.
остальные, кто читает его посты: я сильно сомневаюсь, что там что-то полезное, но если вдруг я не прав - сообщите мне в личку, может мне придется пересмотреть свое отношение к персонажу...
простите, модераторы, за оффоп...
остальные, кто читает его посты: я сильно сомневаюсь, что там что-то полезное, но если вдруг я не прав - сообщите мне в личку, может мне придется пересмотреть свое отношение к персонажу...
простите, модераторы, за оффоп...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Всё по DS18(B/S)20.
А я наоборот... твой бред читаю... он веселит...
Особенно про UART в теме PIC... откровенно посмешило...

Особенно про UART в теме PIC... откровенно посмешило...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Всё по DS18(B/S)20.
А как то можно использовать не маску, а переменную для замены 4го на 5 пин и обратно?
Re: Всё по DS18(B/S)20.
Робятки...
Ежли несколько датчиков на сетке - то вроде алгоритм поиска/активации по заданному адресу выполнятся должен (SEARCH ROM [F0h]/READ ROM [33h]/MATCH ROM [55h]). А не простое обращение к "какому-то датчику" с посредства SKIP ROM [CCh] в командном пакете - тогда и проблем с "несколькими на проволочке" не будет. Притом неисправный никак на линию не повлияет - разве что КЗ задаст. Чего касательно привязки к объекту - выяснить индивидуальный номер и соответственно в ЕЕПРОМке прописать его за заданным объектом. Опять же индивидуальное творчество программиста...
Программное обеспечение конечно гораздо посложнее будет - но еше спорно, что удобнее - несколько датчиков по разным лапам или все на один канал с выборкой по индивидуальному коду датчика.
В данном случае насчет привязки к конкретному МК... штука спорная - алгоритмы даташитов микроЛАН на любом МК соорудить можно. Теперь о защите от отказов - есть три варианта - обрыв, КЗ и нарушение целостности пакета.
Обрыв - можно определить по отсутствию ответа датчика на момент цикла сброса/обнаружения присутствия по тому, что ответ от датчика не пришел;
КЗ - периодическая проверка линии данных на "неспровоцированный 0" и косвенно по несовпадению CRC в принятом пакете;
Вот только воспринял ли датчик переданные данные или во время передачи КЗ нарисовалось мы не знаем - с момента цикла сброса/обнаружения присутствия до его повторения в пакете приема состояние линии не знаем... Не помешало бы еще контролировать линию данных на КЗ перед каждым слотом записи и после передачи командного пакета...

Ежли несколько датчиков на сетке - то вроде алгоритм поиска/активации по заданному адресу выполнятся должен (SEARCH ROM [F0h]/READ ROM [33h]/MATCH ROM [55h]). А не простое обращение к "какому-то датчику" с посредства SKIP ROM [CCh] в командном пакете - тогда и проблем с "несколькими на проволочке" не будет. Притом неисправный никак на линию не повлияет - разве что КЗ задаст. Чего касательно привязки к объекту - выяснить индивидуальный номер и соответственно в ЕЕПРОМке прописать его за заданным объектом. Опять же индивидуальное творчество программиста...
Программное обеспечение конечно гораздо посложнее будет - но еше спорно, что удобнее - несколько датчиков по разным лапам или все на один канал с выборкой по индивидуальному коду датчика.
В данном случае насчет привязки к конкретному МК... штука спорная - алгоритмы даташитов микроЛАН на любом МК соорудить можно. Теперь о защите от отказов - есть три варианта - обрыв, КЗ и нарушение целостности пакета.
Обрыв - можно определить по отсутствию ответа датчика на момент цикла сброса/обнаружения присутствия по тому, что ответ от датчика не пришел;
КЗ - периодическая проверка линии данных на "неспровоцированный 0" и косвенно по несовпадению CRC в принятом пакете;
Вот только воспринял ли датчик переданные данные или во время передачи КЗ нарисовалось мы не знаем - с момента цикла сброса/обнаружения присутствия до его повторения в пакете приема состояние линии не знаем... Не помешало бы еще контролировать линию данных на КЗ перед каждым слотом записи и после передачи командного пакета...
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Всё по DS18(B/S)20.
я же вам про переменную и объяснялdjrec писал(а):А как то можно использовать не маску, а переменную для замены 4го на 5 пин и обратно?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Всё по DS18(B/S)20.
Вот и я о том... всё зависит от квалификации и конечного результата... но некоторые упорно настаивают на истинности своего протухшего мировозрения...BOB51 писал(а):индивидуальное творчество программиста...![]()
Программное обеспечение конечно гораздо посложнее будет - но еше спорно, что удобнее - несколько датчиков по разным лапам или все на один канал с выборкой по индивидуальному коду датчика.
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Всё по DS18(B/S)20.
Делайте как вам удобно и как знаете/умеете... главное чтобы вам всё было понятно... тогда и работать будет...djrec писал(а):А как то можно использовать не маску, а переменную для замены 4го на 5 пин и обратно?
Я на STM32 дёргал через ДМА половинку порта (8 бит) или порт (16 бит) целиком... т.е. опрос всех датчиков одновременно... Никакие номера там и даром не нужны были... Всё хардварно... по окончанию просто всё парсилось и разгребалось... на КЗ... на наличие/отсутствие датчика... на CRC... и прочее...
Для одного датчика тупо делал на таймере... тоже хардварно... по флагу просто выгребал готовое...
Здесь вариантов куча...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Всё по DS18(B/S)20.
К сожалению, параллельный одновременный опрос хорош в том случае, если параметры датчиков (включая соединительные линии) идентичны. Ежли линии разные - могут и накладки буть... 
И то ж скокмо оперативки "закопать" надо... 8каналов*8бит*9байт в пакете=576байт... ( принимаем последовательно каждый байт не разрывая процесс) потом "растащить" по каналам.
Или МК с такой скоростью, чтоб сразу расфасовкой параллельного байта на 8 потоков выполнял...
Но ведь все равно даже это 9 "блокнотов" по 8 байт =72 байта...

И то ж скокмо оперативки "закопать" надо... 8каналов*8бит*9байт в пакете=576байт... ( принимаем последовательно каждый байт не разрывая процесс) потом "растащить" по каналам.
Или МК с такой скоростью, чтоб сразу расфасовкой параллельного байта на 8 потоков выполнял...
Но ведь все равно даже это 9 "блокнотов" по 8 байт =72 байта...
Re: Всё по DS18(B/S)20.
"Есть ли жизнь на Марсе, нет ли жизни на Марсе."(С)...BOB51 писал(а):К сожалению, параллельный одновременный опрос хорош в том случае, если параметры датчиков (включая соединительные линии) идентичны. Ежли линии разные - могут и накладки буть...![]()
Что... будем сферического коня в национальные цвета вакуума раскрашивать???
И что??? Да хоть 1К... Даже на гавёном 030-ом несколько кил РАМ... Зато нет прерываний... и пока ДМА автоматом накачивает буфер можно заниматься чем угодно... не отвлекаясь... Процесс, по сути, параллельный...И то ж скокмо оперативки "закопать" надо... 8каналов*8бит*9байт в пакете=576байт... ( принимаем последовательно каждый байт не разрывая процесс) потом "растащить" по каналам.
Зачем??? Получили флаг об окончании... и разгребаем... всё равно следующие данные только через секунду вытаскивать... Процесс то идёт по кругу... автоматом... без участия...Или МК с такой скоростью, чтоб сразу расфасовкой параллельного байта на 8 потоков выполнял...
Но ведь все равно даже это 9 "блокнотов" по 8 байт =72 байта...
![]()
========
Что за дремучесть... обязательно нужно привычно извиваться осьминогом в АСМ-танце с классической кадрилью психоделического ногодрыга???
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Всё по DS18(B/S)20.
Всем привет!!! Извините за бестактный вопрос:
Собираюсь сварганить термостат на 18в20 и никак не пойму что такое гистерезис???
Для чего он нужен? Можно ли обойтись без него?Термостат планирую сделать с 2-мя уровнями:верхний--нижний. Кто-нить донесите до моих скромномозговых способностей эту инфу....
Спасибо...
Собираюсь сварганить термостат на 18в20 и никак не пойму что такое гистерезис???
Спасибо...
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Всё по DS18(B/S)20.
гистерезис - это разные моменты включения и отключения чего-либо. в случае термостата рассмотрим ситуацию, когда вы задали порог включения нагрева 50 градусов. вот у вас что-то там остывает и доходит до 50 градусов - включается нагреватель. через долю секунды температура становится 50.001 градус и нагрев отключается. через долю секунды снова остывает все до 50.000 градусов и процесс пошел.
это называется "звонковый" режим работы. если нагрев у вас включается при помощи реле, вы будете слышать такое "бзззз" контактов реле, что крайне не полезно для них, раздражает своим звуком и вообще создает помехи.
чтобы исключить этот режим вводится гистерезис: нагрев ВКЛЮЧАЕТСЯ при снижении температуры до 49 градусов, а ВЫКЛЮЧАЕТСЯ при достижении 51 градуса (это для примера - промежуток между порогами включения-отключения может быть любым). очевидно, что теперь вместо "бзззз" у вас будут относительно редкие щелчки реле.
как-то так...
P.S. не принимайте близко к сердцу тысячные доли градуса в моем примере - это всего лишь пример для качественного описания проблемы безгистерезисного термостатирования
это называется "звонковый" режим работы. если нагрев у вас включается при помощи реле, вы будете слышать такое "бзззз" контактов реле, что крайне не полезно для них, раздражает своим звуком и вообще создает помехи.
чтобы исключить этот режим вводится гистерезис: нагрев ВКЛЮЧАЕТСЯ при снижении температуры до 49 градусов, а ВЫКЛЮЧАЕТСЯ при достижении 51 градуса (это для примера - промежуток между порогами включения-отключения может быть любым). очевидно, что теперь вместо "бзззз" у вас будут относительно редкие щелчки реле.
как-то так...
P.S. не принимайте близко к сердцу тысячные доли градуса в моем примере - это всего лишь пример для качественного описания проблемы безгистерезисного термостатирования
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Всё по DS18(B/S)20.
Вообще-то DS18B20 не работает в режиме термостата, а вот DS1821 - да.eduardo писал(а):Собираюсь сварганить термостат на 18в20
Если нужно используя DS18B20 сделать терморегулятор с гистерезисом, то нужен микроконтроллер.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Всё по DS18(B/S)20.
вообще-то он работает в режиме термостата, только режим этот идиотский
можно запрограммировать каждый датчик на "срабатывание" при переходе через пороги, как и для DS1821, но только в этом случае узнать, что датчик "сработал" можно только послав ему особую команду... и он ответит - сработал он или нет.
нафига такой режим придуман - мне неведомо... но он-таки есть
нафига такой режим придуман - мне неведомо... но он-таки есть
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Всё по DS18(B/S)20.
Здравствуйте всем !
Встал вопрос о дефектации датчиков DS18B20. Стоят на некоем промышленном оборудовании. Конструкция - латунный корпус, кабель, разъём. На кабеле армировка. Места соединений залиты герметиком. Трёхпроводная схема питания.
Вопрос: кто с какими "сумасшествиями" датчиков сталкивался ? Что по вашему мнению нужно контролировать ?
Собственно, тестер датчиков я сделал, но может чего забыл.
Датчик перевёл на разрешение 9 бит для более интенсивного обмена.
Контролируются:
1. Замыкание сигнального провода на + и -.
2. Ответ на импульс сброса.
3. Контрольная сумма.
4. Показывает температуру.
5. Контроль времени преобразования. (Таймаут взял в 2 раза дольше, чем время по даташиту.)
6. Скачки температуры от измерения к измерению не более 2 градусов. (Т=93 mS !).
Отвлекаясь от темы. Пару раз сталкивался с интересным глюком при реализации 1-Wire через UART по простой схеме с использованием диода шоттки катодом на TX. При некоторой длине кабеля до датчика (окол 2 м) приходят искаженные данные, либо вообще нет ответа. Методом тыка проблема решалась подключением конденсатора 150 пФ на землю и DQ. Предполагаю, что проблема в звонах в линии при слишком "жестком" и быстром замыкании ключа на землю. Ведь кабель - это ёмкость и индуктивность. Как пример - схема согласования 1-wire на полевиках из аппноутов. Не зря там на затвор последнего полевика подтяжка 100 кОм. На практике ставил, конечно, 5 кОм (фиг знает, какая там у меня ёмкость затвора), а вот линию DQ не на прямую на сток, а через резистор 100 Ом. Для справки Rds(on) ключа в самом датчике как раз около 100 Ом. Что вы думаете по этому поводу ?
Встал вопрос о дефектации датчиков DS18B20. Стоят на некоем промышленном оборудовании. Конструкция - латунный корпус, кабель, разъём. На кабеле армировка. Места соединений залиты герметиком. Трёхпроводная схема питания.
Вопрос: кто с какими "сумасшествиями" датчиков сталкивался ? Что по вашему мнению нужно контролировать ?
Собственно, тестер датчиков я сделал, но может чего забыл.
Датчик перевёл на разрешение 9 бит для более интенсивного обмена.
Контролируются:
1. Замыкание сигнального провода на + и -.
2. Ответ на импульс сброса.
3. Контрольная сумма.
4. Показывает температуру.
5. Контроль времени преобразования. (Таймаут взял в 2 раза дольше, чем время по даташиту.)
6. Скачки температуры от измерения к измерению не более 2 градусов. (Т=93 mS !).
Отвлекаясь от темы. Пару раз сталкивался с интересным глюком при реализации 1-Wire через UART по простой схеме с использованием диода шоттки катодом на TX. При некоторой длине кабеля до датчика (окол 2 м) приходят искаженные данные, либо вообще нет ответа. Методом тыка проблема решалась подключением конденсатора 150 пФ на землю и DQ. Предполагаю, что проблема в звонах в линии при слишком "жестком" и быстром замыкании ключа на землю. Ведь кабель - это ёмкость и индуктивность. Как пример - схема согласования 1-wire на полевиках из аппноутов. Не зря там на затвор последнего полевика подтяжка 100 кОм. На практике ставил, конечно, 5 кОм (фиг знает, какая там у меня ёмкость затвора), а вот линию DQ не на прямую на сток, а через резистор 100 Ом. Для справки Rds(on) ключа в самом датчике как раз около 100 Ом. Что вы думаете по этому поводу ?


