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

Ремонт паяльной станции Lukey 702

Доброго времени суток всем разработчикам, мастерам и любителям кто использует в своей работе паяльные станции от фирмы Lukey. В связи с «интересной» поломкой паяльной станции Lukey 702, решил выделить немного времени и написать как производил ее ремонт. Признаться честно данные станции мне очень нравятся ведь за свою, не очень большую, цену с поставленной задачей они справляются. Правда покупались мною относительно давно, поэтому утверждение про цену имеет место. Но не все так хорошо, как казалось на первый взгляд… Честно проработав свои 2 года, по неизвестным причинам, в один прекрасный день у станции перестал работать паяльник и соответственно индикатор температуры. При этом никаких неполадок и причин предшествовавших поломке станции просто не было. В нашем случае это уже намного интересней.

Вот такая у станции неисправность:

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

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

Цифровой многоканальный термометр на 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

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

Вводной курс AVR. Hello World !!!

Создание устройств подразумевает не только подключение микроконтроллера и необходимых компонентов обвязки  но и написание программы. Если с подключением МК и его выбором мы уже ознакомились, то с написанием программы будем разбираться. В любом языке программирования (в нашем случае Си)  есть такое понятие как первая программа, что-то типа «Hello World». Она поможет получить представление о составлении структуры программы и синтаксисе языка.  Для написания программы можно пользоваться абсолютно любой, удобной для вас, средой разработки, в проектах буду использовать AVR Studio 6. О том как создать проект и получить прошивку написал в статье про AVR Studio.

Постановка задачи:

Нужно сделать так, чтобы микроконтроллер мигал светодиодом с частотой 1 Гц. Это будет просто в написании и наглядно как пример. Согласно составленному алгоритму и будет выполняться программа.

Для работы с портами микроконтроллера — подключаем библиотеку для ввода/вывода

Так как нам нужно мигать светодиодом с частотой 1 Гц (раз в секунду) — подключаем библиотеку задержек

Дальше производим настройку порта С, к выводу 5 которого подключен светодиод — D1. Вывод порта настраивается на выход и на нем устанавливается лог.0 (подключенный светодиод при этом будет выключен)

В цикле while(1): выставляем на ножке микроконтроллера лог.1 (тем самым включая светодиод), после ждем 1 секунду и выставляем на ножке микроконтроллера лог.0 (тем самым выключая светодиод), опять ждем 1 секунду и все повторяется заново.

Программный код:

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

 

Led_blink_shm

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

Отладочный модуль для ATmega х8

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

maketnaya_plata2

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

Модуль для ATmega х8:

 IMG_7297

Для удобства все выводы микроконтроллера и их назначения уже подписаны на плате. Это упростит работу с незнакомым микроконтроллером. Все выводы подведены к рядам пинов, которые потом можно подсоединять к небольшим модулям и сборкам. Для программирования МК достаточно подключить питание и программатор к линиям программирования. Дальше прошиваем МК и можем приступать к процессу отладки. Использовать данный модуль можно с микроконтроллерами:  ATmega8, ATmega48, ATmega88, ATmega168, ATmega328.

 IMG_7300

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

Fuse-bits или вторая жизнь микроконтроллера

Одна из самых частых проблем связанных с блокировкой микроконтроллера — неправильно установленные во время программирования fuse — биты. Довольно актуальной темой остается установка битов отвечающих за способ тактирования и частоту работы микроконтроллера. При повторении или разработке проекта, как правило, приходится менять дефолтную частоту на другую. Но что делать если  все-таки выставили неправильно? Для этого случая есть всевозможные программаторы и модули. Но это все дополнительные затраты и время, которого как всегда не хватает…

В зависимости от корпуса микроконтроллера, варьируется и количество доступных для программирования  fuse — битов. Их конфигурация и определяет, источник тактовых импульсов и частоту работы МК.

CKSEL0-3  —  отвечают за выбор частоты и источника тактового сигнала

CKOPT  — служит для корректировки амплитуды колебаний на выходе с карцевого резонатора

SUT0-1  —  отвечают за выбор времени старта микроконтроллера (4ms — 65ms)

SKDIV8  —  выполняет деления частоты на 8 (При частоте кварца 8 MHz, получим 1 MHz)

Как уже говорилось, микроконтроллер может работать как от внутреннего кварцевого резонатора, так и от внешнего. При выставлении fuse — битов — это следует учитывать ! По дефолту (новый) микроконтроллер работает от внутреннего кварца на частоте 1 MHz. Ниже представлено описание конфигураций для ATmega8.

Конфигурация фьюз-битов для внешнего кварца:

Если есть необходимость точно измерять определенные промежутки времени, лучше использовать внешний кварцевый резонатор. Он имеет большую точность и помехоустойчивость, в следствии уход частоты (от заявленной) будет небольшой.

fuse_crystal

Временные задержки для старта микроконтроллера:

Задержки варьируются в диапазоне 4ms — 65ms, за счет установки битов CKSEL0 и  SUT0-1. По сути они необходимы для того, чтобы после подачи питания, МК стартовал не сразу, а через некоторое время. Так что можно смело ставить 65 ms, будет надежнее.

fuse_crystal_time

Конфигурация фьюз-битов для внутреннего кварца:

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

fuse_rc2

При построении устройств где нет необходимости в высокой частоте, применяют низкочастотные кварцы. Часовой кварц работает на частоте 32,768 kHz, удобно при работе в асинхронном режиме таймера. Упрощается построение часов, работа с отсчетом времени и тд.  Для подключения низкочастотного внешнего кварцевого резонатора необходимо установить биты: 

• CKSEL3…0  =  1001

Для подключения кварца к внутренним конденсаторам, необходимо установить бит CKOPT. Конденсаторы имеют емкость 36 pf.

Также, в качестве источника тактовых импульсов, можно использовать RC- цепочку.

fuse_rc

 

Следует помнить!

При выставлении Fuse-битов, не ленитесь и открывайте даташит ! Сверьтесь,  убедитесь что выставили все правильно и только тогда прошивайте МК. Порой залочить микроконтроллер гораздо проще, чем потом восстановить его в рабочий режим.

Небольшое отступление, вторая жизнь микроконтроллера…

Если случилось так, что fuse — биты уже выставлены и на последующий запрос МК уже не отвечает. Следует внимательно посмотреть на поставленные ранее конфиги, и подбирать источник тактирования. Как вариант, можно поступить следующим образом: использовать генератор в качестве источника тактирования микроконтроллера, это поможет прочитать МК и заменить  fuse — биты. Вопрос в том где взять генератор — уже решен. На небольшой отладочной плате собрал генератор на базе микроконтроллера ATmega8. МК работает от внутреннего кварца, так что из обвязки практически ничего не надо.

IMG_7280

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