Вопросы по работе с термометрами DS18B20
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
ну кто ж вас знает, что вы там затеяли
грешным делом подумал, что как обычно: хата-улица термометр
но задачка все сконфигурировать будет нетривиальная, скажу я вам
хоть с меню, хоть без. такую систему надо для компа делать - у него и памяти больше, и все прочее тоже 
но задачка все сконфигурировать будет нетривиальная, скажу я вам
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Комп не устраивает энергопотреблением, габаритами и ценой. Да и особо никаких функций не надо: просто вывод температуры помещений на ЖК, для навигации - пара кнопок. Первоначальную настройку, наверное, буду по UART делать, или комповую клавиатуру приделаю, чтоб можно было дать нормальные имена датчикам. Пока более разумного ничего не придумал.
Задачу, как рас таки, считаю тривиальной - единственная сложность, которую сейчас испытываю, это именно поиск датчиков на линии. Ну и комповую клавиатуру ещё не приходилось к аврке цеплять, но, надеюсь, это не очень сложно
Задачу, как рас таки, считаю тривиальной - единственная сложность, которую сейчас испытываю, это именно поиск датчиков на линии. Ну и комповую клавиатуру ещё не приходилось к аврке цеплять, но, надеюсь, это не очень сложно
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
ну-ну...AI_Disable писал(а):Задачу, как рас таки, считаю тривиальной
я б вам советровал голову не ломать над поиском, а брать готовое. для WinAVR есть отличные библиотеки, сами не найдете - могу свои предложить, CVAVR всеми любимый так вообще "встроенно" поддерживает эту функцию
поиск адресов основан на постронении бинарного дерева, там надо кучу всяких условий проверять и помнить предыдущие состояния... для интересу - гляньте на "фирменный" код - неслабый он по объему
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
AI_Disable писал(а):...Первоначальную настройку, наверное, буду по UART делать, или комповую клавиатуру приделаю...
Я так понимаю что настройка устройства будет производиться очень редко (при первоначальном пуске и при ремонте), если вы собираетесь по UART настраивать прибор, тогда не проще ли будет сделать специальный разем для определения номера датчика, подключенный к отдельному пину меги. В этот разъем при настройке вы будете подключат по одному датчику, затем по команде с последовательного порта мега считает адрес датчика и выдаст его номер.
Далее зная номера датчиков вы сами решите какой из них будет какой. В принципе для ПК можно будет написать программку которая сформирует блок для записи в EEPROM (но можно и в ручную в текстовом редакторе сформировать). Далее этот блок можно будет также по последовательному порту загрузить в мегу и, вуаля, прибор настроен.
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
дык чуть ли не с первого вашего вопроса вам и говорят: неужели использовать готовое невозможно?!AI_Disable писал(а): Неужели это такая неподъёмная задача, что её нужно обходить окольными путями?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
я вас не очень понимаю... что вас пугает? неужели для просмотра телевизора вы сначала изучили от и до всю технику видеовещания?! просто взять либу и использовать, не вникая в ее глубины - что тут такого?AI_Disable писал(а):ARV, упустил из виду ваш предыдущий пост: когда я увидел эти "отличные библиотеки", весом over 2кб, то чуть не вошёл в состояние тихой паники, и подумал, что быстрее будет разобраться в принципе работы датчика, чем разумить готовую либу.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
ARV писал(а):я вас не очень понимаю... что вас пугает? неужели для просмотра телевизора вы сначала изучили от и до всю технику видеовещания?! просто взять либу и использовать, не вникая в ее глубины - что тут такого?
Скорей всего так и придётся сделать. Просто, помимо использовать, ещё хотелось понять.
Re: ds18b20помогите
roma писал(а):Здравствуйте. Окажите консультацию пожалуйста. С помощью тини2313 хочу мерить температуру используя только один DS18B20. У меня такая беда-все время показывается температура 85 градусов. Это значение записывается в ОЗУ термометра по умолчанию с завода. Первоначально я написал прогу таким образом что после передачи команды "конвертировать температуру" я засекаю 1секунду и поистечении этого времени читаю первые два байта ОЗУ. В результате отображается число 85.
Потом переписал прогу и получилось так:после передачи команды "конвертировать температуру" я формирую там слот в виде отрицательного фронта и читаю линию таким образом
qwerty: sbis PIND,6 ;пропуск след команды если разряд =1
rjmp qwerty.
Дык вот незадача, в линии устанавливается лог 0 в виде напряжения 0,28 Вольт и никуда этот ноль не уходит. Потом я просто отрываю провод соеденяющий ногу микроконтролера с информационной ногой термометра и вижу что на информационной ноге термометра напряжение равно напряжению питания а на МК U=0.28В. Присоеденив снова МК к термометру напряжение в линии падает до 0,28В.
О чем это говорит? Че я делаю не так? Пробовал даже другой термометр ставить -все аналогично.
1) обеспечить подтяжку внутренним резистором к +5 при чтении линии МК.
2) постоянное число при приёме - обычно говорит о том, что Вы не правильно формируете задержки и(или) форму сигнала.
Всё строго по даташиту и будет Вам счастье!
Моменты на какие стоит обратить внимание.
1) временные интервалы - тут _очень_строго_ 99% всех бед отсюда.
2) чтение линии необходимо производить следующим образом:
а) выставляем пин как выход, подаём "1"
б) ждём 1 мкс
в) выставляем пин как вход, с подтяжкой к +5
г) ждём около 7 мкс (чтоб не словить заваленный фронт на длинных линиях).
д) читаем пин. это и есть исходное значение.
е) продолжаем задержку (минималка по даташиту - на вскидку не помню).
ж) повтор на следующий бит.
удачи Вам
(круглый)
ЗЫ
Двадцатка по даташиту (стандартное сканирование +-0,5 градуса). При самостоятельном расчёте точность до 0,06 градуса.
Двадцать первый при повышенной точности даёт 0,01 градуса.
ЗЫ ЗЫ
При точных измерениях не забываем про тарификацию по эталонам и про разогрев датчиков (сканирование не чаще 1 раза в минуту, если память не подводит)
Re: ds18b20помогите
Я сделал всё в соответствии спунктами которые вы оговорили за исключением одной поправки При чтении задержка не 7мкс а13-15мкс.(по даташиту)
Если умышленно поменять это время то на семисигментном индикаторе будет рисоваться какаято загагулина.
Вопрос в другом
после команды конвертировать я делаю отрицательный фронт путём настройки пина на ввод,через 5мкс отпускаю линию и через 2мкс я её читаю читаю и читаю.(датчик должен выдавать лог 0 пока идёт преобразование) Дык вот линия всё время находится в нуле.
Отсоеденив МК от датчика я обнаруживаю что датчик в линию выдаёт лог 1 как и должно быть. Потом обратно соединяю и вытаскиваю из цепи датчик дык вот на соответстувющем пине МК присутствует напряжение 0,28В. Это несмотря на то что нога МК настроена как вход и подтянута к внешнему питанию через резюк 4,7К.
Ведь этого же не должно быть?
Если умышленно поменять это время то на семисигментном индикаторе будет рисоваться какаято загагулина.
Вопрос в другом
после команды конвертировать я делаю отрицательный фронт путём настройки пина на ввод,через 5мкс отпускаю линию и через 2мкс я её читаю читаю и читаю.(датчик должен выдавать лог 0 пока идёт преобразование) Дык вот линия всё время находится в нуле.
Отсоеденив МК от датчика я обнаруживаю что датчик в линию выдаёт лог 1 как и должно быть. Потом обратно соединяю и вытаскиваю из цепи датчик дык вот на соответстувющем пине МК присутствует напряжение 0,28В. Это несмотря на то что нога МК настроена как вход и подтянута к внешнему питанию через резюк 4,7К.
Ведь этого же не должно быть?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
вы снова недочитали протокол обмена. датчик не лог.0 выдает в линию во время преобразования, а отвечает на тайм-слот чтения нулем. т.е. не просто опрашивать пин надо, а формировать тайм-слот чтения бита.
порт настраивается на вход DDRx = 0, при этом PINx = 0 так же. внешний резистор подтяжки облеспечивает наличие на пине 1. формирование тайм-слота начинается с перевода пина на выход DDRx=1, спустя указанное время (не 15 мкс!!!!!!) линия снова отпускается DDRx=0, после чего опять же спустя заданное время (не 15 мкс!!!!!!) производится считывание PINx. состояние PORTx никогда не меняется - оно все время равно 0.
вся процедура подробно описана в моих статьях (если фирменные документы по каким-либо причинам вы не можете прочесть), а так же реализация присутствует в исходниках для "термостата, которые меньше, чем не бывает" на моем сайте - вы можете посмотреть самостоятельно.
все затронутые вопросы этого топика как минимум раз 50 обсасывались на этом форуме, не говоря уже о других.
порт настраивается на вход DDRx = 0, при этом PINx = 0 так же. внешний резистор подтяжки облеспечивает наличие на пине 1. формирование тайм-слота начинается с перевода пина на выход DDRx=1, спустя указанное время (не 15 мкс!!!!!!) линия снова отпускается DDRx=0, после чего опять же спустя заданное время (не 15 мкс!!!!!!) производится считывание PINx. состояние PORTx никогда не меняется - оно все время равно 0.
вся процедура подробно описана в моих статьях (если фирменные документы по каким-либо причинам вы не можете прочесть), а так же реализация присутствует в исходниках для "термостата, которые меньше, чем не бывает" на моем сайте - вы можете посмотреть самостоятельно.
все затронутые вопросы этого топика как минимум раз 50 обсасывались на этом форуме, не говоря уже о других.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Аlex
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
но можноАlex писал(а):Не нужно ничего ждать.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Аlex
датчик не лог.0 выдает в линию во время преобразования, а отвечает на тайм-слот чтения нулем. т.е. не просто опрашивать пин надо, а формировать тайм-слот чтения бита.
Вырезка из ДШ:
После конвертирования, полученные данные запоминаются в 2-байтовом регистре температуры в оперативной памяти, и DS18B20 возвращается к его неактивному состоянию. Если DS18B20 включен с внешним питанием, ведущий может контролировать конвертирование температуры (после команды [0х44]) по состоянию шины. На шине будет присутствовать логический «0» когда происходит температурное преобразование. И логическая «1», когда конвертирование выполнено. Если DS18B20 включен с паразитным питанием, эта технология уведомления не может быть использована, так как шину нужно подать высокий уровень (напряжение питания) в течение всего времени температурного преобразования.
Во время преобразования датчик не отвечает не на какие тайм слоты, не вводите людей в заблуждение ! Он в это время находится в неактивном состоянии.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Ух, как я зол!Аlex писал(а):Во время преобразования датчик не отвечает не на какие тайм слоты, не вводите людей в заблуждение ! Он в это время находится в неактивном состоянии.
цитирую настоящий даташит:
переводить надо?If the DS18B20 is powered by an external supply, the master can issue read time slots after the Convert T command and the DS18B20 will respond by transmitting a 0 while the temperature conversion is in progress and a 1 when the conversion is done.
вы хоть подумали маленько бы сами, прежде чем безаппеляционно заявлять: на шине может быть куча девайсов, все из которых долгий 0 (гораздо короче, чем время преобразования) воспримут как RESET - вы считаете, это фирма-производитель такое придумала, что когда один меряет температуру, все прочие помирают?!
так кто вводит в заблуждение людей?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Аlex
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
написано же в ДШ: мастер может послать тайм-слот чтения сразу после команды Convert T - вот и все. посылаете тайм-слоты, а отвечает тот, которого вы только что запустили на измерение.
данная процедура применима либо для единственного датчика на шине, либо для последнего активированного.
а чтобы понять, какое качество книжки, надо включать здравый смысл: удержание шины 1-wire в нуле более 400 мкс будет воспринято как сброс. но это еще пол-беды: если бы "измеряющий" датчик держал шину в нуле, то скажите, как бы вы смогли обратиться к другому девайсу на шине?!
P.S. советую читать не книжки, а ДШ в оригинале.
данная процедура применима либо для единственного датчика на шине, либо для последнего активированного.
а чтобы понять, какое качество книжки, надо включать здравый смысл: удержание шины 1-wire в нуле более 400 мкс будет воспринято как сброс. но это еще пол-беды: если бы "измеряющий" датчик держал шину в нуле, то скажите, как бы вы смогли обратиться к другому девайсу на шине?!
P.S. советую читать не книжки, а ДШ в оригинале.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!