Например TDA7294

Форум РадиоКот • Просмотр темы - Всё по DS18(B/S)20.
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вт июн 02, 2020 13:48:46

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1152 ]  1, , , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Всё по DS18(B/S)20.
СообщениеДобавлено: Сб фев 04, 2012 15:16:32 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб июл 30, 2011 05:35:35
Сообщений: 39
Рейтинг сообщения: 0
Здравствуйте, товарищи коты! Очень много вопросов возникает, потому завёл отдельную тему. Собираю в общем электроградусник на Меге8, DS18B20 b 2-х семисегментных индикаторах. Семисегментники ожили, показывают адекватно число в обоих разрядах, датчик откликается, даже данные выдает и на температуру реагирует. )) НО - врёт: При комнатной температуре индикатор показывает "03", если коэфициент "0,0625" подогнать и сделать к примеру "0,625", показывает "32", если подержаться за датчик рукой постепенно поднимается до "42", то есть на температуру действительно реагирует. Ещё что смущает: разряды то поочерёдно, то одновременно показывают случайные числа на интервал около секунды, я так полагаю что с датчика неверные числа приходят. Помогите пожалуйста, товарищи коты! Текст программы ниже.

Код:
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include <avr/interrupt.h>

#define W1_PORT PORTC
#define W1_DDR DDRC
#define W1_PIN PINC
#define W1_BIT 0

volatile char count = 0 ;
volatile char digit1 ;
volatile char digit2 ;


//Выводим значение температуры на 2 семисегментных индикатора
ISR(SIG_OVERFLOW0)
{
if (count==2) count=0 ;
switch(count)
 {
 case 0:PORTB = digit2;PORTB |= (0<<5);PORTB |= (1<<6);break;
 case 1:PORTB = digit1;PORTB |= (1<<5);PORTB |= (0<<6);break;
 }
count++ ;
}

//функция определяет есть ли устройство на шине
unsigned char w1_find()
{
 unsigned char device;
 W1_DDR |= 1<<W1_BIT;
 _delay_us(485);
 W1_DDR &= ~(1<<W1_BIT);
 _delay_us(65);

 if((W1_PIN & (1<<W1_BIT)) ==0x00)
 device = 1;
 else
 device = 0;
 _delay_us(420);
 return device;
}
//функция посылает команду на устройство 1-wire
void w1_sendcmd(unsigned char cmd)
{
 for(unsigned char i = 0; i < 8; i++)
 {
 if((cmd & (1<<i)) == 1<<i)
 {
 W1_DDR |= 1<<W1_BIT;
 _delay_us(2);
 W1_DDR &= ~(1<<W1_BIT);
 _delay_us(65);
 }
 else
 {

 W1_DDR |= 1<<W1_BIT;
 _delay_us(65);
 W1_DDR &= ~(1<<W1_BIT);
 _delay_us(5);
 }
 }
}
//функция читает один байт с устройства 1-wire
unsigned char w1_receive_byte()
{
 unsigned char data;
 for(unsigned char i = 0; i < 8; i++)
 {
 W1_DDR |= 1<<W1_BIT;
 _delay_us(2);
 W1_DDR &= ~(1<<W1_BIT) ;
 _delay_us(7);

 if((W1_PIN & (1<<W1_BIT)) == 0x00)
 data &= ~(1<<i);
 else
 data |= 1<<i;
 _delay_us(50);
 }
 return data;
}
//функция преобразует полученные с датчика 18b20 данные в температуру
int temp_18b20()
{
 unsigned char data[2];
 int temp = 0;
 if(w1_find()==1)//если есть устройство на шине
 {
 w1_sendcmd(0xcc);//пропустить ROM код, мы знаем, что у нас одно устройство или передаем всем
 w1_sendcmd(0x44);//преобразовать температуру
 _delay_ms(750);//преобразование в 12 битном режиме занимает 750ms
 w1_find();//снова посылаем Presence и Reset
 w1_sendcmd(0xcc);
 w1_sendcmd(0xbe);//передать байты ведущему(у 18b20 в первых двух содержится температура)
 data[0] = w1_receive_byte();//читаем два байта с температурой
 data[1] = w1_receive_byte();
 //загоняем в двух байтную переменную
 temp = data[1];
 temp = temp<<8;
 temp |= data[0];
 //переводим в градусы
 temp *= 0.625;//0.0625 градуса на единицу данных
 }
 //возвращаем температуру
 return temp;
}


int main(void)
{
 DDRB = 0xFF ;
 TIMSK = 0b00000001 ;
 TCCR0 = 0b00000010 ;
 char temp ;
 sei() ;
 while(1)
 {
 temp = temp_18b20() ;
 if(temp > 1000) //если температура <0
 {
 temp = 4096 - temp ;
 temp = -temp ;
 }
 digit1 = temp/10 ;//выводим на дисплей
 digit2 = temp%10 ;
 }
}= ~(1


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Сб фев 04, 2012 16:51:09 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вт окт 27, 2009 22:39:19
Сообщений: 672
Откуда: Москва
Рейтинг сообщения: 0
Dako писал(а):
я так полагаю что с датчика неверные числа приходят

В тыщапицотый раз сообщаю: датчики либо работают либо не работают, СОВСЕМ.
Врать лично Вам им нет никакого резона.
Проверяй алгоритм. Читай тыщапицот тем в которых все уже разжовано, все ошибки описаны.
ЗЫ: если CRC не проверять, то что к датчику придираться....

_________________
— Не говорите мне что делать и я не скажу куда Вам идти...


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Сб фев 04, 2012 16:58:40 
Мудрый кот
Аватар пользователя

Карма: 3
Рейтинг сообщений: 62
Зарегистрирован: Пн ноя 29, 2010 15:58:43
Сообщений: 1797
Рейтинг сообщения: 0
есть предложение открыть сайт http://тыщапицотпроDS18B20.RU


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Сб фев 04, 2012 17:30:44 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 78
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1257
Откуда: Винница
Рейтинг сообщения: 2
давайте я погадаю на кофейной гуще - у ТС датчик не 18b20 , а 1820 или 18S20.
в этом случае при комнатной 18 градусов с учетом младшего разряда в регистре будет 36.
36 умножаем на 0.0625 = 2.25 градуса
36 умножаем на 0.625 = 22 градуса

В задаче спрашивается - какая температура дома у ТС, если показывает 32 ?
Около 25 - буржуй, однако...
У меня сейчас 16...


Вернуться наверх
 
Новые контролллеры VIPerPLUS - практический вебинар 10 июня от ST

В программе вебинара - новые контроллеры VIPerPlus, расширяющие границы применения этих компонентов. Обзор их характеристик и преимуществ. Практика. Демонстрация испытаний из лаборатории ST. Пример моделирования в среде E-DesignSuite.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Сб фев 04, 2012 17:41:28 
Мудрый кот
Аватар пользователя

Карма: 25
Рейтинг сообщений: 74
Зарегистрирован: Вт окт 05, 2010 01:08:57
Сообщений: 1800
Рейтинг сообщения: 0
urry писал(а):
давайте я погадаю на кофейной гуще - у ТС датчик не 18b20 , а 1820 или 18S20.
в этом случае при комнатной 18 градусов с учетом младшего разряда в регистре будет 36.
36 умножаем на 0.0625 = 2.25 градуса
36 умножаем на 0.625 = 22 градуса

В задаче спрашивается - какая температура дома у ТС, если показывает 32 ?
Около 25 - буржуй, однако...
У меня сейчас 16...


минвату под пол, окна оклеить, кол-во зубов в батареи удвоить :))) и вы тоже буржуй

_________________
KIT


Вернуться наверх
 
NanoPower от Maxim – ультранизкое потребление для «бесконечной» работы батареи!

Применяя компоненты NanoPower от Maxim Integrated с минимальным током покоя и минимальным собственным потреблением, вы сможете разработать устройство с максимально эффективной системой питания и продлить срок работы от батареи. Наша подборка статей и новостей по данной теме поможет вам в этом.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Сб фев 04, 2012 17:55:12 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб июл 30, 2011 05:35:35
Сообщений: 39
Рейтинг сообщения: 0
ха-ха! Забавно! Ещё раз всем спасибо, Урри оказался прав, у меня действительно датчик 1820 )))


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Сб фев 04, 2012 18:21:08 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13492
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
urry объявляется победителем "Битвы экстрасенсов"!


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Сб фев 04, 2012 18:29:43 
Вымогатель припоя
Аватар пользователя

Карма: 15
Рейтинг сообщений: 39
Зарегистрирован: Вс ноя 13, 2011 16:42:05
Сообщений: 652
Откуда: Украина
Рейтинг сообщения: 0
Сколько людей пишут здесь неправду, утверждая что эктрасенов здесь нет...
:shock: а это что по вашему, за тыщапицот километров увидели; какой датчик, температуру в комнате и из чего сделана комната, и что свет в коридоре до сих пор включен...:)


Вернуться наверх
 

Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Сб фев 04, 2012 20:33:52 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб июл 30, 2011 05:35:35
Сообщений: 39
Рейтинг сообщения: 0
На момент измерения температуры, на улице было -45, спасибо ТЭЦ, г Новосибирск ))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Вс фев 05, 2012 09:21:56 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
Dako писал(а):
На момент измерения температуры, на улице было -45, спасибо ТЭЦ, г Новосибирск ))
че-то как-то не верится... даже по брехливым (занижающим) интернет-прогнозам такой температуры в районе Новосибирска не было и нет сейчас... 2-го февраля было -22-24 всего-то...

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Вс фев 05, 2012 10:18:27 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб июл 30, 2011 05:35:35
Сообщений: 39
Рейтинг сообщения: 0
Пардон, опечатался -35 было :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Вс фев 05, 2012 17:40:16 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб июл 30, 2011 05:35:35
Сообщений: 39
Рейтинг сообщения: 0
Дико извиняюсь, господа, но не могу вкурить как контрольная сумма считается? Подскажите или ткните носом пожалуйста )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Вс фев 05, 2012 17:47:19 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вт окт 27, 2009 22:39:19
Сообщений: 672
Откуда: Москва
Рейтинг сообщения: 0
Код:
#include <util/crc16.h>

uint8_t crc=0;

for (i=0;пока все байты не посчитаем;i++) {
    crc=_crc_ibutton_update(crc,bytes[i]);
}

Для DS18s20
Если считать только байты данных (от 0 до 7), то crc должно быть равно восьмому.
Если считать ВСЕ 9 байт, то в итоге crc должно быть 0.

_________________
— Не говорите мне что делать и я не скажу куда Вам идти...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Вс фев 05, 2012 18:30:06 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб июл 30, 2011 05:35:35
Сообщений: 39
Рейтинг сообщения: 0
Скажите, а для DS1820 аналогично считается?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Вс фев 05, 2012 18:31:55 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
Dako писал(а):
Скажите, а для DS1820 аналогично считается?
может, пора, наконец, документацию на датчики почитать? даже ведь на русском полно статей - почитайте, не тратьте зря свое время и время тех, кто тут пытается вам помочь.

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Чт фев 09, 2012 22:58:02 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 8
Зарегистрирован: Пт июн 20, 2008 09:38:05
Сообщений: 127
Откуда: Харьков
Рейтинг сообщения: 0
Dako А на счёт того, что у вас датчик белеберду выдает..(навреное, то 55, то 85) вы прерывания отключите, пока датчик опрашиваете. И не надо его дергать чаще чем 1 раз в секунду! Он у нас уже почетный пенсионер, работать так быстро не умеет и не хочет


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Ср фев 15, 2012 07:27:36 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб июл 30, 2011 05:35:35
Сообщений: 39
Рейтинг сообщения: 0
Не, числа каждый раз разные, в среднем раз в 30 сек выкидывает неправильную температуру, опрашивается раз в 750 мс. Щас усиленно пытаюсь разобраться с алгоритмом расчёта CRC. Пока безуспешно ((


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Ср фев 15, 2012 07:36:30 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13492
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Что там разбираться? Есть ведь готовые библиотеки - бери и пользуйся.

-----
по поводу датчиков...
У меня 2 датчика на 10-метровом проводе, при ошибке CRC выводится ошибка. Не было ни разу. Сделал затычку - чтобы при первой же ошибке программа зажгла светик и не тушила. Прошла неделя - он не горит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Ср фев 15, 2012 07:48:10 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб июл 30, 2011 05:35:35
Сообщений: 39
Рейтинг сообщения: 0
Пытался вкорячить в код, алгоритм товарища md5sum, то есть в выражение crc=_crc_ibutton_update(crc,bytes[i]); вместо bytes[i] по очереди подсовывал все 8 байт данных, по выходу из цикла сравнивал crc с 9-м полученым байтом. Баг немного видоизменился: стал появляться чаще, но теперь не случайные цифры, а нули только. Пока так....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: В тыщапицотый раз про DS18B20.
СообщениеДобавлено: Ср фев 15, 2012 07:49:35 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб июл 30, 2011 05:35:35
Сообщений: 39
Рейтинг сообщения: 0
Может у меня код кривой, я только учусь :oops:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1152 ]  1, , , , ...  

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y