Как вывести датчик температуры

    Нравится Не нравится

Дмитрий3 02 Апр 2009

Здравствуйте!

Купил цифровой автомобильный термометр

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытый текст

с двумя датчиками температуры. Очень удобно встает в полочку под магнитолой (на RIO JB)

и стоит недорого. И вот возник вопрос. Как и куда лучше вывести датчик внешней температуры

от этого девайса? Кто-нибудь посоветуйте где обычно располагается датчик?

Я свой датчик протаскивал через педаль сцепления.там где тросик, и прекрепрял его под бампер,ближе к левой фаре

    Нравится Не нравится

Alex Piter 12 Апр 2009

Доброго всем времени суток!

Через тросик сцепления не могу вывести, т.к. нет тросика (коробка автомат). Может быть есть еще варианты или, например, в правое зеркало? Сложно ли это сделать?

А через тросик не перетирается ли провод?

а бортовой комп не рассматривал для таких же целей?

Бортовой комп рассматривал, но датчик все-равно тянуть то надо!

Шаг 5.1. Датчик температуры. Начало.

Глобальная наша цель - это вывести в терминал на компе точное значение температуры, например, в комнате, а в случае сбоя или ошибки - выдавать соответствующее сообщение.

В наличии у нас датчик DS18s20 (в последнее время пишут и без «s» - старую модель DS1820 уже не выпускают), наша микросхема ATmega, переходник UART, конденсатор и четыре резистора.

Немного о самом датчике: он имеет три интересующих нас вывода - GND - «земля», VDD - питание, и DQ - шина данных, использующая протокол 1-Wire .

Ещё этот датчик кушает мало-мало, поэтому может работать не только от внешнего питания, когда мы по-человечески подключаем VDD к +5В, но и паразитно - тогда он подпитывается через вывод для передачи данных от микросхемы.

Для начала опробуем внешнее питание:

Рис. 1. Схема подключения

Как всё это должно работать:

Сразу обговорим: используем уже имеющуюся в среде библиотеку для работы с 1-Wire. Соответственно, у нас есть следующие функции:

  • unsigned short Ow_Reset(unsigned short *port, unsigned short pin);

Наш МК отправляет на вывод № pin порта port импульс сброса (см. статью ). Если на шине есть кто-то из "подчинённых" и получен импульс приветствия, то на результат получаем 0, если никого - то 1.

  • void Ow_Write(unsigned short *port, unsigned short pin, unsigned short par);
    Передача данных - байта par - по шине
  • unsigned short Ow_Read(unsigned short *port, unsigned short pin);

    Результат - байт данных от подчинённого устройства.

  • Итак, сначала нужно узнать, откликается ли датчик. Для этого посылаем импульс сброса - вызываем функцию Ow_Reset. Если получаем на выход 1 - то задержка, отсылка сообщения типа «Ошибка: нет датчика на шине» и снова импульс сброса.

    Если же датчик откликается (Ага!), то действуем по схеме.

    Сначала надо получить сами данные. Из статей про 1-Wire и ds18s20 следует:

    1. Сначала посылаем импульс сброса и получаем импульс приветствия.
    2. Так как мы работаем только с одним датчиком, то используем команду Skip_ROM (в статью).
    3. Посылаем функциональную команду - конвертируем температуру ($44).

    Теперь текущее значение температуры находится в памяти датчика, осталось её считать. По протоколу нужно опять:

  • делаем задержку - по даташиту - блоксхемам - нужно максимум 10 мкс
  • послать импульс сброса и получаем импульс приветствия.
  • посылаем команду ROM - Skip_ROM.
  • посылаем команду Read_ Schratchpad - "чтение памяти".
  • получаем данные от датчика!

    Про память у нас рассмотрено тут (ссылка на статью или на якорь внизу). Прелесть чтения в том, что мастер может остановиться, когда захочет) Вот нужно нам только первые два байта - так мы и считаем только их, и достаточно нам переменной int.

    Поэтому дальше следующие действия:

  • Просто переводим int в строку - на это у нас есть функция из библиотеки Conversation (например, получить шестнадцатеричное представление данных - IntToHex)
  • Отсылаем всю строку по UART - через функцию UART1_Write_Text (это мы делаем уже вне функции)
  • Задержка - и начинаем всё сначала!
  • В принципе, это самый простой алгоритмик без хитрого перекодирования.

    Так как температура в датчике хранится в нечитабельном для обычного человека формате (на самом деле, я очень долго глупила - без последнего бита это обычное целое знаковое в двоичном виде):

    Рис. 3. Формат хранения данных о температуре

    Соответственно, в данной реализации мы можем просто ручками сами пересчитать значение температуры и проверить, правильно ли все работает.

    Дальше, конечно, будем бороться за смысл и простоту, а пока вот она, наша программка:

    В результате программка выдает нам следующее:

    Рис. 4. Терминал при работе

    Терминал, кстати, с нашей среды обитания MikroElektronika

    Так вот, он выдает нам температуру "0036". Переводим по рисунку 3: Левый байт - первые два числа - показывают, что у нас плюсовая температура Дальше расшифровываем: 36 = 00110110 = 2ˆ4 + 2ˆ3 + 2ˆ1 + 2ˆ0 = 27 градусов по Цельсию, вот так)))

    Теперь о Паскале: вместо указателей там обычно используется передача параметров в функцию по ссылке. Для этого до переменной используется слово var. Строки же аналогичны сишным, но имеют свое название - string. При этом необходимо указывать размер строки, а последний её символ должен быть нулем.

    Соотвественно, вызов процедуры, например, будет типа "procedure getTemp(var sTemp. string[TempLen]); "

    Также там, где в Си мы писали '
    ', в Паскале мы пишем отдельные символы: #13 + #10

    Так, текст до самого показания температуры будет таким:

    sTextBeforeTemp := #13 + #10 + 'temp = ';

    Модуль датчика температуры и влажности DHT11 подключение к Arduino

    30.01.2014. Статья переделана под новую библиотеку, работающую через цифровой вывод. Программные коды заменены.

    В первой части статьи рассмотрим характеристики датчика температуры и влажности DHT11. научимся выводить значения в последовательный порт компьютера, во второй части усложним задачу и выведем показания на дисплей используя LCD 1602 I2C модуль.

    Часть первая

    Основные технические характеристики:

    • Напряжение питания: 3 - 5В

    • Определяемая влажность: 20 - 80% ± 5%

    • Определяемая температура: 0 - 50º ± 2%

    • Частота опроса: ≤ 1Гц

    • Размеры: 30 x 14 x 6мм

    Как мы видим, данные датчики не рассчитаны на работу в экстремальных условиях, однако их возможностей c головой хватит для осуществления большинства домашних и более серьезных поделок. Внутри датчика находится емкостной датчик влажности, термистор, и простенький аналогово-цифровой преобразователь значений температуры и влажности.

    Подключение к Arduino

    Модуль оборудован трех пиновым разъемом стандарта 2.54мм

    G. подключается к выводу GND

    S : подключается к цифровому выводу ( в примере D4 )

    Пример работы в среде Arduino

    Подключив датчик к Arduino остается только залить скетч для работы. В приведенном ниже скетче мы будем измерять и отсылать данные о состоянии температуры и влажности последовательный в порт компьютера.

    Библиотека необходимая для работы с модулем dht11.

    Её необходимо распаковать и добавить в папку "libraries" в папке с Arduino IDE. Не забывайте перезагрузить среду, если на момент добавления IDEшка была открыта.

    Пример программного кода:

    Открываем монитор порта. В него будут выводиться значения влажности и температуры.

    Часть вторая

    Выводить значения на компьютер это конечно отлично, однако в автономном устройстве не всегда позволительно. Как было написано вначале, во второй части статьи приведем пример вывода данных на ЖК дисплей, который в свою очередь управляется по интерфейсу I2C. Для подключения данного LCD модуля требуется всего 4 линии: + питания, земля, последовательная линия данных SDA ( Serial DAta ) и последовательная линия тактирования SCL ( Serial CLock ). Более подробно об основах работы с LCD I2C модулем вы сможете прочесть здесь.

    Схема подключения будет выглядеть следующим образом.

    Скетч для взаимодействия работы датчика DHT11 и LCD I2C модуля. В приведенном ниже скетче мы будем измерять и отсылать данные о состоянии температуры и влажности последовательный на ЖК дисплей.

    Рекомендуем также прочитать
    Samsung Galaxy S4 - Первый взгляд. Обзор датчиков, издевательства над ними при помощи пельменей и воздушных шариков
    УАЗ Патриот, 2015 год Пробег: Новый автомобиль от официального дилера Руль: левый Дополнительно: ВНИМАНИЕ. УАЗ ПАТРИОТ РЕСТАЙЛИНГ ИЮЛЯ МЕСЯЦА 2015 ГОДА.
    Проверка датчика температуры охлаждающей жидкости Проверка датчика температуры охлаждающей жидкости:
    Среди всех отечественных автомобилей ГАЗ 31105 (Крайслер) всегда была эталоном качества и престижа.
    Информация Отвечаем на ваши наиболее частые вопросы …на каком принципе работает регулятор ACD 01?