Новостной и аналитический портал "время электроники". MP707 - Цифровой USB-термометр Подготовка к эксплуатации

Конкурс начинающих радиолюбителей
“Моя радиолюбительская конструкция”

Схема и программное обеспечение простого USB термометра на микроконтроллере ATmega8, который может собрать своими руками и начинающий радиолюбитель

Конкурсная конструкция начинающего радиолюбителя:
“USB термометр на микроконтроллере ATmega8″

Здравствуйте уважаемые друзья и гости сайта!
Представляю на ваш суд вторую конкурсную работу.
Автор конструкции – Григорьев Илья Сергеевич .

USB термометр на микроконтроллере ATmega8

Всем добрый день! Захотелось мне собрать термометр для того, чтобы знать температуру или дома или за окном. Сторона у меня солнечная и обычный термометр очень врет, нагреваясь.
Стал рыть интернет. Как всегда много ненужного, слишком сложного, затратного.
Наконец, я нашел схему по душе, по которой и стал делать ЮСБ термометр.

Итак, вот схема:

Для сборки нам понадобятся:
♦ МС Атмега 8 и кроватка для нее на 28 ног
♦ Датчик температуры DS18B20
♦ Резисторы(у меня 0.5Вт):
- 10к
- 4,7к
- 68ом *2шт
- 1,5к
- 200ом
♦ Кондеры
- 22пФ *2шт
- 100мкФ на 16В электролит
♦ 2 стабилитрона на 3.6В
♦ Кварцевый резонатор 12MHz
♦ Светодиод
♦ Кусок одностороннего текстолита 5*5см

Начинаем все с разметки на текстолите, потом вырезаем
Кстати, раньше я долго мучился вырезанием нужных кусков канцелярским ножиком, было это долго, муторно… недавно я заказал на ebay отрезные алмазные круги для дремеля. За секунду…вввжик и отрезано!


10штук вот таких кругов 100 рублей (для поиска- 10X 20mm Emery Diamond Coated Double Side Cutting Discs with 2 Joint Lever).

Затем, печатаем на журнале схему, потом утюгом нагреваем, далее отмачиваем:


Потом травим, оттираем тонер, сверлим:


И потом начинаем собирать:


Atmega 8-16PU в кроватке:


Отмываем плату от флюса, т.к. я использовал активный да и очень вид портит:


Далее я взялся за датчик. Я решил сделать 2 датчика. Первый будет короткий и находиться в комнате. Второй я сделаю длинным и выставлю его на улицу.


Вставляем датчик в разъем, согласно распиновке.

Теперь нам надо прошить Атмегу. Берем ранее изготовленный мной и заливаем прошивку.
В SinaProg нам надо выставить фьюзы:


ОБЯЗАТЕЛЬНО! Перед подключением проверяем плату на наличие КЗ!!!

Вставляем плату в юсб и у нас сразу же появляется неизвестное устройство:



Заходим в диспетчер устройств, находим неизвестное устройство и обновляем дрова.
Во время установки появится окно, где выбираем – “Все равно установить этот драйвер”
После этого в диспетчере устройств появится новое устройство:


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

Если начнет появляться многократно ошибка unable to write to C:/temp/USBThermometer_config.ini то заходим на диск С, включаем видимыми все папки и если есть папка temp, то создаем там блокнот, называем его USBThermometer_config и меняем ему расширение на.ini . Если нет папки, то создаем сначала ее. После этого у меня ошибка исчезала. Если папку создавали, то чтобы она не мешала можно скрыть ее.

Программа простая, понятная.
Основное окно:


Мини-окно, можно использовать как гаджет:


Вот и все. У меня на все было потрачено совсем немного денег и времени! Датчик в районе 90р и почти вся мелочь у меня уже была. Теперь у меня есть домашний, электронный термометр с возможностью измерения температуры дома и на улице.

MP707
Цифровой USB-термометр
1410 руб.

Блок позволит радиолюбителю получить многоканальный цифровой термометр, подключаемый к ПК через USB порт. По сути, он является переходником USB 1wire с дополнительными функциями. К МР707 подключаются 2 внешних исполнительных устройства (например, два BM146) и коммутируются 2 нагрузки в зависимости от изменения значения температуры от 2 (двух) любых из 32 термодатчиков (осуществляется термостатирование), которые подключаются в линию параллельно. Расстояние до последнего термодатчика составляет 100 метров.
В автономном режиме работы MP707 не требует подключения к ПК и может получать питание от любого сетевого адаптера +5В с разъёмом USB.
Напряжение питания +3,6…5В (например, от стандартного литиевого элемента питания) также может быть подано через разъем J2 к точке Vdd.

Я перечитал всю информацию, видел файлы BM1707.cmd и example.ftp. Но что подставлять в [имя ftp сервера] или [полный путь и имя файла на сервере] я не знаю. Перепробовал разное - не хочет. Покажите - что Вы поставили в эти строчки?
BM1707.cmd :
ftp -n D:\Temp\example.ftp
example.ftp :
open ftp.narod.ru
user usbsergdev _пароль_
put D:\Temp\BM1707.html /BM1707/BM1707-html.html
close
- Имя пользователя usbsergdev заменить на своё,
- пароль тоже свой.
- Естественно, html-файл должен лежать там, где указано,
- директория BM1707 тоже должна существовать на сервере.
- А ещё почитайте о доступе по ftp на сайте www.narod.ru, они там что-то меняли для новых пользователей...

- Как настроить работу термостата от другого внешнего термодатчика?
Назначьте активный термодатчик для работы термостата, для чего, пожалуйста, выполните следующие действия:
- Выберите вид программы "Таблица".
- Левой кнопкой мыши выберите нужный термодатчик.
- Правой кнопкой мыши выберите "Текущий датчик термостат".

Подключил внешние датчики DS1820 и DS1822, но не могу выставить точность измерения температуры. После выполнения процедуры изменения точности, появляется надпись "точность измерения температуры установлена для всех подключенных датчиков". Что можно сделать?
- Такое возможно по причите отсутствия такой настройки в некоторых термодатчиках. Пожалуйста, проверьте работу устройства с термодатчиками DS18B20.

Хотелось бы, чтобы в будущих версиях была возможность выбора управляющего датчика для каждого выхода термостата.
- Вы можете увеличить количество каналов управления используя MP710 совместно с MP701.

В автономном режиме МР707 термостат не работает - горит сигнал ВКЛ. (нагреватель), хотя верхний порог установлен +30°С а датчик нагрет до +34°С. При подключении к ПК все нормально. Что я делаю не так?
- Если Вы подключили дополнительные термодатчики - их нужно прописать в устройство. Для этого, пожалуйста, войдите: Управление --- Термостат --- Установить.

Подключил к устройству термодатчик на расстоянии 5 метров - работает нормально. Затем подключил его на расстоянии 40 метров - устройство его не видит! Но ведь заявлено расстояние до последнего термодатчика 100 метров по витой паре 5 категории. Но у меня растояние 40 метров! При этом хоть ВИТАЯ, хоть НЕ ВИТАЯ ПАРА, но устройство не видит термодатчик! Что можно сделать?

При подключении термодатчиков на значительном расстоянии (более 20 метров) от базового блока важно, чтобы соединительные провода имели наименьшее сопротивление, т.е. были медными и не слишком тонкими , например, МКЭШ-3х0.5 http://www.cable-msk.ru/catalog/mkesh/. Следовательно, витая пара 5 категории кабеля для прокладки компьютерных сетей - не самый лучший вариант.

Цифровые датчики температуры DS18B20 имеют возможность подключения их в шину (параллельно друг другу). Каждый датчик имеет уникальный серийный номер, присвоенный ему на заводе при изготовлении. Это позволяет адресно обращаться к каждому датчику независимо от его физического расположения на шине. Совместно с устройством можно использовать как DS18B20 так и DS18S20, DS1822, DS1820 (при уменьшении точности до +-2 градусов). Термодатчики «привязываются» к определенным нагрузкам программно. Расстояние до последнего термодатчика на линии составляет до 100 м. Если длина линии составляет более 10 метров, следует использовать подключение термодатчиков по ТРЕХПРОВОДНОЙ схеме (используя три провода). Рекомендуемый кабель – витая пара 5-й категории CAT5 (полоса частот 100 МГц) - четырехпарный кабель для прокладки локальных сетей и телефонных линий (поддерживает скорость передачи данных до 100 Мбит/с) - восемь линий, которые скручены попарно (витая пара) - четыре витых пары. Для каждого сигнала используйте отдельную витую пару, оба провода которой замкните между собой. Итого: из четырех витых пар: одна пара соединяется с VCC (питание), одна пара - с DQ (данные), одна пара - с GND (общий). Всего используется 3 витых пары из четырех.

Требования к подключению цифровых термодатчиков:
- Линия должна иметь одно начало и один конец. При этом отсутствуют несколько "концов" (НЕ ЗВЕЗДА!).
- В начале линии установлен контроллер.
- На конце линии установлен последний термодатчик, расстояние до которого составляет до 100 метров;
- Между ними - промежуточные термодатчики.

- Спасибо за советы! Всё действительно заработало на кабеле 110 метров (больше не было)!
1) Заменил R5 на R5=5 кОм подстроечный (сопротивление при котором заработало 1кОм).
2) Установил в конце линии Сдоп.=1 мкФ керамический + Cдоп.=47 мкФ электролитический.
3) Установил в начале линии С=47 мкФ со стороны контроллера. Без него не заработало.
4) Диод не коротил.

Чем обусловлено наличие двух последовательных диодов в схеме МР707 принципиальной вверху? Можно ли их оба закоротить для поднятия напряжения на линии термодатчиков до номинальных 5-ти Вольт?
- Шина USB имеет питание +5В, а логические уровни для D+/D- составляют 0...3.3В. Диоды формируют падение напряжения 1.4...1.6В, что обеспечивает согласование логических уровней. Их шунтирование может привести к тому, что драйвер USB воспримет это как КЗ на линии данных и перестанет работать с устройством.

- У меня "глюкнула" программа ВМ1707.ехе. Что можно сделать?
- В таком случае:
- Удалите ini-файл.
- Запустите ВМ1707.ехе заново.

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

- Можно ли подключить несколько MP707 к одному ПК и как правильно настроить их совместную работу?
- Да, подключить несколько MP707 к одному ПК можно. Для этого:
- Создайте отдельную папку на ПК.
- Скачайте в неё (или скопируйте) BM1707.exe не младше 11 версии.
- Запустите BM1707.exe и прочитайте ID устройства, для чего войдите в Вид --- Управление, Информация --- Идентификатор USB).
- Закройте BM1707.exe.
- Откройте BM1707.ini.
- Найдите в нём ID=*.
- Замените * на номер устройства (8символов!).
- Сохраните файл.
- Закройте BM1707.ini.
- Запустите BM1707.exe.
Ini-файл можно использовать (скопировать) старый. При этом следует добавить в секцию запись ID=XXXXXXXX.
Для запуска 2-ой копии следует повторить шаги выше.

При перезагрузке компьютера программа для МР707 запускается, но перестает опрознавать датчики (13 датчиков). Требуется извлечь и снова вставить сам термометр из USB, после чего он опознается и начинает работать. Поскольку компьютер удален, его перезагрузка после отключения питания сети приводит к прерыванию измерения температуры, что нежелательно. Как можно решить проблему?
- Установите в ини-файле:
AUTOTUNE=1
- Запустите программу.
- Закройте её.
- Установите:
AUTOTUNE=0
- Перезагрузите ПК в штатном режиме.

В режиме "график" шкала температур не масштабируется под весь диапазон измеряемых значений. Можно наблюдать только интервал шириной 40-45 градусов и приходится перемещать графики вверх-вниз, чтобы поочередно видеть их части. Как с этим бороться?
- В ини-файле установите:
LeftAxis_Automatic=1

- Можно ли к МР707 подключить датчики атмосферного давления?
- MP707 имеет 1 цифровой вход 1-wire (аналоговые входы отсутствуют), поэтому к нему нельзя подключить датчики атмосферного давления.

- Как реализован алгоритм измерения температуры каждым из термодатчиков в МР707?
- Команда СТАРТ измерения температуры передается для всех датчиков одновременно. Затем показания температуры считываются последовательно для всех датчиков.

Известно, что в МР707 канал 1 управляет НАГРЕВАТЕЛЕМ (Тниж. = ВКЛ, Тверх = ОТКЛ) а канал 2 - ОХЛАДИТЕЛЕМ (Тниж = ОТКЛ, Тверх = ВКЛ). Можно ли установить канал 1 для управления охладителем?
- К сожалению, установить в МР707 режим работы канала 1 для управления охладителем отсутствует.

- МР707 ведет лог файл или он предназначен только для наблюдения?
- Да, МР707 пишет показания в 2 (два) лог файла:
1. С температурами и временем (См описание!!!)
2. С выполненными операциями (выкл по умолчанию)

- Допустимо ли использование на одном шлейфе разных датчиков – на плате стоит 18В20, а на шлейфе - 18S20?
- Да, МР707 одновременно работает с разными термодатчиками в линии: как 18В20 так и 18S20.

Подключил к МР707 три термодатчика. На экране ПК линии всех датчиков отображаются одним (синим) цветом. Можно ли изменить цвет каждой линии для лучшего восприятия?
- Да, за цвет отвечает запись в ини файле типа:
DD000001A4BB4728_COLOR=16711680
Цвета задаются 3-мя байтами, 16711680 (дес) = 0xFF0000 (hex) - это чисто синий.
Можно задавать так:
DD000001A4BB4728_COLOR=0xFF0000 Это будет чисто синий.
или
DD000001A4BB4728_COLOR=0x00FF00
или
DD000001A4BB4728_COLOR=0x0000FF
или их сочетания.

Подключил доп. датчик DS18B20 к МР707. Длина проводов - 50 см. Датчик программой ВМ1707 определяется, в логи ошибок не выдает, но температуру показывает 127,5 градусов. При изменении точности температуры датчиков, меняются десятые доли подключенного датчика, т.е. 127,5; 127,75; 127,875; 127,9735 При этом штатный датчик - на плате, показывает реальную температуру. Что можно сделать?
- Во время преобразования DS18B20 увеличивает потребление и ему банально не хватает напряжения питания. Напряжение за счет R5 падает, и преобразования не получается. Для нормальной работы термодатчика, пожалуйста, устновите на плате параллельно R5 резистор номиналом R=2,4 кОм.

Многоканальный цифровой термометр подключается к персональному компьютеру через USB-порт. Он имеет исполнительное устройство (реле) и позволяет включать-выключать нагрузки при изменении температуры (осуществлять термостатирование). Устройство будет полезно для применения в быту, дома, на даче, в бане. С его помощью можно производить измерения температуры окружающей среды, контролировать рабочую температуру морозильников и холодильных установок, управлять различными нагрузками в автономном режиме, протоколировать измеренную температуру, формировать файл с текущими показаниями в HTML-формате (то есть контролировать текущую температуру и состояние нагрузок через Интернет), управлять нагрузкой с помощью командного файла.

Технические характеристики :
Напряжение питания, В 3,6…5
Ток потребления не более*, мА 50
Диапазон измеряемых температур, 0С -55…+125
Штатный температурный датчик DS18B20
Допустимое количество датчиков**
(при желании докупаются отдельно)
До 32 датчиков типа DS18B20, DS18S20, DS1820 или DS1822
Количество каналов управления нагрузкой 2
Ток коммутации канала***, Ампер 5
Точность, 0С ±0,5
Размеры печатной платы, мм 55x55

Комплект поставки
Блок цифрового термометра в сборе c установленным датчиком температуры DS18B20 – 1 шт. 1
Корпус 1
Инструкция пользователя 1

Описание работы устройства и его подключение
Центральная часть устройства – микроконтроллер ATtiny45, работающий на частоте 16.5 МГц. Дополнительные датчики при необходимости подключаются параллельно DA1. Напряжение питания подаётся через USB-порт J1.
Устройство может работать как в автономном режиме (контроль текущей температуры и управление приборами), так и под управление специализированной программы для персонального компьютера.
Температурный сенсор DA1 размещен на плате устройства. Электронные компоненты вблизи датчика могут слегка нагреваться при работе, также на точность измерения влияет защитная термоусадочная оболочка, поэтому возможны небольшие погрешности измерения температуры. Более точное измерение могут обеспечить внешние датчики температуры, при желании приобретаемые и подключаемые дополнительно. Рекомендуемая длина соединительной линии – не более 20 метров. При близкой к предельной длине линии следует использовать качественный провод: витую пару 5 категории. При наличии электромагнитных помех желательно использовать экранированный провод.
В автономном режиме работы устройство не требует подключения к компьютеру и может получать питание от любого сетевого адаптера 5 В с разъёмом USB.

Программное обеспечение
Скачать программное обеспечение.
Внимание! Некоторые антивирусные программы ошибочно принимают ПО за вредоносное (подозрение на вирусы). В действительности же данное ПО вредоносного кода не содержит.

USB термометр своими руками

Давно у меня родилась идея сделать USB термометр, однако нужды не было, и идея покоилась. Както у друга в гостях заметил пару USB флешек. Одна была дохлая и досталась мне нахаляву. С недавнего времени постоянно за ними охочусь, т.к. в большинстве случаев сгорает контроллер, а NAND flash живая + SMD кварц. А такое на дороге не валяется.
Так вот, с этой флешки я поимел: SMD кварц на 12 МГц, USB штекер на плату и маленький корпус, а также развитие идеи USB термометра.

В течении недели были разработаны:
1. Схема устройства;
2. Разводка печатной платы под имеющийся корпус;
3. Программа для МК ATtiny45;
4. Программа-хост (даллее просто хост) для приема данных от МК.

Программа для МК разработана в среде AVR Studio с использованием GCC на основе библиотеки avrusb и исходников некоего Martin’a Thomas’a для DS18B20 (времени не было самому писать). Спопсоб взаимодействия хоста с устройством реализован в виде отправки устройству условного кода (в соответствии с которым устройство будет выполнять требуемые операции), а также запроса пакета данных со значением текущей температуры. Так как размер отправляемых и принимаемых данных мал, то был выбран future репорт (тип пакета данных) ввиду простоты работы с ним.
Если вы захотите исправить программу для МК, пожалуйста, перед этим внимательно прочтите документ USBID-License.txt, находящийся в папке usbdrv.
Там содержится ряд правил и ограничений по использованию библиотеки avrusb.
Программа-хост написана в Borland Delphi 7 с использованием библиотеки компонентов JEDI-VCL, в состав которой входит компонент TJvHidDeviceController, реализующий просой доступ к HID совместимым USB устройствам. Чтобы сделать использование устройства максимально удобным было решено реализовать хост в виде значка со значением температуры в ситемном трее (возле часов) без какого-либо графического интерфейса, за исключением контекстрого меню по нажатию правой кнопки мыши по значку в трее.
У меня WinXP SP3, на других ОС программу не пробывал.

В общем, хост работет по следующему алгоритму:
1. По таймеру (раз в 2 секунды) запускаем поиск нашего девайса. Критерии поиска — текстовые имена производителя (vendor) и устройства (product);
2. Принимаем информацию от устройства с многочисленными проверками на ошибки. Если таковые возникают — ставим значек «NA» — no access;
3. Отдаем команду чтения температуры из датчика. Ждем;
4. Отдаем команду начала измерения температуры;
5. Возврат к пункту 1 через 2 сек.

У которого пределы измерения температуры от -55 до +125 градусов Цельсия. Вобщем вот список всего, что нужно для термометра:

  1. Микроконтроллер ATmega8 (очень желательно без индекса “L” в конце).
  2. Температурный датчики DS18B20, нужен без индекса PAR в конце, иначе макс. температура будет +85 град.
  3. Кварц 12 МГц.
  4. 2 конденсатора 22 пФ и один конденсатор по питанию (10V и не менее 100 мкФ, потому что у USB на линии питания просто ужасные перепады напряжения).
  5. 2 резистора 68 Ом, 1 резистор 200 Ом, 1 резистор около 2,2 – 4,7 кОм, 1 резистор 10кОм и 1 резистор 1,5кОм.
  6. 2 стабилитрона 3.6V.
  7. Штекер или разъем USB.
  8. Светодиод.
  9. Ну и печатка или макетка, на которой это всё будет собрано.

Схема устройства:

Схема очень простая. Слева расположены все 4 контакты USB. Конденсатор С3 – это тот самый кондер по питанию. Стабилитроны VD1 и VD2 снижают напряжение на линии передачи данных до 3,3В. Датчик DS18B20 Можно не ставить на плату, а вывести на нужное место, вообще длина провода может быть до 100 метров, но я не советую больше 50м. Светодиод меняет свой состояние(зажигается/тухнет) при каждом запуске измерения температуры. Если он с хаотической скоростью мигает, тогда с термодатчик работает нормально, если постоянно светиться или не светиться – с датчиком проблемы (неправильно подключен, нерабочий, или очень длинный провод, возле которого сильные электромагнитные помехи). Справа расположен разъем для внутрисхемного программирования микроконтроллера. Прошивка для него - USBThermometer\MCU\USB_thermometer\default\main.hex . После заливки прошивки Вам нужно правильно выставить фьюзы, иначе устройство не будет работать, в STK500 из AVR Studio это выглядит так:

Если вы правильно собрали устройство и правильно прошили МК, то при подключению к компу через USB Windows найдет новое устройство и спросит где драйвер. Он расположен в папке USBThermometer\windows-driver\ , куда Вам и надо указать путь. Когда установиться драйвер перезагрузите ПК. Потом запустите программу USBThermometer.exe . Если устройство не подключено то вместо температуры будет написано «Не подкл.» и при перетаскивании окно будет немножко «подвисать» каждую секунду потому что программа будет каждую секунду обновлять данные об подключенных устройствах пока не найдет этот термометр. Если Вы подключите устройство, то в трее выскочит сообщение «Термометр подключен», окно подвисать уже не будет, и Вы увидите такое:

Ещё, что очень удобно, есть функция «Мини-окно» и «Поверх всех окон». Я обычно устанавливаю все 2 галочки и получаться вот что:

Вся серая область это и есть окно программы в «мини-виде» (бело-синий фон с бульбашками – то рабочий стол). Нравиться:) ?. Это удобно потому, что окно маленькое (96х198), постоянно поверх всех окон и не мешается при использовании других приложений. К тому же программа не отображается на панели задач, а только в трее и, наведя курсор на иконку программы, можно увидеть температуру в Цельсиях:

Этот термометр я проверял на нескольких стационарных ПК, ноутбуках и нетбуках под операционными системами Windows Home Edition, Windows Professional и Windows Vista. Всё работало отлично! Только вот на висте, при температуре на термодатчика ниже -9 и выше 99 град. не было видно буквы «С» (там где температура в Цельсиях), потому что я выбрал шрифт для отображения температуры «Comic Sans MS», но я не думаю что для кого то это проблема.

Программа, прошивка, исходники, драйвер, печатная плата прилагаются

P.S. Если у Вас нет программатора и Вам нужен уже прошитый микроконтроллер или Вы хотите купить уже готовый термометр, то обращайтесь ко мне на e-mail: devices2000 {сцобака} ya.ru
Так же я принимаю заказы на разработку и изготовление устройств на микроконтроллерах, за этим обращаться на тот же имейл.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
МК AVR 8-бит

ATmega8

1 В блокнот
Датчик температуры

DS18B20

1 В блокнот
VD1, VD2 Стабилитрон

1N4729A

2 3.6В В блокнот
С1, С2 Конденсатор 22 пФ 2 В блокнот
С3 Электролитический конденсатор 100 мкФ 1 В блокнот
R1 Резистор

10 кОм

1 В блокнот
R2 Резистор 2.2-4.7 кОм 1 В блокнот
R3, R4 Резистор

68 Ом

2 В блокнот
R5 Резистор

1.5 кОм

1 В блокнот
R6 Резистор

200 Ом

1 В блокнот
LED1 Светодиод 1 В блокнот
Z1 Кварц 12 МГц 1
Понравилось? Лайкни нас на Facebook