Страница 1 из 16
Вопросы по работе с термометрами DS18B20
Добавлено: Чт июл 10, 2008 22:39:59
snayperAlfa
Собрал я термометр по примеру из CodeVisionAVR.Вывожу данные на LCD.Но значения оооочень медленнннноооо изменяются.Как можна поправить ситуацию.Использую AtMega16(11.0592 MHz) .Вот код:[code]/
Оформляйте длинные тексты в виде приложения! Сэр Мурр
Добавлено: Пт июл 11, 2008 01:10:49
ARV
единственное, что можно сделать - это убрать delay_ms(500) в конце проги.
Добавлено: Пт июл 11, 2008 01:23:50
KT315B
Пример, кстати, совсем тривиальный - там и тормозить то нечему. Правда обмен с DS1820 происходит около половины секунды - с этим придется смириться, ибо у 1-Wire жесткие требования к таймингам...
Добавлено: Пт июл 11, 2008 09:03:16
snayperAlfa
Жалко,что он такой медленный
Добавлено: Пт июл 11, 2008 11:23:34
ARV
на счет медленности - не все так плохо.
это 1820 и 18s20 тормоза - 0.75с измеряют, а 18b20 можно заставить работать почти в 10 раз быстрее - надо сконфигурировать его на 9-битовый результат. найдите в вашей проге место, где датчик настраивается на 12 бит и переделайте на 9. будет значительно быстрее работать
Добавлено: Пт июл 11, 2008 23:44:49
snayperAlfa
А результат я получу какой? Допустим 34 градуса, 34.0 градуса, 34.00градуса.Завтра попробую.
Добавлено: Сб июл 12, 2008 09:04:14
ARV
snayperAlfa писал(а):А результат я получу какой? Допустим 34 градуса, 34.0 градуса, 34.00градуса.Завтра попробую.
не обольщайся сотыми долями - паспортная погрешность датчика
0,5°С - так что сотые все равно будут иметь отношение скорее к бурям на Марсе, чем к реальной температуре. при 9 битах точности ты гарантированно получишь эту самую погрешность в 0,5° (и результат будет как раз с шагом в пол-градуса)
Добавлено: Вт июл 15, 2008 12:47:17
Krik99
Да не так он уж и тормозит. Может тормозит из-за вывода на LCD и там есть пауза после вывода. Можно попробывать уменьшить паузы между командами, я пробывал в два раза, частенько приходят ошибки, и больше 85 не меряет. Сам того не понимая delay настроил на 4мгц а МК на 8мгц. всё работало но больше 85 выдавало ошибку. А ваще мне и такая скорость подходит, а если надо быстрей делай на АЦП к примеру, есть много датчиков с интерфейсом i2c.

Добавлено: Пн авг 11, 2008 19:11:05
ARV
snayperAlfa писал(а):Скажите пожалуйста,какое максимальное количество датчиков DS18B20 можно поцепить к одному выводу МК ATMega16. Компилятор CodevisionAVR.
предположу, что штук 50 можно... а что?
Добавлено: Пн авг 11, 2008 19:32:42
snayperAlfa
Тоесть нету ограничений?А можна ли штук под 100?
Добавлено: Пн авг 11, 2008 19:48:38
ARV
под 100 может не хватить ОЗУ - это уже надо детально вникать в задачу. и куда 100 штук вы лепить собрались? там начнутся уже ограничения на линию связи - на ее погонную емкость и индуктивность...
Добавлено: Пн авг 11, 2008 21:59:37
snayperAlfa
Система сбора температуры в медицинской лаборатории
Добавлено: Пт авг 15, 2008 22:07:13
Mozart
а что является объектом для измерений???
имхо лучше аналоговые датчики взять (к примеру платиновые от хонивелл e.g. 700 серия там есть по 40р), вы сможете в узком диапазоне температур получить нужную точность в 0,1гр... тем более точность +-0,5гр для медицины не очень корошо...
Добавлено: Пт авг 15, 2008 23:06:35
KDAlex
Поставить-то можно, но, ИМХО, т.к. для опроса каждого датчика трятится порядочно (около 0,5с) времени, то 100 датчиков будут так тормозно обновлятся, что для лаборатории это будет неприемлимо (хотя.. лаборатории разные бывают). Сам в свое время ваял нечто похожее. Пока не понял, что скорость слишком мала чтобы заюзать 25+ устройств. Получается отнюдь не реал-тайм.
Добавлено: Пт авг 15, 2008 23:37:05
Mozart
здесь даже не во времени дело... можно и ПЛИС всунуть.. но дело всё в том что насколько мне известно точность в 0,5гр... для медицины это неприемлимо... если мерить температуру в боксе каком-нить с клетками... то точно не пойдёт а если просто температуру в помещении и строить градиент температуру... то сомневаюсь...
но заманивает простота... возьмите лучше tmp03/04
Добавлено: Вс авг 31, 2008 19:41:32
MetEl
ну я так вскользь посмотрел, может - signed int, но если и так CVAМR понимает, то ладно.
Просто с запятыми другой тип переменной используется(int это целое, без десятых и пр. т.е. без децимальной точки).
Просто я не понял, а где и что указывает точку (рисует).
Re: DS18B20
Добавлено: Вс авг 31, 2008 19:55:26
tych
Vertel писал(а):где и как устанавливается битность датчика и как вывести десятые. Пример из CVAVR для этого датчика не работает, выводит +3F вместо температуры.
Можно посмотреть пример в PROTEUS -
C:\Program Files\Proteus\SAMPLES\VSM for AVR\One-Wire\DS18X20
by Martin Thomas <eversmith>
http://www.siwawi.arubi.uni-kl.de/avr-projects
Добавлено: Сб сен 13, 2008 18:59:35
Krik99
megasvintus писал(а):Долблюсь с данным девайсом уже второй день. Все время выдается температура 63898 градусов...

И она при нагреве/охлаждении датчика не меняется.
Хоть убей- не пойму в чем дело!
Устройство нормально опознается.
Прикладываю исходник, может ткнет кто на ошибку/ошибки носом
Модератор, не закрывайте пожалуйста тему, я поиском нашел подобные темы, но ответа на свой вопрос не получил.
Резистор на 4,7к цеплял?
Частота проекта и частота МК одинаковые?
Добавлено: Сб сен 13, 2008 19:03:25
megasvintus
Цеплял.
Одинаковые.
Всплыл прикол номер 2- сменил тип переменной, в которой будет храниться температура на int, на дисплее стало отображаться -9999. Это значит ошибка чтения, если не ошибаюсь... А почему? Ведь девайс всего 1 и нормально узнается.
Добавлено: Сб сен 13, 2008 20:07:30
sachok
Исправил но меряет только с точностью до целых. Если надо до десятых то буду продалжать. Если нет то напиши выложу.