Site Loader

Содержание

Схемы, устройства и проекты на микроконтроллерах 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. Он достаточно широко применяется в робототехнике, … Читать далее →

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


Светофор на RGB-светодиодной ленте, управляемый ARDUINO UNO

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

1 72 0

Схема цифровой шкалы на Arduino UNO для связного КВ-приемника

Здесь приводится описание цифровой шкалы для коротковолнового связного приемника, работающего в диапазонах 160м, 80м, 40м, 20м, 10м или любом из них. Шкала работает с двухстрочным ЖК-дисплеем. В его верхней строке показывает значение частоты в кГц,а в нижней длину волны в метрах. Внося …

1 1135 0

Самодельный велоспидометр на ARDUINO UNO (ATMEGA328)

Здесь описывается цифровой прибор на микроконтроллере, измеряющий скорость движения велосипеда. Индикатором служит ЖК-дисплей типа 1602А, он стандартный, на основе контроллера HD44780. Обозначение 1602А фактически значит, что он на две строки по 16 символов в строке. Используется только одна его …

1 749 0

Девятиразрядный мультиметр на АЦП AD7705 и AVR микроконтроллере

Основой предлагаемого мультиметра является микросхема 16-битного двухканального дельта-сигма аналого-цифрового преобразователя (АЦП) AD7705. Широко распространенные мультиметры на основе  АЦП двойного интегрирования ICL7106 [2] обеспечивают отображение результата преобразования числом, не превышающим 1999, что соответствует, без учета знака, 11-битному АЦП, за вычетом 48 единиц счёта…

1 2004 0

Реле времени на микроконтроллере AVR ATtiny2313 с индикатором фирмы Data Vision

Схема и описание самодельного реле времени на AVR микроконтроллере ATtiny2313 с индикатором фирмы Data Vision. Реле времени (таймеры), пожалуй, одна из самых массовых разработок конструкторов электронных техники. Автор предлагает вариант 4-х канального реле времени, разработанного на базе микроконтроллера семейства AVR и жидкокристаллического индикатора фирмы Data Vision. Принципиальная схема реле времени …

1 664 0

Макет светофора на ARDUINO UNO, схема и описание

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

1 365 0

Самодельный кодовый замок на микроконтроллере (PIC16F628A)

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

1 1136 0

Часы с календарем на индикаторах ИН-12

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

1 1144 0

Автоматическое управления вентиляцией помещения, схема на МК ATtiny2313A

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

0 1298 0

Двоичные часы на микроконтроллере PIC16F628A

Схема самодельных двоичных часов на микроконтроллере PIC16F628A и светодиодах. Эти необычные карманные часы могут стать оригинальным подарком. Индикатор времени в них построен всего на шести единичных светодиодах. Секрет в том, что число часов и число минут текущего времени отображаются ими …

1 707 0

1 2  3  4  5  … 10 

Радиодетали, электронные блоки и игрушки из китая:

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 | Практическая электроника

Что такое даташит

Даташит – это техническое описание на какой-либо радиокомпонент. Где его найти? Ну, конечно же, в интернете! Так так почти вся радиоэлектронная продукция выпускается “за бугром”, то и описание на них, соответственно, “забугорское”, а точнее, на английском языке. Те, кто хорошо дружит с разговорным английским, не факт, что сможет прочитать технические термины в даташитах.

Даташит на английском на Atmega8

Давайте попробуем пролить свет истины на основные характеристики МК ATmegа8. Для этого качаем даташит. В нашей статье мы будем рассматривать только основные сведения нашего подопечного.

Вот что мы видим на первой странице даташита:

 

Даташит на русском  Atmega8

Запоминаем правило: в фирменном описании нет ни одного лишнего слова! (иногда информации не хватает, но это уже другой случай)

Features. Переводится как “функции”. В среде электронщиков просто “фичи”.

– High Performance, Low Power AVR® 8-Bit Microcontroller

Высокопроизводительный, потребляющий мало энергии, 8-битный микроконтроллер.

Понимаем как рекламу, единственно полезное то, что данный микроконтроллер — 8 битный.

– Advanced RISC Architecture

Расширенная RISC архитектура.-6). А при 10 МГц — в десять раз быстрее, т.е., 0,1 мкс.

– 32 x 8 General Purpose Working Registers

32 восьмибитных регистра общего пользования.

Про регистры поговорим позднее, просто запомним, что большое количество регистров — весьма неплохо, ведь регистр — это ячейка памяти в самом МК. А чем больше такой памяти – тем «шустрее» работает МК!

Объединив эти данные с количеством поддерживаемых микроконтроллером команд, в очередной раз убеждаемся в изначальной ориентации данного МК под высокоуровневые языки вроде Си, Паскаля и других.

– Fully Static Operation

Полностью статическая структура.

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

(Также нелишним будет напомнить о том, что потребляемая мощность большинства типов МК напрямую зависит от тактовой частоты: чем выше тактовая частота, тем больше он  потребляет)

– Up to 16 MIPS Throughput at 16 MHz

До 16 миллионов выполняемых команд при тактовой частоте 16 МГц.

За одну секунду при тактовой частоте 16 МГц может быть выполнено до 16 000 000 команд! Следовательно, одна однобайтовая команда может быть выполнена за 0,07 мкс. Весьма недурно для маленькой микросхемы.

С учетом предыдущего пункта понимаем, как работает на частотах от 0 Гц до 16 МГц.

– On-chip 2-cycle Multiplier

В данном МК имеется встроенный умножитель, который умножает числа за два такта.

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

– High Endurance Non-volatile Memory segments

Надежная энергонезависимая память, построенная в виде нескольких сегментов.

Вспоминаем типы памяти: EEPROM и FLASH.

– 8KBytes of In-System Self-programmable Flash program memory

– 8 Кбайт встроенной в МК памяти. Память выполнена по технологии Flash. В самом МК имеется встроенный программатор.

Этот объем весьма хорош! Для обучения (да и не только) — с запасом. А наличие встроенного программатора этой памяти, позволяет загружать данные в память, используя простой внешний программатор (в простейшем случае это пять проводков, которыми микроконтроллер подключают к LPT порту компьютера).

– 256 Bytes EEPROM

В МК имеется 256 байт энергонезависимой памяти EEPROM.

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

– 1024 Bytes Internal SRAM

В МК имеется 1024 байт оперативной памяти (ОЗУ/RAM).

Также весьма приятный объем

– Write/Erase cyles: 10,000 Flash/100,000 EEPROM

Память Flash выдерживает 10 000 циклов записи/стирания, а память EEPROM — до 100 000

Проще говоря, программу в МК можно изменять до 10 000 раз, а свои данные в 10 раз больше.

– Data retention: 20 years at 85°C/100 years at 25°C

Сохранность данных в памяти МК — до 20 лет при температуре хранения 85°C, и 100 лет — при температуре 20°C.

Если ваши внуки и правнуки включат вашу «мигалку» или музыкальную шкатулку, то они смогут насладиться их работой ))

– Optional Boot Code Section with Independent Lock Bits

– Programming Lock for Software Security

МК имеет несколько областей памяти (не уточняем каких), которые можно защитить от прочтения установкой специальных бит защиты.

Ну, тут всё понятно: свои труды вы можете защитить от вычитывания программы из памяти МК.

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

– Two 8-bit Timer/Counters

– One 16-bit Timer/Counter

В МК имеется два таймера/счетчика: 8 и 16 бит.

– Three PWM Channels

Три канала ШИМ

– 8-channel ADC in TQFP and QFN/MLF package

Eight Channels 10-bit Accuracy

– 6-channel ADC in PDIP package

Six Channels 10-bit Accuracy

В составе МК есть несколько каналов АЦП: 6 – для корпуса PDIP и 8 – для корпуса QFN/MLF. Разрядность АЦП — 10 бит.

– Byte-oriented Two-wire Serial Interface

– Programmable Serial USART

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

Master/Slave SPI Serial Interface

Реализован SPI интерфейс связи, режимы Мастер/Подчиненный.

[quads id=1]

– Programmable Watchdog Timer with Separate On-chip Oscillator

Сторожевой таймер с собственным автономным генератором.

– On-chip Analog Comparator

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

– Power-on Reset and Programmable Brown-out Detection

Реализованы режимы контроля напряжения питания и защита работы МК при плохом питании (гарантирует увеличение надёжности работы всей системы).

– Internal Calibrated RC Oscillator

Встроенный калиброванный RC-генератор (можно запустить МК без внешних элементов).

– External and Internal Interrupt Sources

Реализовано несколько типов внешних и внутренних прерываний.

– Five Sleep Modes

Пять режимов «сна» (уменьшение энергопотребления МК за счет отключения некоторых внутренних узлов или специальных методов замедления их работы)

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

– 28-pin PDIP, 32-lead TQFP, 28-pad QFN/MLF and 32-pad QFN/MLF

Указаны типы корпусов, в которых выпускается данный микроконтроллер. Видим «28 DIP» — это хорошо! Не надо покупать специализированные дорогостоящие панели и мучиться с тоненькими и часто расположенными выводами на корпусе МК.

Temperature Range:

 -40°C to 85°C

Рабочая температура: -40°C … +85°C

Очень важный параметр! Бывают модели микроконтроллеров, которые работоспособны только при положительных температурах окружающего воздуха.

(Был у меня горький опыт, когда в устройстве был применен именно такой «теплолюбивый» микроконтроллер. А устройство поместили на улицу… И каждую зиму «благодарные» пользователи моего устройства «хвалили» меня за «замерзание» микроконтроллера, которое проявлялось в виде полного его зависания)

Напряжение питания и тактовая частота

– 2.7 – 5.5V for ATmega8L

– 4.5 – 5.5V for ATmega8

Имеется две модификации данного МК: одна работоспособна при широком диапазоне питающих напряжение, вторая — в узком.

ATmega8L: 0 – 8 MHz @ 2.7 – 5.5V

ATmega8: 0 – 16 MHz @ 4.5 – 5.5V

Максимальная тактовая частота:

– Atmega8L: 0 – 8 МГц при напряжении питания 2,7 – 5,5 вольт

– Atmega8: 0 – 16 МГц при напряжении питания 4,5 – 5,5 вольт.

И что мы видим? А то, что модификация МК, работоспособная в широком диапазоне питающих напряжений, не может быть тактируема частотами выше 8 МГц. Следовательно, и ее вычислительные возможности будут ниже.

Power Consumption at 4 Mhz, 3V, 25°C

– Active: 3.6 mA

– Idle Mode: 1.0 mA

– Power-down Mode: 0.5 µA

Потребляемая мощность:

– при работе на частоте 4 МГц и напряжении питания 3 вольта потребляемый ток: 3,6 миллиампер,

– в различных режимах энергосбережения потребляемый ток: от 1 миллиампер до 0,5 микроампера

Распиновка Atmega8

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

Советую этот листок из даташита распечатать и иметь под рукой. В процессе разработки и сборки схемы очень полезно иметь эти данные перед глазами.

Внимание!

Обратите внимание на такой факт: микросхема микроконтроллера может иметь (и имеет в данной модели) несколько выводов для подключения источника питания. То есть имеется несколько выводов для подключения «земли» — «общего провода», и несколько выводов для подачи положительного напряжения.

Изготовители микроконтроллеров рекомендуют подключать соответствующие выводы вместе, т.е., минус подавать на все выводы, помеченные как Gnd (Ground — Земля), плюс — на все выводы помеченные как Vcc.

При этом через одинаковые выводы МК не должны протекать токи, так как внутри корпуса МК они соединены тонкими проводниками! То есть при подключении нагрузки эти выводы не должны рассматриваться как «перемычки».

Блочная диаграмма

Листаем описание далее, видим главу «Overview» (Обзор).

В ней имеется раздел «Block Diagram» (Устройство). На рисунке показаны устройства, входящие в состав данного микроконтроллера.

Генератор тактовой частоты

Но самым важным для нас в настоящее время является блок «Oscillator Circuits/Clock Generation» (Схема генератора/Генератор тактовой частоты).

В программе часто возникает необходимость сделать временную задержку в ее выполнении — паузу. А точную паузу можно организовать только методом подсчета времени. Время считаем исходя из количества тактов генератора микроконтроллера.

Да и не лишним будет заранее просчитать: успеет ли МК выполнить тот или иной фрагмент программы за отведенное для этого время.

В даташите ищем соответствующую главу: «System Clock and Clock Options» (Тактовый генератор и его параметры). В ней видим раздел «Clock Sources» (Источники тактового сигнала), в котором имеется таблица с перечнем видов тактовых сигналов. В этом разделе указано, что данный МК имеет встроенный тактовый RC-генератор. В разделе «Default Clock Source» имеется указание о том, что МК продается уже настроенным для использования встроенного RC-генератора. При этом тактовая частота МК — 1 МГц.

Из раздела «Calibrated Internal RC Oscillator» (Калиброванный RC-генератор) узнаем, что встроенный RC-генератор имеет температурный дрейф в пределах 7,3 — 8,1 МГц. Может возникнуть вопрос: если частота встроенного тактового генератора 7,3 — 8,1 МГц, то как была получена частота 1 МГц? Дело в том, что тактовый сигнал попадает в схемы микроконтроллера через программируемый делитель частоты (Об это рассказано в разделе «System Clock Prescaler»).

В данном микроконтроллере он имеет несколько коэффициентов деления: 1, 2, 4 и 8. При выборе первого мы получим частоту самого тактового генератора, при включении последнего — в 8 раз меньше, т.е., 8/8=1 МГц. С учетом вышесказанного получаем, что тактовая частота данного МК при включенном делителе с коэффициентом 8 будет в пределах от 7,3/8 = 0,9125 МГц (9125 КГц) до 8,1/8 = 1,0125 МГц.

Обратите внимание на один ну очень важный факт: стабильность частоты дана при температуре МК 25 градусов по шкале Цельсия. Вспомним, что внутренний генератор выполнен по RC схеме. А емкость конденсатора очень зависит от температуры!

Конденсаторы по питанию

Перед тем, как подать на микроконтроллер питающее напряжение, выполним правило, которое обязательно для всех цифровых микросхем: в непосредственной близости от выводов питания микросхемы должен быть керамический конденсатор емкостью 0,06 — 0,22 мкф. Обычно устанавливают конденсатор 0,1 мкф. Его часто называют блокировочным конденсатором.

В схему необходимо установить и электролитический конденсатор емкостью 4-10 мкф. Он также является блокировочным фильтром, но на менее высоких частотах. Такой конденсатор можно устанавливать один для нескольких микросхем. Обычно на 2-3 корпуса микросхем.

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

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

Конденсатор для постоянного тока является изолятором. Но при установке конденсатора в цепи с непостоянным током он делается сопротивлением. Чем выше частота, тем меньшее сопротивление оказывает конденсатор. Следовательно, блокировочный конденсатор с малой емкостью пропускает через себя (шунтирует) высокочастотные сигналы (десятки и сотни Герц), а конденсатор с бОльшей емкостью — низкочастотные. Об этом я писал еще в статье Конденсатор в цепи постоянного и переменного тока

Выводы

– микроконтроллер AVR ATmega-8 при поставке с завода работает на тактовой частоте 0,91—1,1 МГц;

– напряжение питания должно быть в пределах 4,5 — 5,5 Вольт. Мы будем использовать микросхемы с питающим напряжением 5 Вольт, поэтому и МК будет питаться этим же напряжением. (Хотя работоспособность сохранится при напряжении питания 2,7 Вольт для обычных, не низковольтных моделей МК)

Где и как искать компоненты и даташиты ? Смотрите в видео:

Power-line communication. Часть 2 — Основные блоки устройства / Блог компании Directum / Хабр

Часть 1 — Основы передачи данных по линиям электропередач

В первой части статьи мы кратко ознакомились с основными понятиями при передаче данных по линиям электропередач. Узнали, что такое “полезный сигнал”, как с его помощью можно кодировать передаваемую информацию. Но ни слова не было о том, как это устройство должно быть выполнено физически, как оно будет генерировать сигнал, и каким образом его вообще подключить к сети 220 В.

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

— Введение
— Мозги устройства — микроконтроллер
— Основные требования к микроконтроллеру
— Выбор подходящего микроконтроллера
— Особенности питания устройства

Дисклеймер: статья не является руководством по созданию устройства и не является справочником по электронным компонентам. Это просто результаты моих экспериментов и некоторый накопленный практикой опыт, который, надеюсь, будет полезен тем, кто интересуется темой. Если есть какие-то замечания, интересные ссылки и книги, обязательно оставляй это в комментах.

Введение

Для начала кратко вспомним из части 1, как происходит передача данных. На изображении одна из фаз ЛЭП. Красное устройство передает, синие слушают. Биты данных один за одним передаются в виде синусоидальных сигналов различной частоты (FSK модуляция).

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

Для примера: если передается символ “0”, то генерируется “полезный сигнал” в виде синусоиды 74 кГц. А если передается “1”, то генерируется синусоида с частотой, например, 80 кГц. Номиналы частот не особо важны, просто выбираются любые из разрешенных диапазонов. Главное, чтобы приемник смог их различить.

В первой части статьи упоминалось про третий символ “S”, который означал начало кадра. Он также кодировался своей определенной частотой. Когда устройство получало символ “S”, входной буфер очищался. Для простоты в этой статье будут упоминаться только “0” и “1”.

Передающие и принимающие устройства синхронизируются между собой с помощью отдельного блока устройства — “zero cross детектора”.

Представим передающее устройство, в котором есть подготовленный кадр данных — некий массив нулей и единиц, и этот кадр нужно передать по PLC каналу связи (ЛЭП). Передача/прием кадра происходит по одному биту за один синхросигнал из ZC детектора.

Физически это значит, что за один синхросигнал из ZC детектора генерируется один “полезный сигнал” определенной частоты. В нашем случае это синусоиды 74 кГц или 80 кГц.

Таким образом, бит за битом, передается кадр данных в PLC канал. Совместно с микроконтроллером генерацией сигналов будет заниматься отдельная часть схемы. Назовём её “Выходная цепь”.

Задача принимающих устройств — каждый раз, по сигналу ZC детектора, оцифровывать “полезный сигнал” из PLC канала и узнавать, какой символ там был закодирован.

Но сначала сырой сигнал нужно грубо очистить от шума, подогнать уровень “очищенного” сигнала под пригодный для оцифровки и уже затем передать на АЦП микроконтроллера для дальнейшего цифрового анализа. Этой подготовкой “полезного сигнала” для АЦП будет заниматься “Входная цепь”.

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

В следующей части рассмотрим как устройство можно согласовать с сетью 220 В, работу ZC детектора, а также про входную и выходную цепи.

Мозги устройства — микроконтроллер

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

Микроконтроллер — это такой мини-компьютер, который в одном корпусе содержит процессор (ЦПУ), память (ПЗУ и ОЗУ), ввод-вывод и периферийные устройства. По сути, внутри уже все есть для работы: подаем питание и поехали. Дальше все зависит уже от программы “прошивки”, которую мы в него записали.

Рисунок с сайта digikey.com

Сейчас выпускают микроконтроллеры с большим количеством различной встроенной периферии. Это очень удобно, так как меньше необходимости во внешних компонентах, что экономит место на печатной плате (и, конечно же, ваши денежки). Внутри может иметь ЦАП и АЦП, часы с календарем. Даже встроенный USB уже не удивляет.

На рынке огромное разнообразие микроконтроллеров с разной вычислительной мощностью и периферией. Обычно они группируются в серии и подходят под разные классы задач. Например, чтобы помигать светодиодом в миниатюрном устройстве, нам не нужен мощный камень, на котором можно запустить Linux, подойдет “ATtiny”. Но для нашего устройства его уже не хватит, так как нужны ЦАП, АЦП и быстрые вычисления в реальном времени.

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

Основные требования к микроконтроллеру

Производительность

Основной нагрузкой на ЦПУ будет обработка оцифрованного входного сигнала с помощью ДПФ для выяснения того, какой символ был закодирован в сигнале: “0” или “1”. Далее этот символ будет отправляться в протокол на уровень выше. Больше всего вычислений будет происходить именно при подсчете гармоник в ДПФ.

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

Результат визуально можно представить в виде эквалайзера, на котором нарисованы полоски определенных частот разной высоты (амплитуды). Для подсчета высоты каждой отдельной полоски нужно сигнал прогонять через ДПФ.

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

В самом простом случае можно просто сравнить амплитуды гармоник 74 и 80 кГц между собой. Если в сигнале преобладает гармоника с частотой 74 кГц, записываем в входной буфер бит “0”.

Если в сигнале преобладает гармоника с частотой 80 кГц, записываем в входной буфер “1”.

В таком случае, любой шум что-то означает: “0” либо “1”, даже если ничего не передавалось. Отделением зерен от плевел будет заниматься отдельная подпрограмма — уровнем выше — которая будет проверять целостность кадра и прочие прелести.

Задача же этого уровня — просто, как конвейер, подавать “0” и “1” наверх, а дальше из них будут складываться правильные целостные кадры данных. Или не будут.

Также можно заморочиться и дополнительно рассчитывать амплитуды смежных гармоник и узнавать уровень шума относительно полезного сигнала. Можно программно фильтровать сигнал и тд. Вариантов много.

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

Если разложить всю нагрузку на которую ЦПУ тратит время друг за другом, то получим примерно это:

  • оцифровка сигнала

  • подсчет амплитуд гармоник через ДПФ и анализ результата

  • прочая нагрузка (обработка прерываний из интерфейсов USB или CAN, обработчики таймеров, моргания светодиодами, работа с памятью, какие-то вычисления по протоколу и т.д.)

Это должно циклично выполняться каждые 10 миллисекунд снова и снова. ЦПУ никогда не должен быть загружен на 100%, иначе есть риск не успеть посчитать что-то важное. Поэтому всегда нужно оставлять запас по производительности.

Энергоэффективность

Обратная сторона быстрых вычислений — большее потребление энергии. Чем быстрее контроллер считает, тем больше он потребляет энергии. Поэтому нам не нужен “слишком мощный” процессор.

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

Должен быть достаточно быстрый АЦП

Нам нужно оцифровывать входной аналоговый сигнал и желательно, чтобы был встроенный АЦП. Точность тут не так важна, как скорость. Так как измеряемый сигнал имеет частоту до сотни килогерц. Для корректных вычислений гармоник есть условие (из Теоремы Котельникова).

Частота дискретизации должна быть минимум в два раза больше частоты измеряемого сигнала.

Это значит, что для распознавания сигнала нужно сделать от двух точек измерения на период. А по-хорошему — 4-5. Посмотрим на примере.

Представим, что мы измеряем сигнал, в котором есть нужная нам гармоника частотой 80 кГц. У сигнала с частотой 80 кГц период микросекунд. Чтобы оцифровать 5 точек на период нужно успевать делать измерение раз в 2.5 микросекунды для адекватного распознавания сигнала.

С пятью точками измерений на период уже выглядит неплохо. ДПФ с этим отлично справится.

Но для чего брать с запасом? Что если измерять по минимуму, только две точки на период? Вот такой сигнал мы оцифруем при удачном попадании.

А так будет выглядеть оцифрованный сигнал, если попасть в момент, когда сигнал в нуле.

Не похоже на синусоиду.

Если интересно посмотреть, что будет, если проводить измерения частотой меньше двух точек за период, то поищите в гугле картинки “Эффект алиасинга”.

Должен быть достаточно быстрый ЦАП

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

Представим на примере синусоиды с частотой 80 кГц, период 12.5 микросекунд. Возьмем для начала 4 точки на период. Генерация каждые 3.125 микросекунды.

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

Увеличим количество точек вдвое. Генерация каждые 1.56 микросекунды.

Нужна достаточная скорость ЦАП для того, чтобы сигнал был хотя бы похож на синус. В нашем случае, с сигналом частотой до 80 кГц, будет достаточно чтобы ЦАП успевал менять уровень сигнала раз в 1.5 микросекунды. Если успеет быстрее, то еще лучше.

С выхода ЦАП этот угловатый сигнал проходит через пассивный фильтр нижних частот и в сглаженном виде идет на усилитель “выходной цепи”.

Если нет АЦП

Помню, в самом начале я проводил эксперименты на 8-битных AVR от Atmel серии ATmega8, и у них в распоряжении не было АЦП. Но на них было очень удобно начинать знакомство с миром микроконтроллеров. Низкий порог вхождения и никаких танцев с бубнами при запуске.

Ну так вот, входной сигнал я решил “оцифровывать” простой ножкой в режиме входа. Если входное напряжение выше 2.5В, то у ножки было логическое состояние “1”, если ниже 2.5В, то “0”. В равные промежутки времени просто считывалось текущее состояние ножки и эти значения записывались в массив.

И этот “оцифрованный сигнал” прогонялся через ДПФ и вычислялось наличие нужных гармоник. Ни о какой точности или чувствительности речи и не шло, но это работало.

Если нет ЦАП

Аналогичная ситуация на ATmega8 была с ЦАП. Его там нет, и мне очень не хотелось заморачиваться с внешним ЦАП.

Оказалось, что можно пожертвовать логическими выходами микроконтроллера и подключить к ним резисторную матрицу R-2R. Таким образом из горстки резисторов собрать свой ЦАП с нужной разрядностью.

Картинка с сайта easyelectronics.ru

Подавая 0 и 1 на выходы микроконтроллера, можно получать нужный уровень напряжения на выходе “OUT”. Чем больше выходов будет использовано, тем выше разрядность ЦАП. По схеме R-2R оставил ссылку в конце.

Выбор подходящего микроконтроллера

После экспериментов на ATmega8 мне захотелось улучшить то, что есть. Выбирая из разных вариантов, я положил глаз на STM32. А конкретно — на STM32F103 — это 32-битные микроконтроллеры на ядре ARM Cortex-M3 (до 72 MHz).

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

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

Производительность?

Схема тактирования позволяет работать ЦПУ на частоте 72 MHz, что после 8-битных на 20 MHz было с запасом. Хватало для более точных расчетов по алгоритму ДПФ.

Энергоэффективность?

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

Достаточно быстрый АЦП?

Разобрался, как разогнать до максимальной скорости АЦП при частоте ЦПУ 72 MHz. Так как ранее было сказано, что полезный сигнал будет частотой в районе 80 кГц, то будем считать исходя из этого.

В доках для STM32 нашел, как вычислять минимальное время преобразования: нужно к настраиваемому времени семплирования (минимум 1.5 цикла) прибавить 12.5 машинных циклов. Получается 14 машинных циклов на одну точку измерения.

При определенной настройке схемы тактирования на модуль АЦП приходится 14 MHz. Если перевести в секунды, то 14 циклов при частоте тактирования 14 MHz — это одно измерение в 1 микросекунду.

Идеально! Даже если полезный сигнал будет частотой 100 кГц, я смогу измерить 10 точек за один период сигнала. С минимальной точностью, но быстро.

Примерно так будет выглядеть оцифровка синусоиды 80 кГц.

Достаточно быстрый ЦАП?

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

Почитав документацию, я понял, что в ЦАП STM32F103 встроенный ОУ имеет ограничение в 1 MSPS. Получилось настроить генерацию каждой точки сигнала раз в 1 микросекунду.

Примерно так при этом будет выглядеть синусоида с частотой 80 кГц на выходе из ЦАП.

Периферия

Что еще мне понравилось в STM32F103 — это наличие встроенного USB. Там есть режим эмуляции COM порта. Мне показалось это очень удобным, особенно после внешних преобразователей USB-UART.

Можно подключать устройство к ПК обычным шнурком от телефона и через терминал посылать на устройство какие-нибудь отладочные команды.

Для экспериментов подключал два PLC устройства к двум компам, и они посылали друг другу ASCII символы, вводимые с клавиатуры. Получилось что-то вроде чата через розетку 220 В.

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

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

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

Схема питания устройства зависит от потребителей. В нашем случае основные “жрущие” потребители — это микроконтроллер и “выходная цепь”, так как в ней усилитель для отправки сигнала в ЛЭП.

Остальные потребители вроде усилителей входного сигнала во “входной цепи”, EEPROM памяти или какие-то UART конвертеры потребляют немного.

Стабильное питание микроконтроллера

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

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

Примерная картина потребления мощности

При передаче кадра это происходит каждые 10 миллисекунд длиной в 1 миллисекунду.

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

Для тяжелых случаев есть пара советов, которые помогут уменьшить влияние скачков напряжения.

Совет 1 — Разделить землю на аналоговую и цифровую

Первый важный момент — это обеспечение минимального влияния аналоговой части схемы на цифровую.

Для этого нужно разделить дорожки “GND” в самом начале схемы питания — возле минуса блока питания. Ни в коем случае нельзя их пересекать или как-то замыкать в других частях схемы.

Для питания условно “цифровых” компонентов схемы (микроконтроллер, EEPROM память и т.д.) от самого блока питания должна идти отдельная линия, можно назвать её “DGND”.

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

Совет 2 — Не забыть про керамику

Конденсаторы нужно ставить перед каждой ножкой питания микроконтроллера и как можно ближе к ним. Обязательно выполнить минимум обвеса, который указан в Datasheet на микроконтроллер.

Картинка с сайта allexpress.com

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

С танталовыми осторожнее, они красиво взрываются :).

Еще надо не забыть “защитить” ножку “Reset” микроконтроллера, как указано в Datasheet. В противном случае микроконтроллер может внезапно перезагружаться. Если нет светодиодной индикации запуска программы микроконтроллера, то можно этого даже не заметить.

Совет 3 — Экранировать цифровые компоненты

Может получиться так, что недалеко от микроконтроллера расположен высокочастотный трансформатор, который во время передачи сигнала генерирует электромагнитные помехи.

Мне помогло расположение микроконтроллера на другой от ВЧ трансформатора стороне печатной платы и наличие земляного полигона под корпусом микроконтроллера.

Картинка с сайта caxapa.ru «Помехоустойчивые устройства, Алексей Кузнецов»

Подробнее можно почитать в статье по ссылке в конце.

Заключение

В этой части мы в общих чертах разобрали чем занимается микроконтроллер. Узнали некоторые особенности питания устройства и возможные проблемы.

Статья вышла довольно объемной. Я постарался максимально коротко передать основные моменты. Может сложиться ощущение незаконченности и это нормально. Для углубленного изучения оставлю ссылки внизу.

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

У кого был/есть какой-либо опыт в PLC обязательно делитесь этим с остальными в комментариях 🙂

Полезные ссылки

https://nag.ru/articles/article/24485/strasti-po-plc.html — интересная статья по истории PLC
https://www.electronshik.ru/catalog/interfeys-modemy-plc — заводские PLC микросхемы с datasheet (там много схем и характеристик)
https://ru.wikipedia.org/wiki/Частотная_манипуляция — FSK модуляция
http://www.atmega8.ru/ — про ATmega8

STM32
https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html — STM32F103
https://themagicsmoke.ru/courses/stm32/led.html — “Помигать светодиодом” на stm32
https://blog.avislab.com/stm32-clock_ru — схема тактирования stm32
https://habr.com/ru/post/312810/ — подробнее про ЦАП в stm32
https://blog.avislab.com/stm32-adc_ru/ — АЦП в stm32
https://blog.avislab.com/stm32-usb_ru/ — USB в stm32

Аналоговая часть
http://easyelectronics.ru/parallelnyj-cifro-analogovyj-preobrazovatel-po-sxeme-r-2r.html — преобразователь по схеме R-2R
http://caxapa.ru/lib/emc_immunity.html — «Помехоустойчивые устройства», Алексей Кузнецов
https://www.ruselectronic.com/passive-filters — пассивные фильтры

Микроконтроллеры AVR для начинающих – 1 « схемопедия


Микроконтроллеры (далее МК) прочно вошли в нашу жизнь, на просторах интернета можно встретить очень много интересных схем, которые исполнены на МК. Чего только нельзя собрать на МК: различные индикаторы, вольтметры, приборы для дома (устройства защиты, коммутации, термометры…), металлоискатели, разные игрушки, роботы и т.д. перечислять можно очень долго. Первую схему на микроконтроллере я увидел лет 5-6 назад в журнале радио, и практически сразу же перелистнул страницу, подумав про себя “все равно не смогу собрать”. Действительно, в то время МК для меня были чем то очень сложным и непонятым устройством, я не представлял как они работают, как их прошивать, и что делать с ними в случае неправильной прошивки. Но около года назад, я впервые собрал свою первую схему на МК, это была схема цифрового вольтметра на 7 сегментных индикаторах, и микроконтроллере ATmega8. Так получилось, что микроконтроллер я купил случайно, когда стоял в отделе радиодеталей, парень передо мной покупал МК, и я тоже решил купить, и попробовать собрать что-нибудь. В своих статьях я расскажу вам про микроконтроллеры AVR фирмы ATMEL, научу вас работать с ними, рассмотрим программы для прошивки, изготовим простой и надежный программатор, рассмотрим процесс прошивки и самое главное проблемы, которые могут возникнуть и не только у новичков.

Основные параметры некоторых микроконтроллеров семейства AVR:

МикроконтроллерПамять FLASHПамять ОЗУПамять EEPROMПорты ввода/выводаU питанияЧастота
ATmega484512256232,7-5,50-10-20
ATmega48V4512256231,8-4,8-5,50-4-10
ATmega85158512512354,5-5,50-16
ATmega8515L8512512352,7-5,50-8
ATmega85358512512324,5-5,50-16
ATmega8535L8512512322,7-5,50-8
ATmega881K512234,5-5,50-16
ATmega8L81K512232,7-5,50-8
ATmega8881K512232,7-5,50-10-20
ATmega88V81K512234,5-5,50-4-10
ATmega16161K512324,5-5,50-16
ATmega16L161K512322,7-5,50-8
ATmega32322K1K324,0-5,50-16
ATmega32L322K1K322,7-5,50-8

Дополнительные параметры МК AVR mega:

Рабочая температура:   -55…+125*С

Температура хранения:   -65…+150*С

Напряжение на выводе RESET относительно GND: max 13В

Максимальное напряжение питания: 6.0В

Максимальный ток линии ввода/вывода: 40мА

Максимальный ток по линии питания VCC и GND: 200мА

Расположение выводов моделей ATmega 8X

Расположение выводов моделей ATmega48x, 88x, 168x

Расположение выводов у моделей ATmega8515x

Расположение выводов у моделей ATmega8535x

Расположение выводов у моделей ATmega16, 32x

Расположение выводов у моделей ATtiny2313

В конце статьи прикреплён архив с даташитами на некоторые микроконтроллеры

Установочные FUSE биты MK AVR 

BODENBODLEVELBOOTRSTBOOTSZ0BOOTSZ1CKSEL0CKSEL1SPIEN
CKSEL2CKSEL3EESAVEFSTRTINCAPRCENRSTDISBLSUT0
SUT1       

Запомните, запрограммированный фьюз – это 0, не запрограммированный – 1.  Осторожно  стоит относиться к выставлению фьюзов, ошибочно запрограммированный фьюз может заблокировать микроконтроллер. Если вы не уверены какой именно фьюз нужно запрограммировать, лучше на первый раз прошейте МК без фьюзов.

Самыми популярными микроконтроллерами у радиолюбителей являются ATmega8, затем идут ATmega48, 16, 32, ATtiny2313 и другие. Микроконтроллеры продаются в TQFP корпусах и DIP, новичкам рекомендую покупать в DIP. Если купите TQFP, будет проблематичнее их прошить, придется купить или изготовить переходник  и паять плату т.к. у них ножки располагаются очень близко друг от друга. Советую микроконтроллеры в DIP корпусах, ставить на специальные панельки, это удобно и практично, не придется выпаивать МК если приспичит перепрошить, или использовать его для другой конструкции.

Почти все современные МК имеют возможность внутрисхемного программирования ISP, т.е. если ваш микроконтроллер запаян на плату,  то для того чтобы сменить прошивку нам не придется выпаивать его с платы.

Для программирования используется 6 выводов:

RESET – Вход МК

VCC – Плюс питания, 3-5В, зависит от МК

GND – Общий провод, минус питания.

MOSI – Вход МК (информационный сигнал в МК)

MISO – Выход МК (информационный сигнал из МК)

SCK – Вход МК (тактовый сигнал в МК)

Иногда еще используют вывода XTAL 1 и XTAL2, на эти вывода цепляется кварц, если МК будет работать от внешнего генератора, в ATmega 64 и 128 вывода MOSI и MISO не применяются для ISP программирования, вместо них вывода MOSI подключают к ножке PE0, a MISO к PE1.  При соединении микроконтроллера с программатором, соединяющие провода должны быть как можно короче, а кабель идущий от программатора на порт LPT так-же не должен быть слишком длинным.

В маркировке микроконтроллера могут присутствовать непонятные буквы с цифрами, например Atmega 8L 16PU, 8 16AU, 8A PU и пр. Буква L означает, что МК работает от более низкого напряжения, чем МК без буквы L, обычно это 2.7В. Цифры после дефиса или пробела 16PU или 8AU говорят о внутренней частоте генератора, который есть в МК. Если фьюзы выставлены на работу от внешнего кварца, кварц должен быть установлен на частоту, не превышающей максимальную по даташиту, это 20МГц для ATmega48/88/168, и 16МГц для остальных атмег.

Первые цифры в названии микроконтроллера обозначают объем FLASH ПЗУ в килобайтах, например ATtiny15 – 1 Кб, ATtiny26 – 2 Кб, AT90S4414 – 4 Кб, Atmega8535 – 8 Кб, ATmega162 – 16Кб, ATmega32 – 32 Кб, ATmega6450 – 64Кб, Atmega128 – 128Кб.

Иногда встречаются схемы, где применены микроконтроллеры с названиями типа AT90S… это старые модели микроконтроллеров, некоторые из них можно заменить на современные, например:

AT90S4433 – ATmega8

AT90S8515 – ATmega8515

AT90S8535 – ATmega8535

AT90S2313 – ATtiny2313

ATmega163 – ATmega16

ATmega161 – ATmega162

ATmega323 – ATmega32

ATmega103 – ATmega64/128

ATmega 8 имеет несколько выводов питания, цифровое – VCC, GND и аналоговое – AVCC, GND. В стандартном включении обе пары выводов соединяют параллельно, т.е. вместе. Микроконтроллеры AVR не любят повышенного напряжения, если питание выше 6 вольт, то они могут выйти из строя. Я обычно применяю маломощный стабилизатор напряжения на 5 вольт, КР142ЕН5 или 78L05. Если напряжение питания слишком низкое, то МК не прошьется, программа будет ругаться и выдавать ошибки (к примеру -24 в PonyProg).

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

Даташит ATmega8

Даташит ATmega16

Даташит ATmega32

Даташит ATmega48/88/168

Даташит ATmega128

Даташит ATmega8515

Даташит ATmega8535

Даташит ATtiny2313

Автор: Романов А.С (г. Чебоксары)

Arduino ATtmega8: плата, характеристики, распиновка

Микроконтроллеры – отличная основа для большого количества устройств. По сути своей они напоминают компьютер: постоянная память; оперативная память; вычислительное ядро; тактовая частота.

Среди многих семейств и видов МК новички часто выбирают контроллеры AVR Atmega. Однако язык программирования может показаться сложным, поэтому преподаватель из Италии решил разработать простую и удобную плату для обучения.

Родилась Arduino ATmega8, на основе которой можно собрать очень удобное и простое устройство.

Arduino NG — вариант платы Arduino на микроконтроллере ATmega8

С этими платами от Ардуино вы получаете целый ряд преимуществ:

  • готовая разведенная печатная плата со всеми необходимыми компонентами и разъёмами;
  • микроконтроллеры Atmega;
  • возможность программировать без программаторов – через ЮСБ порт;
  • питание от любого источника 5-20 вольт;
  • простой язык программирования и возможность использования чистой C AVR без переделок платы и прошивки.

Характеристики чипа

  • Частота ATmega8: 0-16 МГц
  • Напряжение ATmega8: 5 В
  • Частота ATmega8L: 0-8 МГц
  • Частоат ATmega8A: 0-16 МГц

В реальности почти все микроконтроллеры при рабочем напряжении в 5 вольт работают с частотой 16 мегагерц, если участвует внешний кварцевый резонатор. Если брать внутренний генератор, то частоты составят: 8, 4, 2 и 1 МГц.

Распиновка Arduino ATmega8

Ниже приводим распиновку атмега8, которую можно также найти на официальном сайте производителя:

Добавление устройств АТмега

Есть один нюанс по работе с эти чипом — нам нужно внести некоторые изменений в один файл, чтобы дальше можно было бы программировать микроконтроллеры Arduino ATmega8.

Вносим следующие изменения в файл hardware/arduino/boards.txt:

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

Таким образом, если мы перейдем в меню Сервис → Плата, то увидим устройства:

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

Платы Arduino

Ардуино продаётся во множестве вариантов; главное, что объединяет платы, – это концепция готового изделия. Вам не нужно травить плату и паять все её компоненты, вы получаете готовое к работе изделие. Можно собирать любые устройства, не используя паяльник. Все соединения в базовом варианте выполняются с помощью макетной платы и перемычек.

Сердце платы – микроконтроллер семейства AVR. Изначально был применён микроконтроллер atmega8, но его возможности не безграничны, и плата подвергалась модернизации и изменениям. Стандартная плата, которая наиболее распространена у любителей – это плата версии UNO, существует много её вариаций, а её размеры сравнимы с кредитной карточкой.

Плата Arduino Nano –  полный аналог большего собрата, но в гораздо меньших размерах, версия arduino atmega168 была самой популярной и недорогой, но её сменила другая модель – arduino atmega328, стоимость которой аналогична, а возможности больше.

Следующей важной деталью является печатная плата. Разведена и запаяна на заводе, позволяет избежать проблем с её созданием, травлением и пайкой. Качество платы зависит от производителя конкретного экземпляра, но, в основном, оно на высоком уровне. Питание платы осуществляется с помощью пары линейных стабилизаторов, типа L7805, или других LDO стабилизаторов напряжения.

Клеммная колодка – отличный способ сделать надёжное разъёмное соединение и быстро выполнить изменения в схеме прототипов ваших устройств. Для тех, кому не хватает стандартных разъёмов, есть более крупные и мощные платы, например, на atmega2560, у которой доступно полсотни портов для работы с периферией.

На фото изображена плата Arduino Mega 2560. На её основе можно собрать довольно сложного робота, систему умного дома или 3d-принтер на ардуино.

Не стоит думать, что младшие версии слабы, например, микроконтроллер atmega328, на котором построены модели Uno, nano, mini и другие, имеет вдвое больше памяти по сравнению с 168 моделью – 2 кб ОЗУ и 32 кб Flash памяти. Это позволяет записывать более сложные программы в память микроконтроллера.

Проекты на основе Arduino ATmega

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

Пример 1

Можно сделать тестер с 11 функциями на микроконтроллере atmega32.

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

  1. Прозвонка цепи с возможностью измерять падение напряжения на переходе диода.
  2. Омметр.
  3. Измеритель ёмкости.
  4. Измерение активного сопротивления конденсатора или ESR.
  5. Определение индуктивности.
  6. Возможность счёта импульсов.
  7. Измерение частоты – пригодится в диагностике, например, для проверки ШИМ источника питания.
  8. Генератор импульсов – тоже полезен в ремонте.
  9. Логический анализатор позволит просмотреть содержимое пачек цифровых сигналов.
  10. Тестер стабилитронов.

Пример 2

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

Пример 3

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

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

  1. Arduino uno или atmega
  2. Tft дисплей 5 дюйма.
  3. Небольшой набор обвязки.

Или его упрощенный аналог на плате Nano и дисплее от nokia 5110.

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

Пример 4

Бывает, что управляемые модули удалены друг от друга или возможностей одной ардуино не хватает – тогда можно собрать целую микроконтроллерную систему. Чтобы обеспечить связь двух микроконтроллеров стоит использовать стандарт RS 485.

На фото приведен пример реализации такой системы и ввода данных с клавиатуры.

Цветомузыка на микроконтроллере Arduino ATmega8

Для школьной дискотеки можно собрать ЦМУ на 6 каналов.

Транзисторы VT1-VT6 нужно подобрать с учетом мощности ваших светодиодов. Это силовые компоненты – они нужны, потому что мощности микроконтроллера не хватит, чтобы запустить мощные лампы или светодиоды.

Если вы хотите коммутировать сетевое напряжение и собрать цветомузыку на лампах накаливания, вместо них нужно установить симисторы и драйвер. Дополнить каждый канал ЦМУ вот такой конструкцией:

Ардуино своими руками

Atmega2560 – хоть и мощный и продвинутый контроллер, но проще и быстрее собрать первую плату на atmega8 или 168.

Левая часть схемы – это модуль связи по USB, иначе говоря, USB-UART/TTL конвертер. Его, вместе с обвязкой, можно выбросить из схемы, для экономии места, собрать на отдельной плате и подключать только для прошивки. Он нужен для преобразования уровней сигнала.

DA1 – это стабилизатор напряжения L7805. В качестве основы можно использовать целый ряд avr микросхем, которые вы найдете, например, серии, arduino atmega32 или собрать arduino atmega16. Для этого нужно использовать разные загрузчики, но для каждого из МК нужно найти свой.

Можно поступить еще проще, и собрать всё на беспаечной макетной плате, как это показано здесь, на примере 328-й атмеги.

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

Введение в 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

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 очень мал по размеру и используется во многих простых приложениях.
  • Mega 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 используются в качестве источников таймера / счетчика.

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

Архитектура микроконтроллера 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 на основе Project
  • AVR на базе микроконтроллера LED Matrix Interfacing
  • UART связь между Arduino Uno и ATmega8
  • Interfing оптопары с микроконтроллером ATmega8
  • AVR на базе микроконтроллера и системы пожарной сигнализации
  • AVR Измерение интенсивности света с помощью микроконтроллера AVR
  • Измерение силы света
  • с использованием микроконтроллера LR
  • Амперметр 100 мА на базе микроконтроллера AVR
  • ATmega8 Система противоугонной сигнализации на базе микроконтроллера
  • Интерфейс джойстика на базе микроконтроллера AVR
  • Интерфейс микроконтроллера AVR Интерфейс гибкого датчика
  • Управление шаговым двигателем с использованием микроконтроллера AVR

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

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

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

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

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

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

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

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

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

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

Спросил

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

\ $ \ begingroup \ $

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

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

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

Создан 18 фев.

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

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

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

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *