Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 22.04.2007, 22:18  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

628 пик,4 мега,ds18b20 проект в протеусе на хайтековском коипиляторе.
Схалтурил, конечно, в железе наверняка мерцать будет, по прерыванию надо было делать регенерацию дисплея... По телеку Дом-2 шло, как раз время развеяться с компом...

Прикрепленный файл: 1013717.rar
Реклама:
urry вне форума  
Непрочитано 23.04.2007, 03:21  
atlab
Прописка
 
Регистрация: 18.06.2006
Сообщений: 179
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
atlab на пути к лучшему
По умолчанию

Сообщение от sanitar249
В качестве самого датчика,на мой взгляд, лучшее это далласовские датчики с однопроводным интерфейсом (огромный выбор, низкая цена,малые габариты). собирал на таком термометр (правда обработка на 8051 ядре, а не на ПИКе)он все делает внутри себя, остается только обработать результат.
Всеобщее заблуждение про датчики от Dallas:
1. дешевые - сосем не дешевые, LM75A стоит примерно в 2-3 раза дешевле DS18B20
2. удобство интерфейса - тоже не совсем верно, их несложно использовать, когда датчик 1 на линии, если их 2 и больше, необходимо предварительно прочитать адрес каждого, чтобы обращаться к нужному датчику.
При I2c таких проблем нет.
atlab вне форума  
Непрочитано 23.04.2007, 08:25  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

да ни фика там сложного нет, я делал считывание серийников из 8 параллельно включенных дс при начальной установке.
urry вне форума  
Непрочитано 23.04.2007, 08:46  
atlab
Прописка
 
Регистрация: 18.06.2006
Сообщений: 179
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
atlab на пути к лучшему
По умолчанию

Сообщение от urry
да ни фика там сложного нет, я делал считывание серийников из 8 параллельно включенных дс при начальной установке.
Телодвижения то все равно надо совершать дополнительные! А вдруг вспотеешь?
atlab вне форума  
Непрочитано 23.04.2007, 09:29  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

ну... мне было даже интересно... особенно когда лазишь в поисках примеров для МК по инету и понимаешь, что кроме тебя, никто такой херней не страдает. Чувствуешь себя первопроходцем. Херни. Кстати, могу код показать.
urry вне форума  
Непрочитано 23.04.2007, 10:03  
DAS_WEYDER
Временная регистрация
 
Аватар для DAS_WEYDER
 
Регистрация: 14.04.2007
Сообщений: 50
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
DAS_WEYDER на пути к лучшему
По умолчанию

дешевле всего термосопротивление влепить, с нормальной программой перерасчета в градусы, и индикацию динамическую на дешевом 3символьном индикаторе по 0.8бакс.
DAS_WEYDER вне форума  
Непрочитано 23.04.2007, 13:31  
sanitar249
Почётный гражданин KAZUS.RU
 
Аватар для sanitar249
 
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
sanitar249 на пути к лучшему
По умолчанию

Сообщение от DAS_WEYDER
дешевле всего термосопротивление влепить, с нормальной программой перерасчета в градусы, и индикацию динамическую на дешевом 3символьном индикаторе по 0.8бакс.
На терморезисторе-запарно калибровать. С динамической индикацией тоже связываться не стоит, проще взять дискретные семисегментники со встроенным дешифратором(и не моргают, и светят ярче)
sanitar249 вне форума  
Непрочитано 23.04.2007, 13:51  
atlab
Прописка
 
Регистрация: 18.06.2006
Сообщений: 179
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
atlab на пути к лучшему
По умолчанию

Сообщение от urry
ну... мне было даже интересно... особенно когда лазишь в поисках примеров для МК по инету и понимаешь, что кроме тебя, никто такой херней не страдает. Чувствуешь себя первопроходцем. Херни. Кстати, могу код показать.
Ну отчего же? Страдают...
Вот, например:
http://www.rentron.com/PicBasic/PBP1-wire.htmhttp://www.rentron.com/PicBasic/one-wire2.htm
atlab вне форума  
Непрочитано 23.04.2007, 14:03  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

так в ссылке они уже знали серийники, а я их вычислял...
И не 2, а 8...
Код:
// считаем количество устройств от 0 до 7 (максимум 8)
for( r=0;r‹8;r++)
			{
    reset_();
	wr_b(0xf0);
	find_tst(r,sn);
	if(r == 0)
				{
		//		temp3=sn[0];
		//		temp4=sn[7];
	ar_cpy(r_w_m,sn);// копируем считанный серийник в массив записи 
	kol_vo=1;
	wr_ep(0);//на шине есть минимум 1 устройство, раз мы сюда дошли
	del_dsp(20);// даем время записаться
				}
				else
				{
			if (sverka(kol_vo) == true)//проверили все серийники, ни 1 не совпал - новое устройство
					{
  					ar_cpy(r_w_m,sn);// копируем считанный серийник в массив записи 
					wr_ep(kol_vo*8); // записываем серийник нового устройства в епром 
					del_dsp(20);// даем время записаться
					kol_vo++;
					}
				}
// окончание подсчитывания / поиска устройств - в переменной kol_vo - количество устройств, в епром, начиная с адреса 0 
// последовательно записаны их серийники 
			}
static bit sverka(unsigned char k)
{//функция сравнения считанного серийника с записанными в епром, к - количество устройств
static bit z=false;
unsigned char ustr,stroka;
for(ustr=0;ustr‹k;ustr++)
	{
  rd_ep(ustr*8);
	z=false;
		for (stroka=0;stroka‹8;stroka++)
				{
				if(sn[stroka] != r_w_m[stroka]) z=true;	
				}
   if(z == false) return false; // если есть совпадение хотя бы 1 серийника, дальше проверять не надо
	}       
 if(z == true) return true;//возвращает труе, если ни один записанный в епром серийник не совпал со считанным 
}
//--------------------------------------------------------

//-------------------------------
void find_tst(unsigned char t,unsigned char *sn)
// каждый вызов этой функции записывает серийный номер в массив sn
{  // t -это маска, которая будет использоваться при совпадениях
unsigned char nbt; // 8 байт серийного номера
unsigned char nbit;// 8 бит в байте
static bit inf0,inf1,inf; 
//-----
for (nbt=0;nbt‹8;nbt++)
	{
    for (nbit=0;nbit‹8;nbit++)
         	{
    sn[nbt]=sn[nbt]››1;// сдвигаем серийный байт на 1 бит вправо,освобождаем место
	inf0=read_bit();   // читаем значение - если нет совпадений,  
	inf1=read_bit();   //  то прочитается 10 или 01
			if (inf0 != inf1)
					{
         		if (inf0 == 1)
						{
        				sn[nbt]=sn[nbt]+0x80;// ставим 1 в старшем бите, 0 -получился 
        				}                    // при сдвиге
     			write_bit(inf0); // выдаем то значение, которое
      				}            // пришло первым
            else //------------------- есть совпадение в серийниках
                	{
                    //---------------

    				inf=t&0x01;     // читаем то значение бита байта, который мы задавали при вызове
					t= t  ›› 1;     // готовим следующий бит
                    //--------------- 

						write_bit(inf); // выдаем его
						if(inf == 1)
						{
						sn[nbt]=sn[nbt]+0x80;// если он 1, аналогично пишем в серийник
                    	}   
                  
					}//-----------------------       
   		  	}
	}
}
//-------------------------------------------------------------------------------------------
urry вне форума  
Непрочитано 23.04.2007, 17:30  
atlab
Прописка
 
Регистрация: 18.06.2006
Сообщений: 179
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
atlab на пути к лучшему
По умолчанию

Сообщение от urry
так в ссылке они уже знали серийники, а я их вычислял...
И не 2, а 8...
Я, видимо, не очень понятно объясняю:
проблема не вычислить номера, а сопоставить конкретный номер с физическим положением датчика.
Ну прицепили их на линию 10 штук, в разных местах, скажем в разных кабинетах на этаже.
Как сопоставить датчик и кабинет? Никак, нужно предварительно знать номер датчика и потом уже помещать его в кабинет.
С I2C проще - всегда можно однозначно определить (задать)его адрес, и не нужно ничего предвартельно читать.
Но это так, просто мысли по поводу.
Кому нравится попадья, а кому поповская дочка...
atlab вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Датчик температуры Da_shu_tka Автоматика и аппаратура связи 14 09.02.2009 14:26
аналог. датчик температуры godz320 Микроконтроллеры, АЦП, память и т.д 34 28.01.2008 22:41
Часы на PIC-контроллере Peshevbis Микроконтроллеры, АЦП, память и т.д 2 10.09.2006 22:23
Датчик температуры Lab_12 Информация по радиокомпонентам 0 25.05.2006 11:03


Часовой пояс GMT +4, время: 22:20.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot