Записи с меткой ‘AVR’

Цифровой многоканальный термометр на ATmega8

Очень часто мы сталкиваемся с необходимостью измерения температуры и у каждого на то свои причины. Один мой хороший знакомый попросил ему в лабораторию сделать 3- канальный измеритель температуры который подключается к ПК и умеет вести лог. событий (проще говоря — журнал изменений температуры). При этом измерение температуры должно быть в диапазоне: 0 — 370 градусов. Так как задача поставлена, переходим к ее осуществлению.

Граница измеряемой температуры может доходить до 400 градусов, использование датчиков ds18b20 и подобных с диапазоном -55 / +125 — невозможно. В связи с этим было принято решение в качестве датчиков температуры использовать — термопару. Термопары — известны возможностью измерять высокие температуры, а также высокой линейностью и стабильностью показаний. Есть много разновидностей термопар, в этом проекте применены хромель-алюмелевые термопары (тип К).

Для наглядности сделал график в Excel:

Зависимость_термопара

 

Данный график показывает зависимость возникающей термоэдс от температуры спая, при этом видно что зависимость — линейная. И для получения текущего значения температуры, необходимо значение термоэдс умножить на определенный коэффициент, который нужно подобрать при калибровке устройства. Но этим путем мы не пойдем, постараемся обойтись без программного умножения и деления. К тому же не все так просто, не стоит забывать что получение точных результатов возможно лишь при идеальных условиях. На практике же появляются такие неприятные вещи как наводки, температурный дрейф, что в свою очередь влечет к погрешностям при измерениях.

Для получения данных с датчика его нужно подключить к микроконтроллеру, но и тут возникает проблема. Так как выходное напряжение очень маленькое, порядка нескольких десятков мВ, при прямой оцифровке с помощью АЦП про какой-либо результат можно забыть, так как измеряемое напряжение просто смешается с шумами. Для того чтоб работать с этим сигналом, его необходимо усилить, как это сделать написал в статье про операционный усилитель.

Теперь собственно немного слов о самом устройстве:

Характеристики:

Подключение к ПК: COM-порт / USB
К-во подключаемых термопар: 3 шт.
Диапазон измерянмых температур: 0 — 400 градусов
Диапазон питающих напряжений: 7 — 20 Вольт (5 Вольт)
Ток потребления: 15 — 50 мА
Габариты платы: 65*65 мм

untitled-7

В устройстве есть возможность корректировки и калибровки температуры, это осуществляется переменными резисторами, после чего их следует залить термоклеем (чтобы не сбивались показания). Также присутствует индикация наличия питания. На плате есть кнопка для быстрого сброса микроконтроллера. Благодаря плотности монтажа,габариты платы получились небольшие. Это позволило поместить все в небольшой пластиковый корпус.

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

термопара_3канала_мега8

Читать далее »

AVRDUDE и сложности программирования ATmega88

Среда программирования, собственно как и среда разработки — дело очень специфическое. Особенно если это касается микроконтроллеров. Подсев на уже полюбившийся софт, неохота, а порой и сложно переходить на другой. Неважно, из-за отсутствия дополнительных настроек кристалла или возможности поддержки новых корпусов. Все это так, но к чему это я. Началось с того, что недавно нужно было сделать небольшой проект на ATmega88. Но ни читаться ни программироваться микроконтроллер не хотел. Странно, но  дело в том что при считке МК в программе AVRDUDE, в окне обработки вылезала ошибка:

ошибка_чтения

Прошить контроллер не представлялось никакой возможности. В мыслях было — «может контроллер кривой попался». В силу того, что сейчас встречается много брака, такое вполне может быть. Проверив ряд микроконтроллеров семейства MEGA и TINY, они без проблем читались и прошивались, стал искать причину. После размышлений в голову пришла интересная мысль.

Читать далее »

Вводной курс AVR. Порты ввода-вывода

Как известно общение МК с различными датчиками, устройствами и внешним миром собственно тоже, происходит через порты ввода-вывода. В зависимости от типа МК их количество варьируется. Не затронуть эту тему не мог, вопросы возникают будем разбираться. Стоит помнить что есть уже зарезервированные выводы (отмечены красным) на которые подаем питание, опорное напряжение для АЦП, вешаем систему сброса МК и тд. (пример для ATmega 8)

зарезервированные_выводы3

 

Но если на выводы Vcc, Gnd подаем только питание, то на выводы XTAL1 и XTAL2 не обязательно вешать кварц. Можно запустить тактирование МК от внутренней RC – цепочки, а выводы использовать по своему усмотрению. Вывод Aref используется как источник опорного напряжения относительно которого будет считать АЦП. Если использование АЦП не предполагается, тогда его можно оставить как есть.  AVcc и AGnd – аналоговая земля и питание АЦП, при использовании нужно позаботиться о дополнительном фильтре и источнике питания. Если измерения с помощью АЦП проводиться не будут, выводы можно соединить с общим питанием как на схеме. Вывод RESET подтянут к питанию но пожеланию можно и систему сброса поставить, очень удобная штука при отладке.

Так теперь нужно разобраться что делать с остальными выводами МК.

 

мега8_порты_ввода_вывода

Читать далее »

Вводная. Что такое микроконтроллер

mc

Ну что же, цель создать свое устройство у нас есть. Хотим мы, к примеру, сделать автоматизированную систему контроля освещением своего дома управляемую удаленно через интернет, или диагностировать состояние заряда аккумулятора в автомобиле.

Но на базе чего его создавать то?  Здесь на помощь придет микроконтроллер, благодаря ему мы и будем реализовывать наши задачи.

Но прежде всего нам нужно разобраться что такое микроконтроллер (далее МК).

Микрконтроллер – это своего рода маленький компьютер, имеющий на борту определенное количество памяти, арифметическое устройство, блок управления, узел программирования и прочую периферию как порты ввода-вывода, компараторы, АЦП. В свою очередь для связи с внешним миром есть интерфейсы обмена данными и ряд прочих фич, которые помогут реализовать наши задачи.

Следующий вопрос это выбор МК. На рынке есть много видов семейств, таких как: PIC фирмы Microchip Technology,  AVR фирмы Atmel,  MSP430 фирмы TI, ARM фирмы ARM Limited. И конечно, у каждого есть свои преимущества и недостатки. Выбирать микроконтроллер нужно исходя из своей задачи и поставленных целей. К примеру, если стоит задача сделать небольшое устройство управляющее слаботочной нагрузкой, или гирлянду из светодиодов — тогда стоит брать МК попроще, выйдет проще и дешевле. Если использовать МК в качестве небольшого сервера сбора данных, тогда стоит обратить внимание на семейство ARM, памяти больше,периферии да и частота порядком выше чем у AVR.

Мы с вами остановимся на семействе AVR  компании Atmel. В данном случае это 8 – разрядные микроконтроллеры на основе общего ядра с RISC – архитектурой. Производительность (MIPS/MHz) довольно высокая, для кварца 1 MHz порядка миллиона команд в секунду. Компания хорошо развивается, выпущенное успешное семейство XMega это доказывает.

Читать далее »