Схема подключения датчика к компьютеру
Подключение аналоговых датчиков к Ардуино, считывание показаний датчиков
Для измерения величин, условий окружающей среды, реакции на изменение состояний и положений применяются датчики. На их выходе могут присутствовать как цифровые сигналы, состоящие из единиц и нулей, так и аналоговые, состоящие из бесконечного множества напряжений в определенном промежутке.
О датчиках
Соответственно датчики делят на две группы:
Для считывания цифровых значений могут использоваться как цифровые, так и аналоговые входы микроконтроллера, в нашем случае авр на плате Arduino. Аналоговые же датчики должны подключаться через аналогово-цифровой преобразователь (АЦП). ATMEGA328, именно он установлен в большинстве плат АРДУИНО (подробнее об этом на сайте есть статья), содержит в своей схеме встроенный АЦП. На выбор доступно целых 6 аналоговых входов.
Если вам этого не хватает, вы можете с помощью дополнительного внешнего АЦП подключить к цифровым входам, но это усложнит код и увеличит его объём, из-за добавления алгоритмов обработки и управление АЦП. Тема аналогово-цифровых преобразователей достаточно широка что можно сделать о них отдельную статью или цикл. Проще использовать плату с их большим количеством или мультиплексоры. Давайте рассмотрим, как подключить аналоговые датчики к Arduino.
Общая схема аналоговых датчиков и их подключения
Датчиком может быть даже обычный потенциометр. По сути – это резистивный датчик положения, на таком принципе реализуют контроль уровня жидкостей, угла наклона, открытия чего-либо. Его можно подключить к ардуино двумя способами.
Схема выше позволит считывать значения от 0 до 1023, благодаря тому, что всё напряжение падает на потенциометре. Здесь работает принцип делителя напряжения, в любом положении движка напряжение распределяется по поверхности резистивного слоя линейно или в логарифмическом масштабе (зависит от потенциометра) на вход попадает та часть напряжения, которая осталась между выводом ползунка (скользящего контакта) и землёй (gnd). На макетной плате такое соединение выглядит так:
Второй вариант подключен по схеме классического резистивного делителя, здесь напряжение в точке максимального сопротивления потенциометра зависит от сопротивления верхнего резистора (на рисунке R2).
Вообще резистивный делитель очень важен не только в области работы с микроконтроллерами, но и в электронике в целом. Ниже вы видите общую схему, а также расчётные соотношения для определения значения напряжения на нижнем плече.
Такое подключение характерно не только для потенциометра, а для всех аналоговых датчиков, ведь большинство из них работают по принципу изменения сопротивления (проводимости) под действием внешних источников – температуры, света, излучений разного рода и пр.
Ниже приведена простейшая схема подключения терморезистора, в принципе, на его базе можно сделать термометр. Но точность его показаний будет зависеть от точности таблицы перевода сопротивления в температуру, стабильности источника питания и коэффициентов изменения сопротивлений (в т.ч. резистора верхнего плеча) под действием той же температуры. Это можно минимизировать путем подбора оптимальных сопротивлений, их мощности и рабочих токов.
Таким же образом можно подключить фотодиоды, фототранзисторы как датчик освещенности. Фотоэлектроника нашла применения в датчиках определяющих расстояние и наличие предмета, один из таких мы рассмотрим позже.
Рисунок показывает подключение фоторезистора к ардуино.
Программная часть
Прежде чем рассказать о подключении конкретных датчиков, я решил рассмотреть программные средства для их обработки. Все аналоговые сигналы считываются с таких же портов с помощью команды analogRead(). Стоит отметить, что у Arduino UNO и других моделей на 168 и 328 атмеге 10-разрядный АЦП. Это значит, что микроконтроллер видит входной сигнал в виде числа от 0 до 1023 – итого 1024 значения. Если учесть, что напряжение питания 5 вольт, то чувствительность входа:
5/1024=0.0048 В или 4.8 мВ
То есть при значении 0 на входе, напряжение равно 0, а при значении 10 на входе – 48 мВ.
В отдельных случаях для преобразования значений до нужного уровня (например для передачи в шим выход) 1024 делят на число, а в результате деления должно должен получится необходимый максимум. Более наглядно работает функция map(источник, нч, вч, внч, ввч), где:
нч – нижнее число до преобразования функцией;
внч – нижнее число после обработки функцией (на выходе);
Практическое применение для преобразования функцией входного значения для передачи в ШИМ (максимальное значение 255, для преобразования данных из ацп в выход шим 1024 делят на 4):
Вариант 1 – деление.
x = analogRead(pot) / 4;
// будет получено число от 0 до 1023
// делим его на 4, получится целое число в от 0 до 255 analogWrite(led, x);
Вариант 2 – функция MAP – открывает более широкие возможности, но об этом позже.
val = map(val, 0, 1023, 0, 255);
analogWrite(led, map(val, 0, 1023, 0, 255))
Далеко не у всех датчиков на выходе присутствует 5 Вольт, т.е. число 1024 не всегда удобно делить для получения тех же 256 для ШИМа (или любых других). Это может быть и 2 и 2.5 вольта и другие значения, когда максимумом сигнала будет, например 500.
Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств
Популярные аналоговые датчики
Общий вид датчика для ардуино и его подключение изображено ниже:
Обычно есть три выхода, может присутствовать четвертый – цифровой, но это особенности.
Расшифровка обозначения выводов аналогового датчика:
G – минус питания, общая шина, земля. Может обозначаться как GND, «-»;
V – плюс питания. Может обозначаться как Vcc, Vtg, «+»;
S – выходной сигнал, возможные обозначения – Out, SGN, Vout, sign.
Новички для освоения считывания значения датчиков выбирают проекты всевозможных термометров. Такие датчики бывают в цифровом исполнении, например DS18B20, и в аналоговом – это всевозможные микросхемы типа LM35, TMP35, TMP36 и другие. Вот пример модульного исполнения такого датчика на плате.
Погрешность датчика от 0.5 до 2 градуса. Построен на микросхеме TMP36, как и её многие аналоги его выходные значения равняются 10 мВ/°С. При 0° выходной сигнал – 0 В, а дальше прибавляется по 10 мВ на 1 градус. То есть при 25.5 градусах напряжение – 0.255 В, возможно отклонение в пределах погрешности и собственного нагрева кристалла ИМС (до 0.1°С).
В зависимости от используемой микросхемы диапазоны измерений и выходные напряжения могут отличаться, ознакомьтесь с таблицей.
Однако, для качественного термометра нельзя просто считать значения и вывести их на LCD индикатор или последовательный порт для связи с ПК, для стабильности выходного сигнала всей системы в целом нужно усреднять значения с датчиков, как аналоговых, так и цифровых в определенных пределах, при этом, не ухудшая их быстродействие и точность (всему есть предел). Это связано с наличием шумов, наводок, нестабильных контактов (для резистивных датчиков на основе потенциометра, см. неисправности датчика уровня воды или топлива в баке автомобиля).
Коды для работы с большинством датчиков довольно объёмны, поэтому я их приводить все не буду, их легко найти в сети по запросу «название датчик + Arduino».
Следующий датчик, который часто используют ардуинщики-роботостроители – это датчик линии. Он основан на фотоэлектронных приборах, типа фототранзисторов.
С их помощью робот, который двигается по линии (используется на автоматизированных производствах для доставки деталей) определяет наличие белой или черной полосы. В правой части рисунка видно два прибора похожих на светодиоды. Один из них это и есть светодиод, может излучать в невидимом спектре, а второй – фототранзистор.
Свет отражается от поверхности, если она темная – фототранзистор не получает отраженного потока, а если светлая получает и он открывается. Алгоритмы которые вы заложите в микроконтроллер обрабатывают сигнал и определяют правильность и направление движения и корректируют их. Подобным образом устроена и оптическая мышь, которую вы, скорее всего, держите в своей руке читая эти строки.
Дополню смежным датчиком – датчик расстояния от фирмы Sharp, тоже используется в робототехнике, а также в условиях контроля положения предметов в пространстве (с соответствующей ТХ погрешностью).
Работает на том же принципе. Библиотеки и примеры скетчей и проектов с ними в большом количестве есть на сайтах посвященных Arduino.
Пошаговое обучение программированию и созданию устройств на микроконтроллерах AVR: Программирование микроконтроллеров для начинающих
Заключение
Правда, отдельные аналоговые приборы имеют в своем составе источники опорного напряжения и токовых стабилизаторов, что сказывается положительным образом на конечном продукте и повторяемости устройств при массовом производстве. Всех проблем можно избежать, если использовать цифровые приборы.
Цифровая схемотехника как таковая уменьшает необходимость отстройки и наладки схемы после сборки. Это даёт вам возможность на одном исходном коде собрать несколько одинаковых устройств, детали которых будут выдавать одинаковые сигналы, с резистивными датчиками такое случае редко.
Смотрите также у нас на сайте:
Любите умные гаджеты и DIY? Станьте специалистом в сфере Internet of Things и создайте сеть умных гаджетов!
Записывайтесь в онлайн-университет от GeekBrains:
Изучить C, механизмы отладки и программирования микроконтроллеров;
Получить опыт работы с реальными проектами, в команде и самостоятельно;
Получить удостоверение и сертификат, подтверждающие полученные знания.
Starter box для первых экспериментов в подарок!
После прохождения курса в вашем портфолио будет: метостанция с функцией часов и встроенной игрой, распределенная сеть устройств, устройства регулирования температуры (ПИД-регулятор), устройство контроля влажности воздуха, система умного полива растений, устройство контроля протечки воды.
Вы получите диплом о профессиональной переподготовке и электронный сертификат, которые можно добавить в портфолио и показать работодателю.
Людям нравятся красивые презентации. Красивые картинки, немного текста, меняющиеся слайды. Красивая картинка позволяет быстро передать информацию человеку, сообщить самое важное. Мы все это знаем. Я вот думаю, как «скрестить ежа и ужа»?
Как наглядно на мониторе компьютера представить процессы, происходящие внутри микроконтроллера или ПЛИС? Или как показать, что происходит внутри всей системы автоматики, реализованной на микроконтроллере или ПЛИС?
Вообще-то правильный ответ я знаю – нужно использовать SCADA системы.
SCADA – это supervisory control and data acquisition, диспетчерское управление и сбор данных. Но мы не ищем легких путей, мы хотим немножко изобрести своего велосипеда.
Хочу поделиться своим простым методом отображения данных, получаемых от датчиков и сенсоров из платы управления.
- протокол передачи данных. Нужно как-то кодировать передаваемую от контроллера к компьютеру информацию.
- firmware в системе автоматики, в микроконтроллере или ПЛИС. Этот модуль должен собарать показания датчиков и передавать их на компьютер для отображения в «красивом виде»
- программное обеспечение визуализации. Показывает состояние и значения датчиков. Может строит какие-то графики.
Вот так, по порядку попробую рассказать.
Протокол передачи данных.
В настоящее время физических возможностей подключить какое-то устройство к компьютеру или ноутбуку фактически осталось только две: сетевое подключение через Ethernet/WiFi или USB. Практически ушли в прошлое «настоящие» параллельные и последовательные порты. С ними было просто. Конечно их еще можно найти, если поискать. Но лучше в эту сторону и не думать.
Ethernet пока отставляю в сторону. Для передачи по сети нужно в контроллере иметь драйвера стека TCP/IP, как правило это тянет за собой наличие ОС, обычно Linux или ucLinux. Потом потребуется интерфейс настройки сети: а какой IP адрес? А статический или динамический? А какая маска и gateway? В общем не очень просто в реализации и настройке.
USB кажется гораздо проще, хотя и тут много подводных камней: а какой класс/субкласс устройства? А нужно ли ему драйвера или используются стандартные драйвера той же Windows?
И опять возвращаемся «на круги своя» — проще всего использовать последовательный порт через USB. В простейшем случае есть шнуры типа USB2Serial. Ну или как отличный вариант для разработчика плат и контроллеров – различные микросхемы FTDI.
ОК, все же выбираем последовательный порт через USB. А раз так, то значит пересылка данных может быть в виде последовательности символов. Значит дальше еще проще: показания датчиков можно передавать в виде строк вида «НАЗВАНИЕ_ДАТЧИКА=ЗНАЧЕНИЕ»
При таком подходе мы сможем легко увеличивать количество опрашиваемых сенсоров, и легко менять их тип. Состояние концевика или геркона будет передваться, например, в виде строк «but0=1» или «but1=0». Значение температуры можно передавать в виде строки «t0=36,6». Строки проще всего разделять символами «перевода каретки»: 0x0D 0x0A.
Так, на первых порах даже и программа визуализации на компьютере не нужна. Можно просто запустить программу терминала вроде Putty и смотреть на показания датчиков из контроллера.
Контроллер.
Мой контроллер выполнен на базе ПЛИС Altera Cyclone III. На самом деле это известная разработчикам плата Марсоход2. Я уже писал про некоторые проекты, выполненные на ней. Например, когда-то мы сделали на этой плате на чистой ПЛИС FM радио передатчик. А еще мы сделали на ней USB Tracker. Есть и другие проекты.
Вот такая плата:
На плате уже есть 2 кнопочки – это первые два датчика для моих экспериментов.
Еще я подключил микросхему термометра ds18b20 – это второй датчик.
Можно еще использовать АЦП платы для измерения чего-то-пока-не-знаю-чего. Пока здесь просто переменный резистор вместо датчика.
Важно, что на плате уже стоит микросхема FTDI FT2232HL, которая обеспечивает связь с компьютером через USB в виде виртуального последовательного порта. Скорость передачи аж 12Мбит/сек. Это условно 1,2 Мбайта/сек. Если, например, плата опрашивает датчики каждые 100 миллисекунд, то получается можно за каждый опрос передавать компьютеру более 100Кбайт данных. Вполне прилично.
Сейчас не буду рассказывать о проекте для платы и ПЛИС Cyclone III. Для этого есть отдельная статья. В этой статье подробно рассказано, как опрашиваются данные и передаются результаты в компьютер через последовательный порт. Лучше перейдем к рассмотрению 3-ей компоненты – программы визуализации значений датчиков, которая работает на компьютере.
Программа визуализации данных.
Тут хотелось все сделать быстро и просто. На чем писать программу, чтоб было просто написать, менять, дополнять?
Я выбираю Питон, хотя честно говоря опыта нет. Просто кажется, что это будет хорошо. Как сказал один из хабражителей (извините, не помню кто) – дополнительно хотелось бы «потреннировать своего питона».
Итак, поскольку программа будет графическая, то попробую встроенный в питон Tkinter. Для работы с последовательным портом буду использовать pyserial.
Хочется написать эдакий набор классов — для каждого типа датчиков свой класс.
Самый простой класс – двоичный датчик. Это может быть кнопка, концевик, геркон. Его значения 0 или 1. Соответствующий этому датчику питоновский класс BinSensor отображает всего 2 состояния. Предлагаю каждому состоянию нарисовать свое изображение. Изображение прикрепляется к фиксированным координатам окна программы поверх фонового изображения.
Как только пришло значение «0» показываем первую картинку. Если пришло значение «1», то показываем вторую картинку. Изображения могут быть любыми — все зависит от нашей фантазии.
В функцию __init__, которая вызывается при создании экземпляра класса, передаются параметры:
Name – название датчика
Img0 и img1 – имена файлов картинок, используемых для отображения состояния датчика.
X и y – координаты окна, где будет отображаться датчик.
При создании объекта датчика сразу создается Label с картинкой и размещается в окне Tkinter.
Функция set принимает параметр строку – это новое состояние датчика «0» или «1». В зависимости от нового значения картинка внутри Label переконфигурируется, меняется на другую. В общем это и все.
Аналогичным образом реализуется второй класс vBarSensor.
Этот класс графически представляет датчик типа термометра. Значения из датчика могут меняться в некотором диапазоне. Так же при создании экземпляра этого класса нужно указать имя датчика. Кроме этого у термометра есть возможное минимальное и максимальное значение, и еще указываем координаты столбика в окне визуализации, ширину и высоту столбика.
Столбик термометра как бы состоит из двух частей нижняя красная и верхняя светлая.
Можно было бы создать один Tkinter canvas и на нем нарисовать эти столбики, но почему-то я сделал не так. Сделал два canvas разного цвета и в функции set() меняю им вертикальный размер. В принципе это не важно. Работает. Кстати, если хочется видеть именно изображение термометра в окне визуализации, то его можно нарисовать на фоновом изображении окна, а поверх него разместить экземпляр vBarSensor.
Наверное будет симпатично.
Написал еще один класс GridDisplay для отображения показаний датчика и изменении их во времени. Его исходный код приводить здесь не буду, чтобы не перегружать статью излишними подробностями. Кому будет нужно скачает с сайта весь проект, вместе с исходниками для ПЛИС для Altera Quartus II.
А вот главную программу alls.py пожалуй покажу. Здесь не очень много всего:
Вот видео, которое показывает, как все это работает (только не пугайтесь, я там фен включаю для нагрева датчика температуры, так что звук лучше прикрутить):
Теперь, когда «скелет» приложения работает, то можно приступать к детальному рисованию плана помещения и установленных в нем датчиков.
Вы здесь: Home Железо Уроки и примеры Подключаем датчики DS18B20 к компьютеру
Существует множество способов подключения распрастраненных датчиков температуры DS18B20 к компьютеру,например используя СОМ порт(которого уже в большинстве современных компьютеров нет).Но как подключить с наименьшими усилиями DS18B20 к компьютеру ? Продолжаем эксперементы со сторублевым программатором USBasp ,ранее мы уже научили его работать как i2c-usb переходник.
Для подключения датчиков мы возьмём за основу проект USBTemp ,который изначально заточен под другой микроконтроллер -Atmega168,но,используя несложные манипуляции исходный код проекта адаптируется под м/к atmega8 и схему от USBasp.
Принцип действия данного устройства: м/к каждую минуту запрашивает данные с датчиков(в это время светодиод гаснет) и сохраняет в свою память, а программа на компьютере потом запрашивает их.
Скомпилированную версию USBtemp под USBasp качаем тут.В архиве имеется и программы для чтения показаний датчиков на компьютере,в том числе из ОС Windows.Если Вы хотите модифицировать прошивку ,то исходный код можно найти на официальной странице проекта.
Как перепрограммировать устройство можно почитать на страничке USBasp в разделе "Допиливание" программатора. .Вкраце лишь укажу строку для программирования через arduino :
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -U flash:w:usbtemp.hex
avrdude -C avrdude.conf -c usbavr -P -p m8 -U flash:w:usbtemp.hex
Фьюзы остаются такие же как были на USBasp:
-U lfuse:w:0xef:m -U hfuse:w:0xc9:m
Не забываем ,что для перепрограммирования USBasp необходимо установить джампер JP2.
Подключаем датчики к переходнику:
На плате бывшего программатора не хватает подтягивающего резистора на 4.7кОм (резистор подбирается в зависимости от количества датчиков и расстояния до них) ,который должен быть подключен к плюсу (Вывод VTG ). Датчики подключаем паралельно согласно даташиту: 1 и 3 вывод замыкаем на минус,2 - к выводу USB переходника DS.По умолчанию максимальное количество датчиков ровно 5.
На фото собрана тестовая схема ,где подключено 3 датчика.Можно так же разглядеть резистор на 4.7кОм,который подключен на плюс.
Работа с утилитой в Linux и Windows:
Для работы в Linux драйвера не требуются.В Windows необходимо установить стандартные дрова.
usbtemp sensors - выдаст адреса подключенных датчиков.Новые датчики появляются только после перезапуска устройства.
usbtemp temp -чтение текущего датчика.
Бонус команды,управляющие незадействованным светодиодом на плате:
usbtemp ledon - включить светодиод.
usbtemp ledoff - выключить светодиод.
При соотвествующей доработке прошивки можно управлять и свободными выводами (PIO).
Слева скриншот команд,где можно увидеть температуру подключенных датчиков.
Материалы и ссылки:
Прошивка и программа USBtemp2.0.zip.
Страничка проекта USBTemp.
Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.
Существует множество способов подключения распрастраненных датчиков температуры DS18B20 к компьютеру,например используя СОМ порт(которого уже в большинстве современных компьютеров нет).Но как подключить с наименьшими усилиями DS18B20 к компьютеру ? Продолжаем эксперементы со сторублевым программатором USBasp ,ранее мы уже научили его работать как i2c-usb переходник.
Для подключения датчиков мы возьмём за основу проект USBTemp ,который изначально заточен под другой микроконтроллер -Atmega168,но,используя несложные манипуляции исходный код проекта адаптируется под м/к atmega8 и схему от USBasp.
Принцип действия данного устройства: м/к каждую минуту запрашивает данные с датчиков(в это время светодиод гаснет) и сохраняет в свою память, а программа на компьютере потом запрашивает их.
Скомпилированную версию USBtemp под USBasp качаем тут.В архиве имеется и программы для чтения показаний датчиков на компьютере,в том числе из ОС Windows.Если Вы хотите модифицировать прошивку ,то исходный код можно найти на официальной странице проекта.
Как перепрограммировать устройство можно почитать на страничке USBasp в разделе "Допиливание" программатора. .Вкраце лишь укажу строку для программирования через arduino :
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -U flash:w:usbtemp.hex
avrdude -C avrdude.conf -c usbavr -P -p m8 -U flash:w:usbtemp.hex
Фьюзы остаются такие же как были на USBasp:
-U lfuse:w:0xef:m -U hfuse:w:0xc9:m
Не забываем ,что для перепрограммирования USBasp необходимо установить джампер JP2.
Подключаем датчики к переходнику:
На плате бывшего программатора не хватает подтягивающего резистора на 4.7кОм (резистор подбирается в зависимости от количества датчиков и расстояния до них) ,который должен быть подключен к плюсу (Вывод VTG ). Датчики подключаем паралельно согласно даташиту: 1 и 3 вывод замыкаем на минус,2 - к выводу USB переходника DS.По умолчанию максимальное количество датчиков ровно 5.
На фото собрана тестовая схема ,где подключено 3 датчика.Можно так же разглядеть резистор на 4.7кОм,который подключен на плюс.
Работа с утилитой в Linux и Windows:
Для работы в Linux драйвера не требуются.В Windows необходимо установить стандартные дрова.
usbtemp sensors - выдаст адреса подключенных датчиков.Новые датчики появляются только после перезапуска устройства.
usbtemp temp -чтение текущего датчика.
Бонус команды,управляющие незадействованным светодиодом на плате:
usbtemp ledon - включить светодиод.
usbtemp ledoff - выключить светодиод.
При соотвествующей доработке прошивки можно управлять и свободными выводами (PIO).
Слева скриншот команд,где можно увидеть температуру подключенных датчиков.
Материалы и ссылки:
Прошивка и программа USBtemp2.0.zip.
Страничка проекта USBTemp.
Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.
Помню понадобилось мне подключить пару датчиков температуры от Dallas DS18B20 в ПК и мониторить показания с записью их в лог-файл. Собирать отдельно устройство для этого дела мне не хотелось, а помниться, что я краям ухом слышал, что есть возможность их подключения к RS232, в простонародье Com-порт. Но так как у меня нет этого порта, на самом деле он распаян на печатной плате доски, но переходника у меня не было, но было куча разных преобразователей с USB в RS232 . Начал искать по просторам сети, кто как реализовывал данную идею, чтобы знать какие камни меня из-за угла подстригают. Нашел в сети пару схем и начал их паять, деталей там было, "кот на плакал", но почему-то не одна из схем не заработала у меня Начал спрашивать на данном форуме, мне сказали, что это не возможно, но сдаваться было глупо, ведь у кого-то заработало.
Начал дальше искать и наткнулся на один замечательный форум про спиртные напитки, кому как не им знать про температуру. Там было довольно простое решение, я с начало засомневался на счет его работоспособности, но решил повторить, ведь даже ничего паять не пришлось и куча положительных отзывов. Взял из кучи первый попавшийся преобразователь на CP2102 и подключил датчики к нему, и о чудо все сразу заработало. Сразу подключил 3 датчика, так как мне нужно было именно такое количество, все замечательно заработало. Тестирования я проводил на Win 7 x64 и XP в программе Термомониторинг Но пользоваться советую программой Temp. Keeper правда она платная, но цена ее очень маленькая. Но если Вам по какой-то причине нет возможно приобрести ее на просторах сети имеется ключик для нее.
К чему все это было, дело в том, что мой знакомый заметив такую игрушку попросил и ему сварганить подобное устройство, но на 5 датчиков. Для мониторинга температуры в помещении, систему отопления. Чтобы узнать в какой из комнат большие теплопотери и последить за работой газового котла. Я с начало отказывался и искал любой выход из капкана, но когда он принес бутылек темного и посидев пару часиков, мое желание помочь поднялось. На следующий день я начал искать преобразователи и варганить датчики.
Какое было ТЗ: преобразователь втыкается в USB ПК, преобразователь на СР2102, по шнуру длиной 2 метра идет в распределительную коробку и оттуда каждый датчик по 1,5 метра, 5 штук, расходиться.
Спаял датчики и все поместив в термоусадку подключил все к распределительной коробке. В коробке у меня было два конденсатора на 1000 мкф/10В и 0,1, так-же и резистор на 4к7. Втыкаю я в ПК все это, но устройство не работает, я давай все проверять, все правильно косяков нет, но почему не работает. Начал отключать датчики по очереди, результата не дало, откинул резистор и подключил датчик, все сразу начало работать. Начал потихоньку накидывать датчики, когда дошел до пятого все опять перестало работать. Начал разбираться в чем причина, а оказалось, что провод на котором был пятый датчик имеет экран, все остальные четыре были без экрана и не переплитались между собой, прямая укладка была. Возможно это повлияло, что я Rx и Tx соединил в распределительной, а не на плате преобразователя, выяснять было лень поэтому был просто заменен провод. Витая пара тоже не подошла, из-за того что проводники свиты между собой, а нужно чтобы провода шли параллельно друг другу.
Хотя взял витую пару, 20 метров, и подав по ней только питания датчика, а сигнал по отдельному проводом, не из витой пары, все замечательно заработало. Видимо наводка питание глушило сигнал.
При использовании на большое расстояние может понадобиться внешний БП на 5В, если он вблизи от датчиков, либо на 12/24В если далеко, но в распредилительной коробке должен стоять стабилизатор на +5В.
Читайте также: