Измеритель температуры цифровой через компьютер. Цифровой usb термометр мастер кит mp707r - (термостат). Сергей Чемезов: Ростех уже входит в десятку крупнейших машиностроительных корпораций мира
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 сек.
В качестве микроконтроллера, был выбран ATmega8 . Цифровой термодатчик: DS18B20, у которого пределы измерения температуры от -55 до +125 градусов Цельсия. Вобщем вот список всего, что нужно для термометра:
- Микроконтроллер ATmega8 (очень желательно без индекса L в конце).
- Температурный датчики DS18B20, нужен без индекса PAR в конце, иначе макс. температура будет +85 град.
- Кварц 12 МГц.
- 2 конденсатора 22 пФ и один конденсатор по питанию (10V и не менее 100 мкФ, потому что у USB на линии питания просто ужасные перепады напряжения).
- 2 резистора 68 Ом, 1 резистор 200 Ом, 1 резистор около 2,2 4,7 кОм, 1 резистор 10кОм и 1 резистор 1,5кОм.
- 2 стабилитрона 3.6V.
- Штекер или разъем USB.
- Светодиод.
- Ну и печатка или макетка, на которой это всё будет собрано.
Схема устройства:
Схема очень простая. Слева расположены все 4 контакты USB. Конденсатор С3 это тот самый кондер по питанию. Стабилитроны VD1 и VD2 снижают напряжение на линии передачи данных до 3,3В. Датчик DS18B20 Можно не ставить на плату, а вывести на нужное место, вообще длина провода может быть до 100 метров, но я не советую больше 50м. Светодиод меняет свой состояние(зажигается/тухнет) при каждом запуске измерения температуры. Если он с хаотической скоростью мигает, тогда с термодатчик работает нормально, если постоянно светиться или не светиться с датчиком проблемы (неправильно подключен, нерабочий,Pили очень длинный провод, возле которого сильные электромагнитные помехи). Справа расположен разъем для внутрисхемного программирования микроконтроллера. Прошивка для него - USBThermometerMCUUSB_thermometerdefaultmain.hex . После заливки прошивки Вам нужно правильно выставить фьюзы, иначе устройство не будет работать, в STK500 из AVR Studio это выглядит так:
Если вы правильно собрали устройство и правильно прошили МК, то при подключению к компу через USB Windows найдет новое устройство и спросит где драйвер. Он расположен в папке USBThermometerwindows-driver , куда Вам и надо указать путь. Когда установиться драйвер перезагрузите ПК. Потом запустите программу USBThermometer.exe . Если устройство не подключено то вместо температуры будет написано [Не подкл.k и при перетаскивании окно будет немножко [подвисатьk каждую секунду потому что программа будет каждую секунду обновлять данные об подключенных устройствах пока не найдет этот термометр. Если Вы подключите устройство, то в трее выскочит сообщение [Термометр подключенk, окно подвисать уже не будет, и Вы увидите такое:
Ещё, что очень удобно, есть функция [Мини-окноk и [Поверх всех оконk. ЯPобычно устанавливаю все 2 галочки и получаться вот что:
Вся серая область это и есть окно программы в [мини-видеk (бело-синий фон с бульбашками то рабочий стол). Нравиться:) ?. Это удобно потому, что окно маленькое (96х198), постоянно поверх всех окон и не мешается при использовании других приложений. К тому же программа не отображается на панели задач, а только в трее и, наведя курсор на иконку программы, можно увидеть температуру в Цельсиях:
Этот термометр я проверял на нескольких стационарных ПК, ноутбуках и нетбуках под операционными системами Windows Home Edition, Windows Professional и Windows Vista. Всё работало отлично! Только вот на висте, при температуре на термодатчика ниже -9 и выше 99 град.Pне было видно буквы [Сk (там где температура в Цельсиях), потому что я выбрал шрифт для отображения температуры }