roboforum.ru

Технический форум по робототехнике.
Текущее время: 20 май 2025, 21:43

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Разрешение DS1820
СообщениеДобавлено: 24 июл 2012, 07:04 
Не в сети
Аватара пользователя

Зарегистрирован: 28 сен 2009, 21:54
Сообщения: 262
Откуда: Петербург
прог. языки: С++
ФИО: Бирюк Максим Викторович
Доброго времени суток !!!
Подскажите пожалуйста как настроить разрешение DS1820.
В устройстве используется 3 датчика DS1820, в качестве управляющего элемента использую микроконтроллер ATmega8.
Программирую в CVavr. Проект прилагаю.
Мне нужна разрешающая способность 9 бит, чтобы измерять температуру с точностью до 0.5 градуса.
Зарание очень благодарен за помощь :friends:


Вложения:
Комментарий к файлу: Исходник программы на С++
tr.c [5.01 КиБ]
Скачиваний: 317
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разрешение DS1820
СообщениеДобавлено: 24 июл 2012, 13:33 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
по pdf http://www.micropik.com/PDF/ds1820.pdf вроде он меряет в 9-битном режиме и все ........

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разрешение DS1820
СообщениеДобавлено: 25 июл 2012, 01:17 
Не в сети
Аватара пользователя

Зарегистрирован: 12 окт 2008, 12:40
Сообщения: 369
Откуда: Красногорск, Подмосковье
Можно и с точностью 1/16 градуса - смотрите 4 страницу даташита.

_________________
OpenSimpleLidar - проект простого самодельного лидара.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разрешение DS1820
СообщениеДобавлено: 25 июл 2012, 12:27 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
это скорее не точность, а разрешающая способность. По факту эти битики колышатся как флаг на ветру.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разрешение DS1820
СообщениеДобавлено: 25 июл 2012, 17:41 
Не в сети
Аватара пользователя

Зарегистрирован: 28 сен 2009, 21:54
Сообщения: 262
Откуда: Петербург
прог. языки: С++
ФИО: Бирюк Максим Викторович
Смотрел я датащит... В ассемблере я не понимаю...
Сейчас пишу на С++ в CVavr
Проблема в том что я не могу найти как можно изменить разрешающую способность в CVavr. Какую функцию применить...
На просторах интернета нашёл вот такую функцию
ds18b20_init( 0, 30, 60, DS18B20_12BIT_RES )
Но у меня она в чистом виде не работает - компилятор выдаёт ошибку :x
У меня в программе подключется такой файл - #include <ds1820.h>
...а при использовании вышеуказаной функции в примере подключается файл #include <ds18b20.h>
***
В чём разница между #include <ds1820.h> и #include <ds18b20.h> ????
***
Вот ссылка на пример с вышеуказаной функцией
http://mega-avr.ucoz.ru/publ/ds18b20_connect_atmega8535/1-1-0-15
***
Может какую дополнительную библиотеку стоит подключить ???
***
Ещё странность заключается в том, что изначально я работал с одним датчиком DS1820, а потом решил научиться работать с несколькими датчиками и купил ещё два, но уже других датчика DS18b20+
Тот который был первым датчик - он изначально по умолчанию имел разрешающую способность 9 бит и выдавал с точностью до 0.5 градуса, а вот новые датчики изначально имеют разрешение 12 бит и выдают точность в 0.125 градуса. Из за разных значений функция выводит неверные цифры так как расчитана на точность в 0.5 градуса.
***
Зарание очень благодарен за помощь !!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разрешение DS1820
СообщениеДобавлено: 25 июл 2012, 19:56 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
в configuration register записать 0x1f

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разрешение DS1820
СообщениеДобавлено: 26 июл 2012, 13:32 
Не в сети
Аватара пользователя

Зарегистрирован: 28 сен 2009, 21:54
Сообщения: 262
Откуда: Петербург
прог. языки: С++
ФИО: Бирюк Максим Викторович
Прошу прощения, но у меня очень мало опыта и я ещё раз извиняюсь за, возможно, глупые вопросы.
А как записать в этот регистр значение ?
Может используя ассемблер ?
Вставить ассемблерные инструкции в код С++...?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разрешение DS1820
СообщениеДобавлено: 26 июл 2012, 15:06 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
Код:
unsigned char ds1820_set(unsigned char *addr,signed char temp_low,signed char temp_high,signed char config)
{
if (ds1820_select(addr)==0) return 0;
w1_write(0x4e);
w1_write(temp_high);
w1_write(temp_low);
w1_write(config);
return w1_init();
}
...
ds1820_set(adr,0,0,0x1f);

вроде так ... не проверял!

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разрешение DS1820
СообщениеДобавлено: 26 июл 2012, 15:31 
Не в сети
Аватара пользователя

Зарегистрирован: 28 сен 2009, 21:54
Сообщения: 262
Откуда: Петербург
прог. языки: С++
ФИО: Бирюк Максим Викторович
Romikgy, спасибо большое за помощь !!!
Сейчас буду пробывать :)
Я попытался изменить функцию вывода и выяснил что погрешность измерения датчика 5 градусов - это нормально ?
Я использую 1 датчик DS1820 и два датчика DS18b20+
DS1820 - работает абсолютно точно и покупался в своё время за 170 рублей
DS18b20+ - работает с погрешностью примерно в 5 градусов и покупался за 70 рублей
Такая разница в цене из-за точности измерений ???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разрешение DS1820
СообщениеДобавлено: 26 июл 2012, 15:48 
Не в сети

Зарегистрирован: 07 авг 2010, 21:29
Сообщения: 1725
Откуда: КМВ
прог. языки: C
ФИО: Андрей
5 градусов - не может быть. Я б проверил адреса, к тому же датчику обращаешься ли каждый раз.

_________________
Дым, идущий из всех устройств в помещении предвещает появление электрика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разрешение DS1820
СообщениеДобавлено: 26 июл 2012, 16:57 
Не в сети
Аватара пользователя

Зарегистрирован: 28 сен 2009, 21:54
Сообщения: 262
Откуда: Петербург
прог. языки: С++
ФИО: Бирюк Максим Викторович
не получается изменить разрешающую способность - целый день просидел - всё перепробывал :x
Погрешность 5 градусов - это точно !
Исправил пгрешность путём ввода поправки на 5 градусов.
Помимо погрешности эти датчики отличаются ещё инерционностью, тот который дорогой является точным и слабоинерционным (нагревается ровно и также остывает), а тот который дешовый нагревается тоже ровно, а вот остывает с заметным запаздыванием примерно 10 - 30 секунд.
***
Может быть в этом и есть отличие между ними и это является нормальным, или всётаки нет ???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разрешение DS1820
СообщениеДобавлено: 26 июл 2012, 22:21 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
Я работал с этими датчиками, правда на асемблере по таймингам из даташита. Датчики хорошие, погрешность была как в даташите. Так что это скорее программные косяки. Но Си я не знаю, помочь не могу. Посмотрите среди проектов по ссылке - там есть несколько по работе с этими датчиками.
http://www.530.ru/electronics/projects.php?do=all


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO