Страница 14 из 16

Добавлено: Вт ноя 24, 2009 13:35:42
ARV
sheva_s писал(а):Подскажите датчик ds18b20 с завода настроен на какое разрешение ? Если я его перенастрою на другое разрешение сохраняються ли эти настройки в датчике после отключения питания, или стают на заводские. (может глупый вопрос просто хочу как можно больше упростить программу избавиться от настройки датчика)
а даташит слабО посмотреть? если сохраните конфигурацию в EEPROM - сохранится она и после выключения питания. а по умолчанию он в 12-битном режиме работает, если не ошибаюсь.

Добавлено: Вт ноя 24, 2009 15:06:48
sheva_s
в даташит не слабо , проблема с английским. :(
Подскажите еще пожалуйста вот в этой строке

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

ds18b20_init(0,-55,125,DS18B20_9BIT_RES);
цифрами -55,125 что настраивается ?

Добавлено: Вт ноя 24, 2009 21:12:11
Igor_67
Ну, если внимательно прочитать ветку сначала, то можно обнаружить много полезной информации, как, например, то что минимальная температура, которую меряет DS18B20 = -55 град., а максимальная = 125 град. Вот это они и есть! :tea:

Добавлено: Вт ноя 24, 2009 21:18:58
Pooher
в даташит не слабо , проблема с английским.
:)))
Настоящий даташит ПО-РУССКИ
А вообще, буржуйский учите, пригодится.

Добавлено: Вт ноя 24, 2009 21:20:05
ARV
Igor_67 писал(а):Ну, если внимательно прочитать ветку сначала, то можно обнаружить много полезной информации, как, например, то что минимальная температура, которую меряет DS18B20 = -55 град., а максимальная = 125 град. Вот это они и есть! :tea:
а вот если почитать хелп к неизвестно за что всеми любимому CVAVR, то можно выяснить, что -55 и 125 в данном случае - это пороги "срабатывания" этого термометра-термостата (как в данном контексте перевести ALARM я не знаю). иначе говоря, для практического применения по барабану, какие цифры там писать - хоть нули.

Добавлено: Сб дек 19, 2009 19:41:02
Петро
здравствуйте!
Пытаюсь получить от DS18B20 сигнала присутствия, но не получается... Подтягивающий резистор подключен, использую все три вывода DS18B20, он же подключен к mega8l. Посмотрите плиз код инициализации

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

.def counter=R16
.def temp=R17
.def Delay_reg=R18
.equ tempIO=1	;вивод 1-Wire интерфейса

.cseg
.org 0
	rjmp Program

Program:
	ldi temp,high(RAMEND)
	out SPH,temp
	ldi temp,low(RAMEND)
	out SPL,temp
;SFIOR.PUD=1
	ldi temp,(1<<PUD)
	out SFIOR,temp
	cbi PORTB,tempIO      ;подсаживаэм линию
	sbi DDRB,tempIO	
	ldi counter,0x86
;задержка 700 мкс
	_delay1_:
		rcall Delay
		dec counter
		brne _delay1_		
	cbi DDRB,tempIO		;отпускаэм линию
;задержка 65 мкс
	ldi counter,0xD
	_delay2_:
		rcall Delay
		dec counter
		brne _delay2_
	sbic PORTB,tempIO ;если PORTB(1)=1 -нет датчика
		ret				;выход
;задержка 500 мкс
	ldi counter,0x60
	_delay3_:
		rcall Delay
		dec counter
		brne _delay3_
       sbis PORTB,tempIO ;если PORTB(1)=0 краткое замикание на линии
		ret				;выход

Main: rjmp Main
reti
Вот схемка в Proteus:

Добавлено: Пн дек 21, 2009 23:07:02
Петро
кто-нибудь меня слышет? сюда можно еще что нибудь писать, тема еще не закрыта?

Добавлено: Вт дек 22, 2009 08:36:02
ARV
Петро писал(а):кто-нибудь меня слышет? сюда можно еще что нибудь писать, тема еще не закрыта?
да надоело просто на одни и те же вопросы отвечать одно и то же...

Добавлено: Ср янв 06, 2010 02:34:52
tankjr
поделитесь прошивкой под авр на ассемблере

Добавлено: Ср янв 06, 2010 14:02:05
Alex72
tankjr писал(а):поделитесь прошивкой под авр на ассемблере
Наверно хотел сказать библиотеками под AVR на ассемблере. DS18B20 это прежде всего шина 1Wire. Вот что наше у себя навскидку, а вообще поисковики никто не отменял

Добавлено: Ср янв 06, 2010 19:57:45
Pooher
Кнопочка есть на верху, ПОИСК называется :lol:
http://radiokot.ru/forum/viewtopic.php?p=159943#159943

Добавлено: Чт янв 07, 2010 20:03:47
AI_Disable
Подскажите, где можно на русском почитать про алгоритм работы с более чем одним датчиком. Или сами объясните, если не очень лениво. :)

Добавлено: Чт янв 07, 2010 23:01:59
ARV
AI_Disable писал(а):Подскажите, где можно на русском почитать про алгоритм работы с более чем одним датчиком. Или сами объясните, если не очень лениво. :)
а что тут рассказывать? при обращении к датчику надо указать его конкретный адрес, вот и все. 20 датчиков у вас - должны знать все 20 их адресов. работа ведется очень просто:
- Иванов!
- Я!
- Уздечка от коня! давай температуру!
- Петров!
- Я!
- стекло от бутыля! давай температуру!

но прежде, разумеется, надо устроить перекличку, т.е. затребовать все адреса у всех датчиков. конкретные команды давным давно описаны, если самому не лень - найдете легко, на русском, и не в одном месте. дерзайте!

Добавлено: Чт янв 07, 2010 23:13:36
AI_Disable
Опять я забыл конкретизировать вопрос. :oops:
Да, я понимаю, как решить задачу, если известны все ROM. Но как быть, если они не известны? При посылке команды READ ROM все начинают отвечать хором, и различить датчики не представляется возможным.
Насколько я понял, для нескольких датчиков используется команда SEARCH ROM, но вот беда: в тех описаниях датчиков, которые я находил, про эту команду обычно написано что-то вроде "А, это типо слишком сложно/долго описывать/etc, так что пропустим этот шаг, а кому надо, найдёт где-то ещё".

Добавлено: Чт янв 07, 2010 23:16:09
ARV
а вы собрались самостоятельно делать функцию поиска адресов? вас не устраивают уже готовые исходники?

кстати, я не сторонник определять адреса датчиков в ходе работы устройства. я считаю, что значительно разумнее заранее определить их при помощи компьютера и потом уже прошивать глухо в программу МК.

в крайнем случае можно использовать не одну линию, а несколько, и по каждой обращаться к ЕДИНСТВЕННОМУ датчику, избавив себя, таким образом,ю от проблемы поиска адресов и неизбежного головняка "кто есть кто"...

Добавлено: Чт янв 07, 2010 23:21:20
Pooher
Я вот вообще очень долго думал, и так и не придумал в каком приложении можно использовать много датчиков, не зная "Кто есть кто". Ведь командой SEARCH ROM мы можем прочитать(вычислить) код каждого, но вот каким он окажется на линии, первым, четвёртым, сто двадцать восьмым, мы не знаем. Это хорошо если их два, а если сто? Подумайте, оно Вам надо?

Добавлено: Чт янв 07, 2010 23:42:16
AI_Disable
ARV, да, есть желание написать такую функцию, если смогу, конечно. Судя по вашему иронизирующему вопросу, это не такая простая задача? Готовые исходники, не устраивают тем, что я не могу понять как они работают :)
Определять код заранее, тоже не очень удобно: во-первых, чтоб повторить устройство понадобится компьютер+адаптер+софт, а во-вторых, после замены датчика потребуется перепрошивка МК.
Проблему определения "какой датчик, где расположен" собираюсь решить записью всех ROM в eeprom или флэш, при первом включении устройства.

Добавлено: Чт янв 07, 2010 23:52:11
ARV
AI_Disable писал(а):ARV, да, есть желание написать такую функцию, если смогу, конечно. Судя по вашему иронизирующему вопросу, это не такая простая задача? Готовые исходники, не устраивают тем, что я не могу понять как они работают :)
Определять код заранее, тоже не очень удобно: во-первых, чтоб повторить устройство понадобится компьютер+адаптер+софт, а во-вторых, после замены датчика потребуется перепрошивка МК.
Проблему определения "какой датчик, где расположен" собираюсь решить записью всех ROM в eeprom или флэш, при первом включении устройства.
лучше, чем уже написано в даташите, точнее, апноуте, вы все равно не сделаете :) задача там не суперсложная для понимания, но потеть над давно решенной задачей - как-то не гуд... иронии нет, есть удивление бессмысленностью занятия.

по поводу вашего прибора. допустим, у вас 2 датчика: один в доме, другой на улице. адреса у них, естественно, разные. вы запукстили поиск, нашли 2 адреса - как ваш прибор узнает, что первый найденный датчик - это уличный? а второй - домашний? если затем один из датчиков вы замените на другой - еще вопрос, окажется его адрес меньше или больше оставшегося - как ваша система опознает, вместо которого появился новый датчик - вместо уличного или домашнего?! она ведь знает только НОМЕР, но не МЕСТО.

значит, вам надо продумывать целую систему настроек, писать инструкцию пользователя, как все это настраивать... морока да и только :)

Добавлено: Пт янв 08, 2010 00:15:35
AI_Disable
Согласен, если датчика два-три, то "игра не стоит свеч". Я сейчас пытаюсь сделать устройство с 20-тью датчиками и возможностью добавления ещё n-ого количества. Тянуть к каждому датчику свой провод, как-то не очень хочется, тем более, если нужно будет добавить датчиков, то придётся лезть в устройство. Да и портов на всех не напасешься.
Предполагаю сделать начальную настройку, когда человек "объяснит" устройству какой датчик, где находится.
Также предполагается, что в один момент времени может выйти из строя не более одного датчика, так что устройство сразу сможет понять, какой из датчиков заменили.

Добавлено: Пт янв 08, 2010 00:21:27
Pooher
А не проще сделать меню? Подключаем датчик, прописываем, подключаем второй, прописываем,..... Вот это, на мой взгляд, самое выгодное решение.