PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Программирование микроконтроллеров » Термометр на DS18B20 (подключение через COM порт)


Термометр на DS18B20 (подключение через COM порт)

Сообщений 1 страница 24 из 24

1

Этот компьютерный COM термометр выполнен на специализированной микросхеме DS18B20 фирмы Dallas. Он подключается к ПК (компьютеру) через последовательный COM порт. Если в вашем компьютере нет COM порта, можете посмотреть другой вариант градусника, подключаемый через USB. USB термометр на ATmega8 и PIC18F4550
Или использовать переходник USB to UART. Поскольку датчик температуры DS18B20 имеет интерфейс 1-Wire, то для согласования с COM портом компьютера необходим преобразователь уровней напряжения, выполненный по схеме:

http://pure-basic.narod.ru/forum_files/COM_DS/Sh.gif

Замечу что это не единственный возможный вариант схемы. Идея не нова и в интернете можно найти разнообразные варианты схем от простейших, до сравнительно сложных.

При использовании USB переходника, схему можно упростить.

http://i038.radikal.ru/1502/7f/876124aa7de8.gif

Если у переходника нет выводов DTR и RTS, но есть выход 5 вольт, схема такая.

http://s020.radikal.ru/i723/1601/04/e695161a0783.gif

Программа проверена и хорошо работает с USB переходниками на микросхеме PL2303.

http://s017.radikal.ru/i437/1601/b8/c6cf3ac0c77d.png

Для считывания текущей температуры с датчика DS18B20 была разработана программа "DS18B20 Thermo" (она кроссплатформенная - для Windows и Linux), внешний вид окна которой показан на скриншоте.

Window версия.

http://pure-basic.narod.ru/forum_files/COM_DS/Scrin.png

Linux версия.

http://pure-basic.narod.ru/forum_files/COM_DS/Scrin_Lin.png

В программе следует выбрать COM порт к которому подключен датчик температуры и если порт не занят, устройство исправно и датчик подключен, то в поле, расположенном в центре окна, отобразится текущая температура. Linux версию программы нужно запускать с правами root-а, иначе не будет доступа к COM порту. Это одна из особенностей операционной системы Linux.

Исходный текст программы "DS18B20 Thermo" и скомпилированные файлы. Для компиляции требуется PureBasic 5.20 или более новая версия.


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

http://s019.radikal.ru/i619/1312/36/bdef6796285c.png

http://s6.uploads.ru/jC4vF.jpg

Скачать программу для Windws x86, Windws x64 и Linux x86 и ее исходные коды.

+1

2

Петр, здравствуйте , скажите , данная схема будет работать на промышленном предприятии, где расстояние от ком порта до датчика более 100 метров и датчик может быть не один?
Очень хотелось бы испытать данную схему в условиях производства. Есть преобразователи 1-wire\RS-485, но с помощью них не знаю как к компьютеру подключиться, т.к. нужно какой то софт писать для протокола Centronix

0

3

С такой длиной линии не проверял. Для улучшения помехоустойчивости скорее всего придется уменьшить сопротивления резисторов R3 и R7, а также использовать внешнее питание, а не от COM порта.

0

4

Здравствуйте! При минусовой температуре у меня показывает 4000 вроде. Это программа так показывает или у меня что то не так с датчиком. Положительную температуру показывает как нужно. Программа которая первая, с одним датчиком.

Отредактировано wvlas (08.10.2015 08:46:41)

0

5

Посмотрел ее исходник. Должно нормально работать с отрицательным температурами. На всякий случай, пересобрал программы из исходников.

0

6

privet vsem skajite pojalusta kak sdelat chto mnogo datchik rabotaet vetot pragrame

0

7

Датчики подключаются параллельно друг другу, т. е. их одноименные выводы соединяются вместе.

0

8

ona mojet pokazat oshibki ??????????

0

9

Когда происходят ошибки, они отображаются в колонке "Статус". Обычно ошибок нет.

0

10

uvas est programa chto pokazivaet vlajnost ili etot sxema i programa mojet pokazat vlajnost?????????????

0

11

Влажность можно вычислить методом "сухого и мокрого термометра". https://ru.wikipedia.org/wiki/Психрометр

0

12

Gor написал(а):

uvas est programa chto pokazivaet vlajnost

Тут посмотрите.

0

13

privet u menya oshibka est skajite chto on mojet bit , oshibka CRC

0

14

Эта ошибка происходит постоянно или только иногда?
Ошибка CRC означает что данные исказились. Возможно это из-за большой длины провода между компьютером и датчиком и из-за большого уровня помех.

0

15

inagda etot oshibka , 1 raz pishet oshibka CRC  i  raz pishet net datchika niznayu chto sdelat

0

16

vsh sxema pravino rabotaet??????????

0

17

Схема нормально работает. Но если датчиков много, сопротивление резистора R3 нужно уменьшить.

0

18

skajite pojalusta kakaya raznica  sensor arduino temp ds18b20  i  sensor ds18b20+wire ????????????

0

19

Скорее всего одно и тоже, но нужно смотреть их описание.

Повысить стабильность и уменьшить число ошибок можно включив режим "Снизить нагрузку на CPU" в меню программы.

0

20

Здравствуйте. Подскажите почему исходник с одним датчиком запускается нормально, а со многими вместо русских надписей вопросики =????=. Виндовс ХР SP3  PureBasic5.3

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

Отредактировано OllyRom (08.03.2016 23:42:00)

0

21

OllyRom написал(а):

а со многими вместо русских надписей вопросики =????=. Виндовс ХР SP3  PureBasic5.3

Ели речь про архив DS18B20_ThermoMon_v1.0.zip то исходник нормально открывается и компилируется. С надписями все в порядке.
Случайно кодировку не изменили?

OllyRom написал(а):

температура изменяется на 0.1 градуса, а у меня через 0.5

Датчик DS18B20 или DS1820 / DS18S20?

0

22

Пётр написал(а):

Ели речь про архив DS18B20_ThermoMon_v1.0.zip то исходник нормально открывается и компилируется. С надписями все в порядке.
Случайно кодировку не изменили?
Датчик DS18B20 или DS1820 / DS18S20?

Да, речь именно об этом архиве. Он разархивировался на ноутбуке с Win8.1 на флешку, тестово запускался, но поскольку на нем нет COM и LPT, флешка переставлялась на комп древнее с нужными портами, а на том уже вопросики.
Датчики покупались в =Космодроме=  kosmodrom.com.ua/el.php?name=DS18B20,

Можно ли подключить параллельно DS18B20 еще и DHT11 ДатчикВлажности+Температуры? и что  нужно изменить в исходнике. Даташит kosmodrom.com.ua/el.php?name=DHT11

Страница с описанием датчика kosmodrom.com.ua/prodlist.php?page=0&name=ds18b20&okbutton=%CF%EE%E8%F1%EA+%EF%EE+%F1%EA%EB%E0%E4%F3
Написано: =Программируемая пользователем разрешающая способность встроенного АЦП может быть изменена в диапазоне от 9 до 12 разрядов выходного кода. Абсолютная погрешность преобразования меньше 0,5° C=.
А как ее изменить? этупрограммируемую пользователем разрешающую способность?

Отредактировано OllyRom (09.03.2016 07:26:50)

0

23

OllyRom написал(а):

а на том уже вопросики

Т. е. в exe программе?
Из ранее написанного создалось впечатление что вопросики были после компиляции из исходников, т .к. упоминается среда программирования.

OllyRom написал(а):

а со многими вместо русских надписей вопросики =????=. Виндовс ХР SP3  PureBasic5.3


OllyRom написал(а):

Можно ли подключить параллельно DS18B20 еще и DHT11

Нет нельзя. У DHT11 другой протокол, не 1-Wire.

0

24

Пётр написал(а):

Т. е. в exe программе?
Из ранее написанного создалось впечатление что вопросики были после компиляции из исходников, т .к. упоминается среда программирования.

Нет нельзя. У DHT11 другой протокол, не 1-Wire.


Петр спасибо огромное за помощь и внимание. С вопросиками ???? http://s6.uploads.ru/t/42VPd.jpg
разобрался. При установке PureBasic-5.3 устанавливается с кодировкой ANSII а исходники в архивев UTF8. Причем смена кодировки среды прогр-я при открытом исходнике даже при перезапуске компилятора ничего не дает. (Странно работает среда Pure) Нужно полностью закрыть проект и по новой открыть файл с pb-расширением.

Теперь по поводу разрешения датчика DS18B20 при измерении температуры. В даташите на него указано =The core functionality of the DS18B20 is its direct-to-digital temperature sensor. The resolution of the temperature sensor is user-configurable to 9, 10, 11, or 12 bits, corresponding to increments of 0.5°C, 0.25°C, 0.125°C, and 0.0625°C, respectively. The default resolution at power-up is 12-bit. The DS18B20 powers up in a low-power idle state. To initiate a temperature measurement and A-to-D conversion, the master must issue a Convert T [44h] command. = То есть по умолчанию при подаче питания (power-up) он должен ставиться в мах разрешение. Прочитал только что поверхностно (не вдаваясь в точность перевода) даташит термометра, написано что начальное конфигурирование датчика делается при подключении только одного к мастеру. А я их посадил сразу все грядкой 5 штук, приду с работы вечером поюзаю.

DHT11 действительно параллельно втыкать в шину нельзя, у него упрощенный 1-Wire протокол без 64-битной уникальной идентификации + обратного управления, и передача температуры и влажности  с CRC одним пакетом, нужно либо другие однопроводные датчики, либо на контроллере =разобрать= пакет и эмулировать два датчика 1-wire с разными бортовыми номерами. К тому же мне в проект нужно еще и пару датчиков давления 0-15атм.
Так что на форуме похоже надолго

0


Вы здесь » PureBasic - форум » Программирование микроконтроллеров » Термометр на DS18B20 (подключение через COM порт)