Всё по DS18(B/S)20.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Dako
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Сб июл 30, 2011 05:35:35

Re: В тыщапицотый раз про DS18B20.

Сообщение Dako »

Бу-га-га!!!! Заработало!! Контрольная сумма верно проверяется, только вот неверная информация приходит раз в 10 сек, походу задержки надо подбирать... Или может дело в отсутствии кварца?
Реклама
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

Re: В тыщапицотый раз про DS18B20.

Сообщение Shapa »

В тыщапицотый раз про прерывания. Отключайте их на время работы с датчиком

Кстати, об этом я уже писал
Shapa писал(а):Dako А на счёт того, что у вас датчик белеберду выдает..(навреное, то 55, то 85) вы прерывания отключите, пока датчик опрашиваете. И не надо его дергать чаще чем 1 раз в секунду! Он у нас уже почетный пенсионер, работать так быстро не умеет и не хочет
Реклама
Аватара пользователя
Dako
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Сб июл 30, 2011 05:35:35

Re: В тыщапицотый раз про DS18B20.

Сообщение Dako »

У меня жеж динамическая индикация на прерываниях, как я её могу отключить? На данный момент у меня если контрольная сумма не сходится, значение температуры не обновляется, не красиво конечно, но я копаю дальше
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

Re: В тыщапицотый раз про DS18B20.

Сообщение Shapa »

Dako писал(а):У меня жеж динамическая индикация на прерываниях, как я её могу отключить? На данный момент у меня если контрольная сумма не сходится, значение температуры не обновляется, не красиво конечно, но я копаю дальше

А вы попробуйте. Потом уже копайте. Если я окажусь не прав, то я обязательно изучу ваш код, чтобы понять как вы объеденили опрос датчика и прерывания и буду использовать в своих конструкциях. Вы же не против?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Dako
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Сб июл 30, 2011 05:35:35

Re: В тыщапицотый раз про DS18B20.

Сообщение Dako »

Нет конечно, щас попробую ;)
Реклама
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

Re: В тыщапицотый раз про DS18B20.

Сообщение Shapa »

кстати, вы в AVRstudio пишите?

Код: Выделить всё

#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include <avr/interrupt.h>

Добавьте
в шапку #define F_CPU ваша тактовая в герцах.
Примерно так:

Код: Выделить всё

#define F_CPU 8000000 // 8 Мгц
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include <avr/interrupt.h>
Реклама
Аватара пользователя
Dako
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Сб июл 30, 2011 05:35:35

Re: В тыщапицотый раз про DS18B20.

Сообщение Dako »

Вы правы, спасибо за совет! Отключив прерывания во время общения с датчиком, за 5 мин не увидел ни одного сбоя. Уменьшая частоту индикации, удалось увеличить стабильность передачи. Значит ли это, что подпрограмма обработки прерывания "размазывает" временные интервалы? Если я в шапке укажу тактовую частоту, что это даст?
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

Re: В тыщапицотый раз про DS18B20.

Сообщение Shapa »

Dako писал(а): Значит ли это, что подпрограмма обработки прерывания "размазывает" временные интервалы?

Как-то так.

Dako писал(а): Если я в шапке укажу тактовую частоту, что это даст?

используемая вами библиотека
#include <util/delay.h>
требует чтобы данная константа была определена для расчёта количества циклов необходимых для реализации дискреты временой задержки. Т.е. Без неё могут не верно вычисляться _delay_us(); _delay_ms();
Аватара пользователя
Dako
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Сб июл 30, 2011 05:35:35

Re: В тыщапицотый раз про DS18B20.

Сообщение Dako »

Уррра! Всё работает 100% стабильно! Всё дело было в том, что у меня проц был настроен на частоту 1 МГц, следовательно с динамической индикацией ни о каких точных задержках в микросекундах и речи быть не могло. Выставил частоту 8МГц - и всё заработало как положено! ))) Спасибо всем за помощь!
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: В тыщапицотый раз про DS18B20.

Сообщение ploop »

Как у тя датчик вообще умудрялся отвечать? :shock:

На будущее: перед началом нового проекта, в заготовке, нужно первым делом всё проверить: тактовую, фьюзы, всё остальное. Потом начинать проект. Если нет частотометра, можно вывести светодиод наружу, рассчитать, например, на 1Гц мигалку. Если реально мигает не так, как по расчёту - явно где-то косяк.
Аватара пользователя
Dako
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Сб июл 30, 2011 05:35:35

Re: В тыщапицотый раз про DS18B20.

Сообщение Dako »

Это первый такой проект )) В будущем конечно же учту ))
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: В тыщапицотый раз про DS18B20.

Сообщение shads »

Shapa писал(а):Если я окажусь не прав, то я обязательно изучу ваш код, чтобы понять как вы объеденили опрос датчика и прерывания и буду использовать в своих конструкциях. Вы же не против?

Очень просто объединить прерывание и опрос датчика, я тут на AVR на асме замутил первую свою работу, все пошло аки по маслу, все в прерывании обрабатывается с частотой 10000hz. Во время опроса датчика, каждое прерывание использует гдето 20% времени на обработку обмена, так что на остальные нужды остается 80% времени до старта следующего прерывания (tiny13a частота 9,6 mhz)
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

Кстати, кто мне объяснит такой феномен! Лежат на столе штук 10, DS1820, пинцетом быстренько беру и по очереди их вставляю в разьем измеряющего приборчика, в первый момент все как один показывают 25 градусов, но секунд через 10 постепенно уходят до 27. Что это может быть, вродебы от пинцета не должны нагреваться (держу всего пару секунд, да и пинцет такойже температуры должен быть как и все вокруг) опрос происходит раз в секунду. Как я понял как только питание начинает поступать на датчик, он постепенно начинает на 2 градуса больше показывать, может питание надо убирать в промежутках между опросами?
?????
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

график температуры при поочередном включении разных датчиков.
Вложения
датчики-уходят.gif
(13.66 КБ) 1372 скачивания
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

Кстати. Первое мое творение на AVR!
Вложения
termotiny.jpg
(55.64 КБ) 1148 скачиваний
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

Чето я в ступоре.
Если втыкаю датчики в разъем (хоть зажимаю контакты, хоть нет), то они сек ч-з 10 постепенно повышают температуру на пару град (проверил на всех 10шт.).
Если они лежат в рядок на столе и я к ножкам прижимаю проводки от платки, то все нормально (сейчас все 10шт стабильно показывают 24,5).
?????
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Мастер Ломастер »

видимо, свободновтыкнутые термодатчики быстро саморазогреваются, а лежащие на столе разогреваются медленнее или совсем не разогреваются, т.к. стол для них работает теплоотводом (точнее, они измеряют температуру массивного стола).
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

разве может у термодатчиков быть саморазогрев? в таком случае они всегда врать будут, помоему такого не может быть, тут причина в чемто другом, не соображу пока.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Мастер Ломастер »

саморазогрев - явление давно признанное самим производителем. пока подано питание на датчик, он потребляет хоть и мизерный, но все-таки ток, который и разогревает кристалл. если теплу от кристалла через корпус деваться некуда (воздух - плохой проводник тепла), корпус разогревается. как правило, прибавка в 1-2 градуса - это закономерность. если датчик помещен в среду с большой теплоемкостью либо имеет контакт с массивный телом - саморазогрев практически не заметен.

чтобы устранить саморазогрев, надо свести время подачи питания на датчик до минимума: измерили температуру, сняли питание и секунд на 30 снимаем питание вообще. перед очередным замером снова подаем питание. при таком алгоритме за 800 мс работы кристалл не успеет разогреться. стремление мерить температуру (достаточно инерционный процесс) каждую секунду или даже чаще (если используется режим уменьшенной разрядности) оборачивается саморазогревом и, как следствие, брехней показаний.
битва с дураками проиграна, победители торжествуют. слава победителям!
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: Всё по DS18(B/S)20.

Сообщение 3DRaven »

Недавно собрал градусник на ds18b20. Что бы кому то не пришлось искать, выкладываю схему и код. Набросал "для себя" так что если кто воспользуется...то "как есть". За базовый проект был взят проект термометра с этого же сайта. Потом он был упрощен...схема в статье была на ОК, я сделал индикацию на ОА и избавился от транзисторов. Плюс схема позволяет развести себя в один слой. Обратите внимание, печатная плата предполагает крепление индикатора с то же стороны что и дороги, что экономит место, но паять неудобно. Еще одно. Подтяжка ds18b20 к питанию нужна на 1кОм, а не на 4.7...я просто не стал исправлять в схеме. Иначе работает не всегда, просто не успевает подняться линия. И еще. Питание и программатор одновременно подключать не надо. Либо одно, либо другое...никаких защит и перемычек не предусмотрено.

Производство схемы было отдельным моментом. ЛУТ с бумагой (самой разной) не прокатил. То ли утюг не греет достаточно сильно, то ли принтер или тонер, или куча видов бумаги не подошли, не знаю. И тут я выкопал под авторством некоего alex_avr2 (если память не изменяет) статейку о технологии ЛУТ+фольга. Суть вопроса:
1. Обматываем фольгой лист формата А4, просто по краям загибаем. Лучше из толстой бумаги типа "ламонд" или даже пленки, тонкая бумага садится и это ох как заметно по складкам на фольге (но я использовал обычную бумагу-снегурочку и все супер! Правда не знаю, может быть из за усадки МК плохо лез в дырки...но я еще и просверлил их кривовато). Фольга обычная, кухонная, стоит рулон несколько десятков рублей...я просто с кухни взял валявшуюся. Лист бумаги можно будет много раз использовать, так что можно и купить один "ламонд".
2. Когда обмотали, печатаем прямо на фольге дороги. Получается отличный рисунок. Потом вырезаем это дело, кладем на текстолит, сверху я положил лист А4 обычной бумаги (что бы утюг не царапать о фольгу). Проглаживаем. Это дело немедленно прилипает к текстолиту накрепко. Потом берем ноготь и им разглаживаем складки на фольге (или еще чем, можно например стирательной резинкой...я и так делал). Это делается что бы фольга "обтянула" дорожки...раньше так карандашом через листочек тетрадки монетки обрисовывали, закрашивая...в результате получалось тисненное изображение монетки...вот такое же выпуклое изображение дорожек на фольге и надо получить, путем разглаживания. После разглаживания, тонер каждой дорожки окажется в своем "канале" из фольги и никуда не поплывет. Опять проглаживаем утюгом, уже долго и вдумчиво, так как тонер уже в "каналах" и никуда не денется, надо его приплавить к меди как следует.
Я не делал так, но думаю если плата двухсторонняя, то можно на этом этапе просверлить пару отверстий и с другой стороны совместить другой рисунок дорог для слоя. Площадки под отверстия можно заранее на трассировке заготовить для этого.
3. Засовываем это дело в травилку...хлорное железо у меня. Фольга растворяется очень быстро если платку покачивать...буквально минуты. Потом можно вытащить и проверить рисунок (медь еще не растворилась) и если что подретушировать...но оно не понадобится, тонер прилипает ВЕСЬ и железно, ничего не остается от фольги и отдирать ничего не надо!
4. Я не проверял рисунок, просто сразу протравил и все...так как рисунок переносится идеально и без проблем!
5. Сверлим дырки. Для того что бы проще было, я сделал 0.2мм пустоты в контактных площадках...как бы накернил для сверла, очень удобно. Само сверло сделал из моторчика и цанги от карандаша...обычный карандаш с стержнями, взял цангу (бывают медные, но я обошелся пластмассой) и надел на вал моторчика, приклеив суперклеем. Так же приклеил и сверло...так как все отверстия одного диаметра, но до этого много просверлил без приклеивания, то же работает. Внутрь цанги только надо кусок скрепки запихнуть что бы сверло не проваливалось. Так как цанга гибкая, то центрирование сверла можно осуществлять тонкой трубочкой от того же карандаша (наконечник для грифеля) или ногтями, просто придавив его. Без этого оно будет скакать и попасть куда то трудно.

Таким образом можно делать дороги 0.1 мм, причем спокойно и без кучи "попыток" и гемора. Все получается с первого раза и процедура элементарна...я сразу сделал свою первую в жизни плату с дорогами 0.3 мм (что бы с запасом). Получилось идеально, без единого косяка, как распечатал такие и дороги! Не требуется ни спец бумаг, ни супер принтеров с супер печками и тонером, ни ламинаторов, вообще никаких особых требований и "тренированых навыков", никакого "оборудования для фотолаборатории"! Результат выглядит как промышленная плата.

Думаю новичкам как и мне важно знать как сделать саму плату без особых напрягов, потому так подробно и написал :) А с термометра начинают многие.
Вложения
main.c
(7.45 КБ) 956 скачиваний
termoind.ps
(128.17 КБ) 759 скачиваний
termoind-x.pdf
(13.25 КБ) 742 скачивания
Последний раз редактировалось 3DRaven Вт фев 28, 2012 09:42:58, всего редактировалось 2 раза.
Ответить

Вернуться в «Периферия»