Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Заставить работать библиотеку ds18b20.c

Непрочитано 19.03.2014, 13:18  
123ksn
Вид на жительство
 
Аватар для 123ksn
 
Регистрация: 09.10.2012
Сообщений: 333
Сказал спасибо: 124
Сказали Спасибо 71 раз(а) в 38 сообщении(ях)
123ksn на пути к лучшему
По умолчанию Re: Заставить работать библиотеку ds18b20.c

Для тех у кого в запасниках есть PIC16F84A выкладываю печатную плату(.lay) пятиканального (5шин 1-wire с одним датчиком DS18b20 на каждой шине) термометра с выводом информации на компьютер через COM-порт. У этой конструкции есть несколько отличительных особенностей:
1)Использование часовой микросхемы DS1307, которую без проблем можно не ставить.
2)Термометр только передает информацию в ПК, но ничего из него не принимает.
3)Для увеличения "дальнобойности" UART(RS232) я установил преобразователь в RS485. Подчеркиваю, не протокол RS485, а только преобразователь UART-RS485. Это значит, что информация UART (тайминги) передается в виде электрических сигналов протокола RS485. И не более! Соответственно на принимающей стороне (возле компьютера) должен быть обратный преобразователь RS485-UART. По функциональному смыслу такую схему надо назвать "удлинитель UART(RS232)".
4)Если "дальнобойность" не требуется, на плате собран транзисторный преобразователь UART-RS232.
5)Разъем для подключения питания не установлен, так как на момент разработки все эксперименты проводились рядом с компьютером и питание бралось из COM-порта.
6)В принципе, можно одновременно подключаться к разъемам RS232 и RS485. Конфликта не будет. Единственное, хватит ли мощности COM-порта для такой нагрузки? И если питание от отдельного источника, то подумать о правильном подключении.
7)Плата сделана размером для установки в монтажную коробку.
8 )Если используется DS1307, то термометр показывает время своей непрерывной работы, что для меня важно. Если запустить схему в полночь, то будет показывать реальное время
9)Внимание. Я не развел на плате разъем для подключения программатора.

У новичков может возникнуть несколько вопросов
1)Почему не подключить датчики на одну шину? Действительно, таких разработок подавляющее большинство. Но представьте себе ситуацию, что требуется измерять температуру в четырех углах самолетного ангара(он огромный) и в центре. Если проложить кабель по периметру, то это не одна сотня метров кабеля +гемморой. А в этой схеме 5 лучей и сразу видно где проблема с сигналом. Теперь можете уменьшить масштабы до своей квартиры или дома.
2)Почему не используется USB? На самом деле история эта давняя и мне требовалось загонять данные о температуре в 1С7.7 бухгалтерию, которая очень хорошо умеет работать с COM-портом.

Нажмите на изображение для увеличения
Название: Печатка 16F84A+ DS1307DIP +CR2032+MAX488.JPG
Просмотров: 48
Размер:	359.8 Кб
ID:	61004
Вложения:
Реклама:

Последний раз редактировалось 123ksn; 20.03.2014 в 01:00.
123ksn вне форума  
Непрочитано 19.03.2014, 13:46  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: Заставить работать библиотеку ds18b20.c

Сообщение от 123ksn Посмотреть сообщение
Время отображается вопросами.
Странно... Я изменил конфигурацию и паузу... Связь с 1307 не нарушена? Посмотри вот эти прошивки (3 сек и 300 сек).
Если период отображения 5 мин, зачем тебе отображать секунды? Может убрать их?
Вложения:
Тип файла: rar 5_18b20_232_hex_3.rar (2.0 Кб, 34 просмотров)
Тип файла: rar 5_18b20_232_hex_300.rar (2.0 Кб, 35 просмотров)
mimuh64 вне форума  
Сказали "Спасибо" mimuh64
123ksn (19.03.2014)
Непрочитано 19.03.2014, 14:14  
123ksn
Вид на жительство
 
Аватар для 123ksn
 
Регистрация: 09.10.2012
Сообщений: 333
Сказал спасибо: 124
Сказали Спасибо 71 раз(а) в 38 сообщении(ях)
123ksn на пути к лучшему
По умолчанию Re: Заставить работать библиотеку ds18b20.c

Сообщение от mimuh64 Посмотреть сообщение
Странно... Я изменил конфигурацию и паузу... Связь с 1307 не нарушена? Посмотри вот эти прошивки (3 сек и 300 сек).
Если период отображения 5 мин, зачем тебе отображать секунды? Может убрать их?
Проверил. Работает правильно и 3сек и 300сек. СПАСИБО
Нажмите на изображение для увеличения
Название: 5 channel 3 & 300sec.jpg
Просмотров: 56
Размер:	59.7 Кб
ID:	61010
123ksn вне форума  
Непрочитано 15.03.2015, 10:08  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: Заставить работать библиотеку ds18b20.c

Ответ на "личку"...
В файле два теста два примера паузы 20 секунд и 5 минут. Изменить время (часы и минуты) можно в течении пауз - по rs 232 выдать 2 байта. После паузы часы будут переустановлены...
Вложения:
Тип файла: rar RTC.rar (40.6 Кб, 25 просмотров)
mimuh64 вне форума  
Непрочитано 04.04.2015, 02:04  
kolobok0
Частый гость
 
Регистрация: 10.09.2010
Адрес: Резиновая
Сообщений: 45
Сказал спасибо: 3
Сказали Спасибо 14 раз(а) в 12 сообщении(ях)
kolobok0 на пути к лучшему
Счастье Re: Заставить работать библиотеку ds18b20.c

Сообщение от 123ksn Посмотреть сообщение
...3)Для увеличения "дальнобойности" UART(RS232) я установил преобразователь в RS485. Подчеркиваю, не протокол RS485, а только преобразователь UART-RS485....
4)Если "дальнобойность" не требуется...
5)Разъем для подключения питания не установлен, ...питание бралось из COM-порта.
8 )...Если запустить схему в полночь, то будет показывать реальное время
...
1)Почему не подключить датчики на одну шину?...5 лучей и сразу видно где проблема с сигналом....
...
RS485 - есть протокол описывающий электрические сигналы, а не протокольный уровень. Так что у Вас чистый RS485 внизу. Выше ничего нет просто из обычно-стандартного для такого подхода к связи с внешним миром.

RS232 в лёгкую держит метров 15-20 (микросхемы типа 8250 или 82650).

COM порт не имеет питания. Очень рисковано выпускать в свет девайс который запитывается от TTL логики. Бывают порты (см. ноуты) где нагрузочная способность выходных сигналов значительно меньше (частая болезнь девайсов запитанных таким образом). Т.е. можно ожидать большого кол-ва рекламаций.

По поводу в "полночь запустить" - это творчески. Почему-то напомнило тему фильма ВИЙ А если серьёзно - Вам пол-шажка до удачного девайса, если прикрутите модбас. Немного побарахтаться с временными задержками согласно протоколу ну и сам протокол поддержать. Думаю в последствии спрос может существенно вырасти на такой функционал.

По поводу подключения не в одну шину. Сильно актуально для быстрой локализации проблемы на объекте. Любой мало-мальски грамотный монтажник (умеющий воткнуть разъём папу в маму) быстро сможет вычислить что сдохло или глючит: достаточно переткнуть местами термодатчики. Если беда ушла - почистить разъёмы от окислов. Если глюк остался - сдох канал либо софт хандрит. Если глюк перебежал на другой датчик - под замену сам датчик(для этого тупо поверх бросается дубль и система успешно работает далее). С шиной Вы такого не получите. Как минимум надо решать проблемы с адресацией+не контакт+а жив ли датчик. Больше не известных - больше гимора на объекте. Больше подходит для садо-мазо...

ЗЫ
Но говоря про лучи - надо не забывать, что чем больше протяжённость проводов (для 1-Wire на ура несколько десятков метров по пром зоне) - тем серъёзнее надо подходить к защите таких лучей и строгости протокола, согласно даташиту. Как правило тут приходится всё делать самому. Всякие халявные детсадовские библиотеки тут сливают...
kolobok0 вне форума  
Непрочитано 04.04.2015, 09:40  
123ksn
Вид на жительство
 
Аватар для 123ksn
 
Регистрация: 09.10.2012
Сообщений: 333
Сказал спасибо: 124
Сказали Спасибо 71 раз(а) в 38 сообщении(ях)
123ksn на пути к лучшему
По умолчанию Re: Заставить работать библиотеку ds18b20.c

Сообщение от kolobok0 Посмотреть сообщение
Думаю в последствии спрос может существенно вырасти на такой функционал.
Со всеми Вашими словами согласен, кроме вышеприведенного предложения. Я использую это устройство в личных целях. Если хотите, то "допиливайте", и используйте для бизнеса. У меня работает пару лет и пережило все грозы. Но еще раз подчеркиваю, что с Вами я согласен и никому не рекомендую использовать сей девайс без опторазвязки в промышленных установках.
123ksn вне форума  
Непрочитано 04.04.2015, 20:31  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: Заставить работать библиотеку ds18b20.c

Крайняя версия...
Вложения:
Тип файла: rar RTC.rar (40.6 Кб, 21 просмотров)
mimuh64 вне форума  
Непрочитано 16.04.2015, 02:40  
123ksn
Вид на жительство
 
Аватар для 123ksn
 
Регистрация: 09.10.2012
Сообщений: 333
Сказал спасибо: 124
Сказали Спасибо 71 раз(а) в 38 сообщении(ях)
123ksn на пути к лучшему
По умолчанию Re: Заставить работать библиотеку ds18b20.c

Добрым людям доброго времени суток.
mimuh64 по моей просьбе несколько изменил формат информации выдаваемой термометром и внес возможность установки (редактирования) времени в DS1307 командой из терминальной программы. Но вот беда, хоть разговариваем мы с ним на русском языке, но я не могу узреть в его сообщениях как настроить время. Он же наотрез отказывается привести пример команды. Мои же потуги удовлетворительного результата не принесли. С позволения mimuh64 я привожу здесь информацию, которой, как он считает, достаточно, что бы правильно настроить время (часы и минуты):
1)14.03.2015, 21:08 Цитата: Формат для записи часов - два байта - первый часы, второй минуты. Формат смотри по ДШ на DS
2)Я же писал - смотри формат часов - двоично десятичный формат. Выдать нужно два байта "часы", "минуты"...

Полученную информацию я понял следующим образом: надо набрать в терминальной программе без пробела, запятой и т.п. некое число, разложение которого даст 4 тетрады. Две старшие тетрады будут содержать часы, а две младшие - минуты. Например, число 27 - это 0001. 0111 (один байт) соответствует 1.7 (семнадцати) часам. Макс количество часов в сутках 24, значит код такой: 0010.0100, что соответсвует десятичному числу 44. Чтобы ввести время, например, 10час10мин я должен ввести код 0001.0000 0001.0000, что соответсвует десятичному числу 10020.
Когда я ввожу это число(10020), то получаю время 31(час) 0=(мин) именно с равно.
Может кто подскажет как правильно устанавливать время? Протеус с hex прилагается.
Вложения:

Последний раз редактировалось 123ksn; 16.04.2015 в 02:43.
123ksn вне форума  
 

Метки
ds18b20, pic16f84, proteus, многоканальный термометр
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить себя работать?! Sukhanov Отвлекитесь, эмбеддеры! 152 09.04.2009 08:08
Как заставить работать "Страж-SMS 4x4" в Беларуси milt Делимся опытом 2 05.11.2008 11:27
Как заставить COM-порт работать со своим устройством? LazarenkoAS2 Коллекция глюков 0 20.09.2008 20:25
[Решено] В какой обстановке Вам наиболее комфортно работать? Don_Ambrosio Отвлекитесь, эмбеддеры! 66 27.05.2008 14:02
Как заставить работать индикатор по I2C zevs Микроконтроллеры, АЦП, память и т.д 1 11.01.2005 21:44


Часовой пояс GMT +4, время: 10:31.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.