Термометр на ATmega8 и датчике DS18B20
Доброго дня уважаемые друзья!
Приветствую Вас на сайте «Мир микроконтроллеров»
Схема термометра на ATmega8 и DS18B20
Микроконтроллер ATmega8
Цифровой термометр DS18B20
Семисегментный светодиодный индикатор
Алгоритм программы термометра
Программа цифрового термометра на DS18B20
Термометр по своим характеристикам очень прост, и его можно использовать только как термометр для измерения «комнатной» температуры. Использовать в этой конструкции микроконтроллер с памятью 8 килобайт конечно расточительно, можно применить микроконтроллер и попроще.
Но дело в том, что эта конструкция — основа для дальнейшего развития проекта с использованием цифрового датчика температуры DS18B20.
В следующей статье будет опубликована конструкция другого термометра — на двух датчиках DS18B20, что позволит измерять температуру не только в комнате, но и «за бортом». Естественно, будет добавлена возможность измерять и отрицательные температуру.
В дальнейшем в конструкцию будет добавлена функция термостата, часы, возможность работы с различными нагрузками, что позволит уже собрать несложную конструкцию — основу «умного дома». Ну а сегодня первая статья из этой серии.
Схема термометра на ATmega8 и датчике температуры DS18B20
Давайте посмотрим на схему термометра:
Как видите, схема очень проста, используется только необходимый минимум деталей.
В схеме, для индикации показаний, применен семисегментный трехразрядный светодиодный индикатор (описание и подключение семисегментных индикаторов к микроконтроллеру).
Напряжение питания конструкции — 5 вольт.
Если вы примените микроконтроллер с низковольтным питанием (линейка микроконтроллеров ATmega), то можно и понизить питающее напряжение конструкции, но в этом случае, возможно придется уменьшить номинал гасящих сопротивлений в сегментах индикатора. Приблизительно номиналы сопротивлений можно брать: — при питании 5 вольт — 200-300 Ом — при питании 2,7 — 3 вольта — 100-150 Ом
(здесь вы можете ознакомиться с расчетом гасящих сопротивлений для семисегментных индикаторов)
(здесь вы можете ознакомиться с маркировкой микроконтроллеров)
Транзисторы — любые, маломощные, структуры NPN.
Датчик температуры — DS18B20 (ознакомиться с датчиком температуры DS18B20)
Семисегментный индикатор — любой трехразрядный с общим катодом. Если вы захотите применить другие, с общим анодом, тогда придется заменить транзисторы на PNP и внести изменения в программу (заменить массив двоичных кодов для вывода цифр на индикатор). Я применил индикатор красного цвета свечения, и заодно, для следующей схемы, приготовил такой-же, но голубого цвета свечения.
Источник: https://microkontroller.ru/shemyi-konstruktsii-na-mikrokontrollerah/termometr-na-atmega8-i-datchike-ds18b20/
Термометр – регистратор для компьютера на микроконтроллере Atmega8 и датчиках DS18B20
Этот цифровой термометр предназначен для длительного измерения и записи на жесткий диск компьютера информации о температуре с четырех датчиков, например в разных помещениях либо в четырех точках какого-либо устройства или конструкции.
Посмотреть видео про этот проект
Устройство разрабатывалось для применения в системе регистрации данных для контроля температуры в нескольких точках помещения. Такой термометр можно использовать в быту, в качестве узла метеорологической станции или в промышленных условиях. Для радиолюбителей, осваивающих конструирование устройств на
микроконтроллерах, повторение этой конструкция будет полезно еще и с точки зрения сопряжения самодельных устройств с персональным компьютером.
Управляющая программа (“прошивка”) микроконтроллера Atmega8, используемого в термометре, написана на языке Си в довольно удобном на мой взгляд компиляторе mikroC PRO for AVR, который разрабатывается очень позитивной Сербской компанией Mikroelectronica.
Записывающая программа для компьютера TLogger написана на языке Delphi c использованием бесплатной компоненты BComPort для работы с последовательным портом компьютера. Опрос данных с термодатчиков осуществляется с частотой 1 Гц (один раз в секунду) и передается в компьютер по интерфейсам RS-232 или RS-485 со скоростью со стандартной скоростью 9600.
Узлы для работы с RS-232 и RS-485 встроены в схему термометра и для связи с компьютером можно использовать любой из них или оба одновременно. Тогда находящийся рядом с термометром компьютер можно подключить по RS-232, а более удаленную машину – по RS-485. В этом случае можно вести запись данных на два компьютера одновременно.
Передавать данные чаще чем один раз в секунду не имеет смысла, так как время измерения для датчика 18Х20 в 12 битном режиме составляет около 0,75 секунды. Интервал измерений 1 секунда очень удобен для последующей обработки данных.
Поскольку микроконтроллер Atmega8 передает данные о температуре в виде обыкновенных текстовых строк, для их приема можно использовать вообще любую программу – терминал.Программа TLogger принимает данные из платы термометра, и записывает их на жесткий диск компьютера в виде обычного текстового файла.
В дальнейшем эти данные легко преобразовать в графики или другие форматы представления информации. В качестве датчиков температуры использованы очень распространенные цифровые 12-битные термодатчики DS18B20. Эти устройства очень надежны, обладают достаточным для наших целей разрешением (0,0625 градуса по Цельсию) и просты в использовании.
Цифровой датчик температуры DS18B20Датчики обмениваются информацией с управляющим микроконтроллером по интерфейсу 1-Wire. Это несложный в программировании цифровой последовательный протокол, который, к тому же, поддерживается практически всеми “микроконтроллерными” компиляторами на уровне встроенных библиотек.
Так что при использовании такого датчика радиолюбителю не нужно вдаваться в тонкости работы протокола, высчитывать точные временные интервалы, достаточно просто подключить встроенную в компилятор библиотеку и почитать документацию по ее использованию.
Связь микроконтроллера с устройствами по шине 1-WireКак видно из рисунка, несколько термодатчиков можно “повестить” на один единственный порт микроконтроллера и работать с каждым датчиком в отдельности, обращаясь к нему по его уникальному серийному номеру, который записан в память датчика (т.н. Scratchpad).
Тогда придется предварительно считать эти номера и записать их в прошивку микроконтроллера, либо использовать довольно хитроумный алгоритм для определения номеров датчиков на шине 1-Wire в момент включения устройства.
“Хитроумность” этого алгоритма связана с тем, что все датчики “висят” на одном и том же проводе данных и для правильного определения их нужно использовать программные “танцы с бубном”, работающие по методу исключений. Недостаток первого метода заключается в том, что прошивка становится привязанной к датчикам.
В случае выхода из строя одного из датчиков, после замены его на другой, нужно будет перепрошивать контроллер под датчик с новым серийным номером. Недостаток у второго метода – это сложность программирования процедуры поиска номеров датчиков.
В моем случае решено было отказаться от обоих методов и для связи с каждым датчиком использовать отдельный порт микроконтроллера, поэтому программа на Си получилась очень простой и короткой. Поскольку термодатчиков всего 4, то используются 4 порта ввода/вывода микроконтроллера Atmega8. Несмотря на это, у нашей “меги ” осталось еще много свободных портов, которые можно использовать для других целей, или подключить к ним дополнительные датчики температуры (если необходимо проводить измерения более чем в четырех точках). При желании можно всегда перейти к варианту с включением датчиков на один провод. Для этого придется только изменить прошивку устройства, печатную плату и схему менять не нужно. Далее привожу принципиальную схему аппаратной части многоканального термометра – регистратора (кликните на схеме чтобы ее увеличить. Схема откроется в отдельном окне браузера).
Принципиальная схема аппаратной части термометра – регистратора
Шлейф для подключения термодатчиков необходимо соединить с контактами (слева вверху схемы) в таком порядке:
TS_5V – к выводам VDD всех датчиков 18B20
TSD1…TSD4 – к выводам данных DQ датчиков от 1 до 4 соответственно.
TS_GND – к выводам земли GND всех датчиков
Кварцевый резонатор использован на 8 Мгц. Напряжение питания +5V подается на схему со стабилизатора напряжения, собранного на микросхеме U2 типа 7805. Это довольно мощная микросхема, она используется здесь, так как приемопередатчик интерфейса RS-485 в режиме передачи потребляет сравнительно большой ток.
Если вы не планируете использовать интерфейс RS-485, то микросхему MAX485 устанавливать не нужно. Тогда можно обойтись маломощным стабилизатором 78L05 в корпусе TO-92. Как вы уже догадались, на микросхеме U3 типа MAX485 и резисторе R2 собран узел интерфейса RS-485. Такой интерфейс нужно использовать если расстояние между платой термометра и компьютером больше нескольких метров.
По интерфейсу RS-485 расстояние может быть до километра. На небольшом расстоянии можно использовать порт RS-232 а микросхему MAX485 и резистор R2 на плату не устанавливать. С программной точки зрения RS-232 и RS-485 – одно и то же, отличаются они только физическими параметрами сигналов в линии связи.
На микросхеме U4 типа MAX232 (MAX202) собран узел согласования UART интерфейса микроконтроллера в соответствии со стандартами интерфейса RS-232. С выхода MAX232 сигнал подается на стандартный разъем типа DB9 для соединения с COM портом компьютера.
Нужно сказать, что в современных компьютерах, и особенно ноутбуках сейчас уже не оснащаются портами RS-232, хотя вы можете найти его в десктопных материнских платах в виде разъема на плате, то есть порт может присутствовать в вашем компьютере, но не быть выведенным на его корпус. Можно использовать дешевый переходник USB-TO-COM, купленный в Китае.
Он будет также хорошо работать с нашими конструкциями на микроконтроллерах, как и настоящий “железный” RS-232. При покупке переходника следует отдавать предпочтение устройствам, основанным на микросхеме FTDI, с ними меньше всего проблем, конечно если у вас будет возможность идентифицировать микросхему, на которой сделан переходник.
Переходник Usb – COM из Китая
Так же, как и в случае с RS-485, если вы не планируете использовать RS-232, а думаете использовать только 485, то можно не устанавливать микросхему MAX232 и окружающие её конденсаторы обвязки и разъем DB9F.
Несмотря на то, что микроконтроллер нашего термометра в данной конструкции работает только на передачу, схема сделана так, что при делании ее можно использовать и на прием данных, то есть пот RXD контроллера соединен с соответствующими цепями микросхем MAX232 и MAX485, ножки управления Прием-передача микросхемы MAX485 соединены с портом PB5 контроллера и задействован пин 3 (RX) разъема DB9F. Это сделано для того, чтобы при желании можно было реализовать прием данных от компьютера в будущих версиях прошивки или для использования этой платы как основы для других конструкций на микроконтроллере Atmega8. Светодиод LED1 мигает в процессе работы платы. Опрос датчиков температуры и передача данных в порт осуществляется по прерыванию от переполнения таймера микроконтроллера с частотой ровно 1 герц, то есть один раз в секунду. Светодиод горит когда датчики измеряют температуру и гаснет в те моменты, когда производится передача информации в компьютер по последовательному интерфейсу.
Печатная плата термометра
Печатная плата устройства разведена в программе DipTrace и изготовлена методом фрезеровки на моем станке с ЧПУ. Проект для DipTRace (плату и схему) вы найдете в архиве в конце статьи. В том же архиве будет программа TLogger и прошивка микроконтроллера с исходниками для компилятора MikroC Pro For Avr
Печатная плата термометра вид со стороны меди
Печатная плата термометра вид со стороны компонентов
С этим программатором прекрасно работает удобная бесплатная программа AVRDUDESHELL, скачать которую можно по этой ссылке.Для программирования микроконтроллеров я использую вот такой адаптер с панелькой ZIF. В принципе, в качестве адаптера можно использовать обычную панельку DIP28, соединив соответствующие ножки с выводами программатора. Но лучше конечно сделать адаптер.
Адаптер с ZIF панельной и китайский программатор USBAsp
Устанавливаем микроконтроллер в панельку адаптера, подключаем адаптер к программатору, а программатор – в USB порт компьютера. Запускаем программу AVRDUDESHELL и выбираем в списке устройств наш Atmega8.
После этого загружаем в программу прошивку – файл TLoggerMega8.hex. Прежде чем прошить микроконтроллер необходимо правильно установить фьюзы (биты конфигурации) микроконтроллера. Здесь нужно действовать очень внимательно, так как установив неправильные биты можно “залочить” микроконтроллер, тогда оживить его обычными средствами не получится. Установите фьюзы так, как показано на этом изображении: Устанавливаем фьюзы как на картинке и заливаем фюзы и прошивку в микроконтроллер. После этого можно устанавливать контроллер в панельку на собранной плате термометра. При включении питания устройства на плате должен замигать светодиод. Это говорит о том, что микроконтроллер термометра успешно запустился. Теперь можно подключить плату к компьютеру кабелем RS232, запустить программу TLogger. В программе TLogger нужно выбрать нужный COM порт. В моем случае – это COM3 BaudRate нужно установить в 9600 – именно с такой скоростью передает данные прошивка нашего микроконтроллера. После этого нажимаем кнопку Connect. Если всё хорошо, программа начнет принимать строки данных из нашего термометра. На скриншоте видно, что все данные равны -00.0625. Такая картина наблюдается если не подключить к плате термодатчики. У меня сейчас термодатчики не подключены. Давайте их подключим. Я сделал вот такой тестовый шлейф с четырьмя датчиками DS18B20. Потом первый датчик я решил припаять на шлейф из трех проводов, чтобы можно было поместить его за окно на улицу. Теперь программа показывает реальную температуру за окном и у меня в комнате: Для запуска сбора данных нажимаем кнопку Start Data Logger. Теперь данные в окне программы окрашены в зеленый цвет. Это означает что началась запись в файл. Файл будет записан в папку, которую мы должны предварительно выбрать, нажав на кнопку Log Folder. Имя файла будет создано автоматически, в соответствии в датой и временем начала записи. Для того чтобы остановить запись нажмите Stop Data Logger. Просмотреть записанный файл можно сразу же, нажав на кнопку Open Last File. Только что записанный файл будет открыт в блокноте Windows.
ВНИМАНИЕ! Файл проекта для симуляции в PROTEUS 8 находится в папке с исходниками прошивки термометра. Файл называется TLoggerMega8.pdsprj
Источник: https://musbench.com/e_digital/TLogger.html
ЧАСЫ-ТЕРМОМЕТР НА МИКРОКОНТРОЛЛЕРЕ ATMEGA8
Источник: http://radioskot.ru/publ/izmeriteli/chasy_termometr_na_mikrokontrollere_atmega8/15-1-0-1182
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 датчика. Первый будет короткий и находиться в комнате. Второй я сделаю длинным и выставлю его на улицу.
Вставляем датчик в разъем, согласно распиновке.
Теперь нам надо прошить Атмегу. Берем ранее изготовленный мной программатор на фт232рл и заливаем прошивку.
В SinaProg нам надо выставить фьюзы:
ОБЯЗАТЕЛЬНО! Перед подключением проверяем плату на наличие КЗ!!!
Вставляем плату в юсб и у нас сразу же появляется неизвестное устройство:
Заходим в диспетчер устройств, находим неизвестное устройство и обновляем дрова. Во время установки появится окно, где выбираем – “Все равно установить этот драйвер”
После этого в диспетчере устройств появится новое устройство:
Источник: http://radio-stv.ru/nachinayushhim-radiolyubitelyam/konkurs-dlya-nachinayushhih-radiolyubitel/usb-termometr-na-mikrokontrollere-atmega8
Часы, будильник, термометр на ATmega8, DS1307, DS18B20
Привет всем читателям и почитателям сайта Радиосхемы! Сегодня хочу поделиться с вами очередной простенькой конструкцией «Часы-термометр». Немного предыстории: вечером очень плохо видно показания уличного термометра, чтобы разглядеть положение стрелки, необходимо довольно долго вглядываться и иной раз пользоваться фонариком. Спустя определённое время мне это надоело и решил заменить прибор на электронный, который бы отображал информацию на светодиодных семи сегментных индикаторах. После чего бы не пришлось даже подходить к окну, чтоб узнать уличную температуру. Так как индикацию хорошо видно более чем с трёх метров. Схем данного устройства в сети полно, но я, как человек относящийся к семейству Радиолюбителей, решил собрать свою. Так как с недавних пор пытаюсь осваивать микроконтроллеры, то выбор пал на широко распространённый и дешёвый МК Atmega8. Далее была изготовлена плата по технологии ЛУТ, после чего уже приступил к программной части. Программа написана на языке Си с помощью среды разработки CodeVisionAVR. Схема принципиальная электрическаяВ одном устройстве объединено две функции: собственно измерение температуры и времени (часы). Индикация производится попеременно, сменяясь через десять секунд. Для настройки часов используется две кнопки, аналогично простым китайским электронным часам: одна отвечает за выбор параметра, вторая за его изменение. Питается устройство от сети с помощью постоянного стабилизированного источника тока напряжением пять вольт (плата от зарядного устройства телефона).
И что бы это не явилось причиной какого-нибудь опоздания человека на жизненно важные дела, имеется интересная «фишка» – при подаче питания вместо времени на дисплее будут отображаться прочерки, пока не нажмёшь одну из двух кнопок настройки. Корпусом самодельного измерителя температуры послужила подходящая коробочка от запонок. В неё была помещена сама плата часов-термометра и плата вытащенная из телефонного зарядника. Датчик DS18B20 сделан выносным и подсоединяется через разъём. Список необходимых деталей
Видео работы устройства на Ютуб-канале |
Часы, будильник, термометр | Часы, Будильники | Будильник, Часы на МК |
Более четырех лет назад я собрал простые часы на ATmega8.
Все это время они исправно работали и приносили пользу, особенно в темнее время суток.
Но мне показалось, что такой микроконтроллер, как ATmega8 может делать намного больше, чем просто подсчитывать колебания кварца и выводить их в виде времени.
Захотел, чтобы новые часы информировали не только о текущем времени, но и о температуре в помещении, где они находятся.
Задался поиском подобных схем в интернете, отталкиваясь от уже имеющихся комплектующих, а именно: микроконтроллер ATmega8 и светодиодный индикатор с общим катодом.
Отличное решение нашлось на странице, которое предоставил пользователь Soir, за что ему большая благодарность.
Схема часов не сложная, плюс, я сделал в ней некоторые упрощения. Что получилось, я привожу ниже. Оригинальная и упрощенная схема, разведенная в Proteus, имеется в АРХИВЕ.
В данном архиве приведены также прошивки ATmega8, дающие разный функционал часам, пример выставления фьюзов, полная инструкция по настройке часов и их возможностях, а так же разведенная печатная плата в формате *.lay6.
Печатная плата разводилась мной под уже имеющийся корпус. В архиве представлены прошивки для индикаторов с общим анодом и катодом.
Хочу признать, что часы получились отлично. В часах есть будильник (как разовый, так и по дням недели), термометр. Для регулировки освещения индикатора в дневное и ночное время, могут использоваться как предустановки в часах, так и специальный датчик (фоторезистор). Есть возможность коррекции времени, если оно отстает или спешит; цифровая коррекция отображения температуры с градацией 0,1ºС.
Большим плюсом является наличие сохранения настроек в энергонезависимой памяти микроконтроллера. Помимо этого, применение микросхемы DS1307, в паре, с батарейкой, делают часы абсолютно энергонезависимыми.
Батарейка выполняет дежурное питание часов.
Теперь, сколько бы поставка электричества у Вас не обрывалась, при ее возобновлении, часы буду идти, без каких-либо изменений и отклонений, даже останется заведенным будильник(и).
В эстетическом плане, данные часы, также хороши. Есть более десяти видов визуальных эффектов смены отображения времени и температуры. Кстати, эти эффекты можно выбирать самостоятельно или выставить их отображение в случайном порядке.
Страницы:
1 2 3
Необходимо авторизоваться, чтобы комментировать.
Источник: http://best-chart.ru/samodelnye-elektronnye-chasy-budilniki/chasy-budilnik-termometr-na-atmega8-ds1307-ds18b20.html
Двуканальный термометр-термостат на ATmega8.DS18B20
Источник: http://radio-bes.do.am/publ/ustrojstva_na_mk/dvukanalnyj_termometr_termostat_na_atmega8_ds18b20/2-1-0-50
Часы, термометр, барометр, гигрометр в одном флаконе
Источник: http://AVRproject.ru/publ/chasy_termometr_barometr_gigrometr_v_odnom_flakone/1-1-0-110
Барометр и термометр на ATmega8 (с печатной платой)
Температура и давление окружающего воздуха оказывают большое влияние на самочувствие человека. Их важно знать и в походе, и на даче, и дома. Предлагаемый компактный прибор как нельзя лучше подходит для этого.
Его можно использовать также для приблизительной оценки высоты, например, при подъеме в горы. Уменьшение давления на 1 мм ртутного столба соответствует увеличению высоты над уровнем
моря приблизительно на 10 м.
Пределы измерения и погрешность прибора определяются в основном примененными в нем датчиками температура -55…+125 °С, атмосферное давление 225.
825 мм ртутного столба Прибор питается напряжением 9 В от гальванической батареи типа “Крона” или сетевого адаптера Потребляемый ток — 30 мА (при выключенной подсветке ЖКИ). Размеры корпуса — 118×72 28 мм.
Работа прибора была проверена при температуре от -5 до +25 С Погрешность измерения давления не превысила 4 мм ртутного столба Схема прибора изображена на рис. 1 причем собранный на отдельной плате модуль
измерения давления выделен штрихпунктирной линией.
Необходимые для работы датчика тактовые импульсы частотой 32768 Гц вырабатывает кварцевый генератор на элементах микросхемы DD1 В принципе, эти импульсы мог бы формировать и микроконтроллер DD2 с помощью одного из имеющихся в нем таймеров
Но это потребовало бы усложнения программы.
Напряжение 3,6 В для питания датчика В1 и микросхемы DD1 получено с помощью стабилитрона VD1 Резисторы R1 —R3 — нагрузочные для линий связывающего датчик с микроконтроллером интерфейса 1С и сигнала XCLR Печатная плата модуля измерения давления показана
на рис. 2
Хотя датчик HP03SB содержит и встроенный измеритель температуры, его показания используются программой микроконтроллера DD2 только для уточнения результатов измерения давления.
На ЖКИ HG1 вместе со значением давления выводятся показания другого датчика температуры — DS1624 (В2) Причина этого проста — он точнее При необходимости датчик В2 можно сделать выносным и расположить там где температура представляет наибольший интерес.
При установке в корпусе прибора этот датчик следует вынести на боковую стенку, сделав в ней окно по его размерам Иначе неизбежна ошибка на 1,5 ..
1,8 ‘С, в чем я убедился на практике Напряжение питания +5 В стабилизировано микросхемой DA1 Подстроеч ным резистором R8 устанавливают наилучшую контрастность изображения на ЖКИ Кнопкой SB1 включают подсветку его табло. Остальные элементы необходимы для работы микроконтроллера Элементы R7 R9 СЮ VD2 — цепь установки микроконтроллера в исходное состояние Кварцевый резонатор ZQ2 с конденсаторами С11.С12 — частотозадающая
цепь тактового генератора мик роконтроллера.
На рис. 3 представлен чертеж основной печатной платы прибора а на рис. 4 — расположения деталей на ней В переходное отверстие показанное залитыми (плата на рис. 2), необходимо вставить и пропаять с двух сторон проволочную перемычку. Для микроконтроллера DD1 должна быть предусмотрена панель, так как в процессе налаживания прибора эту микросхему придется извлекать и вновь
устанавливать.
Остановимся на некоторых особенностях датчика HP03SB. общий вид и габаритные размеры показаны на рис. 5 Для определения давления необходимо предварительно прочитать из памяти установленного в приборе экземпляра этого датчика двухбайтные значения коэффициентов С,—С- и однобайтные значения параметров A—D. Все они индивидуальны
для данного экземпляра.
Результаты измерения представляют собой два двухбайтных числа- D1 — давление D2 — температура. Прочитав их из памяти
датчика программа должна вычислить вспомогательные значения
Более подробные сведения о датчике HP03SB имеются в [1]. Однако необходимо отметить что там указаны неверно адреса внутренней памяти датчика, по которым хранятся его индивидуальные константы. Следует пользоваться теми адресами что приведены в [2] В приборе можно применить и другие датчики серии НРОЗ Некоторые из них
имеют меньшую точность, другие отличаются конструктивным оформлением.
Работа программы начинается с инициализации портов микроконтроллера и ЖКИ Успешную инициализацию подтверждает вывод на табло надписи “TER- MOBAR” (буква Н пропущена). Затем инициализируется датчик давления, счи состояние регистра
статуса модуля TW1 микроконтроллера не проверяется.
Для чтения коэффициентов и параметров датчика предназначена специальная программа ReadCC, которую необходимо загрузить в программную память микроконтроллера полностью собранного прибора (с подключенным модулем измерения давления), включить его и через несколько секунд выключить.
После этого нужно извлечь микроконтроллер и с помощью программатора прочитать содержимое его EEPROM. В нем по адресам, указанным в табл. 1, находятся значения индивидуальных коэффициентов и параметров датчика. Далее необходимо открыть файл рабочей программы барометра-термометра BARO-2 asm, найти в нем фрагмент, приведенный в табл.
2, и исправить значения объявленных там констант в соответствии с прочитанными из EEPROM Параметр D
в программе не используется
Теперь программа готова к работе с установленным в прибор экземпляром датчика Остается оттранслировать ее с помощью AVR Studio и загрузить полученный НЕХ- файл в микроконтроллер Учтите, что аналогичный файл, приложенный к статье, рассчитан на работу с датчиком, имевшимся у автора Если загрузить его в микроконтроллер прибор с другим экземпляром датчика давления будет работать но давать неточные
показания
В разработке использованы фрагменты программ из [3] и [4]. Подпрограммы преобразования чисел из шестнадцатеричного формата в двоично-десятичный переработаны с учетом разрядности чисел.
Подпрограммы перемножения и деления двухбайтных чисел, предназначенные для микроконтроллеров семейства MCS-51, переведены на язык ассемблера AVRASM Меньше всего подверглась изменениям подпрограмма управления ЖКИ, учтены лишь особенности индикатора MT-10S1 а для ввода и вывода
сигналов использованы другие порты микроконтроллера.
Источник: http://nauchebe.net/2012/09/barometr-i-termometr-na-atmega8-s-pechatnoj-platoj/
USB HID термометр на ATmega8
Этот термометр выполнен на основе микроконтроллера ATmega8
и датчика температуры DS18B20
Программа для контроллера была написанна и отладена в среде Bascom-AVR 1.11.9.8 с использованием USB драйвера swusb.LBX Программа для компьютера была разработана и отладена в среде PureBasic с использованием библиотеки HID_Lib. Для установки библиотеки, нужно извлечь содержимое архива в папку со средой PureBasic.
Код программы для компьютера
#USB_PID=$EF04 : #USB_VID=$AAAA #NO_Device=”Нет связи с термометром” LoadFont(2,”Arial”,22,#PB_Font_Bold) Procedure FindDevice_Timer() ; Периодическая (каждые 400 мс.
) проверка доступности термометра Shared DeviceHandle Static Old_Test Test=HID_Lib_DeviceTest(#USB_PID, #USB_VID) ; Есть ли требуемое USB HID устройство? If TestOld_Test Old_Test=Test If Test HID_Lib_CloseDevice(DeviceHandle) DeviceHandle=HID_Lib_OpenDevice(#USB_PID, #USB_VID) ; Подключение к USB HID устройству SetGadgetText(0,”Термометр подключён”) Else HID_Lib_CloseDevice(DeviceHandle) ; Разрыв связи с USB HID устройством DeviceHandle=0 SetGadgetText(0,#NO_Device) SetGadgetText(1,”OFF”) EndIf EndIf EndProcedure Procedure Thread(*x) ; Эта процедура работает в отдельном потоке Shared DeviceHandle Repeat If DeviceHandle ; Установлена ли связь с USB термометром? In.l=0 HID_Lib_ReadDevice(DeviceHandle, @In, 3) ; Чтение данных из USB термометра In=In>>8 ; Сдвиг вправо на 8 позиций Result.f=In/16 If Result-50 ; Отсеиваем возможные глюки! SetGadgetText(1,StrF(Result,1)+” °C”) ; Отображение температуры в окне EndIf EndIf Delay(100) ForEver EndProcedure ; Открываем окно OpenWindow(0,0,0,170,70,”USB_Termo”, #PB_Window_MinimizeGadget|#PB_Window_Invisible|#PB_Window_ScreenCentered) StickyWindow(0,1) TextGadget(0,4,4,162,16,#NO_Device,#PB_Text_Center) StringGadget(1,16,24,140,40,”OFF”,#PB_Text_Center|#PB_String_ReadOnly) SetGadgetFont(1,FontID(2)) SetGadgetColor(1,#PB_Gadget_FrontColor,$DF0000) FindDevice_Timer() HideWindow(0,0) AddWindowTimer(0,1,400) ; Запуск таймера CreateThread(@Thread(),0) ; Создание отдельного потока из процедуры Thread() Repeat ; Главный цикл проги Repeat – Until Event=WaitWindowEvent() ; Идентификатор события If Event=#PB_Event_Timer If EventTimer()=1 FindDevice_Timer() ; Вызов процедуры по таймеру, каждые 400 мс. EndIf EndIf
Until Event=#PB_Event_CloseWindow ; Прерывание главного цикла при закрытии окна
Скриншот скомпилированой программы
Для компиляции, требуется версия 4.40 или 4.41 компилятора PureBasic.
Скачать бесплатную демоверсию PureBasic441
Библиотека HID_Lib
В папке “Examples”, вы найдёте примеры устройств на PIC и AVR контролерах.
Скачать программы с их исходными текстами
Источник: http://radio-hobby.org/modules/news/article.php?storyid=905
Adblockdetector