Всё по DS18(B/S)20.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18552
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение ARV »

Zhuk72 писал(а):При 9-битной конфигурации младшие 3 бита всегда в нуле.
в свойствах датчика протеуса можно настроить дискретность уставки его температуры
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Zhuk72 »

ARV писал(а):в свойствах датчика протеуса можно настроить дискретность уставки его температуры
Zhuk72 писал(а):Я уже проверил в Протеусе при шаге датчика 0.0625*С.
Может выразился не очень, но я имел в виду именно шаг установки температуры.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Аватара пользователя
ROMan2947
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Re: Всё по DS18(B/S)20.

Сообщение ROMan2947 »

Zhuk72 писал(а):Я уже проверил в Протеусе при шаге датчика 0.0625*С.
При 9-битной конфигурации младшие 3 бита всегда в нуле.
Выход изменяется (начиная с бита 3), когда прирост достигает 0.5*С, т.е. через каждые 8 шагов.
Согласен, вполне логично.Благодарю за ответ!
Tenken
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт янв 17, 2013 21:25:30
Откуда: Тула

Re: Всё по DS18(B/S)20.

Сообщение Tenken »

Здраствуйте. Подскажите пожалуйста с преобразованием температуры)

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

       
                data[0] = w1_read();//читаем два байта с температурой
		data[1] = w1_read();
			                                 //загоняем в двух байтную переменную
		temp = data[1];
		temp = temp<<8;
		temp |= data[0];  /// далее идет преобразование в переменную инт без точки
	    
        d1=temp>>1;        //сдвиг вправо 1 части
        d2=temp>>3;     //сдвиг другой
        d3=d1+d2;       // сложение за результатом без точки

Возращаю функцией значение d3 и записываю его в инт.


z=temp_18b20(); // зэт интовая переменная в которой храню преобразование температуры   
      
          p=z>>15 ;//двигаю чтобы проверить знак температуры)
         if (p!=0)
         {
         z=z&(~((1<<11)|(1<<12)|(1<<13)|(1<<14)|(1<<15)));/а здесь попытался инвертировать биты знака чтобы потом работать с чистым числом  но не выходит ) не могу понять почему)
          }
либо я не понял что-то со знаком.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18552
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение ARV »

Tenken писал(а):Подскажите пожалуйста с преобразованием температуры
прочтите здесь: http://radiokot.ru/forum/viewtopic.php? ... 2#p2971952 и делайте правильно
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Tenken
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт янв 17, 2013 21:25:30
Откуда: Тула

Re: Всё по DS18(B/S)20.

Сообщение Tenken »

ещевозник вопрос на счет контрольной суммы. Ибо переодически в индикации вылазиет какая-то хрень ) нашел на форуме такой код:

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

   uint8_t
    _crc_ibutton_update(uint8_t crc, uint8_t data)
    {
   uint8_t i;

   crc = crc ^ data;
   for (i = 0; i < 8; i++)
   {
       if (crc & 0x01)
           crc = (crc >> 1) ^ 0x8C;
       else
           crc >>= 1;
   }

   return crc;
    }
написано код рабочий только вот тут нихрена не понял.Я так понял это функцию тоже надо зацикливать на кол-во байт в дс 18б20 и потом сравнивать с последним?
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18552
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение ARV »

Tenken писал(а):и потом сравнивать с последним?
не надо сравнивать, надо "зацикливать" ВСЕ данные - если все верно, то в итоге будет НОЛЬ.
но вот код показанной вами функции не проверял я, поэтому не гарантирую его корректность. лучше всего взять гарантированно верный код - из avr-libc (входит в комплект avr-gcc модуль util/crc16.h) или реализовать алгоритм самостоятельно по апноуту производителя.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Всё по DS18(B/S)20.

Сообщение Z_h_e »

Я вот такую функцию делал. Не хочу сказать что именно так и надо делать и что она оптимальна, но проблем не было. Сначала хотел на асме сделать, но решил что сделаю "потом".
Спойлер

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

#define dlinaBit 64	
#define defPolinomObr ((uint8_t)0b10001100)

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

//функция подсчета CRC8 для DS18B20
//*****************************************************************
uint8_t get_CRC8(uint8_t * pAddrr){	

uint8_t CRC8=0;
	
//--------------------------

uint8_t NumerBit=0;		//номер текущего бита

	while ( NumerBit<(dlinaBit+8) ){
		uint8_t BitRead,BitHi;
		
		if (					//прочитаем значение бита
			(pAddrr[NumerBit>>3]) &	(0x01<<(NumerBit&0x07))	) BitRead=0x80;	else BitRead=0;  
			
			
		if (!(NumerBit<dlinaBit)) BitRead=0;
		
		//---------
		if (CRC8&0x01) BitHi=1;else BitHi=0;										//выдвигаемый бит
		
		CRC8>>=1;
		CRC8+=BitRead;
		
		if (BitHi)	CRC8=CRC8 ^ (uint8_t)defPolinomObr;;
		//---------			 
	NumerBit++;	
	} //while
	
	
	return CRC8;	
	
}
Tenken писал(а): Ибо переодически в индикации вылазиет какая-то хрень
А вот периодической хрени быть не должно, у меня есть устройство с DS, кабель метров 15 был (сейчас укоротил), никаких проблем не было. Контрольная сумма "на всякий случай", но не для борьбы с помехами. Если у Вас постоянные ошибки, надо что-то пересмотреть.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Tenken
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт янв 17, 2013 21:25:30
Откуда: Тула

Re: Всё по DS18(B/S)20.

Сообщение Tenken »

Спасибо большое значит буду думать что не так дальше)
krasdok
Родился
Сообщения: 15
Зарегистрирован: Вт дек 20, 2016 11:19:32

Нужна прошивка для подключения датчиков температуры ds18b20

Сообщение krasdok »

Здравствуйте!
Нужен пример для AtmelStudio 4 на С++ для работы с датчиком температуры ds18b20 с выводом на LCD 1602+atmega32a
Очень жду помощи...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18552
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Нужна прошивка для подключения датчиков температуры ds18

Сообщение ARV »

Воспользуйтесь поиском - примеров ПОЛНО, правда, не на С++, а на просто Си. На плюсах, на сколько мне известно, такой ерундой никто не заморачивался.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
krasdok
Родился
Сообщения: 15
Зарегистрирован: Вт дек 20, 2016 11:19:32

Re: Нужна прошивка для подключения датчиков температуры ds18

Сообщение krasdok »

Может на форуме есть примеры рабочие???
Аватара пользователя
acckyiboxxx
Нашел транзистор. Понюхал.
Сообщения: 182
Зарегистрирован: Ср янв 25, 2012 07:26:40

Re: Нужна прошивка для подключения датчиков температуры ds18

Сообщение acckyiboxxx »

https://www.google.ru/search?num=100&ne ... nxpvSRnI7w

как-то так , инфы море.
krasdok
Родился
Сообщения: 15
Зарегистрирован: Вт дек 20, 2016 11:19:32

Re: Нужна прошивка для подключения датчиков температуры ds18

Сообщение krasdok »

Ваша ссылка мне не помогла. Зависает
Третий пример из интернета пробую и ноль...
Помогите разобраться...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18552
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Нужна прошивка для подключения датчиков температуры ds18

Сообщение ARV »

http://radiokot.ru/lab/controller/18
http://radiokot.ru/lab/controller/19/
http://radiokot.ru/circuit/digital/measure/135/
http://radiokot.ru/circuit/digital/measure/46/
http://radiokot.ru/circuit/digital/home/24/
http://radiokot.ru/circuit/digital/home/26/
http://radiokot.ru/circuit/digital/home/41/
http://radiokot.ru/circuit/digital/home/61/
http://radiokot.ru/circuit/digital/home/69/

И это только на этом сайте, да и то мне уже влом стало копипастить ссылки... Вам не стыдно?

Добавлено after 1 minute 23 seconds:
Re: Нужна прошивка для подключения датчиков температуры ds18b20
Я правда в списке ссылок с разбегу залимонил несколько проектов на PIC... они вам не подойдут... но еще есть минимум 50 (!!!) проектов термометров на Радиокоте - дерзайте!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
acckyiboxxx
Нашел транзистор. Понюхал.
Сообщения: 182
Зарегистрирован: Ср янв 25, 2012 07:26:40

Re: Нужна прошивка для подключения датчиков температуры ds18

Сообщение acckyiboxxx »

ARV, я полагаю человеку надо такое решение https://www.chipdip.ru/product/sth0014ur , хотел-бы собрать сам - разобрался-бы как работает и слепил-бы.
krasdok
Родился
Сообщения: 15
Зарегистрирован: Вт дек 20, 2016 11:19:32

Re: Нужна прошивка для подключения датчиков температуры ds18

Сообщение krasdok »

Не судите строго, я только учусь...
С LCD без проблем подключил, ножками на вход/выход научился управлять. Сделал часики. С прерываниями разобрался. С шаговиками разобрался. А вот датчик температуры меня в ступор ввел. Мучаюсь и не пойму ничего вроде должно работать а не хочет...
Толи код кривой, то ли я как-то не так...
Купил для пробы датчик вот тут http://jewelfox.ru/lot.php?id=8439.
Может что не так подключаю (тоже в интернете смотрел)... диод при подключение питания должен же гореть, а у меня не горит...
Аватара пользователя
trengtor
Сверлит текстолит когтями
Сообщения: 1299
Зарегистрирован: Вт мар 31, 2015 22:56:07
Откуда: Мы люди простые, живем в лесу, на пенек молимся
Контактная информация:

Re: Нужна прошивка для подключения датчиков температуры ds18

Сообщение trengtor »

Выводы проинициализируй...
Изображение
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18552
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Нужна прошивка для подключения датчиков температуры ds18

Сообщение ARV »

acckyiboxxx писал(а):я полагаю человеку надо такое решение
именно такое решение есть среди показанных мной ссылок: http://radiokot.ru/circuit/digital/home/61/ - кстати, это моя разработка (основа), там и ссылка на мой вариант есть.
Изображение
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
AVR_hobby
Встал на лапы
Сообщения: 82
Зарегистрирован: Чт авг 11, 2016 18:13:16
Откуда: Украина

Re: Нужна прошивка для подключения датчиков температуры ds18

Сообщение AVR_hobby »

Ну и я свои "пять копеек" вставлю. Вот сайтик с довольно разжеванным обучением. А вот статья про сам датчик, а здесь и термометр, как раз по всем вашим требованиям)
Ответить

Вернуться в «Периферия»