Разработка быстродействующей системы контроля влажности почвы на основе микропроцессора ATmega16 фирмы Atmel

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,5 Мб
  • Опубликовано:
    2013-02-06
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка быстродействующей системы контроля влажности почвы на основе микропроцессора ATmega16 фирмы Atmel

Содержание

Введение

. Структурная схема системы управления

. Описание аппаратной части

.1 Первичные датчики

.2 Исполнительное устройство

.3 Индикация

.4 Управляющее устройство

.4.1 Архитектура микропроцессора

.4.2 Область Ввода/Вывода

.4.3 Работа аналого-цифрового преобразователя

.4.4 Система прерываний

. Алгоритм работы микропроцессора

Заключение

Список литературы

Приложения

Введение

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

1. Структурная схема системы управления

Любая система управления характеризуется следующими элементами:

управляющее устройство (УУ);

исполнительное устройство (ИУ);

объект управления (ОУ);

первичные датчики (ПД);

индикация и ввод информации (ИВИ).

Для данного проекта не предусмотрены задачи ввода информации, поэтому средств ввода нет. На рисунке 1 представлена структурная схема.

Рисунок 1 - Структурная схема

Управляющим устройством является микропроцессор.

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

Объект управления - 8 участков оранжереи.

Первичные датчики - 8 датчиков влажности почвы.

Индикация - 2 семисегментных индикатора.

микропроцессор регистр микроконтроллер преобразователь

2. Описание аппаратной части

.1 Первичные датчики

В качестве первичных датчиков выбраны датчики влажности почвы EC-5 компании Decagon Devices Inc. Он имеет следующие характеристики:

Время отклика: 10 мс.

Погрешность: не более 2%.

Напряжение питания: от 2.5 до 3.6 В.

Диапазон температур: от -40˚ до +60˚ С.

Диапазон измерений: от 0 до 100%.

Размеры датчика: 8,9 х 1,8 х 0,7 см.

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

Формула вычисления влажности почвы:

, (1)

где V - значение выходного напряжения датчика в милливольтах,

 - значение влажности почвы в процентах.

На рисунке 2 представлен соединительный штекер датчика, а на рисунке 3 показан вид датчика[1].

 

Рисунок 2 - Штекер датчика TSR Jack 3,5 мм.

Рисунок 3 - Внешний вид датчика.

.2 Исполнительное устройство

Исполнительным устройством является электронасос БЦС Leader 100, конечно, в зависимости от конкретных условий и параметров оранжереи, может быть выбран и другой электронасос, отвечающий особым требованиям пользователя. Но, можно сказать, в качестве примера будет использован выбранный электронасос.

Производитель: Aquatechnica, Россия;

Тип насоса: Самовсасывающий центробежный, с внутренним эжектором;

Максимальный напор: 52 м;

Мощность: 970 Вт;

Рабочая среда: Вода;

Производительность: 54 л/мин;

Максимальная высота всасывания: не более 8 м;

Максимальный размер всасываемых частиц: не более 2мм;

Питание: 220В~50Гц;

Содержание механических примесей: не более 100г/м3;

Максимальная температура воды: не более 40°С;

На рисунке 4 показан электронасос.

Рисунок 4 - Внешний вид электронасоса.

Электронасос будет управляться силовым коммутатором PDH1028RD1 компании ПРИБОРИКА с характеристиками[2]:

Рабочий ток нагрузки: 10 А.

Коммутируемое напряжение переменного тока: 240 В.

Способ управления: произвольное фазовое включение.

Входное напряжение управления: постоянное 4…16 В.

Минимальное напряжение включения: 4 В.

Максимальное напряжение отключения: 1 В.

На рисунке 5 отображен вид силового коммутатора, на рисунке 6 показано обозначение силового коммутатора, на рисунке 7 фронтальный вид корпуса с размерами.

Назначение контактов: 1 и 2 - контакты для подключения коммутируемого электрического тока, 3 - управляющее напряжение, 4 - общий (земля).

Рисунок 5 - Внешний вид коммутатора

Рисунок 6 - Обозначение силового коммутатора

Рисунок 7 - Вид корпуса коммутатора

.3 Индикация

Два семисегментных индикатора в одном корпусе DC56-11 компании Kingbright являются средством отображения среднего значения влажности.

Рисунок 8 - Чертёж индикатора

На рисунке 8 представлен чертёж индикатора, где размеры представлены в миллиметрах, а в скобках в дюймах. На рисунке 9 показан внешний вид индикатора. На рисунке 10 - электрическая схема индикатора[3].

Рисунок 9 - Внешний вид индикатора

Рисунок 10 - Схема подключения индикатора

.4 Управляющее устройство

Управляющим устройством выбран микропроцессор ATmega16 фирмы Atmel, построенный с использованием расширенной RISC архитектуры AVR. Исполняя по одной команде за период тактовой частоты, ATmega16 имеет высокую производительность около 16 MHz[4].

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

Характеристики ATmega16[5]:

·              Прогрессивная RISC архитектура  130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл  32 8-разрядных рабочих регистра общего назначения. Полностью статическая работа  Производительность приближается к 16 MIPS (при тактовой частоте 16 МГц)   Встроенный 2-цикловый перемножитель

·              Энергонезависимая память программ и данных  16 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash)  Обеспечивает 10000 циклов стирания/записи  Дополнительный сектор загрузочных кодов с независимыми битами блокировки Внутрисистемное программирование встроенной программой загрузки  Обеспечен режим одновременного чтения/записи (Read-While-Write)  512 байт EEPROM обеспечивает 100000 циклов стирания/записи  1 Кбайт встроенной SRAM. Программируемая блокировка, обеспечивающая защиту программных средств пользователя

·              Интерфейс JTAG (совместимый с IEEE 1149.1)  Возможность сканирования периферии, соответствующая стандарту JTAG  Расширенная поддержка встроенной отладки  Программирование через JTAG интерфейс: Flash, EEPROM памяти, перемычек и битов блокировки

·              Встроенная периферия. Два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения  Один 16-разрядный таймер/счетчик с отдельным предварительным делителем и режимами захвата и сравнения  Счетчик реального времени с отдельным генератором   8-канальный 10-разрядный аналого-цифровой преобразователь   8 несимметричных каналов 

2 дифференциальных канала с программируемым усилением в 1, 10 или 200 крат (только в корпусе TQFP)  Байт-ориентированный 2-проводный последовательный интерфейс  Программируемый последовательный USART  Последовательный интерфейс SPI (ведущий/ведомый)  Программируемый сторожевой таймер с отдельным встроенным генератором  Встроенный аналоговый компаратор

·              Специальные микроконтроллерные функции  Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания  Встроенный калиброванный RC-генератор  Внутренние и внешние источники прерываний

Шесть режимов пониженного потребления: Idle, Power-save, Power-down, Standby, Extended Standby и снижения шумов ADC

·              Выводы I/O и корпуса  32 программируемые линии ввода/вывода  40-выводной корпус PDIP и 44-выводной корпус TQFP

·              Рабочие напряжения  2,7 - 5,5 В (ATmega16L)  4,5 - 5,5 В (ATmega16)

·              Рабочая частота  0 - 8 МГц (ATmega16L)  0 - 16 МГц (ATmega16)

Расположение выводов ATmega16:

Рисунок 11 - PDIP корпус микроконтроллера

Рисунок 12 - TQFP корпус микроконтроллера

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

·        VCC - Питание;

·        GND - Земля;

·        Port A (PA7..PA0) - Порт А - 8-ми битный, двунаправленный порт ввода вывода. Пины порта могут использовать внутренний источник питания (pullups)(Для каждого пина отдельно). Выходной буфер порта А может питаться 40 мА и может управлять LED дисплеем напрямую. Порт A служит мультипликативной шиной Адреса/Данных (Multiplexed Addres/Data) при использовании внешней статической памяти (SRAM). Также выводы порта могут использоваться как входы 8-ми канального 10-ти разрядного АЦП;

·        Port B (PB7..PB0) - Порт B- 8-ми битный, двунаправленный порт ввода вывода c внутренним питанием пинов. Входной буфер порта B может питаться 40 мА. Порт В используется для различных специальных возможностей ATmega16;

·        Port C (PC7..PC0) - 8-ми битный двунаправленный порт ввода вывода c внутренним питанием пинов. Выходной буфер порта С может питаться 40 мА Порт С также служит для вывода адреса при использовании SRAM;

·        Port D (PD7..PD0) - Порт D- 8-ми битный, двунаправленный порт ввода вывода c внутренним питанием пинов. Выходной буфер порта D может питаться 40 мА. Порт D также используется для различных специальных возможностей ATmega16;

·        RESET - входной пин. Низкий уровень сигнала в течение двух машинных тактов на этом пине приводит к перезагрузке устройства;

·        XTAL1 - Вход для инвертирующего генератора-усилителя, a также вход для внутренней схемы часов;

·        XTAL2 - Выход для подключения кварцевого или керамического резонатора;

·        AVCC - Питание для Аналого-Цифрового Преобразователя (ADC);

·        AREF - Аналоговый управляющий входной сигнал задаёт опорное напряжение для АЦП (analog reference input);

2.4.1 Архитектура процессора

Блок регистров содержит 32 8-ми битовых рабочих регистра со временем доступа - 1 такт. Это означает, что за один такт ALU успевает выполнить одну операцию. Два операнда берутся из различных регистров, полученный результат сохраняется в блоке регистров - и все это за один такт.

6 из 32 8-ми битовых регистров могут использоваться как три 16-и битовых. Такое использование регистров делает более эффективным адресацию. Один из 16-ти битовых регистров используется для адресования функции поиска таблиц констант. 16-ти битовые регистры соответственно называются X-Register, Y-Register, Z-Register[4].

Рисунок 13 - Блок схема ядра микропроцессора

ALU Производит арифметические и логические действия между двумя регистрами и между регистром и константой. Также ALU производит действия с одним операндом - регистром. Адресное пространство Ввода/Вывода содержит 64 адреса через которые можно адресоваться к Регистрам, Таймеру/счетчику, аналого-цифровому преобразователю. Адреса с первого по 32-й соответствуют регистрам, поэтому есть возможность адресоваться не непосредственно к регистру, а через его адрес. использует концепцию архитектуры Harvard - она заключается в том, что память и основная шина разделяются для кода программы и данных. 'Программная' память выполняется с одноуровневой конвейеризацией. Пока одна инструкция выполняется, следующая выбирается из 'программной' памяти. Эта концепция позволяет выполнять команды во время каждого машинного такта. 'Программная' память - это внутрисистемный, загружаемый FLASH.

Гибкий контроллер прерываний имеет собственный управляющий регистр в памяти Ввода/Вывода (Через эту память можно адресоваться к этому регистру), также есть специальный бит - главный бит прерываний (global interupt enable) в регистре статуса. Все различные прерывания имеют отдельные вектора в таблице векторов прерываний, которая находится в начале Программной памяти. Прерывания имеют приоритет в соответствии с положением их в таблице: чем ниже вектор находится в таблице, тем выше у него приоритет.

В соответствии с AVR архитектурой вся память линейна и имеет регулярную структуру.

Блок регистров:


Все операции с регистрами выполняются напрямую и занимают во времени один такт. Исключение составляют лишь пять логических и арифметических команд работающих с константами: SBCI, SUBI, CPI, ANDI, ORI

Весь 1 Килобайт статической памяти доступен по адресам: $0060 - $0400

X-Register, Y-Register, Z-Register:

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


Высоко производительное Арифметическое Логическое Устройство(ALU) AVR работает напрямую со всеми 32-мя рабочими регистрами. Операции ALU делятся на три категории: арифметические, логические и побитовые. имеет 16K встроенной, загружаемой, программной памяти.

Для памяти данных предусмотрено пять способов адресации:

·        Прямой

·        Косвенный с замещением

·        Косвенный

·        Косвенный с пред-Вычитанием (Pre-Decrement)

·        Косвенный с пост-Вычитанием (Post-Decrement)

ATmega16 содержит 512 байт памяти EEPROM. Она организована как отдельная область памяти, в которой каждый бит можно читать и записывать. Память EEPROM имеет гарантию на 100,000 раз записи/стирания. Для доступа в EEPROM используются три регистра: регистр адреса EEPROM, регистр данных, управляющий регистр.

.4.2 Область Ввода/Вывода

Описание регистров, а также расположение области ввода/вывода в статической памяти показано в таблицах 1 и 2:

Таблица 1 - Регистры.


Таблица 2 - Регистры настройки


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

Формат этих регистров следующий:

Регистр состояния SREG


Бит 7 - I - Общее разрешение прерываний. При установке этого бита в 1 прерывания разрешаются.

Бит 6 - T - Используется командами BLD(Загрузить бит) и BST(Сохранить бит) как бит-источник и бит-приемник.

Бит 5 - H - Флаг полу-переноса. Используется в некоторых арифметических операциях.

Бит 4 - S - Знаковый бит. Зависит от битов V и N. S = N+V.

Бит 3 - V - Флаг переполнения двойного дополнения (Two's Complement OverFlow Flag).

Бит 2 - N- Бит знака результата. Значения бита зависят от знака арифметической или логической операции

Бит 1 - Z - Флаг нуля. Бит показывает был ли результат равным нулю.

Бит 0 - С - Флаг переноса.

Регистр управления MCUCR


Биты регистра управления MCUCR управляют выполнением основных функций процессора. . 7 - SRE: Разрешение внешнего ОЗУ. Установленный (=1) бит SRE разрешает обращение к внешней памяти данных и переводит работу выводов AD0 - 7 (Порт А), А8 - 15 (Порт С), WR и RD на выполнение альтернативной функции. Бит SRE также перенастраивает установки направлений в соответствующих регистрах направления данных.

Очистка бита SRE (=0) запрещает обращение к внешней памяти данных и восстанавливает нормальные установки направлений выводов и данных. MCUCR.6 - SRW: Режим состояния ожидания. При установленном (=1) бите SRW к циклу обращений к внешней памяти данных добавляется один цикл ожидания. При сброшенном (0) бите SRW обращение к внешней памяти выполняется по трехцикловой схеме. .5 - SE: Разрешение режима энергосбережения. Установленный в 1 бит SE разрешает перевод MCU в режим sleep по команде SLEEP. Чтобы исключить перевод MCU в незапланированный режим sleep, рекомендуется устанавливать бит SE непосредственно перед выполнением команды SLEEP. .4,3 ~ SM1, SM0: Биты выбора режима энергосбережения. Эти биты позволяют выбрать один из трех возможных режимов энергосбережения следующим образом.

.2..0 - Зарезервированные биты

Каждый порт имеет три регистра: DDRx, PORTx, PINx, где x - буква порта. Например порт А имеет регистры: DDRA, PORTA, PINA.


PINA не является регистром, при обращении по этому адресу читаются значения на выводах порта. При чтении регистра PORTA читается состояние защелок данных порта А.

Все восемь линий порта А при его использовании в качестве цифрового устройства ввода/вывода работают одинаково. Соответствующий бит DDAn определяет направление вывода, а бит PORTAn = 1 при работе вывода в качестве входа подключает нагрузочный резистор. После сброса выводы портов находятся в третьем состоянии. Воздействие битов DDAn на работу выводов порта А показано в таблице 3.

Таблица 3 - Направление данных порта.

DDAn

PORTAn

I/O

Нагрузочный резистор

Описание

0

0

Вход

Не подключен

Третье состояние

0

1

Вход

Подключен

При входном низком уровне РАn обеспечивает вытекающий ток

1

0

Выход

Не подключен

Низкий уровень, двухтактный выход

1

1

Выход

Не подключен

Высокий уровень, двухтактный выход


2.4.3 Работа аналого-цифрового преобразователя

Аналого-цифровой преобразователь может работать в двух режимах: режиме однократного преобразования и режиме циклического преобразования. В режиме однократного преобразования каждое преобразование инициируется пользователем. В режиме циклического преобразования ADC осуществляет выборку и обновление содержимого регистра данных ADC непрерывно. Выбор режима производится битом ADFR регистра ADCSR.

Работа ADC разрешается установкой в состояние 1 бита ADEN в регистре ADCSR. Первому преобразованию, начинающемуся после разрешения ADC, предшествует пустое инициализирующее преобразование. На пользователе это отражается лишь тем, что первое преобразование будет занимать 27 тактовых циклов, вместо обычных 14.

Преобразование начинается с установки в состояние 1 бита начала преобразования ADSC. Этот бит находится в состоянии 1 в течение всего цикла преобразования и сбрасывается, по завершении преобразования, аппаратно. Если в процессе выполнения преобразования выполняется смена канала данных, то ADC вначале закончит текущее преобразование и лишь потом выполнит переход к другому каналу.

Поскольку ADC формирует 10-разрядный результат, то по завершении преобразования результирующие данные размещаются в двух регистрах данных ADCH и ADCL. Для обеспечения соответствия результирующих данных считываемому уровню используется специальная логика защиты. Этот механизм работает следующим образом: при считывании данных первым должен быть считан регистр ADCL. Как только ADCL считан обращение ADC к регистрам данных блокируется. Таким образом, если после считывания состояния ADCL, но до считывания ADCH, будет завершено следующее преобразование, ни один из регистров не будет обновлен и записанный ранее результат не будет искажен. Обращение ADC к регистрам ADCH и ADCL разрешается по завершении считывания содержимого регистра ADCH.имеет свое собственное прерывание, которое может быть активировано по завершению преобразования. Когда обращение ADC к регистрам запрещено, в процессе считывания регистров ADCL и ADCH, прерывание будет активироваться, даже если результат будет потерян.

Рисунок 14 - Схема АЦП

Мультиплексор АЦП имеет регистр управления ADMUX описание которого представлено в таблице 4.

Таблица 4 - Регистр управления мультиплексором АЦП- ADMUX.

Разряд

7

6

5

4

3

2

1

0

 

 

REFS1

REFS0

ADLAR

MUX4

MUX3

MUX2

MUX1

MUX0

ADMUX

Чтение/запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

 

Исх. значение

0

0

0

0

0

0

0

0

 


Разряд 7:6 - REFS1:0: Биты выбора источника опорного напряжения

Данные биты определяют какое напряжение будет использоваться в качестве опорного для АЦП (см. табл. 5). Если изменить значения данных бит в процессе преобразования, то новые установки вступят в силу только по завершении текущего преобразования (т.е. когда установится бит ADIF в регистре ADCSRA). Внутренний ИОН можно не использовать, если к выводу AREF подключен внешний опорный источник.

Таблица 5 - Выбор опорного источника АЦП.

REFS1

REFS0

Опорный источник

0

0

AREF, внутренний VИОН отключен

0

1

AVCC с внешним конденсатором на выводе AREF

1

0

Зарезервировано

1

1

Внутренний источник опорного напряжения 2.56В с внешним конденсатором на выводе AREF


Разряд 5 - ADLAR: Бит управления представлением результата преобразования. Бит ADLAR влияет на представление результата преобразования в паре регистров результата преобразования АЦП. Если ADLAR = 1, то результат преобразования будет иметь левосторонний формат, в противном случае - правосторонний. Действие бита ADLAR вступает в силу сразу после изменения, независимо от выполняющегося параллельно преобразования.

Разряд 4:0 - MUX4:0: Биты выбора аналогового канала и коэффициента усиления

Данные биты определяют какие из имеющихся аналоговых входов подключаются к АЦП. Кроме того, с их помощью можно выбрать коэффициент усиления для дифференциальных каналов (см. табл. 6). Если значения бит изменить в процессе преобразования, то механизм их действия вступит в силу только после завершения текущего преобразования (после установки бита ADIF в регистре ADCSRA).

Таблица 6 - Выбор входного канала и коэффициента усиления.

MUX4..0

Однополярный вход

Неинвертирующий дифференциальный вход

Инвертирующий дифференциальный вход

Коэффициент усиления, Ку

00000

ADC0

Нет

00001

ADC1


00010

ADC2


00011

ADC3


00100

ADC4


00101

ADC5


00110

ADC6


00111

ADC7


01000

Нет

ADC0

ADC0

10

01001


ADC1

ADC0

10

01010


ADC0

ADC0

200

01011


ADC1

ADC0

200

01100


ADC2

ADC2

10

01101


ADC3

ADC2

10

01110


ADC2

ADC2

200

01111


ADC3

ADC2

200

10000


ADC0

ADC1

1

10001


ADC1

ADC1

1

10010


ADC2

ADC1

1

10011


ADC3

ADC1

1

10100


ADC4

ADC1

1

10101


ADC5

ADC1

1


ADC6

ADC1

1

10111


ADC7

ADC1

1

11000


ADC0

ADC2

1

11001


ADC1

ADC2

1

11010


ADC2

ADC2

1

11011


ADC3

ADC2

1

11100


ADC4

ADC2

1

11101

 

ADC5ADC21 Нет111110В(GND)

11110

1.23В (VBG)



Регистр управления и статуса АЦП - ADCSRA.

Таблица 7 - Регистр ADCSRA.

Разряд

7

6

5

4

3

2

1

0

 

 

ADEN

ADSC

ADFR

ADIF

ADIE

ADPS2

ADPS1

ADPS0

ADCSRA

Чтение/запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

 

Исх. значение

0

0

0

0

0

0

0

0

 


Разряд 7 - ADEN: Разрешение работы АЦП

Запись в данный бит лог. 1 разрешает работу АЦП. Если в данный бит записать лог. 0, то АЦП отключается, даже если он находился в процессе преобразования.

Разряд 6 - ADSC: Запуск преобразования АЦП

В режиме одиночного преобразования установка данного бита инициирует старт каждого преобразования. В режиме автоматического перезапуска установкой этого бита инициируется только первое преобразование, а все остальные выполняются автоматически. Первое преобразование после разрешения работы АЦП, инициированное битом ADSC, выполняется по расширенному алгоритму и длится 25 тактов синхронизации АЦП, вместо обычных 13 тактов. Это связано с необходимостью инициализации АЦП.

В процессе преобразования при опросе бита ADSC возвращается лог. 1, а по завершении преобразования - лог. 0. Запись лог. 0 в данный бит не предусмотрено и не оказывает никакого действия.

Разряд 5 - ADFR: Выбор режима автоматического перезапуска АЦП

Если в данный бит записать лог. 1, то АЦП перейдет в режим автоматического перезапуска. В этом режиме АЦП автоматически выполняет преобразования и модифицирует регистры результата преобразования через фиксированные промежутки времени. Запись лог. 0 в этот бит прекращает работу в данном режиме.

Разряд 4 - ADIF: Флаг прерывания АЦП

Данный флаг устанавливается после завершения преобразования АЦП и обновления регистров данных. Если установлены биты ADIE и I (регистр SREG), то происходит прерывание по завершении преобразования. Флаг ADIF сбрасывается аппаратно при переходе на соответствующий вектор прерывания. Альтернативно флаг ADIF сбрасывается путем записи лог. 1 в него. Обратите внимание, что при выполнении команды "чтение-модификация-запись" с регистром ADCSRA ожидаемое прерывание может быть отключено. Данное также распространяется на использование инструкций SBI и CBI.

Разряд 3 - ADIE: Разрешение прерывания АЦП

После записи лог. 1 в этот бит, при условии, что установлен бит I в регистре SREG, разрешается прерывание по завершении преобразования АЦП.

Разряды 2:0 - ADPS2:0: Биты управления предделителем АЦП

Данные биты определяют на какое значение тактовая частота ЦПУ будет отличаться от частоты входной синхронизации АЦП.

Таблица 8 - Управление предделителем АЦП.

ADPS2

ADPS1

ADPS0

Коэффициент деления

0

0

0

2

0

0

1

2

0

1

0

4

0

1

1

8

1

0

0

16

1

0

1

32

1

1

0

64

1

1

1

128


Регистры данных АЦП - ADCL и ADCH.

Таблица 9 - ADLAR = 0.

 

-

-

-

-

-

-

ADC9

ADC8

ADCH

 

ADC7

ADC6

ADC5

ADC4

ADC3

ADC2

ADC1

ADC0

ADCL

Чтение/запись

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

 

Исх. значение

0

0

0

0

0

0

0

0

 


Таблица 10 - ADLAR = 1.

 ADC9ADC8ADC7ADC6ADC5ADC4ADC3ADC2ADCH










 

ADC1

ADC0

-

-

-

-

-

-

ADCL

Чтение/запись

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

Чт.

 

Исх. значение

0

0

0

0

0

0

0

0

 


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

Если выполнено чтение ADCL, то доступ к этим регистрам для АЦП будет заблокирован (т.е. АЦП не сможет в дальнейшем модифицировать результат преобразования), пока не будет считан регистр ADCH.

Левосторонний формат представления результата удобно использовать, если достаточно 8 разрядов. В этом случае 8-разрядный результат хранится в регистре ADCH и, следовательно, чтение регистра ADCL можно не выполнять. При правостороннем формате необходимо сначала считать ADCL, а затем ADCH.

.4.4 Система прерываний

Микроконтроллеры ATmegal6 обслуживают 20 источников прерывания. Все прерывания и механизм сброса имеют отдельные векторы, которые образуют таблицу прерываний. Эта таблица располагается по младшим адресам пространства памяти программ. У каждого прерывания существует свой бит разрешения, который должен быть установлен совместно с битом I регистра SREG, чтобы прерывание могло быть обслужено.

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

Микроконтроллеры содержат два 8-разрядных регистра масок прерываний: регистр масок внешних прерываний EIMSK (External Interrupt Mask) и регистр масок прерываний таймеров/счетчиков TIMSK (Timer/Counter Interrupt Mask). Кроме того, в регистрах управления блоков ввода/вывода имеются и другие биты разрешения и масок.

При возникновении прерывания бит I (разрешения всех прерываний) в регистре SREG очищается и все прерывания запрещаются. Процедура прерывания может установить бит I, чтобы разрешить вложенные прерывания. Команда RETI в конце процедуры обслуживания прерывания устанавливает бит I (=1).

Таблица 11 - Векторы сброса и прерываний.


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

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

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

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

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


EIMSK.7.4 - Разрешение внешних прерываний INT7..INT4. При установленных битах INT7-INT4 и установленном бите I регистра SREG разрешаются запросы по соответствующим входам внешних прерываний. Биты управления идентификацией регистра EICR (External Interrupt Control Register) определяет условия возникновения запроса: по нарастающему/спадающему фронту сигнала или по логическому уровню. Активность сигнала по любому из этих выводов вызовет запрос прерывания, даже если вывод определен как выход.

EIMSK.3..0 - Разрешение внешних прерываний INT3..INT0. При установленных битах INT3-INT0 и установленном бите I регистра SREG разрешаются прерывания по соответствующим входам внешних прерываний. Активным всегда является низкий уровень сигнала. Активность сигнала по любому из этих выводов вызовет запрос прерывания, даже если вывод определен как выход. Запрос прерывания по логическому уровню, если он разрешен, будет существовать до тех пор, пока на входе будет низкий уровень сигнала.


EIFR.7.4 - Флаги внешних прерываний INTF7 - INTF4. При идентификации активного сигнала на входах INT7 - INT4 соответствующий флаг прерывания INTF7 - INTF4 устанавливается (=1). Если бит I регистра SREG и соответствующий бит разрешения (INT7 - INT4) регистра EIMSK установлены, то выполняется переход по вектору прерывания. При этом переходе флаг очищается. Кроме того, флаг можно очистить, записав в него логическую 1.

Внимание! Программно установить флаг внешнего прерывания нельзя!


EICR.7..О - ISCX1, ISCX0: Биты управления идентификацией внешних прерываний INT7-INT4. Запросы внешних прерываний на выводах INT7 - INT4 идентифицируются по значениям ISCxl/ISCx0 в соответствии со следующей таблицей:

Таблица 12 - Управление идентификацией прерываний.

ISCx1

ISCx0

Описание

0

0

Запрос прерывания идентифицируется по низкому уровню на INTx

0

1

Зарезервирован

1

0

Запрос прерывания идентифицируется по спадающему фронту на INTx

1

1

Запрос прерывания идентифицируется по нарастающему фронту на INTx


х = 7.. 4

При изменении значений битов ISCxl/ISCx0 прерывание должно быть запрещено очисткой бита разрешения в регистре GIMSK. Иначе может произойти прерывание в момент изменения значения битов.

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


TIMSK.7 - OCIE2: Разрешение прерывания по совпадению Таймера 2. При установленном бите OCIE2 и установленном бите I регистра SREG разрешается прерывание по совпадению содержимого регистра сравнения и рабочего регистра Таймера 2.

TIMSK.6 - TOIE2: Разрешение прерывания по переполнению Таймера 2. При установленном бите TOIE2 и установленном бите I регистра SREG разрешается прерывание по переполнению Таймера 2.

TIMSK.5 - TICIE1: Разрешение прерывания по захвату Таймера 1. При установленном бите TICIE1 и установленном бите I регистра SREG разрешается прерывание по захвату Таймера 1.

TIMSK.4 - OCIE1A: Разрешение прерывания по совпадению регистра OCR1A с Таймером 1. При установленном бите OCIE1A и установленном бите I регистра SREG разрешается прерывание по совпадению значения в регистре OCR1A со значением в рабочем регистре Таймера1.

TIMSK.3 - OCIE1B: Разрешение прерывания по совпадению регистра OCR1B с Таймером 1. При установленном бите OCIE1B и установленном бите I регистра SREG разрешается прерывание по совпадению значения в регистре OCR1B со значением в рабочем регистре Таймера 1.

TIMSK.2 - TOIE1: Разрешение прерывания по переполнению Таймера 1. При установленном бите TOIE1 и установленном бите I регистра SREG разрешается прерывание по переполнению Таймера 1.

TIMSK. 1 - OCIE0: Разрешение прерывания по совпадению Таймера 0. При установленном бите OCIE0 и установленном бите I регистра SREG разрешается прерывание по совпадению содержимого регистра сравнения OCR0 и рабочего регистра Таймера 0.

TIMSK.0 - TOIE0: Разрешение прерывания по переполнению Таймера 0. При установленном бите TOIE0 и установленном бите I регистра SREG разрешается прерывание по переполнению Таймера 0.


TIFR.7 - OCF2: Флаг совпадения значения Таймера 2. Бит OCF2 устанавливается при совпадении значения Таймера 2 и содержимого регистра OCR2. Бит OCF2 аппаратно очищается при переходе на вектор прерывания. Возможна очистка флага записью в бит логической 1.

TIFR.6 - TOV2: Флаг переполнения Таймера 2. Бит TOV2 устанавливается при переполнении Таймера 2. Он аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1. В режиме PWM этот бит устанавливается при переходе через $00.

TIFR.5 - ICF1: Флаг захвата входа Таймера /. Бит ICF1 устанавливается в случае захвата по входу и показывает, что значение Таймера 1 послано в регистр захвата ICR1. Бит очищается аппаратно при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

TIFR.4 - OCF1A: Флаг А совпадения выхода Таймера 1. Бит OCF1A устанавливается при совпадении значения в Таймере 1 и содержимого регистра OCR1A. Бит OCF1A аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

TIFR.3 - ОСF1В: Флаг В совпадения выхода Таймера 1. Бит OCF1B устанавливается при совпадении значения в Таймере 1 с содержимым регистра OCR1B. Бит OCF1B аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

TIFR.2 - TOV1: Флаг переполнения Таймера 1. Бит TOV1 устанавливается при переполнении Таймера 1. Он аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

TIFR.1 - OCF0: Флаг совпадения выхода Таймера 0. Бит OCF0 устанавливается при совпадении значения в Таймере 0 с содержимым регистра OCR0. Бит OCF0 аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

TIFR.0 - TOV0: Флаг переполнения Таймера 0. Бит TOV0 устанавливается при переполнении Таймера 0. Он аппаратно очищается при переходе на вектор прерывания. Возможна очистка бита записью во флаг логической 1.

3. Алгоритм работы микропроцессора

На рисунке 15 представлен алгоритм работы микропроцессора.

Рисунок 15 - Алгоритм работы

Заключение

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

Список литературы

1. User’s Manual ЕС-5, Decagon Devices, Washington - 2012.

2. Твердотельные однофазные реле серии PD, М.: Приборика - 2012.

3. KINGBRIGHT FULL-LINE CATALOG. [Электронный ресурс] - #"600157.files/image027.gif">

Перечень элементов

Таблица 13 - Элементы.

Обозначение

Тип

Кол-во

Примечание

Конденсаторы

С1

К10-7В-100пФ-50В

1


Дроссели

L1

ДМ 0.1-100

1


Микросхемы

DD1

ATmega16-16PI

1


DD2

DC56-11

1


Резисторы

R1, R2

C5-35В- 3.3 Ом

2


R3

C1-4 - 10 кОм

1


Разъёмы

X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16

  ST-033

  16



Листинг программы

; ******************************************************

; BASIC.ASM template file for AVR

; ******************************************************

.include "C:\PROGRA~1\cvavr2\VMLAB\include\m16def.inc"

; Define here the variables

;

.def temp =r22

.defdrem16uL=r14

.defdrem16uH=r15

.defdres16uL=r16

.defdres16uH=r17

.defdd16uL=r16

.defdd16uH=r17

.defdv16uL=r18

.defdv16uH=r19

.defdcnt16u=r20

; Define here Reset and interrupt vectors, if any

;:start; Addr $01; Addr $02; Addr $03; Addr $04; Addr $05; Addr $06 Use 'rjmp myVector'; Addr $07 to define a interrupt vector; Addr $08; Addr $09; Addr $0A; Addr $0B This is just an example; Addr $0C Not all MCUs have the same; Addr $0D number of interrupt vectors; Addr $0E; Addr $0F; Addr $10; Addr $11; Addr $12; Addr $13; Addr $14; Addr $15; Addr $16 Use 'rjmp myVector'; Addr $17 to define a interrupt vector; Addr $18; Addr $19; Addr $1A; Addr $1B This is just an exampleaadd; Addr $1C Not all MCUs have the same

; Program starts here after Reset

;:r17,adchr17r17tsi: r16,0x80

out sreg,r16;разрешение прерываний

clr r13

clr r14

ldi r16,0x00;настройка портов

out DDRA,r16r16,0xffDDRB,r16DDRC,r16DDRD,r16r16: admux,r16;выборка канала датчика

ldi r17,0xc8adcsr,r17;запуск АЦП:

push r17;сохранение значения

cpi r17,76;влажность меньше 90%?

brsh pro

cpi r16,0;включение i-го насоса

brne pr1portb,0plu:r16,1pr2portb,1plu:r16,2pr3portb,2plu:r16,3pr4portb,3plu:r16,4pr5portb,4plu:r16,5pr6portb,5plu:r16,6pr7portb,6plu:r16,7pluportb,7 plu

pro:

cpi r17,79;влажность больше 96%?

brlo plu

cpi r16,0;выключение i-го насоса

brne pr12portb,0plu:r16,1pr22portb,1plu:r16,2pr32portb,2plu:r16,3pr42portb,3plu:r16,4pr52portb,4plu:r16,5pr62portb,5plu:r16,6pr72portb,6plu:r16,7pluportb,7:r16r16,7riistart:r16r17r18r19r20: r17;восстановление значения

add r19,r17

adc r18,r20r16r16,8 vos

mov r17,r18;настройка для деления

mov r16,r19

clr r19

ldi r18,8;начало деления

div16u:clrdrem16uL;clear remainder Low byteuH,drem16uH;clear remainder High byte and carryu,17;init loop counteru_1:roldd16uL;shift left dividenduHu;decrement counteru_2;if done; returnu_2:roldrem16uL;shift dividend into remainderuHuL,dv16uL;remainder = remainder - divisoruH,dv16uH;u_3;if result negativeuL,dv16uL; restore remainderuH,dv16uH; clear carry to be shifted into resultu_1;elseu_3:sec; set carry to be shifted into resultu_1r17,0fre forever

fre:

ldi r17,31;преобразование среднего значения

sub r16,r17r16,40da1r19,8r17,40r16,r17mla:r16,30da2r19,6r17,30r16,r17mla:r16,20da3r19,4r17,20r16,r17mla:r16,10da4r19,2r17,10r16,r17mla:r19:r16r16,10vir16,10 r19

vi:

cpi r19,9;начало вывода среднего значения

brlo ba1r20,0b11011110:r19,8ba2r20,0b11111110:r19,7ba3r20,0b00001110:r19,6ba4r20,0b11111010:r19,5ba5r20,0b11011010:r19,4ba6r20,0b11001100:r19,3ba7r20,0b00001110:r19,2ba8r20,0b10110110:r19,1ba9r20,0b00001100:r20,0b01111110r16,9ba11r21,0b11110110:r16,8ba21r21,0b11111110:r16,7ba31r21,0b11100000:r16,6ba41r21,0b10111110:r16,5ba51r21,0b10110110:r16,4ba61r21,0b01100110:r16,3ba71r21,0b11110010:r16,2ba81r21,0b11011010:r16,1ba91r21,0b01100000:r21,0b11111100portc,r20;выводportd,r21r16forever

Похожие работы на - Разработка быстродействующей системы контроля влажности почвы на основе микропроцессора ATmega16 фирмы Atmel

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!