PureBasic - форум

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

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


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


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

Сообщений 61 страница 74 из 74

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

61

Александр написал(а):

команду WRITE SCRATCHPAD [4Eh]- нет

Запись в датчик нужна при необходимости изменить данные в EEPROM что в этой программе не требуется.

0

62

Пётр, добрый день! не могли бы подсказать как аналогичное сделать на C#, может исходным кодом поделиться, правда я с++ не очень знаю.либо инфу какую по этому вопросу, буду очень благодарен!

Отредактировано WestVolk (12.09.2018 10:57:17)

0

63

Исходники находятся в архиве с программой в папке Source или Src. Они на бейсике - PureBasic, а не на C++.

0

64

так это отлично,с бейсиком мы дружим)

0

65

Чтобы не тратить много времени на переписывание 1-Wire библиотеки на C#, можете воспользоваться ее скомпилированной версией в виде DLL.

0

66

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

0

67

Об этом написано в документации. https://datasheets.maximintegrated.com/ … S18B20.pdf
На русском. http://pure-basic.narod.ru/forum_files/ … 20_Rus.pdf

0

68

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

Об этом написано в документации. https://datasheets.maximintegrated.com/ … S18B20.pdf
На русском. http://pure-basic.narod.ru/forum_files/ … 20_Rus.pdf

Спасибо, огромное!!!то что надо!!!

0

69

http://sg.uploads.ru/t/ajPne.png
Петр здравствуйте!
У меня возникла проблема с датчиками. При подключении выдает "Ошибка СRC", но если отключить другие датчики то датчик с ошибкой начинает нормально работать.
Приходится использовать несколько контроллеров USB. Напишите пожалуйста как-то это лечится или нет? У меня несколько датчиков  с такой проблемой.

Отредактировано Aleksey (08.10.2018 09:08:29)

0

70

Ошибка постоянная или появляется периодически?
Какая длина провода между адаптером и датчиками? При большой длине нужно использовать экранированный кабель, или витую пару и возможно другой адаптер (если замена кабеля не поможет). Дело в том что с увеличением длины провода, увеличивается его емкость и снижается помехоустойчивость. Это приводит к искажению сигнала.

0

71

Установил два адаптера. На одном видится несколько датчиков при подключении еще одного остальные датчики отваливаются. Длина провода у всех разная от 1м до 40м. В принципе напягает только использование двух адаптеров. Я подозреваю что датчики между собой как то конфликтуют.
Интересно только у меня такое, или у кого-то тоже такое встречается?http://s8.uploads.ru/t/6NqrG.png

Отредактировано Aleksey (08.10.2018 15:51:43)

0

72

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

Я подозреваю что датчики между собой как то конфликтуют.

Если датчики подсоединить к короткому проводу не больше метра, они будут нормально работать?
Скорее всего дело не в датчиках, а в длине линии.
В сети про это не раз писали. http://arduino.ru/forum/apparatnye-vopr … nom-kabele
https://toster.ru/q/151923

0

73

Попробую в выходные и отпишусь.

0

74

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

0


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