Контроллер avr – AVR микроконтроллеры: популярное семейство

AVR микроконтроллеры: популярное семейство

Семейство AVR – включает в себя 8 битные микроконтроллеры для широкого спектра задач. Для сложных проектов с большим количеством входов/выходов вам предоставлены микроконтроллеры AVR семейства Mega и AVR xmega, которые выпускаются в корпусах от 44 до 100 выводов и имеют до 1024 кб Flash памяти, а скорость их работы – до 32 миллионов операций в секунду. Практически все модели имеют возможность генерировать ШИМ, встроенный АЦП и ЦАП.

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

Интересно: для прошивки нужен программатор, один из самых распространённых – это AVRISP MKII, который вы легко можете сделать из своей Arduino.

Популярность семейства АВР поддерживается на высоком уровне уже много лет, в последние 10 лет интерес к ним подогревает проект Arduino – плата для простого входа в мир цифровой электроники.

Сферы применения различных Tiny, Mega

Четко описать сферу применения микроконтроллера нельзя, ведь она безгранична, однако можно классифицировать следующим образом:

  1. Tiny AVR – самые простые в техническом плане. В них мало памяти и выводов для подключения сигналов, цена соответствующая. Однако это идеальное решение для простейших проектов, начиная от автоматики управления осветительными приборами салона автомобиля, до осциллографических пробников для ремонта электроники своими руками. Они также используются в Arduino-совместимом проекте – Digispark. Это самая маленькая версия ардуины от стороннего производителя; выполнена в формате USB-флешки.
  2. Семейство MEGA долго оставалось основным у продвинутых радиолюбителей, они мощнее и имеют больший, чем в Tiny, объём памяти и количество выводов. Это позволяет реализовывать сложные проекты, однако семейство очень широко для краткого описания. Именно они использовались в первых платах Arduino, актуальные платы оснащены, в основном, ATMEGA

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

AVR xMega или старшие микроконтроллеры

Разработчики Atmel создали AVR xMega, как более мощный МК, при этом принадлежащий к семейству AVR. Это было нужно для того, чтобы облегчить труд разработчика при переходе к более мощному семейству.

В AVR xMega есть два направления:

  • МК с напряжением питания 1.8-2.7 вольта, работают с частотой до 12 мГц, их входа устойчивы к величине напряжения в 3.3 В;
  • МК с напряжением питания 2.7-3.6 вольта уже могут работать на более высоких частотах – до 32 мГц, а вход устойчив к 5 вольтам.

Также стоит отметить: AVR xMega отлично работают в автономных системах, потому что имеют низкое энергопотребление. Для примера: при работающих таймерах и часах реального времени RTC потребляют 2 мА тока, и готовы к работе от прерывания внешнего или по переполнению таймера, а также по времени. Для выполнения целого ряда функций применяется множество 16 разрядных таймеров.

Работа с USB портом

Начнем с того, что для программирования микроконтроллера нужно использовать последовательный порт, однако на современных компьютерах COM порт часто отсутствует. Как подключить микроконтроллер к такому компьютеру? Если использовать преобразователи USB-UART, эта проблема решается очень легко. Простейший преобразователь вы можете собрать на микросхемах FT232 и Ch440, а его схема представлена ниже.

Такой преобразователь размещен на платах Arduino UNO и Aduino Nano.

Некоторые микроконтроллеры AVR имеют встроенный (аппаратный) USB:

  • ATmega8U2;
  • ATmega16U2;
  • ATmega32U2.

Такое решение нашло применение для реализации связи компьютера и Arduino mega2560 по USB, в которой микроконтроллер «понимает» только UART.

Назначение ЦАП и АЦП микроконтроллеров AVR

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

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

ЦАП нашёл своё применение в цифровых фильтрах, где входной сигнал проходит программную обработку и вывод через ЦАП в аналоговом виде, ниже вы видите наглядные осциллограммы. Нижний график – входной сигнал, средний – этот же сигнал, но обработанный аналоговым фильтром, а верхний – цифровой фильтр на микроконтроллере Tiny45. Фильтр нужен для формирования нужного диапазона частот сигнала, а также для формирования сигнала определенной формы.

Схема осциллографа на микроконтроллере Atmega328

Пример использования АЦП – это осциллограф на микроконтроллере. К сожалению, частоты мобильных операторов и процессора ПК отследить не удастся, а вот частоты порядка 1 мГц – легко. Он станет отличным помощником при работе с импульсными блоками питания.

А здесь расположено подробное видео этого проекта, инструкции по сборке и советы от автора:

Какую литературу читать о микроконтроллерах AVR для начинающих?

Для обучения молодых специалистов написаны горы литературы, давайте рассмотрим некоторые из них:

  1. Евстифеев А.В. «Микроконтроллеры AVR семейства Mega». В книге подробно рассмотрена архитектура микроконтроллера. Описано назначение всех регистров и таймеров, а также их режимы работы. Изучена работа интерфейсов связи с внешним миром SPI и т. д. Система команд раскрыта для понимания радиолюбителю среднего уровня. Материал книги «Микроконтроллеры avr семейства mega: руководство пользователя» поможет изучить структуру чипа и назначение каждого из его узлов, что, безусловно, важно для любого программиста микроконтроллеров.
  2. Белов А.В. – «Микроконтроллеры AVR в радиолюбительской практике». Как видно из названия, эта книга, в большей степени, посвящена практической стороне работы с микроконтроллерами. Подробно рассмотрен ставший классическим микроконтроллер ATiny2313, а также многие схемы для сборки.
  3. Хартов В.Я. «Микроконтроллеры AVR. Практикум для начинающих». Поможет разобраться в AVR studio 4, а также стартовом наборе STK Вы научитесь работать с последовательными и параллельными интерфейсами, такими как UART, I2C и SPI. Книга «Микроконтроллеры AVR. Практикум для начинающих» написана преподавателем МГТУ им. Н.Э.Баумана и используется там для изучения этой темы.

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

Среди радиолюбителей начального уровня есть только один конкурент AVR – PIC микроконтроллеры.

arduinoplus.ru

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

AVR микроконтроллеры – это тип устройств, разработанный компанией Atmel, которые имеют определенное преимущество перед обычными микросхемами, но, сначала, давайте разберемся, что такое микроконтроллер?

Самый простой способ понять это – сравнить микроконтроллер с вашим компьютером, в котором установлена материнская плата. На этой плате стоит микропроцессор (на чипе Intel или AMD), который обеспечивает устройство вычислений, память RAM и EEPROM, и интерфейсы остальных систем, например, серийные порты (в настоящее время в основном USB), жесткие диски и графические интерфейсы. В микроконтроллере все эти возможности встроены в один чип, а это значит, что отсутствует потребность в материнской плате и многих других компонентах, например, светодиод может быть подключен напрямую к AVR. В микропроцессорах нет такой возможности!

AVR микроконтроллеры выпускаются в нескольких корпусах, некоторые предназначены для монтажа в отверстия, некоторые для поверхностного. AVR бывают 8-ми и 100-пиновыми, хотя все, что выше 64-х пинов только для монтажа в отверстия. Большинство людей начинают с DIL (Сдвоенный в линию) 28—х пинового чипа, например, ATmega328 или 40-ка пинового ATmega16 или ATmega32.

Компьютерные микропроцессоры бывают минимум 32-х битными, а теперь чаще 64-х битные. Это означает, что они могут обрабатывать данные 32-х битными или 64-х битными блоками, если они подключены к шине. AVR гораздо проще и работает с 8-ми битными блоками, пропускная ширина потока 8 бит, хотя сейчас стали появляться AVR32 с 32-х битной шиной.

На компьютере установлена операционная система (Windows или Linux), и именно в ней запускаются программы, такие, как Word, InternetExplorer или Chrome. На 8-ми битном микроконтроллере, например, на таком, как AVR обычно нет установленной операционной системы, хотя, при необходимости, она может быть установлена. Вместо этого реализована возможность запуска одной программы.

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

Так что же это за программа? Она состоит из серии инструкций, очень простых, и направленных на обработку данных. В большинстве приложений, которые вы будете использовать с AVR, например, в контроллере промышленного оборудования, необходимо, чтобы считывалась информация со входов, проводилась проверка состояния и, соответственно, происходило переключение на выходы. Иногда вам нужно менять данные, управлять ими, или передавать их на другое устройство, например, на ЖК дисплей или на серийный порт. Чтобы выполнять эти простые задачи, используется серия простых бинарных инструкций, каждая из которых соответствует команде на ассемблере, понятной пользователю. Самый простой способ написать программу для AVR – использовать ассемблер (хотя, если хотите оставаться педантичным, можете записывать двоичные числа).

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

Чтобы этого избежать, для написания программ для AVR были использованы языки программирования более высокого уровня, основным считается Cи, а также, можно использовать Basic и Java. Высокий уровень означает, что каждая строка Cи (или Basic, или Java) кода может переводиться в множество строк ассемблера. Компилятор также разбирается со структурой программы и управлением памятью, так что все становится гораздо проще. Наиболее часто используемые процессы, например, задержки или вычисления, могут храниться в библиотеках, и доступ к ним очень простой.

Мне кажется, что написание программ на Си для AVR сравнимо с управлением автомобилем. Да, вы очень легко можете это делать, но, если что-то идет не так, то вы понятия не имеете, как быть, и как справиться со сложной ситуацией, например, со скользкой дорогой. Написание простейших программ на ассемблере дает вам понять, что происходит «под капотом», как это работает, и что с этим можно сделать. Потом вы переходите на Си, но, к этому моменту, вы уже знаете, как функционирует AVR, и знаете его ограничения.

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

У AVR также есть I/O, которое используется, чтобы контролировать аппаратные средства микроконтроллера. К аппаратным средствам относятся порты, АЦП (ADC), коммуникационные интерфейсы, например, I2C (2—х проводной интерфейс), SPI и UART (серийный порт), таймеры и система watchdog, которая восстанавливает систему после сбоя. Все эти периферийные устройства контролируется из-под программы, используя специальные инструкции. Большая часть кода программирования AVR посвящена тому, как устанавливать и контролировать эти аппаратные интерфейсы.

 



Наши услуги:

prom-electric.ru

AVR микроконтроллер и его применение в компьютере

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

Содержание статьи

Что такое микроконтроллер

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

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

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

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

История семейства

Семейство микроконтроллеров AVR было создано в 1996 г. корпорацией Atmel, а разработчиками архитектуры микроконтроллеров являются Alf-Egil Bogen и Vegard Wollan. Отсюда и происходит название семейства – от первых букв имен разработчиков – A и V, и первой буквы аббревиатуры RISC – типа архитектуры, на которой базируется архитектура микроконтроллера. Также эту аббревиатуру часто расшифровывают как Advanced Virtual RISC (модернизированный эффективный RISC).

Первым микроконтроллером в серии был AT90S8515, однако первым микроконтроллером, выпущенным на рынок, стал AT90S1200. Это случилось в 1997 г.

На сегодняшний день доступны 3 линейки микроконтроллеров:

  • TinyAVR – небольшой объем памяти, небольшие размеры, подходит для самых простых задач.

Внешний вид микроконтроллера TinyAVR

  • MegaAVR – наиболее распространенная линейка, имеющая большой объем встроенной памяти (до 256 КБ), множество дополнительных устройств и предназначенная для задач средней и высокой сложности.

Внешний вид микроконтроллера MegaAVR

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

Пример микроконтроллера XmegaAVR

Сравнительные характеристики различных линеек:

Название серии Число контактов Объем флэш-памяти Особенность
TinyAVR 6-32 0,5 – 8 КБ Небольшой размер
MegaAVR 28-100 4-256 КБ Периферийные устройства
XmegaAVR 44-100 16-384 КБ Система прерываний, поддержка DMA

Особенности семейства

Прежде всего, микроконтроллеры этой серии являются быстрыми. Большинство инструкций процессор микроконтроллера выполняет за один цикл. Микроконтроллеры AVR примерно в 4 раза быстрее, чем PIC. Кроме того, они потребляют немного энергии и могут работать в 4 режимах экономии энергии.

Большинство контроллеров AVR являются 8-разрядными, хотя сейчас существует и 32-разрядная разновидность  контроллеров AVR32. Кроме того, как уже упоминалось выше, AVR принадлежат к типу RISC-микроконтроллеров. Архитектура RISC (Complex Instruction Set Computers) означает, что набор инструкций, которые может выполнять процессор устройства, является ограниченным, но, в то же время, подобная архитектура дает преимущество в скорости.  Противоположностью архитектуры RISC является архитектура CISC (Complex Instruction Set Computers).

32-разрядная разновидность контроллеров AVR32

8-битность контроллера означает, что он способен передавать и принимать 8-битные данные. Доступные регистры ввода/вывода также являются 8-битными.

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

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

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

Всего  контроллер AVR имеет 32 8-битных регистра общего назначения.  В течение цикла процессор берет данные из двух регистров и помещает их в арифметико-логическое устройство (АЛУ), которое производит операцию над данными и помещает их в произвольный регистр. АЛУ может выполнять как арифметические, так и логические действия над операндами. Также АЛУ может выполнять и действия с одним операндом (регистром). При этом контроллер не имеет регистра-аккумулятора, в отличие от контроллеров семейства 8051 – для операций могут использоваться любые регистры, и результат операции также может быть помещен в любой регистр.

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

Котроллер способен выполнять одну инструкцию за цикл. Отсюда следует, что если тактовая частота контроллера составляет 1 МГц, то его производительность составит 1 млн. оп./c. Чем выше тактовая частота контроллера, тем выше будет его скорость. Однако при выборе тактовой частоты контроллера следует соблюдать разумный компромисс между его скоростью и энергопотреблением.

Помимо флэш-памяти и процессора контроллер имеет такие устройства, как порты ввода-вывода, аналого-цифровой преобразователь, таймеры, коммуникационные интерфейсы – I2C, SPI и последовательный порт UART. Все эти устройства могут контролироваться программно.

Типовая архитектура микроконтроллеров AVR

Программы для микроконтроллера

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

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

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

Преимуществом ассемблера является очень быстрый, компактный и эффективный код, но создание таких программ одновременно требует и глубоких знаний работы процессора контроллера, ручного управления памятью и контроля структуры программы. Поэтому зачастую для написания программ используются и языки высокого уровня, такие, как С, Basic и Java. В этом случае задачу по контролю структуры программы и управлению памятью берет на себя компилятор. Кроме того, часто используемые функции могут быть при этом помещены в библиотеки и извлекаться из них по мере надобности.

Заключение

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

Порекомендуйте Друзьям статью:

biosgid.ru

AVR. Учебный курс | Электроника для всех

Про шину IIC я писал уже неоднократно. Вначале было описание протокола, потом пример работы в лоб, а недавно камрад Ultrin выложил пример работы с i2c на базе блока USI. Да и в интернете полно статей по использованию этой шины в своих целях. Одно плохо — все они какие то однобокие. В подавляющем большинстве случаев используется конфигурация «Контроллер-Master & EEPROM-Slave». Да еще и на программном мастере. И ни разу я не встречал материала, чтобы кто то сделал Контроллер-Slave или описал многомастерную систему, когда несколько контроллеров сидят на шине и решают арбитражем конфликты передачи. Пустоту пора заполнять, решил я и завязал узелок на память… Да только веревочку пролюбил 🙂

Обещаного три года ждут, вот я таки пересилил лень, выкроил время и сообразил полноценную библиотеку для работы с аппаратным модулем TWI, встроенным во все контроллеры серии MegaAVR. Давно грозился.

Кошмар на крыльях ночи
Во-первых, я сразу же отказался от концепции тупого последовательного кода. Когда у нас есть некоторая функция SendByte(Address,Byte) которая шлет данные по шине, а потом возвращает 1 или 0 в зависимости от успешности или неуспешности операции. Метод прост, дубов, но медленный. Т.е. пока мы байт не пошлем мы не узнаем ушло ли оно, а значит будем вынуждены тупить и ждать. Да, шина i2c может быть очень быстрой. До 100кбит ЕМНИП, но даже это время, а я все же за высокоскоростное выполнение кода, без тормозных выдержек. Наш выбор — диспетчеризация и работа на прерываниях.

Суть в том, что мы подготавливаем данные которые нужно отослать. Дальше запускаем аппаратуру передачи и возвращаемся к своим делам. А зверский конечный автомат, что висит на прерывании TWI передатчика сам передает данные, отвлекая основную программу только тогда, когда нужен какой-либо экшн (например сунуть очередной байт в буфер передачи). Когда же все будет передано, то он генерит событие, которое оповещает головную программу, что мол задание выполнено.
Как? Ну это уже от конкретной реализации событий программы зависит. Может флажок выставить или байт состояния конечного автомата подправить, а может и задачу на конвейер диспетчера набросить или Event в почтовый ящик задачи скинуть. Если юзается RTOS.
(далее…)

Read More »

easyelectronics.ru

AVR. Учебный курс | Электроника для всех

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

Но, если сильно все упростить, то основной функцией микроконтроллера является «дрыганье ножками». Т.е. у него есть несколько выводов (от 6 до нескольких десятков в зависимости от модели) и на этих выводах он может выставить либо 1 (высокий уровень напряжения, например +5вольт), либо 0 (низкий уровень напряжения, около 0.1 вольта) в зависимости от программного алгоритма зашитого в его память. Также микроконтроллер может определять состояние сигнала на своих ножках (для этого они должны быть настроены на вход) — высокое там напряжение или низкое (ноль или единица). Современные микроконтроллеры также почти поголовно имеют на борту Аналогово Цифровой Преобразователь — это штука подобная вольтметру, позволяет не просто отследить 0 или 1 на входе, а полноценно замерить напряжение от 0 до опорного (обычно опорное равно напряжению питания) и представить его в виде числа от 0 до 1024 (или 255, в зависимости от разрядности АЦП)

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

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

Read More »

easyelectronics.ru

Контроллер АВР v 5.21 — РусьКранСнаб

Универсальный контроллер автоматики ввода резерва Energy Controller AVR v 5.21 ( модификация 2012г.)

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

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

Для более удобной и функциональной работы блоков АВР был разработан  универсальный контроллер ввода резерва Еnergy Controller AVR v.5.21.

Рис. 1. Внешний вид контроллера АВР

Функции

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

Рис. 2. Комплектация поставки

Схема подключения блока автоматического резерва АВР

Рис. 3. Схема подключения контроллера

Технические данные
Название Тип Назначение
N Вход Объединённая нейтраль вводов 0,4кВ
A1, B1, C1 Вход Питание контроллера, измерение фазного напряжения первого ввода
A2, B2, C2 Вход Питание контроллера, измерение фазного напряжения второго ввода
U Выход апряжеие для питания оперативных цепей +300В (lmax = 20мА). Контроллер АВР вырабатывает это апряжеие даже при условии выпадания питания на всех вводах в течении 0,3 с.
1 Вход Переключатель режима работы «Ручной / Автоматический»
2 Вход В схеме без секционирования — вход установки приоритета первого ввода. При подключении к выводу «U» — устанавливается приоритет первого ввода, если не подключен — приоритета нет. В схемах с секционированием — вход ручного управления секционным аппаратом. При подключении к выводу «U» — секционный аппарат включен, если не подключен — секционный аппарат отключен. 
3 Вход Ручное управление вводным аппаратом первого ввода. При подключении к выходу «U» — аппарат включен, если не подключен — аппарат отключен.
4 Вход Ручное управление вводным аппаратом второго ввода. При подключении к выходу «U» — аппарат включен, если не подключен — аппарат отключен.
K1 — QF1 Выход Переключающий контакт управления вводным аппаратом первого ввода. ~ 230 В/5А
K1 — RHI Вход Состояние главных контактов вводного аппарата первого ввода. Подключить через нормально разомкнутые изолированные контакты вводного аппарата к выходу «U». Когда вводной аппарат находится во включенном положении, на этот вход должно поступать напряжение +300В. Если вход не подключен — схема работоспособна, но защита от аварийных одновременных включений входа аппаратов не будет реализована. Т.е. если контакты одного из аппаратов «залипли», блокировки включения второго вводного аппарата нет.
K1 — NHI Вход Состояние аварийных цепей вводного аппарата первого ввода. Подключить через нормально разомкнутые изолированные контакты вводного аппарата к выходу «U». При аварийном состоянии вводного аппарата, к примеру срабатыванию расцепителя, на этот вход должно поступать напряжение +300В. В схемах с секционированием, данный сигнал не позволит подключить приёмник к примеру с К3 к нормально функционирующему вводу, если перед этим было аварийное октчлюеие аппарата. Если вход не подключен, схема будет работоспособна, но данная защита просто не будет реализована.
K2 — QF1 Выход Переключающий контакт управления вводным аппаратом второго ввода. ~230В/5А
K2 — RHI Вход Состояние главных контактов вводного аппарат второго ввода. Подключить через нормально разомкнутые изолированные контакты вводного аппарата к выходу «U». Когда вводной аппарат находится во включенном положении, на этот вход должно поступать напряжение +300В. Если вход не подключен — схема работоспособна, но защита от аварийных одновременных включений вводных аппаратов не будет реализована. Т.е. если контакты одного из аппаратов «залипли», блокировки включения, второго вводного аппарата нет.
K2 — NHI Вход Состояние аппаратных цепей вводного аппарата второго ввода. Подключить через нормально разомкнутые изолированные контакты вводного аппарата к выходу «U». При аварийном состоянии вводного аппарата, к примеру срабатывании расцепителя, на этот вход должно поступать напряжение +300В. В схемах с секционированием, данный сигнал не позволит подключать приёмник к примеру с КЗ к нормально функционирующему вводу, если перед этим было аварийное отключение аппарата. Если вход не подключен, схема будет работоспособна, о данная защита просто не будет реализована.
K3 — RHI Вход Состояние главных контактов секционного аппарата. Подключить через нормально разомкнутые изолированные контакты секционного аппарата к выходу «U». Когда секционный аппарат находится во включенном положении, на этот вход должно поступать напряжение +300В. Если вход не подключен — схема работоспособна, но защита от аварийных одновременных включений аппаратов не будет реализована. Т.е.если контакты одного из аппаратов «залипли», блокировки включения второго вводного аппарата нет. 
K3 — NHI Вход Состояние аварийных цепей секционного аппарата. Подключить через нормально разомкнутые изолированные контакты секционного аппарата к выходу «U». При аварийном состоянии акционного аппарата, к примеру срабатыванию расцепителя, на этот вход должно поступать напряжение +300В.
AM Выход Сигнал аварии. Критерии сигнала аварии задаются при конфигурировании. Нормально замкнутый релейный выход ~230В/5А.
RS485 Вх/Вых Интерфейс RS485. Поддерживает обмен стандартными пакетами по протоколу Modbus RTU. См. описание контроллера в формате pdf.
USB Вх/Вых Интерфейс USB. При подключении к компьютеру, эмулируется виртуальный COM порт. Поддерживает обмен стандартными пакетами по протоколу Modbus RTU. См. описание контроллера в формате pdf.

Шесть фазных напряжений рассчитываются по среднеквадратичному  методу  при условии  200 измерений за период, что дает возможность  достичь точности измерения не хуже 0,5%,  убрать усреднения и сократить время измерения. Контроллер АВР работает на вычисление  среднеквадратичных значений напряжений для каждой из фаз, отслеживает последовательность их чередования по каждому из двух вводов, а также соответствие фаз между вводами.

Управление силовыми аппаратами происходит благодаря силовым реле, которые встроены в контроллер, их контакты работают при токе до 5А и напряжении 230 VAС. Контакты реле – перекидные, что дает возможность управления и обмотками силовых контакторов и приводами автоматических выключателей.

Контроль положения цепей блока АВР происходит благодаря оптронным развязкам. При питании этих цепей контроллер вырабатывает напряжение в +300В.

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

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

Чтобы  изменить  рабочую  схему блока АВР (контакторы/автоматы/с секционированием/без секционирования), контроллер  подключается  по  нижеследующей схеме:

Схема подключения для изменения рабочей схемы

В комплект поставки бесплатно включается компакт диск с программой Voltage Monitor 2012. Программа не требует установки, достаточно будет лишь ее копирования на винчестер компьютера. Чтобы программа начала работать, запитайте контроллер хотя бы от одной фазы, затем подключите его к компьютеру, используя шнур из комплекта поставки и запустите файл Voltage_Monitor_2012.exe.

Существует множество вариантов схем  автоматического включения резерва АВР на основе контроллера AVR v5.21, которые приведены ниже:

 

Схема подключения контроллера  АВР  на контакторах без секционирования

 

Схема подключения контроллера  АВР  на контакторах с секционированием

Схема подключения контроллера  АВР  без секционирования на автоматических выключателях Moeller ( например NZM, IZM ) с моторизированными приводами ( например IZM-XM230)

 Схема подключения контроллера  АВР  с секционированием на автоматических выключателях Moeller ( например NZM IZM ), с моторизированными приводами ( например IZM-XM230)

ruskransnab.ru

AVR. Учебный Курс. Оценка загрузки контроллера.

Как оценить загруженность микроконтроллера? С памятью все понятно — размеры занимаемого кода и оперативной памяти показывает компилятор, а что делать с процессорным временем? Конечно, в линейной программе можно взять и посчитать время выполнения каждой процедуры и станет ясно успеет микроконтроллер выполнить все на него повешанное или слажает в каком-нибудь критичном месте.
Куда сложней оценивать время в кооперативной операционной системе реального времени. Тут задачка получается нетривиальной — у нас куча процессов скачут через диспетчер. В ходе программирования задачи навешиваешь одну за другой, как бусинки на нить — каждый процесс обработки чего либо составляет подобную цепочку, а всего их может быть просто тьма. Ядро же у контроллера всего одно, а значит выполнять можно всего одну задачу за раз и если у нас в диспетчере скопится много критичных ко времени процессов (вообще их лучше развешивать на прерывания, но бывает и прерываний на всех не напасешься), то возможно либо переполнение очереди диспетчера, либо превышение времени ожидания, что тоже не праздник.
Самое западло в том, что умозрительно отлаживать такие вещи довольно сложно. Единственный вариант — рисовать временные диаграммы запуска каждой задачи и смотреть где у нас узкие места. Еще можно попробовать в AVR Studio поставить Break Point на переполнение диспетчера, но студия не сэмулирует всю ту прорву периферии, а в пошаговой отладке этого не увидеть — да и момент надо подобрать так, чтобы все навалилось.

В один момент мне пришла в голову одна идея — а почему бы не заставить рисовать временные диаграммы работы задач сам контроллер? Это же просто! Берем и в диспетчере, перед вызовом задачи выставляем бит порта в 1. А когда диспетчер задач опустошается полностью, то есть выполняется переход на Idle — сбрасываем бит в 0. В результате, у нас на выходе будет подобие ШИМ. Если постоянно крутится Idle — будут нули перманентно. Если же проц в поте лица гонит через себя непрерывно код, то будут высокий уровнь сплошняком. А если все прерывисто — что то ШИМообразное. Причем чем больше загрузка процессора тем выше заполнение. Можно поставить интегрирующую RC цепочку и получим аналоговый сигнал. Хоть на стрелочный индикатор заводи :). Сказано — сделано.

Получилось вот так:

Пока задача шлет раз в секунду байт по UART, а остальное время Idle, т.е. бездельничает.

А вот мы добавили опрос клавиатуры. Стало бодрей — иголки увеличились числом. Каждая иголка запуск процесса.

Вот одна иголка крупным планом.

Вызваю процедуру записи в EEPROM — во как, сразу же сожралось куча времени на выполнение. А записалось всего 6 байт. Обратите внимание на масштаб времени. Насколько запись в EEPROM дольше выполнения обычного кода.

Но одними иголками сыт не будешь. Не прикольно. Как бы задачки эти выделить. Чтобы можно было понять кто есть кто. Решение элементарное — выделить для отладочных целей не один бит, а поболее. У меня тут в запасе нашлось целых 8 ног. Соответственно я сразу же по заходу в задачу вывел в порт ее номер, а из порта загнал в R-2R ЦАП. Картина стала наглядней — теперь высота иголки у всех задач стала разной.

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

Вот что мы видим. Иголки номер 1 — это сканирование клавиатуры. Те что повыше, номер 2 — это пинг, отсыл одного байта по UART, а вот средние — отправка пачек данных через тот же UART.

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

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

Однобитные иголки

Нагрузили еще немного. Шлю по UART, видно как растет нагрузка на конвеер

Применили R-2R ЦАП.

easyelectronics.ru

0 comments on “Контроллер avr – AVR микроконтроллеры: популярное семейство

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

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