8-900-374-94-44
[email protected]
Slide Image
Меню

Устройства на atmega8: ATmega — Схемы радиолюбителей

Содержание

Устройства на микроконтроллерах Atmel серии AVR

GSM сигнализация для автомобиля (ATmega16) 07.10.2010
Устройство предназначено для своевременного оповещения автовладельца о взломе автомобиля. Сигнализация контролирует двери, окна,…
Просмотров: 10390

Простой цифровой спидометр с семисегментным индикатором (ATmega8) 07.10.2010
Устройство представляет собой простой спидометр на AVR микроконтроллере. Его отличительной чертой является минимум деталей, всего 4…
Просмотров: 13394

Тахометр на AVR микроконтроллере (ATtiny2313, C) 13.01.2010
Данное устройство представляет собой неплохой тахометр, предел его измерений составляет 100 — 9990 об/мин. Точность измерения — ± 3 об/мин….
Просмотров: 27914

Mega-Генератор (ATmega16, C) 09.08.2008
Попросили меня как-то на работе (автосервис) организовать генератор для проверки различных электроклапанов, инжекторов, катушек.

..
Просмотров: 9447

Простейший бортовой компьютер на любой инжекторный двигатель (ATmega8, C) 08.08.2008
Все началось с того, что как мне казалось, у меня большой расход топлива. Машина у меня Audi-80 с 2-х литровым движком (ABT) и моновпрыском (одна…
Просмотров: 13395

Автомобильный тахометр (AT89C2051, asm) 08.08.2008
Автомобильный тахометр представляет собой функционально законченный блок, который устанавливается в салоне автомобиля. …
Просмотров: 10902

Релейный регулятор громкости по схеме Никитина c LED дисплеем, ПДУ (RC5) (ATmega8, C) 16.02.2011
Как следует из названия, в данной статье представлено устройство собранное на микроконтроллере для регулирования громкости, по…
Просмотров: 5473

Релейный регулятор громкости по схеме Никитина с LCD дисплеем и ПДУ (RC5) (ATmega8, C) 16.02.2011
Как следует из названия, в данной статье представляется устройство для регулирования громкости, собранное по схеме Никитина.

В отличии…
Просмотров: 4326

Релейный регулятор громкости по схеме Никитина с LCD, ПДУ (RC5) и кнопками (ATmega8, C) 16.02.2011
Как следует из названия, в данной статье представляется устройство для регулирования громкости, собранное по схеме Никитина. В этой…
Просмотров: 3076

Релейный регулятор громкости по схеме Никитина с LCD, ПДУ (RC5) и энкодером (ATmega8, C) 16.02.2011
Очередная модификация устрйоства для регулирования громкости, собранно по схеме Никитина. В этой версии присутствует LCD дисплей для…
Просмотров: 6041

Одноканальный микроконтроллерный приёмник диапазона 400 мГц на синтезаторе (ATtiny24) 02.12.2010
Приёмник предназначен для приёма сигналов радиомикрофонов на ПАВ-резонаторах, работающих в диапазоне 400-450 мГц с WFM – широкополосной…

Просмотров: 3669

Приёмник 399-469 мГц с дисплеем от NOKIA 3310 (ATmega8) 02.12.2010
Данный приёмник является продолжением разработки «Приёмника диапазона 4хх мГц на синтезаторе».   Приёмник имеет следующие…
Просмотров: 5843

Простой WAV плеер на AVR микроконтроллере (ATtiny25/45/85, C) 31.10.2010
Это простой SD аудио плеер на одном микроконтроллере ATtiny25/45/85. У этих микроконтроллеров есть два быстрых ШИМ (fast PWM) выхода с несущей…
Просмотров: 9521

Музыкальный Звонок на MMC/SD карте (ATmega32, C) 17.03.2008
Простые однотональные мелодии на сегодняшний день уже не могут вызвать восторга у благодарных слушателей. За примерами далеко ходить…
Просмотров: 9378

AVR-USB-MEGA16: USB BootloadHID для микроконтроллеров AVR (ATmega8, ATmega16, C) 30.08.2010
В статье описывается USB bootloader BootloadHID, который хорошо подходит для ATmega8 и ATmega16, так как у него код умещается в 2048…

Просмотров: 5829

Загрузчики (bootloader) для микроконтроллеров AVR 30.08.2010
Описана технология bootloader, встроенная во все микроконтроллеры Atmel AVR семейства ATmega. Материал для статьи взят с сайта…
Просмотров: 6388

Управление электрическими цепями через USB (ATmega8, C) 29.10.2011
Давайте сделаем устройство, которое будет подключаться к USB и сможет управлять электроцепями(например, включать освещение),…
Просмотров: 18359

USB-контроллер джойстика на основе микроконтроллера AVR (ATmega8, C) 15.05.2011
Я начал разрабатывать этот контроллер джойстика, вдохновленный необходимостью в простом самодельном джойстике, который мог бы…
Просмотров: 9416

LCD2USB — подключение LCD индикатора к компьютеру через USB (ATmega8, C) 04.10.2010

Цель LCD2USB — подсоединить текстовые дисплеи на основе контроллера HD44780 к персональным компьютерам (PC) через USB. LCD2USB разрабатывался как…
Просмотров: 6727

Простой VGA/Видео адаптер (ATmega8, C) 28.08.2010
Задавшись целью подключить VGA-монитор для вывода текстовых данных с микроконтроллерной системы сбора информации — я с удивлением. ..
Просмотров: 10457

Уменьшение шума от кулеров, с выводом температур на LCD (ATmega8, C) 28.08.2010
Устройство создано для уменьшения шума от кулеров компьютера и контроле температур в системном блоке на LCD дисплее. Включает в себя…
Просмотров: 3959

Индикатор интенсивности работы компьютера (AT89C2051, asm) 28.08.2010
Идея создания этого устройства пришла после того, как в компьютере начали разом «стучать» оба жестких диска, причиной чего, как…

Просмотров: 3978

Регулятор оборотов 12V вентилятора на DS18B20 (ATtiny13, C) 01.07.2009
Взял все вентиляторы из своего компа и попробовал при каком напряжении они стартуют. Получилась довольно печальная картина: некоторые…
Просмотров: 12234

Подключение знакосинтезирующего LCD 4×16 к USB (AT90S2313, C) 01.07.2009
Данный проект представляет из себя LCD дисплей 4×16 подключаемый к USB. Проект реализован на довольно дешёвом и доступном МК AT93S2313 формы Atmel.
Просмотров: 3037

Управление большим количеством нагрузок через USB/COM порт (PIC18F252, C) 15.02.2009
Цель устройства — обеспечить контроль большого числа цифровых нагрузок через компьютер. Основные применение — автоматическое…
Просмотров: 5722

Стрелочный индикатор загрузки центрального процессора (AT90S2313, C) 09.08.2008

Драйвер берет значение текущей загрузки ЦП и передает его в СОМ порт. К СОМ порту подключен контроллер, принимающий значения текущей…
Просмотров: 4559

Цифровая паяльная станция своими руками (ATmega8, C) 27.05.2012
Состав: ATmega8, LM358, IRFZ44, 7805, мост, 13 резисторов, один потенциометр, 2 электролита, 4 конденсатора, трехразрядный светодиодный семисегментный…
Просмотров: 46060

Переделка ультразвуковой ванночки Ya Xun YX2000A (ATtiny2313, C) 12.03.2011
Перед покупкой уз-ванночки я долго бегал по городу и заходил в сервисные центры, где ремонтируют мобилки, чтобы узнать, какими. ..
Просмотров: 5415

Измеритель емкости и индуктивности (ATtiny15, asm) 19.02.2011
Описание опубликовано в журналах «Радио» № 7 за 2004 г., стр. 26, 27 Измеритель LC и «Радиолюбитель» № 8 за 2005 г., стр. 35…37 Измеритель…

Просмотров: 7878

Тестер для LAN кабеля (ATtiny2313, asm) 02.11.2010
Очень простой но практичный тестер для LAN кабелей. Проверяет тип кабеля (прямой или кросс), а так же возможные неисправности. Фото…
Просмотров: 6712

Цифровой осциллограф на микроконтроллере AVR (ATmega32, C) 01.11.2010
Несколько месяцев назад, во время сёрфинга в интернете, я наткнулся на осциллограф на микроконтроллере PIC18F2550 и графическом дисплее на…
Просмотров: 11409

Частотомер на AVR микроконтроллере (ATmega16, C) 11.10.2010
Частотомер 4-110 МГц. Изначально разработан для измерение частоты и подсчёта импульсов (за 1сек.) при разработке цифровых устройств, но. ..
Просмотров: 4204

Микроконтроллерный сверлильный станок для печатных плат (ATtiny13, C) 11.10.2010

Травить платы мы уже научились, теперь надо сверлить отверстия. Можно ручной дрелью, можно электродрелью, можно станком… Электродрелью…
Просмотров: 17212

Блок питания 3-20В, 0.1-10А (ATmega8, C) 12.01.2010
Без чего не может обойтись не один радиолюбитель? Правильно — без ХОРОШЕГО блока питания, а ещё лучше ХОРОШЕГО ДВУХКАНАЛЬНОГО блока…
Просмотров: 25935

Микроконтроллерный частотомер с LCD индикатором (ATmega8515, asm) 09.08.2008
Принцип работы частотомера хорошо известен. Подсчитав число периодов входного сигнала за известное время, он приводит его к секундному…
Просмотров: 4339

Таймер для паяльника (ATmega16, C) 09.08.2008
Многие из нас сталкивались с прогоранием жала паяльника из-за того, что забыли выключить после завершения заботы. Так же горячий. ..
Просмотров: 3275

Цифровая паяльная станция своими руками (v1.0) (ATmega8, C) 09.08.2008
Начать нужно с того, что однажды я озадачился приобретением паяльной станции, ибо «вечные» жала портятся от перегрева, а мой…
Просмотров: 11425

Цифровая паяльная станция своими руками (v2.0) (ATmega8, C) 09.08.2008
Это вторая версия статьи «Цифровая паяльная станция своими руками» Начать нужно с того, что однажды я озадачился приобретением…
Просмотров: 7620

Паяльная станция на микроконтроллере с PID регулятором температуры (ATmega8) 09.08.2008
Цифровая паяльная станция на микроконтроллере представляет собой по сути ПИД (Пропорционально — Интегрально — Дифференциальный)…
Просмотров: 11809

Mega-Генератор (ATmega16, C) 09.08.2008
Попросили меня как-то на работе (автосервис) организовать генератор для проверки различных электроклапанов, инжекторов, катушек.

..
Просмотров: 9447

Измеритель емкости и частотомер на AVR микроконтроллере (ATmega8, C) 09.08.2008
Предыстория данного проекта такая… Нашел я в интернете одну статейку китайского разработчика, в которой описывалось устройство…
Просмотров: 12589

Цифровой КСВ метр на микроконтроллере (ATmega8) 09.08.2008
Цифровой автоматический КСВ метр обеспечивает быстрый пересчет Коэффициента Стоячей Волны в автоматическом режиме. Этот прибор…
Просмотров: 5435

Вольтметр и амперметр на микроконтроллере для лабораторного блока питания (ATmega8) 09.08.2008
Не так давно я задался целью сделать себе для работы лабораторный источник питания. Долго думал как реализовать с помощью ШИМ и мощных…
Просмотров: 16306

Двухканальный стабилизированный диммер (с подробнейшим описанием) (ATmega16, asm) 03.08.2013
1. ОБЩИЕ СВЕДЕНИЯ 1.1. Введение Несмотря на бурное развитие сверх ярких светодиодов, в широкой продаже пока не появились светодиодные. ..
Просмотров: 5793

Cхемотехника и программирование устройств фазового регулирования (ATtiny2313, C) 24.11.2011
Кто из вас не хотел изготовить себе сенсорный диммер с возможностью дистанционного управления светом? Наверное, многие. Так вот и я…
Просмотров: 6162

Цифровой инклинометр (акселерометр) MMA7260Q (ATmega32, AD7799, C) 10.06.2011
Инклинометр — устройство, предназначенное для измерения угла наклона различных объектов, относительно гравитационного поля…
Просмотров: 5869

Динамическая индикация индикатора по последовательной шине (ATmega8, 74HC595, C) 17.02.2011
Девяти разрядный семисегментный индикатор с последовательной шиной выполнен на двух микросхемах 74HC595D. Индикатор стоял в…
Просмотров: 6110

Использование графического LCD WG12864A (ATmega8, C) 25.12.2010
Наряду с символьными ЖК, современные производители выпускают разнообразные графические индикаторы. Если у символьных, как правило,…
Просмотров: 5004

Применение семи сегментных LED модулей HT1611, HT1613, МТ10Т7-7 (asm) 24.12.2010
Практически любое микроконтроллерное устройство имеет те или иные устройства индикации. В простейшем случае это всего несколько…
Просмотров: 5295

Шаговые двигатели — Stepper motors (AT90S2313, asm) 24.12.2010
Шаговые двигатели уже давно и успешно применяются в самых разнообразных устройствах. Их можно встретить в дисководах, принтерах,…
Просмотров: 20090

Подключаем тачскрин к AVR — The AVR based USB HID Touchscreen Mouse (ATmega168, C) 19.11.2010
Примечание от администрации сайта eldigi.ru. Данная статья является поучительным примером по подключению резистивного сенсорного экрана…
Просмотров: 5284

LCD2USB — подключение LCD индикатора к компьютеру через USB (ATmega8, C) 04.10.2010
Цель LCD2USB — подсоединить текстовые дисплеи на основе контроллера HD44780 к персональным компьютерам (PC) через USB. LCD2USB разрабатывался как…
Просмотров: 6727

Приёмник RC5 на AVR контроллере (ATmega16, C) 25.09.2009
На рисунке сверху — структура посылки передатчика. По первым двум стартовым битам вычисляется период Р. Затем, как видно из рисунка,…
Просмотров: 3276

Подключение знакосинтезирующего LCD 4×16 к USB (AT90S2313, C) 01.07.2009
Данный проект представляет из себя LCD дисплей 4×16 подключаемый к USB. Проект реализован на довольно дешёвом и доступном МК AT93S2313 формы Atmel….
Просмотров: 3037

Управление большим количеством нагрузок через USB/COM порт (PIC18F252, C) 15.02.2009
Цель устройства — обеспечить контроль большого числа цифровых нагрузок через компьютер. Основные применение — автоматическое…
Просмотров: 5722

Музыкальный Звонок на MMC/SD карте (ATmega32, C) 17.03.2008
Простые однотональные мелодии на сегодняшний день уже не могут вызвать восторга у благодарных слушателей. За примерами далеко ходить…
Просмотров: 9378

Двухканальный стабилизированный диммер (с подробнейшим описанием) (ATmega16, asm) 03.08.2013
1. ОБЩИЕ СВЕДЕНИЯ 1.1. Введение Несмотря на бурное развитие сверх ярких светодиодов, в широкой продаже пока не появились светодиодные…
Просмотров: 5793

15-ти канальный управляемый диммер (ATmega8) 20.05.2011
В наш повседневный быт всё чаще входят различные интеллектуальные системы управления. Стиральные машинки давно сами стирают и сушат,…
Просмотров: 7718

Пульт дистанционного управления для цифровых зеркальных камер (ATtiny12, asm) 02.12.2010
Некоторые модели цифровых фотокамер имеют возможность дистанционного управления с помощью ИК-лучей. Дистанционное управление…
Просмотров: 4738

15-ти канальная система инфракрасного дистанционного управления (ATmega8) 26.10.2010
​ Основные возможности разработанного модуля дистанционного управления: · 15 выходов для подключения нагрузок; ·. ..
Просмотров: 4086

Универсальное устройство: часы, термометр, система удалённого управления (ATmega16) 01.08.2010
Устройство “Universal device” (Универсальное устройство) содержит в себе функции нескольких устройств, которые сильно облегчают жизнь…
Просмотров: 8069

Часы на микроконтроллере ATmega16 (ATmega16, C) 26.01.2010
От администрации сайта eldigi.ru Автор конструкции предоставил только схемы, исходники и проект для симуляции в Proteus-e. За что ему…
Просмотров: 6981

Сенсорный регулятор освещения с дистанционным управлением (ATtiny2313) 08.03.2009
Предлагаемое устройство — один из вариантов микроконтроллерных регуляторов яркости ламп накаливания, конструкции которых можно…
Просмотров: 7334

Многоканальная система дистанционного управления или «Умный дом» (ATmega16) 24.01.2009
Как говорится, лень – двигатель прогресса. Возможно, поэтому всё большее распространение получают системы дистанционного. ..
Просмотров: 9479

Часы на ATmega8 (ATmega8, C) 21.06.2008
Два датчика температуры DS18B20 (дома и на улице). 5 будильников. Отсрочка сигнала, если будильник не отключить, срабатывает примерно…
Просмотров: 15545

Домашняя метеостанция с часами, календарем и будильниками (ATmega32, C) 21.04.2008
Предлагаемый прибор отличается от аналогов использованием современной базы, исчерпывающим в домашних условиях набором измеряемых…
Просмотров: 9009

«МультиПульт» — расширь возможности своего пульта! (ATtiny2313) 13.04.2008
Данная конструкция будет интересна прежде всего владельцам ТВ тюнеров на чипсете Philips SAA7134 и SAA7135. Теоретически, любой пульт от таких ТВ…
Просмотров: 3179

Музыкальный Звонок на MMC/SD карте (ATmega32, C) 17.03.2008
Простые однотональные мелодии на сегодняшний день уже не могут вызвать восторга у благодарных слушателей. За примерами далеко ходить…
Просмотров: 9378

Регулятор яркости лампы накаливания на микроконтроллере (AT89C2051, asm) 01.03.2008
В этом проекте рассказывается о микроконтроллерном регуляторе яркости лампы накаливания (далее просто регулятор). Регулятор…
Просмотров: 6275

Регулятор освещения с дистанционным управлением (AT90S2313, C) 22.01.2008
Предлагаемый прибор умеет не только включать и выключать освещение, но и регулировать его яркость. Он имеет и дополнительную функцию…
Просмотров: 4698

Часы будильник термометр и ИК-ДУ (AT89C4051, C) 18.01.2008
Предлагаемое вниманию читателей устройство выполнено на современной элементной базе и отличается от ранее опубликованных в журнале…
Просмотров: 3661

Счетчик на микроконтроллере (AT90S2313, asm) 06.01.2008
Во многих устройствах бытовой техники и промышленной автоматики сравнительно недавних лет выпусков установлены механические. ..
Просмотров: 5256

Блок жизнеобеспечения аквариума (AT89C2051, asm) 08.12.2007
Блок жизнеобеспечения аквариума представляет собой функционально законченный блок, который управляет включением компрессора,…
Просмотров: 3728

Продвинутые радио-часы/будильник с термометрами на графическом LCD (ATmega8515) 29.11.2007
Представленное устройство не слишком рентабельно для серийного производства, но представляет собою весьма неплохой пример…
Просмотров: 6303

Датчик утечки газа на микроконтроллере (ATtiny13, C) 10.11.2010
В данной статье представлен датчик утечки газа на микроконтроллере ATtiny13, а в качестве сенсора газа применён MQ-4 фирмы HANWEI ELETRONICS. Это…
Просмотров: 6369

GSM сигнализация для автомобиля (ATmega16) 07.10.2010
Устройство предназначено для своевременного оповещения автовладельца о взломе автомобиля. Сигнализация контролирует двери, окна,. ..
Просмотров: 10390

Контроллер доступа «Tiny KTM» (AT90S2343) 09.08.2008
Контроллер доступа «Tiny KTM» — проще схемы не бывает! Контроллер предназначен для ограничения и контроля доступа в помещения, такие…
Просмотров: 3481

Электронный замок с ключами iButton (AT89C2051, asm) 09.08.2008
Некоторое время тому назад появился проект «ИМИТАТОР TOUCH-MEMORY DS1990A», т.е. отмычка. Теперь Вашему вниманию предлагается замок к зтой…
Просмотров: 4866

Если Вы потеряли Touch Memory… (AT89C2051, asm) 09.08.2008
Последнее время во многих организациях, а порой и дома, появились дверные замки, ключом к которым является таблетка Touch Memory фирмы DALLAS….
Просмотров: 4145

Имитатор touch-memory DS1990A (AT89C2051, asm) 09.08.2008
Этот проект является развитием проекта Если Вы потеряли Touch Memory… Имитатор touch-memory DS1990A, который предлагается Вашему вниманию, способен…
Просмотров: 4480

Телефонный охранный сигнализатор (AT90S2313, asm) 09.08.2008
Передать тревожный сигнал на некоторое расстояние можно различными способами. В случае охраны квартиры, когда расстояние до хозяина…
Просмотров: 2606

Автономная охранная система на базе ТМ (ATmega8) 09.08.2008
Автономные системы охраны получили достаточно широкое распространение в нашей стране из-за простоты и дешевизны. Классическая…
Просмотров: 5411

SignALL — GSM сигнализация всем (ATtiny2313) 09.08.2008
“SignALL” – GSM сигнализация (далее по тексту “устройство”), предназначена для охраны помещений, таких как квартиры, дачи,…
Просмотров: 8581

Контроллер доступа Visual KTM (ATiny2313) 09.08.2008
Контроллер предназначен для ограничения и контроля доступа в помещения, такие как жилая комната, рабочий кабинет и т.д., с количеством…
Просмотров: 3566

Система оповещения GSM-click (ATmega8, C) 09.08.2008
Предлагаемое устройство предназначено для оповещения о произошедшем событии по GSM каналу, проще говоря СМС-кой. Подключаем его…
Просмотров: 4479

Зарядное устройство для NiMh и NiCd аккумуляторов AA AAA (ATmega8, C) 29.08.2010
Зарядное устройство предназначено для зарядки NiMh и NiCd аккумуляторов (АА AAA) методом быстрого заряда. В принципе сейчас много микросхем…
Просмотров: 7059

Повышающий преобразователь с PID регулятором (ATmega8) 01.04.2010
ПИД регулятор или пропорционально-интегрально-дифференциальный  регулятор – это самый совершенный из существующих типов…
Просмотров: 5079

Блок питания 3-20В, 0.1-10А (ATmega8, C) 12.01.2010
Без чего не может обойтись не один радиолюбитель? Правильно — без ХОРОШЕГО блока питания, а ещё лучше ХОРОШЕГО ДВУХКАНАЛЬНОГО блока…
Просмотров: 25935

Устройство защиты от опасных напряжений (трёхфазное) SOKOL UZP-3F (ATmega8) 08.06.2009
Часто причиной выхода из строя дорогостоящего оборудования, в первую очередь промышленного, является отклонение сетевого напряжения…
Просмотров: 3601

Устройство защиты от опасных напряжений в электросети SOKOL UZP-1F (ATmega8) 08.05.2009
Основные возможности устройства: Изменение и индикация на двустрочном ЖК-дисплее действующего значения напряжения в диапазоне…
Просмотров: 2795

Вольтметр и амперметр на микроконтроллере для лабораторного блока питания (ATmega8) 09.08.2008
Не так давно я задался целью сделать себе для работы лабораторный источник питания. Долго думал как реализовать с помощью ШИМ и мощных…
Просмотров: 16306

Моддинг блока питания (ATmega8) 25.04.2008
Наверняка нет радиолюбителя, который бы не делал для собственных нужд лабораторный блок питания (БП). Сложность таких устройств может…
Просмотров: 5918

Два микроконтроллерных регулятора мощности (AT89C2051, asm) 30.01.2008
Рис. 1 Для управления инерционной нагрузкой часто применяются тиристорные регуляторы мощности, работающие по принципу подачи на…
Просмотров: 3950

Повышающий преобразователь напряжения на AVR (AT90S2313, asm) 15.01.2008
История создания этого девайса такова: некий господин N, экстремал в годах и большой любитель сплава по горным рекам, утопил в одном из…
Просмотров: 3819

Зарядное устройство для малогабаритных аккумуляторов (AT89C2051, MCP3208, asm) 08.12.2007
Зарядное устройство предназначено для зарядки любых малогабаритных аккумуляторов емкостью до 2А*Ч. Ток выдаваемый зарядным…
Просмотров: 3781

USB программатор микроконтроллеров AVR / 89S совместимый с AVR910 (ATmega8, C) 22.01.2012
Схема программатора приведена на рисунке ниже. Предохранитель F1 служит для защиты линий питания порта USB от случайного замыкания по…
Просмотров: 10641

USB, COM отладчик JTAG ICE (ATmega16) 27.04.2010
Иногда, программа зашитая в микроконтроллера работает совсем не так как надо её создателю. Тогда наступает стадия отладки (Отлаживать…
Просмотров: 3951

Параллельный программатор для микроконтроллеров AVR (ATmega16) 16.02.2008
Поводом для создания данного устройства послужило появление новых чипов AVR поддерживающих отладку по протоколу debugWIRE. Так как он не…
Просмотров: 13746

USB параллельный программатор для микроконтроллеров AVR (ATmega16) 16.02.2008
Этот программатор является продолжением «Параллельного программатора для микроконтроллеров AVR»  Предлагаемый вариант…
Просмотров: 6211

Пульт дистанционного управления для цифровых зеркальных камер (ATtiny12, asm) 02.12.2010
Некоторые модели цифровых фотокамер имеют возможность дистанционного управления с помощью ИК-лучей. Дистанционное управление…
Просмотров: 4738

Cхемотехника и программирование устройств фазового регулирования (ATtiny2313, C) 24.11.2011
Кто из вас не хотел изготовить себе сенсорный диммер с возможностью дистанционного управления светом? Наверное, многие. Так вот и я…
Просмотров: 6162

15-ти канальный управляемый диммер (ATmega8) 20.05.2011
В наш повседневный быт всё чаще входят различные интеллектуальные системы управления. Стиральные машинки давно сами стирают и сушат,…
Просмотров: 7718

PWM (ШИМ) управление LED матрицей 8х8 через регистр сдвига 74HC595 (ATmega8, C) 23.01.2011
Есть матрица 8х8, одноцветная. Всего, соответственно, 16 выходов: 8 на столбцы и 8 на строки. Проблема номер один – понять какой контакт чем…
Просмотров: 5629

Светодиодное табло «Волшебная палочка» (AT89C2051/PIC18C84, asm) 06.11.2010
За этим замысловатым названием кроется очень интересная конструкция на PIC-контроллере. Главное достоинство — это оригинальность идеи. В…
Просмотров: 4522

Бегущая строка на микроконтролере (AT90S2313) 21.08.2008
Это устройство может использоваться как гирлянда на праздниках, вечеринках. Для вывода поздравительных сообщений. А так же везде, где…
Просмотров: 5407

Регулятор яркости лампы накаливания на микроконтроллере (AT89C2051, asm) 01.03.2008
В этом проекте рассказывается о микроконтроллерном регуляторе яркости лампы накаливания (далее просто регулятор). Регулятор…
Просмотров: 6275

Многоканальный USB-Термометр (ATmega8, C) 27.10.2011
Когда то давно я написал статью о том, как сделать USB Термометр и разместил ее на двух сайтах. Девайс очень простой, но спустя пару дней,…
Просмотров: 5188

Уменьшение шума от кулеров, с выводом температур на LCD (ATmega8, C) 28.08.2010
Устройство создано для уменьшения шума от кулеров компьютера и контроле температур в системном блоке на LCD дисплее. Включает в себя…
Просмотров: 3959

USB Термометр (ATmega8, C) 10.03.2010
В качестве микроконтроллера, был выбран ATmega8 (такие, как ATtiny8/48 не захотел использовать по причине их дискретности в некоторых городах)….
Просмотров: 6756

Термостат на ATtiny2313 и DS18B20 (ATtiny2313, C) 13.01.2010
Данная конструкция стала прямым продолжением конструкции «Термометр на ATtiny2313 и DS18B20». Как там упоминалось, хотелось…
Просмотров: 9699

Улучшенный термостат на ATtiny2313 и DS18B20 (ATtiny2313, C) 13.01.2010
По многочисленным просьбам дорабатываю конструкцию «Термостат на ATtiny2313 и DS18B20». Теперь умеет: Измерение температуры от -55°С до…
Просмотров: 26374

Термометр на ATtiny2313 и DS18B20 (ATtiny2313, C) 12.01.2010
В Интернете есть куча схем термометров на AVR, но как всегда хочется чего-то своего.. Да и мозги размять тоже следует. Этот термометр был…
Просмотров: 14058

Цифровой термометр на DS18B20 (ATmega8, C) 18.10.2009
Цифровой термометр предназначен для измерения температуры с точностью до одной десятой доли градуса Цельсия*. Цифровой термометр…
Просмотров: 5835

Регулятор оборотов 12V вентилятора на DS18B20 (ATtiny13, C) 01.07.2009
Взял все вентиляторы из своего компа и попробовал при каком напряжении они стартуют. Получилась довольно печальная картина: некоторые…
Просмотров: 12234

Многофункциональные часы-термостат с дистанционным управлением (ATmega8) 08.03.2009
Возникла у меня потребность в настольных часах-термометре, чтобы помимо времени можно было узнать температуру на улице и в доме. В…
Просмотров: 4451

Термометр — меньше не бывает (ATmega8) 18.05.2008
Предлагается схема на микроконтроллере ATMega8 для измерения температуры в диапазоне от −55° C до +127° C с точностью не хуже +-0,5° C. В…
Просмотров: 6523

Термометр с ЖКИ и датчиком DS18B20 (ATtiny15) 01.03.2008
В технической литературе и в Интернете можно найти множество описаний и схем цифровых термометров. В большинстве конструкций…
Просмотров: 4153

Термостат (AT90S2313, C) 15.02.2008
Прибор был создан по просьбе одного знакомого для контроля температуры в комнате — включения отопителя / вентилятора при достижении…
Просмотров: 4386

Термостат на DS18B20 и ATmega8 (ATmega8, C) 27.01.2008
В схеме, можно применять светодиодные семисегментные индикаторы с общим катодом или анодом (2 прошивки). Датчик температуры DS18B20….
Просмотров: 15452

Простой термометр на DS18B20 (ATtiny2313, C) 26.01.2008
Это простой термометр на основе термо датчика DS18B20 и мк ATtiny2313 (или AT90S2313) выводящий информацию на 7-сегментный ЖКИ – модуль на основе…
Просмотров: 8168

Схемы, устройства и проекты на микроконтроллерах AVR

На данной странице представлена карта статей по микроконтроллерам AVR, опубликованным на нашем сайте «Мир микроконтроллеров». По мере добавления статей данной тематики данная карта статей также будет дополняться. Микроконтроллеры семейства AVR в настоящее время являются одними из самых популярных микроконтроллеров. Они … Читать далее →

Микроконтроллер ATtiny85 является удобной и сравнительно мощной альтернативой старшим моделям микроконтроллеров семейства AVR. Его применение особенно оправданно в тех случаях, когда вы стремитесь к минимизации размеров вашего устройства. Микросхема ATtiny85 содержит 8 контактов – 6 контактов ввода/вывода (включая Reset) и … Читать далее →

ATtiny – это серия самых маленьких микроконтроллеров из семейства AVR. Эти микроконтроллеры могут использовать большинство библиотек, доступных для платформы Arduino. ATtiny85 – это 8-пиновый 8-битный микроконтроллер семейства AVR. Его исключительно малый размер и низкое энергопотребление делают его чрезвычайно удобным для … Читать далее →

В этой статье мы рассмотрим создание портативного счетчика шагов (шагомера) на основе микроконтроллера AVR ATtiny85, акселерометра и гироскопа MPU6050, и OLED дисплея. Питание на шагомер будет подавать от простой батарейки на 3V, что позволяет сделать его достаточно компактным и удобным … Читать далее →

GPS модули широко используются в современной электронике для определения местоположения, основываясь на координатах долготы и широты. Системы мониторинга транспортных средств, часы GPS, системы предупреждения о чрезвычайных происшествиях, системы наблюдения – это лишь небольшой список приложений, в которых может потребоваться технология … Читать далее →

Как показывают многочисленные исследования в современном мире люди более склонны доверять машинам нежели другим людям. Сейчас, когда в мире активно развиваются такие технологии как искусственный интеллект, машинное обучение, чат-боты, синергия (совместная деятельность) между людьми и роботами с каждым годом все … Читать далее →

Двигатели постоянного тока относятся к числу наиболее часто используемых двигателей. Их можно встретить где угодно – начиная от простейших конструкций до продвинутой робототехники. В этой статье мы рассмотрим подключение двигателя постоянного тока к микроконтроллеру ATmega16 (семейство AVR). Но сначала немного … Читать далее →

Принцип действия датчиков Холла основан на так называемом «эффекте Холла», открытым Эдвином Холлом (Edwin Hall) в 1869 году. Этот эффект гласит: «эффект Холла основан на явлении возникновения поперечной разности потенциалов (называемой также холловским напряжением) при помещении проводника с постоянным током … Читать далее →

Широтно-импульсная модуляция (сокр. ШИМ, от англ. PWM — Pulse Width Modulation) является технологией, позволяющей изменять ширину импульсов в то время как частота следования импульсов остается постоянной. В настоящее время она применяется в разнообразных системах контроля и управления, а также в … Читать далее →

ATmega16 (семейство AVR) является дешевым 8 битным микроконтроллером и имеет достаточно большое число интерфейсов ввода-вывода общего назначения. Он поддерживает все часто используемые в настоящее время протоколы связи такие как UART, USART, SPI и I2C. Он достаточно широко применяется в робототехнике, … Читать далее →

Автоматическое зарядно-тренирующее устройство и измеритель ёмкости для 12V герметичных аккумуляторов (ATMEGA8)

Приветствую всех читателей Датагор.ру и любителей электроники!
Сегодня я хочу продемонстрировать вам устройство, которое зародилось благодаря статье Александра (koan51) о способе проверки ёмкости 12-вольтовых аккумуляторных батарей. Прочитав всё вдоль и поперёк, я решил устройство немного «допилить» и «отполировать» под себя.

Меняю PIC контролера на любимый AVR, 7-сегментные индикаторы на знаковый LCD, ну и дорабатываю программный код в плане расширения функционала касаемо калибровок и прочих мелочей.

Ну-с, товарищи паятели, берём статью, железяки, паяльник и поехали! :bye:

Содержание / Contents

Я давно хотел собрать прибор для проверки 12В/7Аh аккумуляторных батарей (АКБ), т.к. на работе их накопилось немало, а качество закупаемых батарей не всегда доходит до приемлемого уровня. И вдруг я наткнулся на датагорскую статью от koan51. Идея прибора проста: заряжать и разряжать батарею фиксированным током, измеряя время в процессе работы при контроле напряжения. Зная все три величины, можно измерить ток по простой формуле — время, умноженное на ток.
Набросал схему, основываясь на статье Александра.
Как видно по схеме, управляющие/контролирующие цепи тока заряда и разряда АКБ остались прежними, только собраны они на регуляторах LM317 вместо LM7805 и MOSFET ключи Q1, Q3 применены несколько иной марки.

Токами зарядки и разрядки можно управлять резисторами R1, R9. При данных на схеме сопротивлениях в 1,25 Ом, ток через стабилизатор составит около 1 Ампера. Я нашёл в магазине лишь 1,5 Омные резисторы, которые выдали мне 833 мА, его и запишем в прибор, т.к. в программе заложен функционал для калибровки всех токов, но об этом позже.

Элементы U1, U2, U3 прикреплены на радиатор с маленьким вентилятором, который питается от двух ножек МК в 5 В (решил, что особо сильно крутить кулер не нужно, нагрев радиатора не такой сильный, да и шума много будет, а две ноги от МК с запасом покрывают максимально допустимый нагрузочный на порт МК ток).

Питание прибора осуществляется от импульсного БП, который ранее обеспечивал питанием какой-то небольшой ЖК монитор. Однако мне пришлось поднять ему напряжение, немного изменив делитель напряжения на TL431, т.к. он выдавал всего 19 В (3А) и также понадобилось перепаять выходные конденсаторы на 35 В, после чего он стал выжимать все 24 В на ура!

Сам микроконтроллер ATMEGA8 питается стабилизированным в 5 В напряжением от 7805 (U3). Защитный диод D1 служит для предотвращения протекания тока от АКБ обратно в импульсник при отсутствии внешнего источника питания.

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

Также была добавлена индикации состояния ключей (идёт зарядка – горит зелёный или разрядка – горит красный) состоящая из двух светодиодов.

Управление реализовано на трёх кнопках «MODE», «START» и «RESET». Кнопкой «MODE» можно переключать шаги работы с 1 до 4, кнопка «START» служит для начало проведения замеров (во время проведения замеров, при нажатии данной кнопки, прибор покажет историю токов на каждом шаге), а кнопка «RESET» (её нужно удерживать пару секунд) сбрасывает программу устройства, в начальное состояние, очищая также историю.Логика работы проста и состоит из 4 этапов:
STEP 1 — разряд АКБ до напряжения 10.7В;
STEP 2 — заряд АКБ до напряжения 15В;
STEP 3 — разряд АКБ до напряжения 10.7В;
STEP 4 — заряд АКБ до напряжения 15В.
 — На каждом этапе, происходит измерение времени.
 — Контролируется напряжение на АКБ.
 — Можно пропустить не нужные шаги, перейдя сразу на 2, 3 или 4 шаг.
 — Основным показателем состояния АКБ будет емкость, измеренная на третьем шаге.

В случае пропадания контакта с АКБ или же короткого замыкания клемм, прибор остановит свою работу и высветит «ERROR» ошибку.

Программу я изначально старался писать как можно более универсальной. Прочитав про реализацию калибровки на основе EEPROM из статьи Александра, я решил завести специальное меню калибровки т.к. LCD позволяет всё красиво нарисовать и показать.
 — Максимальное время таймера: до 100 часов.
 — Диапазон калибровки напряжений: 3.0 – 20.0 В, шаг 100 мВ.
 — Диапазон калибровки тока заряда/разряда: 100 – 10 000 мА, шаг 1 мА.
 — Максимальный ток заряда/разряда: ограничен LM317, в 1,5А. (можно добавить мощный транзистор с увеличенными по мощности резисторами R1 и R9, который увеличит его вплоть до 10А). Так как я любитель упаковывать все детали в как можно меньший корпус, мне пришла на ум идея опробовать «буржуйский» способ производства корпусов из текстолита Алексея (AlexD). :yahoo:

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


Первые шаги разработки или прототип устройства, замеры все вручную.

Прошивка прототипа программы в демо-плату и поиск багов.

Будущие модули устройства, кулер, контроллер ATMEGA8 и импульсник.

Все модули в сборе, пришла пора делать корпус.

Плата контроллера, силовые дорожки пропаял оловом, по понятной причине.

Напилил листы текстолита и скрепил временными точками.

Вроде всё уместилось, компактно, как я люблю.

Просверлил отверстия для вентиляции.

У меня закончился текстолит, пришлось использовать гетинакс на лицевую часть.

Пропаял все швы феном и понял, лучше бы я сделал пропайку оловянными точками, корпус немного повело дугой.
Покрасил всё это дело обычной краской из баллончика.

Внутри стало более уютнее всё.

И лицевую крышку также покрыл краской.

Корпус готов!

Вытащил диэлектрик со старого блока питания и придал ему форму под корпус.

Прикрепил на ножку импульсник, подложив диэлектрик.

Также прикрепил на лицевую часть оставшиеся компоненты устройства.

Кулер вписался как родной.

Изначально я планировал использовать один двухцветный светодиод, но потом досверлил отверстия и заменил их на два отдельных, слева разрядка, справа зарядка.

Радиатор с кулером нашёл, грубо говоря, на мусорке, от древнего компа времён динозавров, который подошёл как нельзя лучше.

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

Размеры текстолита для самодельного корпуса:
Лицевая сторона: 64×147 мм.
Торцы: 64×52 мм.
Боковины: 52×147 мм.
Низ: 60×145 мм.

Микроконтроллер ATMEGA8 работает от внешнего кварца на 4,096 МГц. Данная частота выбрана для более точного расчета времени.
Необходимо выставить соответствующие фьюзы в нём при его прошивке.
Калибровка заключается в измерении тока заряда/разряда АКБ, и внесения значений тока и диапазона напряжений АКБ в энергонезависимую EEPROM память прибора. Суть в том, что резисторы R1, R9 могут отличаться по номиналу друг от друга, следовательно, у каждого режима будет свой ток, поэтому необходимо измерить на месте все токи и внести их в прибор.

1. После сборки всех элементов, подаётся питание на устройство, при этом АКБ отключена от прибора, на экране высветится ошибка «ERROR», говорящая о том, что батарея не найдена, это нормально.

2. Подключаем батарею последовательно с амперметром к контактам прибора и нажимаем на кнопку «START», записывая на бумажку ток разряда АКБ.

3. Сбрасываем устройство удержанием кнопки «RESET» в течение пары секунд и с помощью кнопки «MODE», выбираем «STEP 2» т.е. зарядка.

4. Нажимаем «START» и замеряем ток заряда АКБ.

5. Отключаем питание прибора от сети вообще.

6. Зажимаем кнопки «MODE» и «START», после подаём питание прибору.

7. Высветится надпись «CALIBRATING MODE», отпускаем все кнопки.

8. Далее вводим в прибор измеренные значения тока заряда и разряда АКБ, и необходимые значения напряжений заряда/разряда АК (кнопка «MODE» переключает меню, кнопки «START» и «RESET» служат как +/- значений.)

9. После 5-го по счёту нажатия кнопки «MODE», прибор пискнет и перейдёт в рабочий режим, сохранив в своей памяти EEPROM введённые данные.

Примечание: в режиме калибровки, при настройке тока, кнопки +/- можно зажимать на пару секунд, они перейдут в режим быстрого изменения значений, примерно 100 мА в секунду.

На этом калибровка закончена, можно выдохнуть.

▼ Файловый сервис недоступен. Зарегистрируйтесь или авторизуйтесь на сайте.

▼ Файловый сервис недоступен. Зарегистрируйтесь или авторизуйтесь на сайте.

▼ Файловый сервис недоступен. Зарегистрируйтесь или авторизуйтесь на сайте.

▼ Файловый сервис недоступен. Зарегистрируйтесь или авторизуйтесь на сайте.

Осталось сделать лицевую наклейку, но руки так и не дошли до неё. В целом, работой прибора я остался доволен, однако думаю в будущем собрать модуль для данного прибора, с большим радиатором внутри, дабы повысить токи, скажем, до 5 Ампер, т.к. время проверки одной батареи занимает весь день, а их может быть с десяток штук под рукой.

На этом всё, спасибо за внимание!

Камрад, рассмотри датагорские рекомендации

🌻 Купон до 1000₽ для новичка на Aliexpress

Никогда не затаривался у китайцев? Пришло время начать!
Камрад, регистрируйся на Али по нашей ссылке. Ты получишь скидочный купон на первый заказ. Не тяни, условия акции меняются.

🌼 Полезные и проверенные железяки, можно брать

Куплено и опробовано читателями или в лаборатории редакции.

 

AtMega8 |

27.11.2016
автор Aurel
Нет комментариев

26.02.2014
автор Aurel
Нет комментариев

Рубрики: Инструменты радиолюбителя, Радиолюбительская технология, Устройства своими руками | Тэги: aliexpress, AtMega8, AVR, FM-2028, FX-9501, T12, Блок питания, Корпус, паяльник | Ссылка

28.01.2014
автор Aurel
комментариев 16

08.01.2014
автор Aurel
комментариев 47

Рубрики: Инструменты радиолюбителя | Тэги: AtMega8, AVR, avr usb, AVR910, ebay, USB, usbasp, usbasp avr, Инструменты радиолюбителя, Интернет магазины, программатор avr usb | Ссылка

22.12.2013
автор Aurel
комментария 4

10.06.2013
автор Aurel
Нет комментариев

28.05.2013
автор Aurel
Нет комментариев

12.05.2013
автор Aurel
Нет комментариев

30.04.2013
автор Aurel
1 комментарий

Представленное устройство предназначено для измерения входного напряжения амплитудой от -10 до +10В. Измеренный уровень сигнала в цифровом виде передаётся на ПК по USB. Питается устройство непосредственно от шины USB. Устройство оснащено светодиодными индикаторами индицирующими передачу данных в ПК, приём данных … Продолжить чтение →

Рубрики: Устройства своими руками | Тэги: AtMega8, AVR, USB, Ассемблер, Вольтметр, Измерения, Микроконтроллер, Устройства своими руками | Ссылка

24.03.2013
автор Aurel
комментариев 9

Меня попросили изготовить устройство для организации игр, в которых требовалось быстрее остальных дать правильный ответ. (Аналогична игре «Угадай мелодию»). Данное устройство отображает на семисегментном  дисплее номер одной из четырёх кнопок нажатой первой. Это моё первое устройство на микроконтроллере AVR, которое состоит из 5-ти … Продолжить чтение →

Рубрики: Устройства своими руками | Тэги: AtMega8, AVR, Ассемблер, Микроконтроллер, Семисегментный индикатор, Устройства своими руками | Ссылка

ATmega8 в среде разработки Arduino

Для работы с микроконтроллером ATmega8 или с Arduino устройством на ATmega8 в среде разработки Arduino программу Arduino необходимо настроить. Нужно добавить в файл hardware/arduino/boards.txt параметры поддерживаемых устройств на микроконтроллере ATmega8.

Возможно, будет необходимо добавить файлы bootloader (загрузчик) в папку hardware/arduino/bootloaders/optiboot.

Микроконтроллер ATmega8 может работать на частоте 0-16МГц при напряжении ~5В, а ATmega8L на частоте 0-8МГц и ATmega8A на частоте 0-16МГц в широких пределах напряжения питания. Это по паспорту, а практически, при напряжении 5В, все микроконтроллеры серии ATmega8 могут работать на частоте 16МГц с внешним кварцевым резонатором и на частотах 8, 4, 2, 1МГц с внутренним генератором.

Существует вариант платы Arduino на микроконтроллере ATmega8, это Arduino NG. Среда разработки Arduino (Arduino IDE) готова к работе с микроконтроллером ATmega8, но только с одним устройством — это плата Arduino NG с микроконтроллером ATmega8 на частоте 16МГц с внешним кварцевым резонатором. Так обстоят дела в Arduino v. 1.0.6. Кроме того, для Arduino NG предлагается не самый оптимальный и главное не удобный bootloader.

Для того, чтобы была возможность программировать микроконтроллеры ATmega8 работающие на разных частотах с кварцевым резонатором и без него необходимо внести изменения в файл hardware/arduino/boards.txt Например, можно добавить в него следующие секции:

# http://optiboot.googlecode.com
# http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik

##############################################################

atmega8o.name=ATmega8 (optiboot 16MHz ext)
atmega8o.upload.protocol=arduino
atmega8o.upload.maximum_size=7680
atmega8o.upload.speed=115200
atmega8o.bootloader.low_fuses=0xbf
atmega8o.bootloader.high_fuses=0xdc
atmega8o.bootloader.path=optiboot50
atmega8o.bootloader.file=optiboot_atmega8.hex
atmega8o.bootloader.unlock_bits=0x3F
atmega8o.bootloader.lock_bits=0x0F
atmega8o.build.mcu=atmega8
atmega8o.build.f_cpu=16000000L
atmega8o.build.core=arduino:arduino
atmega8o.build.variant=arduino:standard

##############################################################

a8_8MHz.name=ATmega8 (optiboot 8 MHz int)
a8_8MHz.upload.protocol=arduino
a8_8MHz.upload.maximum_size=7680
a8_8MHz.upload.speed=115200
a8_8MHz.bootloader.low_fuses=0xa4
a8_8MHz.bootloader.high_fuses=0xdc
a8_8MHz.bootloader.path=optiboot
a8_8MHz.bootloader.file=a8_8MHz_a4_dc.hex
a8_8MHz.build.mcu=atmega8
a8_8MHz.build.f_cpu=8000000L
a8_8MHz.build.core=arduino
a8_8MHz.build.variant=standard

##############################################################

a8_1MHz.name=ATmega8 (optiboot 1 MHz int) 
a8_1MHz.upload.protocol=arduino 
a8_1MHz.upload.maximum_size=7680 
a8_1MHz.upload.speed=9600 
a8_1MHz.bootloader.low_fuses=0xa1 
a8_1MHz.bootloader.high_fuses=0xdc 
a8_1MHz.bootloader.path=optiboot 
a8_1MHz.bootloader.file=a8_1MHz_a1_dc.hex 
a8_1MHz.build.mcu=atmega8
a8_1MHz.build.f_cpu=1000000L 
a8_1MHz.build.core=arduino 
a8_1MHz.build.variant=standard

##############################################################

a8noboot_8MHz.name=ATmega8 (no boot 8 MHz int)
a8noboot_8MHz.upload.maximum_size=8192
a8noboot_8MHz.bootloader.low_fuses=0xa4
a8noboot_8MHz.bootloader.high_fuses=0xdc
a8noboot_8MHz.build.mcu=atmega8
a8noboot_8MHz.build.f_cpu=8000000L
a8noboot_8MHz.build.core=arduino
a8noboot_8MHz.build.variant=standard

##############################################################

Теперь в программе Arduino в меню / появятся следующие устройства:

  • ATmega8 (optiboot 16MHz ext)
  • ATmega8 (optiboot 8 MHz int)
  • ATmega8 (optiboot 1 MHz int)
  • ATmega8 (no boot 8 MHz int)

Первые три устройства на микроконтроллере ATmega8 содержат bootloader, являются Arduino совместимыми и в них непосредственно можно загружать скетчи (программы) из среды разработки Arduino. Четвертое устройство не содержит bootloader, это может быть отдельная микросхема ATmega8. В ATmega8 (no boot 8 MHz int) скетчи из программы Arduino можно загружать через программатор, в том числе и через программатор на базе платы Arduino.

ATmega8 (optiboot 16MHz ext) работает с внешним кварцевым резонатором, остальные устройства с внутренним генератором.

Параметры в файле hardware/arduino/boards.txt определяют fuse биты, путь к файлу загрузчика (bootloader), тип микроконтроллера и его частоту. Fuse биты записываются в микроконтроллер (с загрузчиком или без него) когда вы выбираете пункт меню / . Fuse биты определяют на какой частоте будет работать Ваш микроконтроллер и другие важные параметры, в том числе и такие, от которых зависит его работоспособность, перепрограммируемость и т.д.

Fuse биты НЕ записываются в микроконтроллер когда вы заливаете скетчи. Если в меню / будет выбрано не подходящая платформа то:

  • При загрузке скетчей
    • Не подходящая частота — приводит к изменению скорости работы программ
    • Не подходящий процессор — приводит к неработоспособности программ
  • При записи загрузчика
    • Не подходящая частота — может привести к неработоспособности микроконтроллера в данной системе
    • Не подходящий процессор (fuses) — к блокировке микроконтроллера

Внимание, Ваши не корректные действия могут вывести из строя микроконтроллер для восстановления которого потребуется программатор.

Bootloader для микроконтроллера ATmega8.

Оптимальный bootloader для микроконтроллеров ATmega 8 можно скачать с сайта проекта Optiboot.

Optiboot bootloaders для различных рабочих частот микроконтроллера можно скачать с сайта Конструктор загрузчика.

Bootloaders Optiboot — это не зависимая свободная разработка загрузчиков, признанная разработчиками Arduino. Optiboot предназначен для использования в разных вариантах Arduino и для множества микроконтроллеров Atmel. Основные отличия загрузчика Optiboot от конкурентов — это до четырех раз уменьшенный размер  кода, сокращение бесполезных задержек в работе микроконтроллера, высокая скорость загрузки скетчей с компьютера.

Размещайте файлы bootloaders в программе Arduino в соответствии с тем, что написано в файле hardware/arduino/boards.txt. Например, для устройства ATmega8 (optiboot 16MHz ext) файл загрузчика необходимо поместить в папку hardware/arduino/bootloaders/optiboot50 и имя файла должно быть optiboot_atmega8.hex

4х канальный термометр на Atmega8 и датчиках DS18B20

Прошивка на C и программа — регистратор на DELPHI. Использование COM порта и интерфейса RS-485

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

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

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

Управляющая программа («прошивка») микроконтроллера 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 градуса по Цельсию) и просты в использовании.

Датчики обмениваются информацией с управляющим микроконтроллером по интерфейсу 1-Wire. Это несложный в программировании цифровой последовательный протокол, который, к тому же, поддерживается практически всеми «микроконтроллерными» компиляторами на уровне встроенных библиотек. Так что при использовании такого датчика радиолюбителю не нужно вдаваться в тонкости работы протокола, высчитывать точные временные интервалы, достаточно просто подключить встроенную в компилятор библиотеку и почитать документацию по ее использованию.

Цифровой датчик температуры DS18B20

Связь микроконтроллера с устройствами по шине 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



Печатная плата термометра вид со стороны меди

Печатная плата термометра вид со стороны компонентов

Программирование микроконтроллера

Программирование микроконтроллера

Я программирую микроконтроллеры Atmega8 с помощью дешевого USB программатора USBASP, купленного в Китае на Алиэкспресс, вот такого:

С этим программатором прекрасно работает удобная бесплатная программа 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.

Скачать архив со всеми файлами и исходниками проекта можно по этой ссылке

com0com драйвер и другой софт для работы с COM, UART и RS-232

ВНИМАНИЕ! Файл проекта для симуляции в PROTEUS 8 находится в папке с исходниками прошивки термометра. Файл называется TLoggerMega8.pdsprj Перед запуском симуляции загрузите в модель AtMegf8 файл прошивки. Он в той же папке.



Термометр с самописцем на ATmega8 « схемопедия



Описание устройства

В этом разделе будет разобран проект, в котором AVR придется решать такие характерные для микроконтроллера задачи, как измерение и контроль температуры, кнопочный ввод и индикация показаний, хранение данных в архиве, передача информации в компьютер и т.д. Все операции производятся под управлением ОСРВ. Вместе с этим будут рассмотрены примеры использования шины TWI (на примере EEPROM AT24C512) и однопроводного интерфейса 1-Wire (датчик температуры DS18B20). Отдельно рассмотрена терминальная программа со стороны компьютера (на языке Delphi), которая производит считывание архива и ряда других параметров устройства через COM-порт.

Рис.1 Принципиальная схема термометра

Принципиальная схема устройства приведена на рис.1. Его основное назначение – это сбор и передача показаний температуры в компьютер для их дальнейшей обработки. Дополнительно имеется функция поддержание температуры на одном уровне.

Для измерения температуры используется цифровой датчик DS18B20  с однопроводным интерфейсом 1-Wire. Он подключается к линии PB1 микроконтроллера через разъем X2. Архив данных размером 64 кб хранится во внешней EEPROM–памяти AT24C512. Обмен данными с микросхемой ведется через шину TWI (выводы SCL, SDA). Для взаимодействия с пользователем предусмотрены индикатор MT-10T на 10 знакомест и 4 кнопки управления. Кнопки подключены непосредственно к выводам PD2…PD5, а индикатор для своей работы задействует еще 6 линий (управляющие сигналы PD6, PD7 и 4-разрядные данные PC0…PC3). Подстроечный резистор R6 служит для регулировки контрастности изображения. Связь с компьютером осуществляется по двум линиям канала RS-232 (разъем X1). Это выход передатчика RXD и вход приемника TXD. Микросхема MAX232 необходима для согласования ТТЛ-уровней микроконтроллера с логическими уровнями стандарта RS-232 (3…12 В лог.1, -3…-12 В лог.0). В случае если устройство используется как термостат, с вывода PB0 через разъем X4 снимается управляющий сигнал для коммутации теплового элемента. Он имеет высокий уровень, когда нагрузка должна быть подключена и низкий, если ее необходимо обесточить. Защитные сопротивления R2 и R3 служат для снижения последствий короткого замыкания на линиях PB0, PB1. На X4 подается напряжение 4…5 В от внешнего источника питания, способного обеспечить ток до 30 мА (собственное энергопотребление прибора без нагрузки на X4 не превышает 8…10 мА). Резервный источник питания VB1 (3.6…4.8 В) позволяет сохранить работоспособность и не потерять ход времени при перебоях напряжения. Разъем X2 служит для внутрисхемного программирования.

Рис.2 Алгоритм работы

Сразу после включения устройство переходит к измерению температуры. В этом режиме с периодичностью 1 с считываются показаний датчика и отображение их на индикаторе вместе со временем (рис.2а). Предел измерения температуры  -55…+125 С. Нажатие на кнопку SB4 запускает самописец. Каждый замер температуры, при этом, переносится в буфер архива. По истечению 1 минуты (собрано 60 замеров) содержимое буфера переносится во внешнюю память DD2. В режиме самописца с частотой 1 Гц мигает символ градуса в крайнем правом разряде индикатора. Повторное нажатие SB4 останавливает процесс записи.

В течение всего времени постоянно ведется контроль попадания температуры в интервал, ограниченный верхним и нижним значениями величины. При достижении верхнего предела на выходе PB0 DD3 формируется низкий логический уровень (сигнал отключения нагрузки). Далее температура падает до того момента, пока не достигнет нижнего предела и на выход PB0 снова будет подано напряжение. Десятичная точка в крайнем правом разряде индицирует состояние вывода управления нагрузкой (отображается, когда на выводе PB0 уровень лог.1).

Нажатие кнопки SB1 заставит устройство перейти в режим меню, где можно настроить верхний “thi” (рис.1б) и нижний “tlo” (рис.2в) пределы температуры, а также текущее время “tmr” (рис.2г). Значения пределов “thi” и “tlo” изменяютсья кнопками SB2, SB3 в сторону уменьшения и увеличения соответственно. В момент отображения “tmr” кнопка SB2 отвечает за установку часов, а SB3 за установку минут. Нажатие и удержание SB2 и SB3 в течение примерно 2 с приводит к увеличению скорости перебора параметра до 12 изменений в секунду. Значения “thi”, “tlo” могут находиться в диапазоне -50…+120 С (шаг 1 С), “tmr” – от 0ч00м до 23ч59м.

Когда происходит сеанс связи с компьютером и терминальная программа берет управление на себя, на дисплее выводится надпись соединения “CONNECt” (рис.2д). Измерение и контроль температуры прекращаются, опрос кнопок не производится до тех пор, пока не произойдет переход к обычному режиму работы.

Управляющая ОСРВ

Операционная система размещается в основном файле проекта “TermoRTOS.asm”. ОСРВ распределяет процессорное время и разделяет ресурсы памяти между пятью задачами, которые и обеспечивают логику работы устройства. Все задачи находится в отдельных файлах, и подключаются с помощью директивы .include в начале программы.

После сброса микроконтроллера, происходит отчистка SRAM и инициализация стека для каждой задачи. Глубина стека выбрана для всех задач одинаковой и составляет 30 б. Текущий указатель стека каждой задачи сохраняется в ячейках памяти sp1:sp1+1…sp5:sp5+1. Переключение задач происходит в обработчике прерывания service_TOVF0 по переполнению счетного регистра таймера-счетчика TCNT0. Сам таймер-счетчик 0 работает в единственно возможном для него режиме Normal. Интервал времени TTOV0, оставшийся до следующего переполнения при этом:

TTOV0 = ((256-TCNT0 )*N)/Fclk,

где N-коэффициент деления предделителя частоты таймера-счетчика 0.

При Fclk = 3686400 Гц и N=1024, получим TTOV0 ≈ 277,8*(256 -TCNT0) мкс. Изменяя значения TCNT0 в диапазоне 0…0xFF можно отмерять различные интервалы в пределах 71111,1…277,8 мкс.

Во время переключения контекста ОСРВ определяет также длительность следующей задачи. Из ячеек tmr1… tmr5 извлекается числа, которые необходимо загрузить в TCNT0, чтобы получить необходимую длительность времени до следующего прерывания.

Рассмотрим подробнее, как происходит переключение задач. Допустим, прерывание возникает в процессе выполнения задачи 1. В этом случае после сохранения SREG и рабочих регистров в стеке задачи 1, производится сохранение самого указателя стека задачи 1 в ячейки sp1:sp1+1 (SPH копируется в sp1, а SPL в sp1+1). Далее из ячеек sp2:sp2+1 извлекается 2-байтовое значение указателя стека следующей в списке задачи 2 и загружается в SPH:SPL. С этого момента программа находится в адресном пространстве новой задачи. Перед выходом из прерывания восстанавливаются рабочие регистры и SREG задачи 2, а в регистр TCNT0 заносится значение из ячейки tmr2=184. Задача 2 будет выполняться 277,8*(256-184) = 20000 мкс, пока не наступит очередное прерывание по переполнению таймера-счетчика 0 и ОСРВ произведет переключение на задачу 3 и т.д.

Сведения о проекте приведены в табл.1. Каждая из 5 задач занимается обслуживанием собственного интерфейса и не оказывает прямого влияние на остальные задачи системы. Взаимодействие между компонентами программы происходит через глобальные переменные ОСРВ, размещенные в регистрах R5…R21. Для обработки данных все задачи получают в распоряжение свой собственный комплект РОНов R22…R31. Номер текущей задачи (1…5) хранится в регистре tsknum.

Табл 1. Сведения о проекте:

ЗадачаОписаниеМесто расположенияВремя выполнения, мсОбъемкода, байт
Операционная система с переключением задач.TermoRTOS.asm640
1Вывод информации на дисплей.DisplayMT10T.asm5550
2Интерфейс с компьютером.ComPort.asm20218
3Работа с внешней памятью данных.Eeprom24C512.asm20244
4Опрос кнопок.ButtonPolling.asm5228
5Опрос датчика температуры.TermoDS18B20.asm20388
Использованный объем FLASH, байт2268
Использованный объем SRAM, байт247
Использованный объем EEPROM, байт4

Рис.3 Выполнение задач в ОС

а – во время основного режима работы

б – во время сеанса связи с компьютером

Система может находиться в трех состояниях, которые определяются битами регистра state. Если устройство отображает температуру (установлен бит TERMO) или находится в меню (установлен бит MENU), то задачи используют процессор так, как показано на рис.3а. В этом случае период повторения каждой задачи 70 мс. На диаграмме не учтены незначительные затраты времени на переключение контекста, что в среднем составляет 20 мкс (73 машинных цикла) на одну задачу. Во время сеанса связи с компьютером (установлен бит CONNECT в state) опрашивать кнопки и датчик температуры ненужно. Поэтому для увеличения скорости обмена данными задачи 4 и 5 исключаются, а задачи 1…3 выполняются с периодом 45 мс (см. рис.3б).

Кроме прерывания от таймера-счетчика 0, в программе используется еще и прерывание по совпадению OCR2 и TCNT2 таймера-счетчика 2 для отчета временных интервалов. Таймер- счетчик 2 работает в режиме CTC (сброс при совпадении). Прерывание возникает каждый раз, когда содержимое счетного регистра  TCNT2 становится равным содержимому регистру совпадения OCR2, после чего TCNT2 обнуляется. Период следования прерываний TOCR2:

TOCR2 = (OCR2+1)*N/Fclk,

где N-коэффициент деления предделителя частоты таймера-счетчика 2. В программе выбрано TOCR2= 50 мс (N=1024, OCR2=179).

В обработчике service_OC2 каждую секунду вызывается подпрограмма счета времени time, а также устанавливается флаг начала очередного измерения температуры CONVER в регистре flag. Еще один бит этого регистра PULSE используется для мигания символа градуса в момент записи в архив и разделительной черты при отображении часов и минут. В прерывании PULSE=1 в течении 0.25 с (черта отображается) и  PULSE=0 в течении 0.75 с (черта погашена).

В файле “TermoRTOS.asm” размещены также две подпрограммы записи в EEPROM микроконтроллера save_tmpr и save_eadr, которые используются различными задачами ОС. Подпрограмма save_tmpr сохраняет значения верхнего th и нижнего  tl пределов регулирования температуры, а  save_eadr сохраняет двухбайтовый указатель текущего адреса eadrh: eadrl в микросхеме памяти AT24C512. Каждый раз после включения устройства содержимое регистров th, tl, eadrh, eadrl восстанавливается из соответствующих ячеек энергонезависимой памяти _th, _tl, _eadrh, _eadrl.

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

Для защиты от зависания программы включен сторожевой таймер с периодом сброса 125 мс. При нормальном режиме работы его сброс происходит каждые 50 мс в обработчике прерывания от таймера-счетчика 2.

Вывод информации на дисплей

Код задачи 1 размещен в файле “DisplayMT10T.asm. Алгоритм работы приведен на рис.2. Эта часть программы отвечает за вывод информации на дисплей ЖКИ MT10T-8T.

Под видеопамять отведено 10 ячеек SRAM, начиная с метки ind. В цикле задачи непрерывно проверяется содержимое регистра picter, биты которого отвечают за отображение различных фрагментов программы. После этого видеопамять заполняется соответствующими кодами, а ее содержимое выводится на индикатор.

В самом начале работы линии шины адреса/данных DB3…DB0 и управляющих сигналов A0, WR1 предварительно настраиваются на вывод и примерно на 3 с на экране высвечивается тестовое изображение в виде символов с 0 по 9.

Интерфейс с компьютером

Код задачи 2 размещен в файле “ ComPort.asm”. Алгоритм работы приведен на рис.4. Задача отвечает за взаимодействие микроконтроллера с прикладным программным обеспечением компьютера.

Рис.4 Алгоритм работы задачи 2

После запуска термометра модуль приемопередатчика USART инициализируется на работу в полнодуплексном режиме (одновременно задействованы линии RXD и TXD). Параметрами связи: скорость обмена 115200 бит/c, длина слова 8 бит, 1 стоп-бит. Контроль четности не производится.

Затем программа ожидает поступления от компьютера команды в виде символа “D”. Если запрос был получен, то в ответ отсылается строка подтверждения “Termostat AVR” и устройство переходит к сеансу связи. В регистре state устанавливается флаг CONNECT (переход к сеансу связи), а в picter устанавливается бит CON (отображение надписи на рис.2д). Текущий адрес страницы архива памяти eadrh:eadrl, который может быть модифицирован в процессе обмена данными, временно сохраняется в регистровой пар еtmph:etmpl.

Во время сеанса связи программа все время находится в цикле ожидания приема очередных управляющих команд, каждая из которых представляет собой принятый от компьютера символ ASCII. В ответ на запрос о получении основной информации об устройстве по  команде “I”, устройство передает 8-байтовый ID-код датчика температуры DS18B20 и установленные верхний th и нижний tl  пределы регулирования температуры. Команда “E” приводит к стиранию 64-байтовой страницы памяти в архиве термометра. За командой следует двухбайтовый адрес страницы, а после окончания операции устройство передает в компьютер символ подтверждения “!”. Для считывания страницы архива управляющая программа со стороны компьютера передает команду “R” и двухбайтовый адрес страницы. После этого устройство передает 64 байта данных и символ подтверждения “!”.

Выход из сеанса связи происходит поле приема символа “O”. Перед переходом к нормальному режиму работы в state устанавливается флаг TERMO (режим отображения температуры) и в регистр picter устанавливается бит TEM (отображение надписи на рис.2а). Текущий адрес eadrh:eadrl восстанавливается из еtmph:etmpl.

На любую принятую команду, кроме “D”, “I”, “E”,  “R”, “O”, микроконтроллер отвечает символом ошибки “?”.

Работа с внешней памятью данных

Код задачи 3 размещен в файле “ Eeprom24C512.asm”. Алгоритм работы приведен на рис.5. Задача реализует интерфейс с микросхемой памяти AT24C512.

Рис.5 Алгоритм работы задачи 3

В микросхеме EEPROM AT24C512 размещается архив данных размером  64 кбайт. AT24C512 имеет страничную организацию. Размер страницы 64 байта. Все операции записи и чтения ведутся через страничный буфер, размещенный в памяти SRAM начиная с метки tbuf.

Рис.6 Формат данных страницы архива памяти

Если запись в архив разрешена (установлен флаг ARCHIVE в регистре flag), то каждую секунду в страничный буфер заносится результат очередного измерения температуры. После того как будет накоплено 60 замеров (т.е. пройдет 1 минута), содержимое буфера копируется в микросхему памяти. Формат данных каждой страницы архива памяти приведен на рис.6. Первые 4 байта (ячейки 0…3) составляют заголовок. В них фиксируется начальное время замера: часы, минуты, секунды. Ячейка 3 остается не задействованной. В нее можно будет поместить дополнительную служебную информацию такую как, например, состояние вывода управления нагрузки, положение кнопок и т.д. Следом за заголовком в ячейках 4…63 идут данные замеров. Архива объемом в 1024 64-байтовых страниц хватает на 1024*60 = 61440 ежесекундных замеров или на 17ч4м непрерывных измерений.

EEPROM AT24C512 подключается к микроконтроллеру посредством двухпроводного интерфейса TWI. AVR выступает в качестве ведущего передатчика при записи и ведущего приемника при чтении данных. Таким образом, перед началом работы необходимо произвести инициализацию контроллера скорости передачи данных (Bit Rate Generator), входящего в состав TWI и отвечающего за частоту тактовых импульсов F­­SCL­ на линии SCL. Значение F­­SCL­ определяется  как

SCL­ = F­clk/(16+2*TWBR*4TWPS),

где TWBR – содержимое регистре TWBR, TWPS – значение битов TWPS1: TWPS0 в регистре TWSR.

В данном приложении F­­SCL­≈17кГц (TWBR=100, TWPS1:TWPS0=00), что значительно ниже максимально возможной скорости обмена данными с  AT24C512 (до 1000 кб/с при напряжении 5 В).

В цикле задачи программа проверяет состояние битов EERASE, EREAD, EWRITE в регистре flag. Если установлен флаг стирания EERASE, то все ячейки tbuf заполняется значением 0xFF, после чего содержимое страничного буфера копируется в соответствующую страницу памяти архива. При флаге чтения EREAD=1 страница архива переписывается в tbuf, а при флаге записи EWRITE=1 результат каждых 60 замеров сохраняется AT24C512. На время выполнения любой из трех операций устанавливается флаг EBUSY во flag.

Текущей двухбайтовый адрес в памяти архива размещается в регистрах  eadrh:eadrl. После записи очередной страницы содержимое  eadrh:eadrl увеличивается на 64 (размер страницы). Естественно, что если не принимать ни каких мер, то после отключения питания устройства значение eadrh:eadrl будет утеряно, а после очередного запуска устройства запись в архив снова начнется с нулевого адреса. Поэтому после записи каждых пяти страниц eadrh и eadrl сохраняется в ячейках _eadrh, _eadrl EEPROM-памяти микроконтроллера. С учетом того, что ресурс EEPROM составляет порядка 100000 циклов записи, – его хватит примерно на год непрерывной работы.

Рис.7 Временные диаграммы чтения микросхемы AT24C512

a – одного байта

б – последовательности байтов

Временные диаграммы чтения и записи данных в AT24C512 приведены на рис.7 и рис.8 соответственно. Микросхема допускает обращение как к отдельным ячейкам EEPROM  (рис.7а и рис.8а), так и к 64-байтоввм страницам памяти (рис.7б и рис.8б). В данном приложении используется второй способ адресации.

Рис.8 Временные диаграммы записи микросхемы AT24C512

a – одного байта

б – последовательности байтов

Подпрограмма twi_read_page считывает страницу в буфер tbuf, а twi_write_page копирует данные из tbuf во внешнюю память. Две задокументированные подпрограммы twi_read_byte и twi_write_byte можно использовать для чтения и записи байта EEPROM, расположенного по произвольному адресу. Подпрограмма twi_read_byte возвращает прочитанный байт в edata; в twi_write_byte байт для записи передается в том же регистре в качестве входного параметра. Во всех случаях адрес текущей ячейки памяти (первой ячейки страницы памяти) размещается в eadrh:eadrl.

Опрос кнопок

Задача 4 размещена в файле “ ButtonPolling.asm”. Алгоритм работы приведен на рис.9. Задача занимается опросом кнопок и оказывает соответствующее воздействие на ход выполнения программы.

Рис.9 Алгоритм работы задачи 4

После запуска устройства, линии кнопок SB1…SB4 (MD,MI,PL и TM соответственно) настраиваются на ввод, и задача входит в цикл обработки пользовательских команд, приходящих от клавиатуры.

Кнопка считается нажатой, если в течение двух циклов опроса (≈140 мс) на соответствующей линии был зафиксирован низкий логический уровень. Программа считает длительным нажатие при удержании кнопки в течение 15 циклов (≈1050 мс). Код нажатой кнопки находится в регистре btn. В случае отсутствия нажатых кнопок либо при одновременном нажатии более чем одной кнопки btn=0.

Программа интерпретирует нажатие различных кнопок по разному,   в зависимости от информации, отображаемой на индикаторе (определяется содержимым регистра picter). При отображении верхнего и нижнего пределов температуры кнопки MI, PL отвечают за уменьшение и увлечение параметра соответственно. При отображении времени кнопкой MI устанавливают минуты, а кнопкой PL – секунды. Кнопка MD позволяет войти и передвигаться в меню устройства. Кнопка TM запускает и останавливает запись температуры в архив.

Опрос датчика температуры

Задача 5 размещена в файле “TermoDS18B20.asm”. Алгоритм работы приведен на рис.10. Задача занимается отвечает за взаимодействие микроконтроллера с цифровым датчиком температуры DS18B20.

Рис.10 Алгоритм работы задачи 5

Датчик DS18B20 (производства Dallas Semiconductor) имеет однопроводный интерфейсом 1-Wire. Он позволяет измерять температуру в пределах -55…+125 С при максимально-допустимой погрешности на границах диапазона ±2 С (не более ±0.5 C в диапазоне -10…+85 С). Время преобразования и разрешающая способность регулируются программно.

Рис.11 Расположение выводов и блокнотная память DS18B20

Программный интерфейс DS18B20 представлен в виде 9 регистров блокнотной памяти (Scratchpad), как показано на рис.4 (регистры 5…7 не используются). В первых двух регистрах находится результат измерения температуры в градусах C. Это знаковое дробное число с фиксированной запятой, где под целую часть отводятся 7 битов, включая знаковый разряд S, а под дробную 1…4 бита, в зависимости от выбранного разрешения. Установка разрешающей способности датчика производится через биты R1 и R0 регистр управления 4. Самой высокой разрешающей способности соответствует наибольшее время преобразования и наоборот. Выбор разрешающей способности ни как не влияет на точность результата измерения. Основным назначением регистров 2 и 3 является хранение установок максимального и минимального пределов температуры соответственно, но в них может быть размещена и любая другая  пользовательская информация.

DS18B20 имеет 3 байта памяти EEPROM. По команде записи в блокнотную память в нее копируется содержимое регистров 2…4. Эта же информация восстанавливается в регистры сразу после включения. Однако практика показывает что у датчиков, по крайней мере раннего времени выпуска, энергонезависимая память практически не работоспособна. Поэтому настройку управляющего регистра надо производить каждый раз заново, а данные из регистров 2,3 лучше хранить в EEPROM микроконтроллера.

Для контроля достоверности данных во всех устройствах шины 1-Wire введен генератор циклического избыточного кода, формирующий контрольную сумму CRC (Cyclik Redundancy Checksum). Контрольная сумма (однобайтовое число) вычисляется для блока данных по специальному алгоритму, использующему образующий полином X8+X5+ X4+X5+1. Для защиты 8 байтов блокнотной памяти CRC находится по адресу регистра 8.

Рис.12 Временные диаграммы сигналов шины 1-Wire

Датчик имеет одну линию ввода/вывода DS данных и два вывода питания VCC и GND. Возможна также двухпроводная схема подключения в которой вывод линию DS совмещает функции  ввода/вывода и питания, но здесь она не рассматривается. Все запросы на линии формирует ведущий микроконтроллер. Временные диаграммы на уровне чтения и записи информационных битов (слотов) приведены на рис.12. Детальное описание работы 1–Wire выходит за рамки данной книги, поэтому ниже ограничимся только практической стороной вопроса.

На стадии инициализации, микроконтроллер вызывает подпрограмму read_rom, которая выдает на линию команду сетевого уровня Read ROM (Чтение ПЗУ) и считывает 64-разрядный ID-номер датчика, записанный во внутреннем ПЗУ, в буфер dsnum. В дальнейшем запись и чтение DS18B20 будет происходить с помощью команды Skip ROM (Пропуск ПЗУ). Эту команду формирует подпрограмма skip_rom. Однако, если на линии будут находится сразу несколько датчиков, то обращаться к ним придется только по индивидуальному номеру через команду Match ROM (Совпадение ПЗУ). Подобное обращение формирует задокументированная подпрограмма match_rom.

В цикле задачи программа посылает датчику команду запуска преобразования с параметрами разрешения 11 бит, 375 мс, и через каждую секунду считывает показания температуры. За запуск преобразования и чтение показаний отвечают подпрограммы termo_convert и termo_result соответственно. Для синхронизации временных интервалов служит флаг CONVER (устанавливается с периодом 1 с) в регистре flag. В случае если показания температуры считаны успешно, программа сигнализирует об этом установкой флага готовности результата EWRITE из flag.

Каждое считанное значение температуры постоянно сравнивается с диапазоном регулирования температуры (нижнее значение в tl, верхнее – в th). В случае превышения верхней границы, выход POV порта B отключается и возвращается в исходное состояние только, когда температура упадет до нижнего предела. Если в ходе опроса DS18B20 возникнет ошибка, то выход будет отключен принудительно. Код ошибки находится в регистре error (0-нет ошибки, 1-датчик отсутствует, 2-короткое замыкание).

Скачать файлы к проекту

Введение в ATmega8 — Инженерные проекты


Привет, друзья! Надеюсь у тебя все хорошо. Я вернулся, чтобы дать вам ежедневную дозу полезной информации, чтобы вы могли преуспевать и совершенствоваться в соответствии с вашими техническими потребностями и требованиями. Сегодня я расскажу подробнее о Introduction to ATmega8 . Это 8-битный микроконтроллер AVR, основанный на технологии RISC CMOS и имеющий 28-контактный интерфейс для пакета PDIP. Объем памяти программ составляет 8 КБ, а размер ОЗУ и EEPROM составляет 1 КБ и 512 байт соответственно.Microchip был основным источником для производства микроконтроллеров PIC и AVR, которые в основном используются во встроенных системах и системах промышленной автоматизации. Эти модули могут выполнять ряд функций на крошечном чипе, не позволяя вам тратить слишком много и покупать внешние компоненты для автоматизации в соответствующем проекте. В этом посте я расскажу обо всем, что связано с этим крошечным чипом, включая основной функции, распиновка, описание контактов, функции, используемый компилятор и все, что вам нужно знать.Давайте перейдем к деталям этого встроенного модуля.

Введение в ATmega8

  • ATmega8 — это 8-битный микроконтроллер AVR, основанный на архитектуре RISC и в основном используемый во встроенных системах и проектах промышленной автоматизации.
  • Он поставляется в трех корпусах, известных как PDIP, MLF и TQFP, где первый содержит 28 контактов, а два других — по 32 контакта на каждом модуле.
  • Программная память составляет 8 КБ флэш-памяти, что достаточно для хранения ряда инструкций, в то время как две другие памяти RAM и EEPROM содержат 1 КБ и 512 байт соответственно.
  • Другие функции этого модуля: таймер включения, сторожевой таймер, обнаружение перебоев в работе, внутрисхемное последовательное программирование и пять спящих режимов.
  • Набор команд является основным критерием, который отличает этот модуль от контроллера PIC, где первый выполняет большинство инструкций за один тактовый цикл и поставляется с 32 регистрами общего назначения, в то время как более поздний требует количества тактовых циклов на команду и поставляется с регистром W. .
  • В устройство добавлен 10-разрядный модуль АЦП, который играет жизненно важную роль для сопряжения датчиков и содержит всего 6 каналов для пакета PDIP и 8 каналов для оставшихся двух пакетов.
  • К устройству добавлены протоколы связи, такие как SPI, I2C и USART, которые широко используются для установления связи с внешними устройствами.

1. Характеристики ATmega8

Перед тем, как вы начнете работать над соответствующим проектом, рекомендуется проверить функции модуля, чтобы понять, подходят ли эти функции для проекта, над которым вы собираетесь работать. В следующей таблице показаны основные характеристики ATmega8.
Количество контактов 28
CPU 8-битный AVR
Рабочее напряжение 2.От 7 до 5,5 В
Память программ 8K
Тип памяти программ Флэш-память
RAM 1 Кбайт
EEPROM 512 байт
АЦП Количество каналов АЦП 10-бит 6 в PDIP, 8 в TQFP и QFN
Компаратор 1
Каналы ШИМ 3
Генератор до 16 МГц
Таймер (3) 16-битный таймер (1) 8-битный таймер (2)
Пакеты (3) PDIP (28 контактов) TQFP (32 контакта) QFN (32)
Таймер включения питания Да
Пины ввода / вывода 23
Производитель Микрочип
SPI Да
I2C Да
Сторожевое время r Да
Обнаружение потемнения (BOD) Да
USART Да
Спящий режим 5
Минимальная рабочая температура-55 C
Максимальная рабочая температура 125 C

2.Распиновка и описание ATmega8

Вы получили краткое введение в модуль. В этом разделе мы рассмотрим распиновку и описание каждого контакта.

Распиновка

На следующем рисунке показана распиновка ATmega8.
  • ATmega8 поставляется в трех пакетах, известных как PDIP, MLF и TQFP, где первый используется для создания индивидуальных проектов, а два других используются для промышленных и электронных устройств.

Описание выводов

В следующей таблице показано полное описание каждого вывода, которое поможет вам предвидеть основную функцию, связанную с каждым выводом. 900 32 I / O PinT0 (Timer0 External Counter Input) XCK (USART External Clock I / O) Прерывание 9003 2 I / OPin Аналоговый положительный вывод компаратора

Выделенный вывод для таймера (канал ШИМ)

Прерывание

1 9019
    Аналоговый канал 4

    Последовательные данные (I2C)

    Прерывание

1

PC6

RESET

PCINT14

I / O PinRESET будет сгенерирован путем удержания этого вывода в НИЗКОМ состоянии дольше минимальной длительности импульса Прерывание
2

PD0

RXD

RXD

PCINT16

I / O PinSerial Receive Pin (USART) Interrupt
3

PD1

TXD

PCINT17

I / O PinSerial Transmit Pin (USART) Прерывание
4
4

PD2

INT0

PCINT18

Вывод ввода / вывода Внешнее прерывание Прерывание
5

PD3

INT1

OC2B

PCINT19

Вывод прерывания для канала прерывания ввода / вывода
6

PD4

T0

XCK

PCINT20

7

VCC

Напряжение питания
8

GND

Контакт заземления
9

PB6

OSC1

XTAL1

PCINT6

I / O PinOscillator Input PinInterrupt
10

PB7

ПК Вывод

Вывод осциллятора

Прерывание

11

PD5

T1

OC0B

PCINT21

I / O PinPinT1 (Timer0 Timer0 External Counter Input)

Назначенный вывод

Прерывание

12

PD6

AIN0

OC0A

PCINT22

13

PD7

AIN1

PCINT23

14 PBINT

Последовательное программирование в цепи

Часы

Прерывание

15 PB1OC1APCINT1 Контакт ввода / вывода

Выделенный контакт для таймера (канал ШИМ)

Прерывание

16SSOC / O Вход выбора ведомого устройства PinSPI.Когда контроллер действует как ведомый, этот вывод имеет низкий уровень

Выделенный вывод для таймера (канал ШИМ)

Прерывание

17

PB3

MOSI

OC2A

PCINT3

I / O Pin

MOSI (главный выход, подчиненный вход) для связи SPI. Данные принимаются этим выводом, когда контроллер действует как ведомый

Выделенный вывод для таймера

Прерывание

18

PB4

MISO

PCINT4

Контакт ввода / вывода

MISO (Master Вход ведомого выхода) для связи SPI.Когда контроллер действует как подчиненный, данные отправляются контроллером в ведущее устройство через этот вывод

Прерывание

19

PB5

SCK

PCINT5

Контакт ввода / вывода

SCK (Последовательные часы шины SPI). Эти часы используются контроллером и другими устройствами для передачи данных

Прерывание

20

AVCC

Вывод напряжения питания для АЦП
21

AREF

Опорное напряжение
22 GND Контакт заземления
23 PC0ADC0PCINT8
24 PC1ADC1PCINT9 Контакт ввода / вывода

Аналоговый канал 1

Прерывание33

Вывод ввода / вывода

Аналоговый канал 2

Прерывание

26 PC3ADC3PCINT11 Вывод ввода / вывода

Аналоговый канал 3

Прерывание

27 PC4ADC4SDAPCINT12
28 PC5ADC5SCLPCINT13

Вывод ввода / вывода

Аналоговый канал 5

Последовательные часы (I2C)

Прерывание

3.Основные функции ATmega8

ATmega8 может выполнять и выполнять ряд функций. Ниже приведены основные функции, связанные с этим крошечным модулем.

Таймер

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

Количество спящих режимов

В устройстве есть пять спящих режимов, которые помогают экономить электроэнергию.Эти режимы включают:
  • Энергосбережение
  • Выключение
  • Холостой ход
  • Подавление шума АЦП
  • Ожидание

Обнаружение сбоев (BOD)

BOD, также известный как BOR (Brown Out Reset), используется для сброса модуля, когда Vcc (напряжение питания) становится ниже порогового напряжения отключения. Важно отметить, что таймер включения питания должен быть включен для создания задержки и помощи в возврате устройства из функции BOD. В этом режиме создается несколько диапазонов напряжения для защиты модуля при падении напряжения на линии подачи напряжения.

Связь SPI

ATmega8 поставляется с последовательным периферийным интерфейсом (SPI) — коммуникационным модулем, который помогает установить связь между микроконтроллером и другими периферийными устройствами, такими как регистры сдвига, SD-карты и датчики. Он включает в себя отдельные линии синхронизации и данных с добавлением линии выбора для выбора соответствующего устройства для связи. Для связи SPI используются следующие два контакта:
  • MOSI (Master Output Slave Input)
  • MISO (главный вход, подчиненный выход)
Вывод MOSI получает данные, когда контроллер действует как ведомый.И MISO играет жизненно важную роль в отправке данных контроллером, а затем переводится в подчиненный режим.

Сторожевой таймер

ATmega8 имеет встроенный сторожевой таймер, который сбрасывает контроллер, если запущенная программа зависает во время компиляции или застревает в бесконечном цикле. Сторожевой таймер — это не что иное, как таймер обратного отсчета.

Прерывание

Прерывание указывает на экстренный вызов, который приостанавливает выполнение основной функции до тех пор, пока не будет выполнена требуемая инструкция. Контроллер переходит к основной программе после вызова и выполнения прерывания.

Связь I2C

Протокол I2C используется для подключения низкоскоростных устройств, таких как преобразователи АЦП и ЦАП, а также микроконтроллеры. Это двухпроводная связь, которая поставляется с последовательными часами
  • (SCL)
  • Последовательные данные (SDA)
Первый — это тактовый сигнал, который синхронизирует передачу данных между устройствами и вырабатывается главным устройством, а второй используется для передачи необходимых данных.

4. Интерфейс памяти ATmega8

Пространство памяти в контроллере является проявлением линейной и регулярной карты памяти.Этот модуль AVR поставляется с Гарвардской архитектурой, в которой хранятся отдельные ячейки памяти как для данных, так и для программы.
  • Одиночная конвейерная обработка используется для выполнения инструкций в программной памяти — программируемой флэш-памяти — где следующая инструкция вызывается и выполняется, за которой следует следующая инструкция, которая помогает выполнять инструкции в каждом тактовом цикле.
Файловый регистр быстрого доступа поставляется с 32 х 8-битными рабочими регистрами общего назначения, к которым можно получить доступ с помощью одного тактового цикла, который помогает выполнять операцию ALU (арифметический логический блок), результат которой сохраняется в файле регистров.Доступ к памяти ввода-вывода можно получить несколькими способами напрямую или с использованием ячеек пространства данных, охватывающих файл регистров, 0x20 — 0x5F.

Программная память (ROM)

Программная память имеет объем памяти около 8 КБ и может выполнять инструкции в каждом тактовом цикле. Она хранит информацию постоянно и не зависит от источника питания и широко известна как ПЗУ или энергонезависимая память. Адрес памяти программ может обращаться к 16- или 32-битной инструкции.
  • Флэш-память программы разделена на две части, включая раздел прикладной программы и раздел программы загрузки.Последний поставляется с флэш-памятью приложений, используемой для записи команд SPM.

Память данных (RAM)

Объем памяти данных составляет около 1 КБ (1024 байта). Доступ к нему можно получить через пять различных режимов адресации в архитектуре AVR, названных как прямой, косвенный, косвенный со смещением, косвенный с предварительным декрементом и косвенный с постинкрементом.
  • Три адресных регистра X, Y и Z могут увеличиваться и уменьшаться с регулярными интервалами при наличии режимов косвенной адресации.
В гибком модуле прерывания находятся регистры управления, которые дополнительно содержат бит разрешения глобального прерывания, находящийся в регистре состояния. Все эти прерывания содержат таблицу векторов прерываний с вектором прерывания, где первые зависят от положения вектора прерывания и обратно пропорциональны друг другу.
  • Модуль ALU, который разделен на три основные функции, известные как прямые, арифметические и битовые функции, имеет прямое соединение с 32 регистрами общего назначения в пределах одного такта.

5. Компиляторы ATmega8

Если вы новичок в микроконтроллере, вы можете немного скептически относиться к компилятору, который вы можете использовать для написания и компиляции кода в ваш контроллер AVR. Я объединил некоторые базовые компиляторы, некоторые из которых лучше других с точки зрения эффективности. Хотя в бесплатных версиях могут отсутствовать некоторые функции, их рекомендуется начать с новичка, чтобы получить практический опыт работы с контроллером AVR.
  • IAR оказался лучшим компилятором для AVR.Несмотря на то, что он дорогой и имеет высокопрофессиональный интерфейс, он выполняет инструкции с приличной скоростью.
  • Порт GCC — хороший вариант для AVR, который работает как с Linux, так и с Windows. Интерфейс немного сложный.
  • ImageCraft — еще один правильный вариант для начала, но в нем отсутствуют некоторые функции графического интерфейса, такие как редактор и управление проектами, которые могут создавать проблемы во время выполнения кода.
  • CodeVision поставляется с CodeWizard и очень экономичен.

6. Взаимодействие ATmega8 с Arduino

ATmega8 может взаимодействовать с Arduino для разработки встроенного проекта. На следующем рисунке показано взаимодействие ATmega8 с Arduino.
  • Если вы новичок в плате Arduino, вы должны попробовать эти проекты Arduino для начинающих, они помогут понять основные функции платы Arduino.

7. Блок-схема ATmega8

Блок-схема поможет вам понять, как основные функции и компоненты связаны и работают внутри устройства.На следующем рисунке показана блок-схема ATmega8.
  • ATmega8 — это маломощный микроконтроллер CMOS AVR, который в основном основан на архитектуре RISC. Выполняя мощные инструкции за один тактовый цикл, ATmega8 способен выполнять и выполнять мощные инструкции с использованием 1MIPS на МГц за один тактовый цикл, что значительно помогает в оптимизации энергопотребления.

8. Проекты и приложения ATmega8

  • Используется во встроенных и роботизированных системах
  • Широко используется в студенческих проектах
  • Система домашней безопасности
  • Для конструирования квадрокоптеров
  • Промышленная автоматизация
Это все на сегодня.Надеюсь, вы нашли информацию из этой статьи. Если вы не уверены или у вас есть какие-либо вопросы, вы можете связаться со мной в разделе комментариев ниже. Я хотел бы помочь вам как можно лучше. Не стесняйтесь кормить нас своими ценными предложениями — они помогают нам предоставлять вам качественную работу. Спасибо, что прочитали статью.

Введение в архитектуру микроконтроллера Atmega8 и ее приложения

Аббревиатура микроконтроллера AVR — «Advanced Virtual RISC», а микроконтроллер — это краткое обозначение микроконтроллера.Микроконтроллер — это крошечный компьютер на одной микросхеме, также называемый устройством управления. Подобно компьютеру, микроконтроллер состоит из множества периферийных устройств, таких как блоки ввода и вывода, память, таймеры, последовательная передача данных, программируемые. Приложения микроконтроллера включают встроенные приложения и автоматически управляемые устройства, такие как медицинские устройства, устройства дистанционного управления, системы управления, офисные машины, электроинструменты, электронные устройства и т. Д. На рынке доступно различных типов микроконтроллеров , таких как 8051, PIC и Микроконтроллер AVR.В данной статье представлена ​​краткая информация о микроконтроллере AVR Atmega8.

Что такое микроконтроллер AVR Atmega8?

В 1996 году микроконтроллер AVR был произведен компанией «Atmel Corporation». Микроконтроллер включает гарвардскую архитектуру, которая быстро работает с RISC. Характеристики этого микроконтроллера включают в себя функции, отличные от других, таких как режимы сна-6, встроенный АЦП (аналого-цифровой преобразователь), внутренний генератор и последовательная передача данных, выполняет инструкции за один цикл выполнения.Эти микроконтроллеры были очень быстрыми, и они использовали низкое энергопотребление для работы в различных режимах энергосбережения. Доступны различные конфигурации микроконтроллеров AVR для выполнения различных операций, таких как 8-битные, 16-битные и 32-битные. Пожалуйста, обратитесь к приведенной ниже ссылке; Типы микроконтроллеров AVR


Микроконтроллер Atmega8

Микроконтроллеры AVR доступны в трех различных категориях, таких как TinyAVR, MegaAVR и XmegaAVR.

  • Микроконтроллер Tiny AVR очень мал по размеру и используется во многих простых приложениях.
  • Мега микроконтроллер AVR очень мал. известен большим количеством интегрированных компонентов, хорошей памятью и используется в современных для множества приложений.
  • Микроконтроллер Xmega AVR применяется в сложных приложениях, требующих высокой скорости и огромной памяти программ.

Описание выводов микроконтроллера Atmega8

Основная особенность микроконтроллера Atmega8 заключается в том, что все выводы микроконтроллера поддерживают два сигнала, кроме 5-выводных. Микроконтроллер Atmega8 состоит из 28 контактов, из которых контакты 9,10,14,15,16,17,18,19 используются для порта B, контакты 23,24,25,26,27,28 и 1 используются для порта C и Контакты 2, 3, 4, 5, 6, 11, 12 используются для порта D.

Конфигурация контактов микроконтроллера Atmega8
  • Контакт -1 является контактом RST (сброс) и подает сигнал низкого уровня в течение времени, превышающего минимальная длина импульса вызовет СБРОС.
  • Контакты 2 и 3 используются в USART для последовательной связи.
  • Контакты 4 и 5 используются в качестве внешнего прерывания. Один из них будет активироваться, когда установлен бит флага прерывания в регистре состояния, а другой будет активироваться до тех пор, пока условие вторжения будет успешным.
  • Выводы 9 и 10 используются в качестве таймеров, счетчиков генераторов, а также в качестве внешнего генератора, в котором кристалл напрямую связан с двумя выводами. Контакт-10 используется для низкочастотного кварцевого генератора или кварцевого генератора.Если внутренний настраиваемый RC-генератор используется в качестве источника CLK и разрешен асинхронный таймер, эти выводы можно использовать в качестве вывода генератора таймера.
  • Pin-19 используется как Master CLK o / p, ведомый CLK i / p для SPI-канала.
  • Pin-18 используется как Master CLK i / p, slave CLK o / p.
  • Pin-17 используется как Master data o / p, slave data i / p для SPI-канала. Он используется как i / p, когда разрешается ведомым устройством, и является двунаправленным, когда это разрешено ведущим устройством. Этот вывод также можно использовать в качестве o / p для сравнения с match o / p, что помогает в качестве внешнего o / p для таймера / счетчика.
  • Pin-16 используется как выбор ведомого i / p. Его также можно использовать в качестве таймера или счетчика1, для сравнения, вывод PB2 можно использовать как выход из положения.
  • Вывод 15 может использоваться как внешний вывод таймера или совпадения счетчика.
  • Вывод 23 на выводы 28 используются для каналов АЦП (цифровое значение аналогового входа). Контакт 27 также может использоваться как последовательный интерфейс. CLK, а контакт 28 может использоваться как данные последовательного интерфейса.
  • Выводы 12 и 13 используются в качестве аналогового компаратора i / ps.
  • Выводы 6 и 11 используются в качестве источников таймера / счетчика.

Архитектура микроконтроллера Atmega8 AVR

Архитектура микроконтроллера Atmega AVR включает следующие блоки.

Архитектура микроконтроллера Atmega8

Память: Имеет 1 Кбайт внутренней SRAM, 8 Кбайт флэш-памяти программ и 512 байт EEPROM.

Порты ввода-вывода: Он имеет три порта, а именно порт-B, порт-C и порт-D, и с этих портов можно получить 23 линии ввода-вывода.

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

Таймер / счетчик: Доступны 3 внутренних таймера, 8 бит-2, 16 бит-1, отображающие многочисленные рабочие режимы и поддерживающие внутреннюю / внешнюю синхронизацию.

Последовательный периферийный интерфейс (SPI): Микроконтроллер ATmega8 содержит три интегрированных устройства связи. Один из них — SPI, 4 контакта выделены микроконтроллеру для реализации этой системы связи.

USART: USART — одно из самых мощных коммуникационных решений. Микроконтроллер ATmega8 поддерживает как синхронные, так и асинхронные схемы передачи данных. Для этого на нем выделено три контакта. Во многих коммуникационных проектах широко используется модуль USART для связи с ПК-микроконтроллером.

Двухпроводный интерфейс (TWI): TWI — еще одно устройство связи, которое присутствует в микроконтроллере ATmega8. Это позволяет разработчикам устанавливать связь между двумя устройствами с использованием двух проводов вместе с общим заземлением. Поскольку выход TWI выполняется с использованием открытого коллектора, поэтому необходимо обязательно установить внешние подтягивающие резисторы. схема.

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

АЦП: Встроенный АЦП (аналого-цифровой преобразователь) может преобразовывать аналоговый i / p-сигнал в цифровые данные с разрешением 10 бит. Такого разрешения вполне достаточно для приложений низкого уровня.

Приложения микроконтроллера Atmega8

Микроконтроллер Atmega8 используется для создания различных электрических и электронных проектов.Некоторые проекты микроконтроллеров AVR atmega8 перечислены ниже.

на базе Atmega8 Проект
  • на базе микроконтроллера AVR Интерфейс светодиодной матрицы
  • Связь UART между Arduino Uno и ATmega8
  • Взаимодействие оптопары с микроконтроллером ATmega8
  • AVR Микроконтроллер на базе системы пожарной сигнализации и микроконтроллер AVR
  • Измерение силы света
  • с использованием микроконтроллера LR
  • Амперметр 100 мА на базе микроконтроллера AVR
  • ATmega8 Система противоугонной сигнализации на базе микроконтроллера
  • Интерфейс джойстика на базе микроконтроллера AVR
  • Интерфейс микроконтроллера AVR Интерфейс гибкого датчика
  • Управление шаговым двигателем с использованием микроконтроллера AVR

Таким образом, это все о микроконтроллере Atmega8 учебник , который включает, что такое микроконтроллер Atmega8, архитектура, конфигурация контактов и его приложения.Мы надеемся, что вы лучше понимаете эту концепцию. Кроме того, любые сомнения относительно этой концепции или реализации проектов на основе микроконтроллеров AVR, пожалуйста, оставьте свой отзыв, комментируя в разделе комментариев ниже. В чем разница между микроконтроллером Atmega8 и Atmega 32?

Схема контактов микроконтроллера

ATMega8, конфигурация, характеристики и техническое описание

ATMega8 — 8-битный микроконтроллер AVR

Микроконтроллер ATMega8

Микроконтроллер ATMega8

Схема контактов микроконтроллера ATMega8

нажмите на картинку для увеличения

Конфигурация контактов ATMEGA8

Контактный №

Название пина

Описание

Альтернативная функция

1

PC6 (СБРОС)

Pin6 PORTC

Вывод

по умолчанию используется как вывод сброса.Если запрограммирован предохранитель RSTDISBL, PC6 можно использовать как вывод ввода / вывода.

(ВЫСОКОЕ значение контроллера сброса)

2

PD0 (RXD)

Pin0 PORTD

RXD (входной контакт USART)

Интерфейс последовательной связи USART

[Может использоваться для программирования]

3

PD1 (TXD)

Pin1 PORTD

TXD (выходной контакт USART)

Интерфейс последовательной связи USART

[Может использоваться для программирования]

INT2 (вход внешнего прерывания 2)

4

PD2 (INT0)

Pin2 PORTD

Внешнее прерывание INT0

5

PD3 (INT1)

Pin3 PORTD

Внешнее прерывание INT1

6

PD4 (XCK / T0)

Pin4 PORTD

T0 (Вход внешнего счетчика Timer0)

XCK (ввод / вывод внешних часов USART)

7

VCC

8

ЗЕМЛЯ

9

PB6 (XTAL1 / TOSC1)

Pin6 PORTB

XTAL1 (вывод 1 генератора тактовой частоты или вход внешнего тактового сигнала)

TOSC1 (вывод 1 генератора таймера)

10

PB7 (XTAL2 / TOSC2)

Штырь 7 PORTB

XTAL2 (вывод 2 генератора тактовой частоты)

TOSC2 (вывод 2 генератора таймера)

11

ПД5 (Т1)

Pin5 PORTD

T1 (Вход внешнего счетчика Timer1)

12

ПД6 (АИН0)

Pin6 PORTD

AIN0 (положительный I / P аналогового компаратора)

13

PD7 (AIN1)

Pin7 PORTD

AIN1 (отрицательный I / P аналогового компаратора)

14

PB0 (ICP1)

Pin0 PORTB

ICP1 (Вход захвата таймера / счетчика 1)

15

PB1 (OC1A)

Pin1 порта PORTB

OC1A (выход таймера / счетчика1, выход сравнения A)

16

PB2 (SS / OC1B)

Pin2 PORTB

SS (вход выбора ведомого SPI).Этот вывод низкий, когда контроллер действует как ведомый.

[Последовательный периферийный интерфейс (SPI) для программирования]

OC1B (Выход таймера / счетчика1, выход сравнения B)

17

PB3 (MOSI / OC2)

Pin3 PORTB

MOSI (главный выход, подчиненный вход).Когда контроллер действует как подчиненный, данные принимаются на этот вывод. [Последовательный периферийный интерфейс (SPI) для программирования]

OC2 (Выход таймера / счетчика2, выход сравнения)

18

PB4 (MISO)

Pin4 PORTB

MISO (главный вход и выход подчиненного устройства). Когда контроллер действует как подчиненный, данные передаются этим контроллером мастеру через этот вывод.

[Последовательный периферийный интерфейс (SPI) для программирования]

19

PB5 (SCK)

Pin5 PORTB

SCK (последовательные часы шины SPI). Это часы, совместно используемые этим контроллером и другой системой для точной передачи данных.

[Последовательный периферийный интерфейс (SPI) для программирования]

20

AVCC

Vcc для внутреннего преобразователя АЦП

21

AREF

Вывод аналогового опорного сигнала для АЦП

22

ЗЕМЛЯ

ЗЕМЛЯ

23

PC0 (АЦП0)

Pin0 PORTC

ADC0 (входной канал ADC 0)

24

ПК1 (АЦП1)

Pin1 PORTC

ADC1 (входной канал АЦП 1)

25

ПК2 (АЦП2)

Pin2 PORTC

АЦП2 (входной канал АЦП 2)

26

PC3 (АЦП3)

Pin3 PORTC

ADC3 (входной канал ADC 3)

27

PC4 (ADC4 / SDA)

Pin4 PORTC

ADC4 (входной канал ADC 4)

SDA (линия ввода / вывода данных двухпроводной последовательной шины)

28

PC5 (ADC5 / SCL)

Pin5 PORTC

ADC5 (входной канал ADC 5)

SCL (Линия синхронизации двухпроводной последовательной шины)

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

ATMEGA8 — упрощенные функции

ЦП

8-битный AVR

Количество выводов

28

Рабочее напряжение (В)

+2.7 В ДО +5,5 В (ATmega8L)

+4,5 В ДО +5,5 В (ATmega8) (+ 5,5 В является абсолютным максимумом)

Количество контактов ввода / вывода

23

Интерфейс связи

Последовательный интерфейс SPI Master / Slave (16,17,18,19 PINS) [Может использоваться для программирования этого контроллера]

Программируемый последовательный USART (2,3 PIN) [Может использоваться для программирования этого контроллера]

Двухпроводной последовательный интерфейс (27,28 контактов) [Может использоваться для подключения периферийных устройств, таких как датчики и ЖК-дисплеи]

Интерфейс JTAG

Не доступен

Модуль АЦП

6 каналов, разрешение 10 бит АЦП

Модуль таймера

Два 8-битных счетчика, Один 16-битный счетчик [Всего три]

Аналоговые компараторы

1

Модуль ЦАП

Нет

ШИМ каналов

3

Внешний осциллятор

0-8 МГц для ATMEGA8L

0-16 МГц для ATMEGA8

Внутренний осциллятор

Калиброванный внутренний генератор, 0–8 МГц

Тип памяти программ

Вспышка

Программная память или флэш-память

8 Кбайт [10000 циклов записи / стирания]

Скорость процессора (MIPS)

16 MIPS

RAM

1 Кбайт

EEPROM

512

Сторожевой таймер

Программируемый сторожевой таймер с отдельным встроенным генератором

Блокировка программы

Есть

Режимы энергосбережения

Шесть режимов [режим ожидания, шумоподавление АЦП, энергосбережение, отключение питания, режим ожидания и расширенный режим ожидания]

Рабочая температура

от -55 ° C до + 125 ° C (+125 — абсолютный максимум, -55 — абсолютный минимум)

Замены ATMEGA8

ATMEGA328P

Альтернативы ATMEGA8

ATMEGA16, ATMEGA32, ATMEGA8535

Где использовать микроконтроллер ATMEGA8

ATMEGA8 — это 28-контактный микроконтроллер AVR .Несмотря на то, что у нас есть много похожих микроконтроллеров, ATMEGA8 популярен, потому что это один из самых дешевых микроконтроллеров и предоставляет множество функций на меньших контактах. Благодаря программной памяти 8 Кбайт приложение ATMEGA8 очень универсально. С различными режимами ЭНЕРГОСБЕРЕЖЕНИЯ он может работать в МОБИЛЬНЫХ ВСТРОЕННЫХ СИСТЕМАХ. Благодаря своему компактному размеру его можно разместить на многих небольших досках. Благодаря сторожевому таймеру для сброса при ошибке его можно использовать в системах с минимальным вмешательством человека. Эти функции, объединенные в одном контроллере, делают ATMEGA8 популярным.

Как использовать микроконтроллер ATMEGA8

Использование ATMega8 аналогично использованию других микроконтроллеров ATMega, таких как ATMega32. Точно так же микроконтроллер необходимо запрограммировать и добавить соответствующие периферийные устройства для получения выходного сигнала. Без программирования контроллер — пустая фишка.

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

Весь процесс использования ATMEGA8 выглядит следующим образом:

  1. Список функций, которые должен выполнять ATMEGA8.
  2. Напишите функции на языке программирования в программах IDE. Вы можете бесплатно скачать программу IDE. Программа IDE для контроллеров AVR — ATMEL STUDIO. Ссылка на ATMELSTUDIO приведена ниже.

(Обычно Atmel Studio 6.0 для Windows7 [http://atmel-studio.software.informer.com/6.0/],

Atmel Studio 7 для Windows10 [https: // www.microchip.com/avr-support/atmel-studio-7])

(помните, что для этих IDE программа должна быть написана на языке «C»)

  1. После написания нужных программ скомпилировать для устранения ошибок с помощью IDE.
  2. Заставить среду IDE сгенерировать HEX-файл для написанной программы.
  3. Выберите устройство программирования (обычно программатор SPI для контроллеров AVR), который устанавливает связь между ПК и ATMEGA8.
  4. Запустите программу записи файлов HEX, которая предоставляется для выбранного устройства программирования.
  5. Выберите соответствующий шестнадцатеричный файл программы в SPI или другом программном обеспечении.
  6. Запишите шестнадцатеричный файл записанной программы во флэш-память ATMEGA8, используя эту программу.
  7. Отключите программатор, подключите соответствующую периферию для контроллера и запустите систему.

Приложения

Есть сотни приложений для ATMEGA8.

  • Промышленные системы управления.
  • SMPS и системы регулирования мощности.
  • Измерение аналоговых сигналов и манипуляции с ними.
  • Встроенные системы, такие как кофеварка, торговый автомат.
  • Системы управления двигателями.
  • Дисплейные единицы.
  • Система периферийного интерфейса.

2D Модель

Все размеры указаны в миллиметрах.

denilsonsa / atmega8-magnetometer-usb-mouse: ATmega8 работает как USB-мышь, считывая движения с магнитометра (цифрового компаса).[Заключительный проект по направлению Bacharelado em Ciência da Computação DCC / UFRJ]

Введение

Это абсолютное указывающее устройство USB HID с AVR ATmega8. 8-битный микроконтроллер и магнитометр HMC5883L. Это позволяет пользователю управлять указателем мыши, перемещая датчик в воздухе, направляя его на желаемое положение, чем-то похожее на контроллер Wiimote (правда, по совершенно другой технологии).

Он был разработан Денилсон Фигейредо де Са (см. Сообщение в блоге) в 2011 год в качестве выпускного проекта для получения степени бакалавра степень в области компьютерных наук в DCC / UFRJ.

Этот проект находится по адресу:

Полный текст моей диссертации (написан на португальском языке) доступен в формате PDF на раздел загрузки GitHub и BitBucket. Исходный код LaTeX доступен в каталоге monografia / (некоторые второстепенные для его компиляции может потребоваться настройка).

Фото и видео

Принципиальная схема схемы доступна на монографии / img / . подкаталог этого репозитория.

Как это работает

Устройство реализует USB HID и должно работать с любой операционной системой (имеет успешно протестирован в Linux, Mac OS X и Windows).Он определяет сам по себе как клавиатура и мышь (фактически, «абсолютное указывающее устройство»).

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

После подключения устройства к компьютеру пользователь должен установить переключатель в положение режим конфигурации и откройте любой простой текстовый редактор. В этом режиме устройство распечатывает меню конфигурации, отправляя (виртуальную) клавиатуру события к компьютеру (возможно, правильнее было бы сказать, что он «печатает» пункты меню вместо печати).Две кнопки устройства используются для перемещаться по элементам меню (выбирая следующий или предыдущий элемент), а третья кнопка подтверждает текущий выбор.

В режиме конфигурации пользователь должен откалибровать «ноль» от сенсор, а также углы экрана. Данные калибровки сохраняются в памяти EEPROM микроконтроллера, и, таким образом, он будет запомнен даже после отключения устройства.

После запуска «нулевой» калибровки устройство начнет печать значений. от датчика, и пользователь должен двигать датчик всеми возможными направлений, пытаясь получить максимальные и минимальные значения для каждого из три оси (X, Y, Z).Нажмите кнопку подтверждения , чтобы завершить калибровка. Эта калибровка требуется, потому что датчик может иметь смещения и, таким образом, возвращают значения, которые не центрированы на нуле (см. изображения zerocal_off и zerocal_on из подкаталога monografia / img / ).

После правильной калибровки «нуля» пользователь должен откалибровать каждый угол экрана. Пользователь должен перемещаться по пунктам меню до Установить влево , наведите датчик на верхний левый угол экрана, а затем нажмите кнопка подтверждения .Это следует повторить для всех остальных углов. Для лучшего результатов, пользователь должен находиться прямо перед центром экрана, а экран должен быть обращен либо на север, либо на юг.

Калибровка «нуля» нужна только один раз, сразу после сборки проект. С другой стороны, калибровка угла требуется всегда, когда пользователь сталкивается с другой ориентацией экрана.

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

Устройство считывает измерения магнитного поля с датчика как 3-осевой вектор и применяет алгоритм для преобразования этого 3D-вектора в 2D. координаты экрана. Подробнее об алгоритме читайте в mouseemu.c исходный код.

Из-за ограниченной точности сенсора и количества улавливаемого шума устройство применяет сглаживающий фильтр к положению указателя.Это увеличивает воспринимаемой точности, но также вносит небольшую задержку в движения.

Переключатель режима также можно использовать для приостановки положения мыши, так как указатель не перемещается в режиме конфигурации .

Все шаги, упомянутые здесь, можно увидеть в этом видео.

Возможные улучшения

  • Используйте микроконтроллер с большим объемом памяти. Это необходимо перед внедрение любых дальнейших улучшений.

  • Используйте сигнал прерывания DRDY от датчика, чтобы получить до 160 Гц.В применяемом в настоящее время методе используется непрерывная частота 75 Гц. режим измерения вместе с опросом. Это было реализовано так потому что на печатной плате датчика, которую я купил на eBay, не было DRDY линия доступна. Печатная плата продается в Love Electronics есть эта линия.

  • Для достижения наилучших результатов пользователь должен смотреть на север или на юг. направление. Если вместо этого пользователь смотрит на запад или на восток, вертикальное перемещение указателя сильно ухудшается.Это случилось потому что в этом случае датчик вращается вокруг той же оси, что и магнитное поле и, таким образом, практически не дает изменений в измерениях. Решение этой проблемы — присоединить акселерометр в качестве второго датчик к этому устройству.

    • С этими двумя датчиками магнитометр можно использовать для горизонтального движение указателя и акселерометр для вертикального указателя движение.

    • Эти два датчика могут использоваться вместе для реализации компенсация наклона (аналогично этому руководству от Love Электроника).

    • Третий датчик, гироскоп, может быть добавлен для повышения точности и уменьшите дрожание указателя, увеличивая отзывчивость устройство.

  • Попробуйте другой магнитометр с большей точностью (если он есть).

  • Попробуйте другие алгоритмы преобразования координат.

  • Реализуйте беспроводную связь между устройством и компьютером.

    • Это можно сделать с помощью пары микроконтроллеров: один рядом с компьютер, разговаривающий с USB-портом; и еще один рядом с датчиком.Связь между этими двумя микроконтроллерами может быть беспроводной. Это решение было реализовано ранее в двух других проекты.

    • Или это можно сделать, реализовав устройство Bluetooth HID.

Требования

Для сборки этого проекта вам необходимо:

  • ATmega8 или любой другой аналогичный микроконтроллер AVR. При использовании другая модель, может потребоваться небольшая доработка прошивки. Кстати, если вы собираетесь покупать микроконтроллер, очень рекомендую выбирая тот, у которого больше памяти.Хотя 8 КиБ было достаточно, некоторые части прошивку пришлось отключить, чтобы она подошла. Если есть возможность, приобретите устройство с объемом флэш-памяти не менее 16 КБ.
  • HMC5883L 3-осевой магнитометр. Если вы используете другой датчик, будьте готов переписать код обращения с датчиком.
  • Прочие электронные компоненты. См. Принципиальную схему на monografia / img / AVR-magnetometer-usb-mouse , доступно в SVG, PNG и Форматы PDF.

Требуемая программная среда:

  • AVR-GCC — разработан с версией 4.5.3. Разные версии требует обновления нескольких флагов компилятора в Makefile , поскольку доступный флаги меняются между каждой основной версией.
  • AVR-Libc — разработан с версией 1.7.0.
  • AVRDUDE или любой другой инструмент для записи прошивки на устройство.
  • Unix-подобная система — разработана на Gentoo Linux amd64, должна работать где угодно стандартными средствами Unix.

Каталоги в этом репозитории

Основное содержимое этого проекта находится в этих трех каталогах:

  • firmware / — Содержит исходный код прошивки.
  • projection / — Код Python для изучения различных алгоритмов для преобразование 3D-векторов в 2D-координаты экрана.
  • monografia / — LaTeX-источник диссертации (на португальском языке).
  • apresentacao / — LaTeX-источник презентации (на португальском языке).

Есть также несколько дополнительных каталогов:

  • html_javascript / — Некоторые HTML-страницы, которые я использовал во время презентации.
  • linux_usbhid_bug / — Информация о незначительной ошибке в Linux USB HID умение обращаться.
  • other_scripts / — Некоторые скрипты для генерации графика размера прошивки со временем.

Как построить этот проект

Все перечисленные здесь команды предполагают, что вы находитесь в каталоге прошивки ( один с Makefile и с размером ).

Хотите получить быстрый список доступных целей ? Запустите make help .

Препарат

Эти шаги нужно выполнить только один раз. Это начальная установка проект.

  1. Установите оборудование на макетную плату. Вы можете найти краткое описание в комментарии Описание оборудования в main.c файл и полную принципиальную схему на monografia / img / AVR-magnetometer-usb-mouse , доступно в SVG, PNG и Форматы PDF.

  2. Откройте hardwareconfig.h и проверьте, соответствуют ли эти определения оборудование.В принципе, просто проверьте, подключены ли USB D- и USB D +. к правильным контактам.

  3. Откройте TWI_Master.h и проверьте правильность значения TWI_TWBR . Так должно быть обновляется, если вы используете другую тактовую частоту.

  4. Откройте Makefile .

    1. Установите AVRDUDE_PARAMS в соответствии с вашим программатором AVR, если вы используете что-то кроме USBasp.
    2. Если вы используете часы, отличные от 12 МГц, обновите настройку F_CPU .
    3. Если вы используете микроконтроллер, отличный от ATmega8, обновите GCC_MCU , AVRDUDE_MCU , BOOTLOADER_ADDRESS и CHECKSIZE_CODELIMIT .
    4. Также проверьте правильность битов предохранителя из AVRDUDE_PARAMS_FUSE .
    5. Если вы хотите использовать загрузчик, установите BOOTLOADER_ENABLED на 1 . Делать убедитесь, что на вашем устройстве достаточно места для хранения основной прошивки с загрузчиком.
    6. Установите ENABLE_KEYBOARD , ENABLE_MOUSE и ENABLE_FULL_MENU на 1 или 0 , судя по тому, что вы хотите в финальной прошивке.Посмотрите на комментарии в этом файле для получения подробной информации.
  5. Выполните make writefuse для записи битов предохранителя.

Запись загрузчика (опционально)

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

Этот проект поставляется с USBaspLoader. После записи в микроконтроллер, любое более позднее обновление прошивки может быть выполнено без необходимости преданный программист AVR.

После записи загрузчика, если выполняется определенное условие (конкретное кнопка удерживается) во время загрузки устройства, то загрузчик примет control, и устройство идентифицирует себя как USBasp. Пишу в это "виртуальный" USBasp фактически обновит прошивку без необходимости дополнительное оборудование.

  1. Вы обновляли Makefile , как описано выше? Вы запускали make writefuse ?

  2. Выполнить очистить .

  3. Выполните , сделайте загрузку . Это скомпилирует загрузчик.

  4. Выполните , сделайте writeboot . Это запишет загрузчик в микроконтроллер. Для этого шага вам понадобится программист AVR.

  5. Запустите make clean , чтобы очистить скомпилированные файлы. Это необходимо, потому что скомпилированные файлы из загрузчика несовместимы с основным проектом (и наоборот).

Готово! Вам больше не нужен программатор AVR!

Запись в EEPROM (необязательно)

Вам не нужно сейчас записывать EEPROM.Вы можете просто использовать прошивку встроенные меню (включено с ENABLE_KEYBOARD ) для интерактивного обновления настройки хранятся в EEPROM.

Значения EEPROM, определенные в sensor.c , подходят для моего датчика. Вероятно, у вашего датчика будут разные номера калибровки, и поэтому он настоятельно рекомендуется использовать меню прошивки для ее калибровки (по крайней мере однажды).

В любом случае, чтобы записать значения EEPROM, просто запустите make , а затем make writeeeprom .

Пишем основную прошивку

Вам либо нужен программатор AVR, либо вам нужно запустить загрузчик на микроконтроллер (см. раздел о загрузчике).

  1. Выполните либо , либо все , либо , сделайте комбайн .

    • make - это ярлык для make all .

    • make comb использует некоторые специальные флаги компилятора для компиляции все файлы одновременно, что приводит к дополнительной оптимизации, а не возможно при компиляции отдельно.Эта команда не будет работать на GCC 4.6 или новее, потому что флаги изменились (и, таким образом, они нужно обновить). Прочтите Makefile , чтобы узнать больше.

    • Если это не удается, попробуйте запустить make clean . Makefile из этого проект не идеален и не перечисляет все зависимости файлов. Это Всегда полезно запускать make clean всякий раз, когда что-то выходит из строя.

  2. Выполните , сделайте запись флэш-памяти .

После редактирования прошивки вам нужно только повторить эти два шага.

Благодарности

  • Проф. Нельсон Килула Васконселос , советник этого проекта.
  • Бруно Боттино Феррейра за помощь и терпение во время этого проекта.
  • Marcelo Salhab Brogliato за предложение преобразования координат с использованием линейные уравнения.
  • OBJECTIVE DEVELOPMENT Software GmbH за потрясающий V-USB реализация USB только для микропрограмм для устройств AVR.
  • Atmel Corporation для микроконтроллеров AVR и AVR315: TWI Мастер реализации.
  • Авторы и участники всего программного обеспечения с открытым исходным кодом и бесплатного программного обеспечения, использованного во время этот проект.
  • Marcin Wichary Демонстрация на Google I / O 2011: Секреты Google Pac-Man: Game Show, которое дало мне основную идею для этого проект.

vi: expandtab: filetype = markdown

atmega - Можно ли подключить USB-принтер к Atmega8

atmega - Можно ли подключить USB-принтер к Atmega8 - Обмен электротехнического стека
Сеть обмена стеков

Сеть Stack Exchange состоит из 177 сообществ вопросов и ответов, включая Stack Overflow, крупнейшее и пользующееся наибольшим доверием онлайн-сообщество, где разработчики могут учиться, делиться своими знаниями и строить свою карьеру.

Посетить Stack Exchange
  1. 0
  2. +0
  3. Авторизоваться Зарегистрироваться

Electric Engineering Stack Exchange - это сайт вопросов и ответов для профессионалов в области электроники и электротехники, студентов и энтузиастов.Регистрация займет всего минуту.

Зарегистрируйтесь, чтобы присоединиться к этому сообществу

Кто угодно может задать вопрос

Кто угодно может ответить

Лучшие ответы голосуются и поднимаются наверх

Спросил

Просмотрено 274 раза

\ $ \ begingroup \ $

Хотите улучшить этот вопрос? Добавьте подробности и проясните проблему, отредактировав этот пост.

Закрыт 4 года назад.

У меня есть термопринтер USB, которым я хочу управлять с помощью шестнадцатеричных команд из его таблицы данных с дешевых микроконтроллеров. Но для этого мне нужно создать USB-хост на моей плате, а для этого требуется нечто большее, чем просто Atmega8. Вместо этого, если я просто брошу usb-пакет, в котором есть моя команда, от контроллера к принтеру, это сработает?

Создан 18 фев.

\ $ \ endgroup \ $ 8 \ $ \ begingroup \ $

USB - это особенно сложный и чувствительный к времени протокол, который не способствует передаче битов на микроконтроллере.Даже попытка вручную реализовать конечный автомат USB в ПЛИС с нуля потребует значительного объема работы, требующей глубоких знаний спецификации USB и практических особенностей реализации.

Вам понадобится внешняя ИС USB-хоста или микроконтроллер со встроенной поддержкой USB-хоста.