Перейти к содержанию

Алгоритм Обработки Потока Ds18B20 И Ds1820


Рекомендуемые сообщения

  • Ответов 64
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Первый имеет разрешающую способность в 12 или 9 двоичных разрядов (выбирается пользователем), а второй только 9.

В результате у них несколько разный формат выходных данных.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

В датащите про формат регистра термпературы написанно так:

+85°C* 0000010101010000 0550h

Число 0000 0101 0101 0000 это 0550h в hex системе но вот 1360 в десятичной... Как тут 85 получилось?

Изменено пользователем dimas5552
Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

ну вооот..., а говорили что изрядный программист... :)

Как насчет двоичной дроби с фиксированной точкой?

Пример 00000000.0000

В приведенном случае: 01010101.0000 = 0х55 = 85

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А допер :lol: 0000010101010000 - последнии 5 битов и первые 4 (для DS1820) отбрасываем и получаем 1010101 = 85 (3 бит - десятые)

Изменено пользователем dimas5552
Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Десятые - ЧЕТЫРЕ бита, а не три

Пример: 000000000000.1000 = +0,5 градусов

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Там так же написанно:

Для 11-битной разрешающей способности, бит 0 неопределен. Для 10-битной разрешающей способности, биты 1 и 0 неопределенны, и для 9 битной разрешающей способности 2, 1 и 0 неопределенны

А как Вы говорите 1820 - только 9-ти битный то первые 2 бита незадействованны

Изменено пользователем dimas5552
Ссылка на комментарий
Поделиться на другие сайты

Так, еще раз.

По пунктам.

DS18B20.

Имеет изменяемое от 9 до 12 разрядов разрешение и при этом ФИКСИРОВАННЫЙ формат: ssss00000000.0000

DS1820 (он же DS18S20).

Имеет НЕИЗМЕННОЕ разрешение в 9 разрядов и ДРУГОЙ по сравнению с DS18B20 формат: ssssssss0000000.0

, где s - sign - знак 1 - минус, 0 - плюс , как водится...

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

DS1820 (он же DS18S20).

Имеет НЕИЗМЕННОЕ разрешение в 9 разрядов и ДРУГОЙ по сравнению с DS18B20 формат: ssssssss0000000.0

Полностью с этим согласен, ибо сейчас спаял термометр, где надо применять 18B20, но за неимением такого пришлось приобрести 1820. Так он всякую ерунду показывает :lol: Теперя нада прошивку под 1820 переписать... Спасибо за инфу, а то я думал что если в 9-и битном режиме (как в 1820) биты 0,1 и 2 незадействованны, а оно вот как на самом деле оказывается ;)

Изменено пользователем dimas5552
Ссылка на комментарий
Поделиться на другие сайты

Ну наконец то....

Вы наверное удивитесь, но у меня есть пару собственных конструкций на этих термометрах. Причем в одной из них контроллер сам определяет тип подключенной микросхемы и соответственно изменяет формат обработки...

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

dimas5552, переименуйте тему согласно правилам форума. Иначе мне её придётся удалить и Вас наказать. У Вас уже было предупреждение по данному пункту правил.

Ссылка на комментарий
Поделиться на другие сайты

Вы наверное удивитесь, но у меня есть пару собственных конструкций на этих термометрах. Причем в одной из них контроллер сам определяет тип подключенной микросхемы и соответственно изменяет формат обработки...

А исходник можете скинуть :rolleyes:

dimas5552, переименуйте тему согласно правилам форума

Замечания исправил ;)

Ссылка на комментарий
Поделиться на другие сайты

А как работать с дробными числами в 18B20? На таблице дробному числу .125 соответствует код 0010 (у +10.125°C) и 1110 у -10.125°C... дроби одинаковые а значения разные :blink:

И как тогда будет выглядеть температура с дробью .625 ?

post-107048-053312400 1285299866_thumb.png

Изменено пользователем dimas5552
Ссылка на комментарий
Поделиться на другие сайты

дроби одинаковые а значения разные
А что Вы хотите ? Это же минус. Числа разные :)

Возмите калькулятор виндовский, переведите его в hex, наберите 0 - A2 и нажмите равно. И у Вас получится ...FF5E , как раз то, что написано в таблице. Не понятно почему у Вас такие вопросы возникают.....

код 0010 (у +10.125°C) и 1110 у -10.125°C.
0010 это число 2, 1110 это -2. Всё сходится, числа одинаковые только знак разный :)
Ссылка на комментарий
Поделиться на другие сайты

Мдяяяя...

Давайте начнем с того, что Вы самостоятельно изучите дополнительный формат представления чисел.

Несмотря на Ваши "познания" в программировании на ЯВУ больших машин, к великому сожалению в теории чисел у Вас изрядные пробелы... Если не сказать хуже.

Представление двоичных дробей не требует никаких особых разъяснений. Если умножение на 2 дает сдвиг влево, то деление на 2 соответственно вправо.

Значит наличие точки в двоичной дроби собственно при вычислениях ничего не меняет:

00000000.1000= 0,5

00000000.0100=0,25

00000000.0010=0,125

00000000.0001=0,0625

Вычитаем столбиком 0,5-1 и получаем -0,5

00000000.1000

00000001.0000

---------------------

11111111.1000 = -0,5

И запомните, знаковые и беззнаковые числа в дополнительном двоичном коде ОТЛИЧАЮТСЯ.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Для того, что бы перевести отрицательную температуру в положительную в двоичном коде для определения числового значения в десятичном формате нужно инветрировать все биты мледшего байта (LS BYTE) и убрать нулевой байт со здвигом битов байта влево. Вот например часть кода из исходника:

comf LS,F ;Преобразование для правильного

incf LS,F ;отображения отрицательных температур

Загвоздку вызвала вторая строка инкремента инвертированной температуры. Все дело в том, что если например датчик пошлет нам значение, например 1100 1110 в младшем байте (полное значение двух байтов: 1111 1111 1100 1110) то это будет число -24.0 в десятичной системе и необходимость инкрементировать это число для правильного отображения неоспаривается (по датащиту этому значению соответствует температура -25 *С), но если датчик пошлет значение 1111 1111 1111 1111 то при инвертировании мы уже получим значение -0.5 (как и есть по датащиту), а если мы его еще и инкрементируем, то получится ошибка в вычислении на целый градус :blink:

Это получается, что на отрицательных температурах около нуля всегда будет погрешность 1 *С (погрешность вычисления) + 0,5 *С (погрешность измерения) = 1.5 *С ..., то есть инкрементировать температуру с целым значением 0 нет необходимости. Да и собственно -1 (11111100) так и перешлется и его тоже выходит инкрементировать не нужно... До какой температуры не требуется инкремент для правильного отображения значений???

Изменено пользователем dimas5552
Ссылка на комментарий
Поделиться на другие сайты

Давайте посчитаем вместе.

Пускай речь о DS1820, т.е. формат sssssss0 0000000.0

-0,5 = 11111111 1111111.1 для нахождения модуля из дополнительного представления инвертируем побитно это число и прибавляем 1 (sic!!!) к младшему значащему разряду . Таким образом:

000000000000000.0 + 000000000000000.1 = 000000000000000.1 = 0,5 (минус следует из знака исходного числа).

Повторим незамысловатые вычисления с иным отрицательным числом:

-25 = 11111111 1100111.0

00000000 0011000.1

00000000 0000000.1

------------------------------

00000000 0011001.0 = 0х19 = 25

Из всего этого следует один важный вывод. При дополнительной форме отрицательных чисел положение точки и разрядность МЕНЯТЬ НЕЛЬЗЯ. Т.е. без перерасчета нельзя, а так - можно...:rolleyes:

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

В виндовском калькуляторе -2 получилось так: 1111111111111111111111111111111111111111111111111111111111111110
А Вы посмотрите на младшие биты. Ничего они Вам не напоминают ? :) В калькуляторе разрядность чисел большая, по этому и битов много.
Да и вообще какие 2, там же значение .125 ?
Как какие ? Обычные 2. Это число 2, а датчик говорит Вам что температура .125 Т.к. его разрешение .0625 (т.е. цена одного бита = 0.0625 C'), умножаем на наше 2 и получаем .125

Всё просто :)

но если датчик пошлет значение 1111 1111 1111 1111 то при инвертировании мы уже получим значение -0.5 (как и есть по датащиту), а если мы его еще и инкрементируем, то получится ошибка в вычислении на целый градус
При нивертировании мы получим не -0.5 а 0 (00000000 00000000). А после инкремента получим как раз нужное значение (0.5 для 1820 и 0.0625 для 18B20).
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...