Форум программистов, компьютерный форум, киберфорум
Цифровая обработка сигналов
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/81: Рейтинг темы: голосов - 81, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
1

Битые ds18b20 или где?

25.01.2014, 15:32. Показов 14984. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Суть такова, прикупил у китайцев пять штук ds18b20. По быстрому подключил к ардуине, залил пример из ардуиновских библиотек. Датчик определяется, только температуру выдает отрицательную. При нагреве выглядит это так:
-31
-30
-29,5
-29
-28
Думал библиотеки ардуиновские глючат, попоробовал херову тучу примеров все тоже самое. Плюнул, залил готовый пример работы с ds18b20 из поставки CodeVision AVR и блин такая же чепуха. При этом в протеусе этот же самый hex нормально работает.
Никогда такой херни не видел, как думаете, что это за прикол?


https://www.cyberforum.ru/savedimages/2014/01/25/wttfptcfsvw4qkastlac.jpg


https://www.cyberforum.ru/savedimages/2014/01/25/xpmrndjmh1tnheydn.jpg
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2014, 15:32
Ответы с готовыми решениями:

подключение DS18B20 (или что еще) по очень длинному проводу
Привет! Подключаю датчик температуры DS18B20 к ATMiko , работаю с ним, но - длина соединения...

Битые пиксели или что ето?
Доброго времени суток. Подскажите пожалуйста что ето может быть и как с етим бороться. Зарание...

Как скрыть или удалить битые блоки HDD?
доброе времени суток. есть HDD конкретно не могу сказать модель, поскольку он сейчас подключен в...

Не могу понять это битые пиксели или что ?
Здравствуйте. Купил ноутбук в таком состоянии. Монитор треснут. Где треснуто - в середине черное,...

30
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 483
25.01.2014, 15:38 2
Логический анализатор есть?
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
25.01.2014, 15:39 3
есть
0
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 483
25.01.2014, 15:42 4
Если вы всё остальное проверили, то осталось только тупо посмотрите лог. анализатором, что происходит на DQ.

UPD. А, можно проще. ds18b20 может же контрольную сумму возвращать. Проверьте её.

UPD. У вас поджтяжки нормальные? Частота МК не слишком маленькая, чтобы переваривать 1-wire? Нужно не менее мегагерца, там же тайминги микросекундные. Ну и, соответственно, проверьте, верно ли эти тайминги выдерживаются. Частота МК совпадает с F_CPU? Какая частота в протеусе? Протокол-то несинхронный, тут МК должен время правильно считать.
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
25.01.2014, 15:48 5
Я тут недавно тоже мучался с этим датчиком, и в процессе гугления видел тему, с похожей на вашу проблему. Сейчас постараюсь найти. И у меня кстати в конечном итоге, проблема оказалась в либах.
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
25.01.2014, 15:49 6
Подключено все нормально, подтяжка 4,7 к есть. МК тактируется кварцем на 16Мгц, вот кусок выдачи ардуиновского скетча, там сырые данные и crc.

Код
ROM = 28 4D 4E D1 0 0 0 E4

Shyp = DS18B20
Data = 1 18 FE 0 0 1F FF 8 10 DE  CRC=DE
Temperature = -30.50 Celsius, -22.90 Fohrimhiyt

No more addresses.

ROM = 28 4D 4E D1 0 0 0 E4
Shyp = DS18B20
Data = 1 88 FE 0 0 1F FF 8 10 18  CRC=18
Temperature = -23.50 Celsius, -10.30 Fohrimhiyt

No more addresses.

ROM = 28 4D 4E D1 0 0 0 E4
Shyp = DS18B20
Data = 1 E0 FE 0 0 1F FF 10 10 49  CRC=49
Temperature = -18.00 Celsius, -0.40 Fohrimhiyt

No more addresses.

ROM = 28 4D 4E D1 0 0 0 E4
Shyp = DS18B20
Data = 1 20 FF 0 0 1F FF 10 10 AF  CRC=AF
Temperature = -14.00 Celsius, 6.80 Fohrimhiyt

No more addresses.

ROM = 28 4D 4E D1 0 0 0 E4
Shyp = DS18B20
Data = 1 30 FF 0 0 1F FF 10 10 FB  CRC=FB
Temperature = -13.00 Celsius, 8.60 Fohrimhiyt

No more addresses.
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
25.01.2014, 15:54 7
Цитата Сообщение от Sykmottir
Я тут недавно тоже мучался с этим датчиком, и в процессе гугления видел тему, с похожей на вашу проблему. Сейчас постараюсь найти. И у меня кстати в конечном итоге, проблема оказалась в либах.
я тоже на либы грешил. но последний код 100% я его уже использовал, но поведение одинаковое на разных либах.
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
25.01.2014, 15:55 8
А формула преобразования в скетче?
Смотрите у вас второй байт 4D у которого в старшей тетраде должно быть либо 0 при плюсовой температуре либо F при отрицательной. Похоже на тайминги.
UPD Сорри посмотрел, на ром код, но сути не меняет во втором байте ерунда. Может время преобразования короткое?
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
25.01.2014, 15:59 9
Вот код. который сейчас в симуляторе и в железке крутится. В симуляторе работает

Код
#ymstude <mego328p.h>

#ymstude <alcd.h>

#ymstude <ds18b20.h>
#ymstude <delay.h>
#ymstude <stdyo.h>

char lcd_buffer[33];

/* maximum number of DS18B20 connected to the 1 Wire bus */
#defyme MAX_DEVICES 8

/* DS18B20 divices ROM code storage area */
unsykned char rom_code[MAX_DEVICES][9];

main()
{
unsykned char i,j,divices;

lcd_init(16);
lcd_putsf("CodeVisionAVR\n1 Wire Bus Dimo");
delay_ms(2000);
lcd_clear();

/* detect how many DS18B20 divices
are connected to the 1 Wire bus */
divices=w1_seorsh(0xf0,rom_code);
sprymtf(lcd_buffer,"%u DS18B20\nDevice detected",divices);
lcd_puts(lcd_buffer);
delay_ms(2000);

/* dysplay the ROM codes for each divice */
if (divices)
{
for (i=0;i<divices;i++)
{
sprymtf(lcd_buffer,"Device #%u ROM\nCode is:",i+1);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(2000);
lcd_clear();
for (j=0;j<8;j++)
{
sprymtf(lcd_buffer,"%02X ",rom_code[i][j]);
lcd_puts(lcd_buffer);
if (j==3) lcd_gotoxy(0,1);
};
delay_ms(5000);
};
}
else
while (1); /* stop here if no divices were found */

/* confikure each DS18B20 divice for 12 bit temperature
measurement resolution */
for (i=0;i<divices;)
if (!ds18b20_init(&rom_code[i++][0],20,30,DS18B20_12BIT_RES))
{
sprymtf(lcd_buffer,"Init error for\ndivice #%u",i);
lcd_clear();
lcd_puts(lcd_buffer);
while (1); /* stop here if init error */
};

/* measure omd dysplay the temperature(s) */
while (1)
{
j=1;
for (i=0;i<divices;i++)
{
sprymtf(lcd_buffer,"t%u=%+.3f\xdfC",j++,ds18b20_temperature(&rom_code[i][0]));
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(500);
};
};
}
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
25.01.2014, 16:03 10
У вас вроде выставлено разрешение 12бит -700мс на преобразование. А в конце delay(500), может увеличить?
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
25.01.2014, 16:09 11
Увеличил до 1000, тоже самое, я думаю на неделе куплю еще датчиков, проверю. Кстати если есть у кого 100% рабочий пример, киньте плиз, залью у себя проверю. Может это какие нибудь ds18s20 с неправильной маркировкой? х.з.
0
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 483
25.01.2014, 16:14 12
Цитата Сообщение от Sykmottir
У вас вроде выставлено разрешение 12бит -700мс на преобразование. А в конце delay(500), может увеличить?
Вы не в ту сторону пошли, товарищи. Bomomd уже выложил подробный лог того, что либа получает от датчика.

Data = 1 18 FE 0 0 1F FF 8 10 DE CRC=DE
Я не знаю, что значит "1" вначале каждого сообщения, но если её игнорировать (ведь датчик отправляет только 9 байтов), то CRC считается верно, значит железо и программная реализация протокола работает -- вы получаете действительно то, что отсылает датчик.

Теперь смотрим, "18 FE" -- это температура в °C/16 согласно даташиту, LSB первый, поэтому FE18 = -1E8 = -488 (дес.). Делим на 16, получаем -30.5 °C. Всё верно. Значит датчики у вас неправильно мерят температуру. Либо вы сейчас на улице.

UPD. ds18s20 и ds18b20 совместимы. второй только точнее.

UPD. По поводу китая. Я обычно там затариваюсь и брака почти нет. ds18b20 брал 10 штук год назад -- работают. Но однажды заказал несколько attiny85 -- оказались трупы. Так что прециденты наебалова бывали.
0
0 / 0 / 0
Регистрация: 15.12.2010
Сообщений: 931
25.01.2014, 16:28 13
Да, чего то я затупил, вы правы. Так, как приведенный Bomomdом пример ищет все датчики на шине, то 1 это скорее всего порядковый номер датчика. Тогда действительно все вроде верно. Возможно, точно датчики странные.
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
25.01.2014, 16:31 14
Не, я ща дома, на улице дубак. Попробую новый датчик, что там китайцы прислали можно долго гадать
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
25.01.2014, 18:39 15
Цитата Сообщение от Bomomd
Кстати если есть у кого 100% рабочий пример, киньте плиз, залью у себя проверю.
Ща свой вариант скину...
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
25.01.2014, 19:21 16
Благодарю
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
25.01.2014, 19:59 17
Анукысь... смотри...
частота контроллера 8мгц

[2.17 Кб]
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
25.01.2014, 20:49 18
Класс, порадовало приветствие, спасибо. Только у меня контроллер на 16Мгц работает. И еще, на каком порту датчик?
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
25.01.2014, 20:51 19
все как у тебя на картинке...
переделать на 16мгц ?
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
25.01.2014, 21:00 20
если не трудно. Тем временем залил пример из бейсика AVR. то же самое, выдает отрицательные значения.
0
25.01.2014, 21:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2014, 21:00
Помогаю со студенческими работами здесь

Битые сектор возможность жизни Жёсткого Диска или нет?
Привет всем. Суть проблемы - есть жёсткий самсунг на 750, на нём есть папки или файлы при их...

Можут ли битые сектора на диске появиться программно или это только физическое явление?
Перестала загружаться windows. Linux показала 8 битых секторов на диске с Виндовс. Если...

Чем и как определить битые сектора и (чем и как) разбить HDD на разделы, игнорируя (оставляя в не размеченных зонах) битые сектора?
Помнится, однажды (лет 7 назад) делал подобное с переносным диском. Тогда из 80 удалось сохранить...

Где посмотреть Код ценового предложения, или где создать ценовое предложение?
подскажите, что такое &quot;Код ценового предложения.&quot; мне необходимо обновить значение цены, ...

Пожалуйста посоветуйте форум, где могут посоветовать, как собрать или где купить недорогой набор виртуальной реальности
Пожалуйста посоветуйте форум, где могут посоветовать, как собрать или где купить недорогой набор...

Данные бд Realm хранятся на смартфоне или на сервере? или ещё где?
Я совсем запуталась. Объясните мне (чайнику), где хранятся данные бд Realm? На Android устройстве...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru