Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
16.01.2014, 21:07
|
#11
|
Прописка
Регистрация: 29.06.2007
Сообщений: 217
Сказал спасибо: 143
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
|
Re: ds18b20 отрицательная температура
Разрешающая способность температурного преобразователя может быть изменена пользователем и
составляет 9, 10, 11, или 12 битов, соответствуя приращениям (дискретности измерения температуры) 0.5
°C, 0.25°C, 0.125°C, и 0.0625°C, соответственно.
|
|
|
|
16.01.2014, 21:10
|
#12
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,055
Сказал спасибо: 2,562
Сказали Спасибо 11,888 раз(а) в 5,962 сообщении(ях)
|
Re: ds18b20 отрицательная температура
Как это влияет на необходимость поиска дробной части у получаемого целого числа?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
16.01.2014, 21:22
|
#13
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: ds18b20 отрицательная температура
Сообщение от YURALL72
|
отрицательные целые нормально,десятые врут на 0.1
|
Может я что-то пропустил в этом буйном обсуждении, но откуда стало ясно что что-то врёт? DS18B20 врёт или врёт результат преобразования, в меньшую сторону или большую? Если врёт преобразование данных, то в даташите есть таблицы соответствия данных и температуры, которые можно и без датчика забить в проге вручную, посчитать результат и сравнить с тем что в даташите. И на основании этого можно отследить где происходит отклонение и почему. Ничего там сложного нет, это всё легко осуществляется в симуляторе.
|
|
|
|
16.01.2014, 21:24
|
#14
|
Прописка
Регистрация: 29.06.2007
Сообщений: 217
Сказал спасибо: 143
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
|
Re: ds18b20 отрицательная температура
в ctb_t (объявлена как int)на этот момент находятся старший и младший байты температуры.
ctb_t=~ctb_t; //инвертируем число
ctb_t++; //и +1 т.е. переводим из дополнит. кода в нормальный
Ну ведь я инвертирую и 4 бита дробной части,а потом ещё к ним прибавляю 1. Может я этим и порчу 4 бита дробной части?
|
|
|
|
16.01.2014, 21:31
|
#15
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,055
Сказал спасибо: 2,562
Сказали Спасибо 11,888 раз(а) в 5,962 сообщении(ях)
|
Re: ds18b20 отрицательная температура
У Вас в двух байтах ЦЕЛОГО ЧИСЛА содержится не значение, а код температуры, который Вы ПОТОМ умножаете на весовой коэффициент, соответствующий выбранной точности. ДО умножения НИКАКОЙ ДРОБНОЙ части в природе ЦЕЛОГО ЧИСЛА (т.е., кода температуры) не существует.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
16.01.2014, 21:55
|
#16
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: ds18b20 отрицательная температура
А если так?
Код:
|
int16_t tmp = 0;
if(crc == 0)
{
tmp = temp[1] ‹‹ 8;
tmp |= temp[0];
if(tmp ‹ 0)
{
tmp = - tmp;
// и засвечиваем знак МИНУС
}
Ress[1] = (uint8_t)((tmp ›› 4) %10);
Ress[2] = (uint8_t)(tmp ›› 4) / 10;
Ress[0] = (uint8_t)(((tmp&0x0F) * 5 + 4) ›› 3);
} |
|
|
|
Сказали "Спасибо" nahimovv
|
|
|
16.01.2014, 22:15
|
#17
|
Прописка
Регистрация: 29.06.2007
Сообщений: 217
Сказал спасибо: 143
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
|
Re: ds18b20 отрицательная температура
Сообщение от nahimovv
|
tmp = temp[1] ‹‹ 8;
tmp |= temp[0];
if(tmp ‹ 0)
{
tmp = - tmp;
// и засвечиваем знак МИНУС
|
Попробовал и так,то-же самое.Похоже ошибка не в обработке отрицат. значений. Но где она может быть если с полож. всё в порядке???Мистика блин.
|
|
|
|
16.01.2014, 22:30
|
#18
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,055
Сказал спасибо: 2,562
Сказали Спасибо 11,888 раз(а) в 5,962 сообщении(ях)
|
Re: ds18b20 отрицательная температура
По какому признаку делаете вывод об ошибке в 0.1 градуса?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
16.01.2014, 22:36
|
#19
|
Прописка
Регистрация: 29.06.2007
Сообщений: 217
Сказал спасибо: 143
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
|
Re: ds18b20 отрицательная температура
В Протеусе симулирую.
Что самое обидное,лет 5 назад я сделал терморегулятор на 2 канала.Там всё работает.Но исходники потерял.Нашёл ток обрывки,видно недоработанные(((.
Последний раз редактировалось YURALL72; 16.01.2014 в 22:43.
|
|
|
|
16.01.2014, 22:41
|
#20
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,055
Сказал спасибо: 2,562
Сказали Спасибо 11,888 раз(а) в 5,962 сообщении(ях)
|
Re: ds18b20 отрицательная температура
О да... Протез - это сурово! Особенно, при абсолютном к нему доверии.
Вам кто-то гарантировал безгрешность модели?
Обратите внимание на погрешность датчика.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:38.
|
|