Форум по микроконтроллерам: Тест Длинного Провода Для Ds18b20 - Форум по микроконтроллерам

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Тест Длинного Провода Для Ds18b20

#1 Пользователь офлайн   Alex 

  • Активный участник
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 320
  • Регистрация: 08 Август 08
  • Пол:Мужчина
  • Город:http://forum.eldigi.ru/

  Отправлено 20 Декабрь 2010 - 16:25

Фотка №1 Прикрепленное изображение: DSC00085.JPG
Тот что тоненький провод - 20 метров 2-х жилка.
Тот что толстый - 15 метров 4-х жилка. Включен по 2 проводам туда и обратно. Т.е. получается 30 метров. Итого , вместе с тоненьким = 50 метров.
Видео Прикрепленный файл  MOV00086.rar (1,59МБ)
Количество загрузок:: 147

Усложним...
Фотка №2 Прикрепленное изображение: DSC00089.JPG
Добавил ещё 15 метров 4-х жилки. Удлинил линию ещё на 30 метров. Итого = 80 метров !
Видео Прикрепленный файл  MOV00090.rar (2,45МБ)
Количество загрузок:: 126
Провода больше не было под рукой, так бы ещё прицепил попробовать.

Задержки:
Начало тайм-слота, линию в 0, задержка 2 мкс. , если пишем 1-цу - отпускаем линию, задержка 3 мкс. Если нужно читать бит, читаем. Далее задержка 55 мкс.
PU = 610 Ом.

Пример записи/чтения бита
bit wire_bit(unsigned char rx) {
static bit ret;
char gie = GIE;	// Сохраняем бит разрешения прерываний
GIE=0;			// Запрет прерываний
ret = 0;
	w_out(0);			// В линию 0
	w_del (2);			// Задержка 2 uS
		if (rx == 1) 	// Если запись 1-цы
			{w_out(1);}	// то в линию 1				
	w_del (3);			// Задержка 3 uS
		if( port_w ) 	// Если на линии висит 1
			{ret = 1;}	// Возвращаем 1		
GIE=gie;	// Восстанавливаем разрешение прерываний
	w_del (55);			// Задержка 55 uS
	w_out(1);			// В линию 1
return ret;				// Возвращаем считаный бит
}

0

#2 Пользователь офлайн   serj 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 6
  • Регистрация: 18 Июнь 11

Отправлено 19 Июнь 2011 - 11:23

Alex, хочу попробовать подкорректировать библиотеку для изменения тайм-слотов в Codevision. Если будут вопросы, очень надеюсь на Вашу помощь!
0

#3 Пользователь офлайн   Alex 

  • Активный участник
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 320
  • Регистрация: 08 Август 08
  • Пол:Мужчина
  • Город:http://forum.eldigi.ru/

Отправлено 19 Июнь 2011 - 19:39

Может проще свою написать ? :)
Я с АВРами не работал, не знаю что из себя представляют ихнии библиотеки.
Ну попробуем помочь. Я ведь тут не один :)
0

#4 Пользователь офлайн   serj 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 6
  • Регистрация: 18 Июнь 11

Отправлено 19 Июнь 2011 - 20:16

Спасибо за то что не отказываете в помощи. Я как Вы могли заметить новичек, это моя первая разработка. Хотя в ассемблере писал программы еще для ZX-Spectrum (давно это было). Я думаю что за некоторое время смог бы написать свои функции для работы c DS18B20. Но в настоящий момент только одни вопросы. Уже разобрался что такое тайм-слоты. Изучил исходный код библиотеки для работы с DS18B20 в CodeVision. Но не могу найти исходный код для работы с 1-Wire. В частности нужны библиотеки для записи (чтения) байта по 1-Wire. Ну и еще такой вопрос. У меня rom-code читаются нормально. Проблема в том, что не происходит инициализация датчика. Но ведь если байты читаются, то по логике должны и писаться, или для чтения-записи разные тайм-слоты? А если оставить один датчик, то можно ли не инициализировать его а сразу читать температуру?
0

#5 Пользователь офлайн   Alex 

  • Активный участник
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 320
  • Регистрация: 08 Август 08
  • Пол:Мужчина
  • Город:http://forum.eldigi.ru/

Отправлено 19 Июнь 2011 - 21:43

О какой инициализации Вы говорите ? Не пойму никак...
0

#6 Пользователь офлайн   serj 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 6
  • Регистрация: 18 Июнь 11

Отправлено 19 Июнь 2011 - 22:11

Я при инициализации записую в датчик информацию с каким разрешением работать (сколько бит дискретизация), минимальный и максимальный пороги температуры для срабатывания...
0

#7 Пользователь офлайн   Alex 

  • Активный участник
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 320
  • Регистрация: 08 Август 08
  • Пол:Мужчина
  • Город:http://forum.eldigi.ru/

Отправлено 19 Июнь 2011 - 23:12

Цитата

записую в датчик информацию с каким разрешением работать
Это записано уже заводом изготовителем. Незачем эти данные менять.

Цитата

пороги температуры для срабатывания...
Срабатывания чего ? :)

Изначально, купленая DS'ка не нуждается в настройках. Ставь и читай с неё температуру...
0

#8 Пользователь офлайн   serj 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 6
  • Регистрация: 18 Июнь 11

Отправлено 20 Июнь 2011 - 08:55

При достижении порогов по минимальной или максимальной температуре DS-ка формирует сигнал. Но действительно я прочитал что без этого можно обойтись и сразу читать температуру. Alex, а что значит термин "отпускаем линию"?
0

#9 Пользователь офлайн   Alex 

  • Активный участник
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 320
  • Регистрация: 08 Август 08
  • Пол:Мужчина
  • Город:http://forum.eldigi.ru/

Отправлено 20 Июнь 2011 - 09:01

Отпустить линию - настроить вывод МК на вход. Т.е. как-бы освободить её. В это время на линии формируется лог. 1 за счёт подтягивающего сопротивления.

Цитата

При достижении порогов по минимальной или максимальной температуре DS-ка формирует сигнал
Это Вы наверное имеете в виду термостат. Он точно не нужен :) На сколько я помню, в 1820 его вообще нет.
0

#10 Пользователь офлайн   serj 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 6
  • Регистрация: 18 Июнь 11

Отправлено 20 Июнь 2011 - 09:18

ALex, в апноуте Maxim предлагает улучшенный вариант подключения датчика к микроконтроллеру через полевой транзистор. Как Вы считаете, это может помочь. С кодом я буду разбираться в любом случае, но мне надо поскорее получить результат. Дело в том, что до этого я подключал DS-ку к компьютеру через COM-порт и все работало. Поэтому есть идея решить этот вопрос аппаратным способом.
0

#11 Пользователь офлайн   Alex 

  • Активный участник
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 320
  • Регистрация: 08 Август 08
  • Пол:Мужчина
  • Город:http://forum.eldigi.ru/

Отправлено 20 Июнь 2011 - 09:27

Цитата

Как Вы считаете, это может помочь
Думаю что вряд-ли поможет. Решайте проблему программным способом.
Те задержки, которые я привёл выше, рабочие. И с ними на длинном проводе работает отлично. Подбирались они опытным путём, т.е. методом тыка. Попрорбуйте организовать тайм-слоты с такими-же задержками, думаю что всё получится.
0

#12 Пользователь офлайн   serj 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 6
  • Регистрация: 18 Июнь 11

Отправлено 03 Август 2011 - 15:43

В общем перевел я DS18B20 на паризитное питание. Заработало. Но при подключенном шлейфе программатора схема не работает. Даже не определяются устройства на 1-Wire.
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей