Реализация устройства автоматического полива почвы

Тип работы:
Курсовая
Предмет:
Коммуникации, связь, цифровые приборы и радиоэлектроника


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Реферат

Данная пояснительная записка содержит: 38 страниц, 12 рисунков, 2 таблицы, 7 источников по перечню ссылок, 1 приложение.

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

Результат выполнения задания — реализация устройства, предназначенного для измерения проводимости почвы на микроконтроллере AVR АТMEGA 8А. Принцип измерения основан на явлении резистивного изменения сопротивления почвы. Устройство измеряет сопротивление почвы, индицирует ее состояние и сигнализирует о чрезмерном пересыхании почвы. При этом осуществляется автоматическая подача воды для полива в зависимости от состояния грунта. Осуществляется реализация обмена данными с персональным компьютером по протоколу UART.

В пояснительной записке представлены этапы перехода от словесного описания поставленной задачи до конкретной реализации в виде функционирующего устройства. Выполнены все этапы проектирования от технического задания до реализации проекта в выбранной элементной базе (микроконтроллер ATMEL ATmega8A,) с использованием сред WinAVR и CodeVisionAVR.

МИКРОКОНТРОЛЛЕР, НАГРУЗКА, ЭЛЕКТРОМАГНИТНОЕ РЕЛЕ, ДЕЛИТЕЛЬ НАПРЯЖЕНИЯ, УПРАВЛЕНИЕ, ВСТРОЕННЫЙ, LCD-ДИСПЛЕЙ.

Содержание

Введение

1. Техническое задание

1.1 Назначение устройства

1.2 Требования к реализации

1.3 Входные/выходные параметры

2. Техническое предложение

2.1 Элементная база

2.2 Алгоритм реализации

3. Эскизный проект

3.1 Описание основных модулей микроконтроллера

3.1.1 Интерфейс SPI

3.1.2 LCD — экран

3.1.3 Интерфейс USART

3.1.4 Интерфейс I2C

4. Технический проект

4.1 Разработка проекта.

4.2 Описание интерфейса.

4.3 Реализация основных функций

5. Рабочий проект

5.1 Компиляция проекта

5.2 Прошивка

5.3 Физическое тестирование

Выводы

Перечень ссылок

Приложение А. Исходный код основной программы модуля управления

Введение

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

Результатом выполнения такого задания являлась реализация устройства, предназначенного для измерения проводимости почвы на микроконтроллере AVR АТMEGA 8А. Принцип измерения основан на явлении резистивного изменения сопротивления почвы.

В пояснительной записке представлены этапы перехода от словесного описания поставленной задачи до конкретной реализации в виде функционирующего устройства. Выполнены все этапы проектирования от технического задания до реализации проекта в выбранной элементной базе. Также выполнено программирование микроконтроллера AVR АТMEGA 8А.

Микроконтроллеры семейства AVR за сравнительно короткое время завоевали заслуженную популярность во всём мире.

Atmel Corporation -- изготовитель полупроводниковых электронных компонентов. Компания основана в 1984 году. Один из лидеров производства микроконтроллеров (MCS-51, ARM, AVR, AVR32). Также разрабатывает и производит небольшие модули энергонезависимой памяти для электронных изделий, ПЛИС, цифровые микросхемы-радиоприёмники и передатчики, сканеры отпечатков пальцев.

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

Микроконтроллеры AVR имеют гарвардскую архитектуру (программа и данные находятся в разных адресных пространствах) и систему команд, близкую к идеологии RISC. Процессор AVR имеет 32 8-битных регистра общего назначения, объединённых в регистровый файл. В отличие от «идеального» RISC, регистры не абсолютно ортогональны

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

На настоящий момент соотношение «цена — производительность — энергопотребление» для AVR является одним из лучших на мировом рынке 8-разрядных микроконтроллеров. Объемы продаж AVR в мире удваиваются ежегодно. В геометрической прогрессии растет число сторонних фирм, разрабатывающих и выпускающих разнообразные программные и аппаратные средства поддержки разработок для них. Можно считать, что AVR постепенно становится еще одним индустриальным стандартом среди 8-разрядных микроконтроллеров общего назначения.

Система команд микроконтроллеров AVR весьма развита и насчитывает в различных моделях от 90 до 133 различных инструкций. Большинство команд занимает только 1 ячейку памяти (16 бит). Большинство команд выполняется за 1 такт машинного цикла.

Семейства микроконтроллеров AVR, представленных на рынке: tinyAVR (ограниченный набор периферийных устройств, минимальное число линий ввода-вывода и количество памяти), megaAVR (число линий ввода-вывода 23−86, аппаратный умножитель, расширенная система команд и периферийных устройств), XMEGA AVR (наличие достаточного объема памяти, четырёхканальный DMA-контроллер, инновационная система обработки событий).

Области применения AVR многогранны. Для семейства «tiny» — это интеллектуальные автомобильные датчики различного назначения, игрушки, игровые приставки, материнские платы персональных компьютеров, контроллеры защиты доступа в мобильных телефонах, зарядные устройства, детекторы дыма и пламени, бытовая техника, разнообразные инфракрасные пульты дистанционного управления.

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

Для «mega» AVR — это аналоговые (NMT, ETACS, AMPS) и цифровые (GSM, CDMA) мобильные телефоны, принтеры и ключевые контроллеры для них, контроллеры аппаратов факсимильной связи и ксероксов, контроллеры современных дисковых накопителей, CD-ROM и т. д.

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

Микроконтроллер семейства mega — Atmega 8А — маломощный 8-разрядный КМОП микроконтроллер, основанный на расширенной AVR RISC-архитектуре. За счет выполнения большинства инструкций за один машинный цикл Atmega 8А достигает производительности 1 млн. операций в секунду, что позволяет проектировщикам систем оптимизировать соотношение энергопотребления и быстродействия.

Высокая производительность, наличие развитой подсистемы ввода/вывода и широкого спектра встроенных периферийных устройств позволяют отнести микроконтроллеры AVR АТMEGA 8А к классу наиболее функциональных микроконтроллеров для встроенных систем управления.

Для разработки программной части проекта была использована среда CodeVisionAVR. Это интегрированная среда разработки программного обеспечения для микроконтроллеров семейства Atmel AVR.

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

Для компиляции исходного кода и прошивки в конечное устройство был использован программный комплекс WinAVR — набор опенсорсных инструментов для разработки программного обеспечения для микроконтроллеров Atmel AVR для платформы Windows. В комплект входит компилятор GNU GCC для языков программирования C и C++.

1. Техническое задание

Техническое задание (ТЗ) — исходный документ на проектирование технического объекта, который устанавливает основное назначение разрабатываемого объекта, его технические и тактико-технические характеристики, показатели качества и технико-экономические требования, предписание по выполнению необходимых стадий создания документации, а также специальные требования. Техническое задание обычно объемный документ, в котором на естественном языке описана словесная модель проектируемой системы. Несмотря на строгость и точность формулировок ТЗ не дает однозначного описания объекта проектирования и не позволяет непосредственно переходить от описания функционирования системы к ее техническому воплощению.

1.1 Назначение устройства

Необходимо аппаратно реализовать устройство, предназначенное для измерения проводимости почвы на базе микроконтроллера AVR АТMEGA 8А.

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

Основными моментами работы являются:

реализация алгоритмов вычисления проводимости земляного грунта;

реализация измерительной части;

реализация сигнализирования о необходимости полива почвы;

реализация автоматического полива почвы;

реализация обмена данными с персональным компьютером по протоколу UART;

тестирование и оптимизация программного продукта;

исследование возможностей микроконтроллера.

1.2 Требования к реализации

Сроки проектирования определяются сроками выполнения курсового проекта, включая разработку документации. Проект считается законченным, если разработан рабочий блок управления, изготовлены модули управления нагрузкой, написана работоспособная программа и результат соответствует техническому заданию. Основные требования к проектированию: использование доступной и дешевой элементной базы, написание прошивки для микроконтроллера на языке программирования C/C++ либо ассемблер, использование тестового подхода к проверке исправности модели устройства. Способ проверки — физическое тестирование основных функций устройства.

1.3 Входные/выходные параметры

Входные и выходные параметры (табл.1. 1) определяются из задания.

Таблица 1.1 — Входные/выходные параметры

Входы

Назначение

Разрядность

Значение проводимости почвы

Используется в качестве параметра, отображающего текущее сопротивление почвы

8 бит

Принимаемые данные с порта

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

8 бит

Посылка информации на порт

Передача текущего значения проводимости почвы

8 бит

Основные требования к проектированию: описание моделей с помощью языков программирования типа С/C++ или ассемблер.

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

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

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

2. Техническое предложение

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

При этом:

1) принимается решение об использовании микроконтроллера фирмы Atmel ATmega8A, как наиболее экономичного в плане энергосбережения и ресурсозатрат в рамках данного проекта;

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

для индикации состояния почвы был выбран двухстрочный знакогенерирующий жидкокристаллический дисплей WH1602;

для автоматического полива почвы будет использован насос от стеклоомывателя легкового автомобиля;

для управления насосом будет использовано реле постоянного напряжения;

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

2.1 Элементная база

Ядром устройства измерения проводимости почвы был выбран микроконтроллер фирмы ATMEL — ATmega8A. Функциональная схема микроконтроллера ATmega8A приведена на рисунке 2.1.

Технические характеристики:

— 8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением;

— прогрессивная RISC архитектура;

— приближающаяся к 16 MIPS (при тактовой частоте 16 МГц) производительность;

— энергонезависимая память программ и данных;

— 8 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash);

— 1 Кбайт встроенной SRAM;

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

— два 8-разрядных таймера/счетчика и один 16-разрядный таймер/счетчик с отдельным предварительным делителем, один с режимом сравнения;

— три канала PWM;

— 8-канальный аналого-цифровой преобразователь (в корпусах TQFP и MLF);

— программируемый последовательный USART;

— встроенный калиброванный RC-генератор;

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

— 23программируемые линии ввода/вывода.

Ядро AVR сочетает богатый набор инструкций с 32 универсальными рабочими регистрами. Все 32 регистра непосредственно подключены к арифметико-логическому устройству (АЛУ), который позволяет указать два различных регистра в одной инструкции и выполнить ее за один цикл. Данная архитектура обладает большей эффективностью кода за счет достижения производительности в 10 раз выше по сравнению с обычными CISC-микроконтроллерами (рис 2. 2).

ATmega8А поддерживается полным набором программных и аппаратных средств для проектирования, в т. ч.: С-компиляторы, макроассемблеры, программные отладчики/симуляторы, внутрисистемные эмуляторы и оценочные наборы.

В целях достижения максимальной производительности и параллелизма у AVR-микроконтроллеров используется Гарвардская архитектура с раздельными памятью и шинами программ и данных.

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

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

Память программ представляет собой внутрисистемно программируемую флэш-память.

Регистровый файл с быстрым доступом содержит 32×8-разрядных рабочих регистров общего назначения с однотактовым циклом доступа. Благодаря этому достигнута однотактность работы арифметико-логического устройства (АЛУ).

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

Шесть регистров из 32 могут использоваться как три 16-разрядных регистра косвенного адреса для эффективной адресации в пределах памяти данных. Один из этих указателей адреса может также использоваться как указатель адреса для доступа к таблице преобразования во флэш-памяти программ. Данные 16-разрядные регистры называются X-регистр, Y-регистр и Z-регистр и описываются далее в этом разделе.

почва орошение адаптация микроконтроллер

Рисунок 2.1 — Функциональная схема микроконтроллера ATmega8A

АЛУ поддерживает арифметические и логические операции между регистрами, а также между константой и регистром. Кроме того, АЛУ поддерживает действия с одним регистром.

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

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

Большинство инструкций представляют собой одно 16-разрядное слово. Каждый адрес памяти программ содержит 16- или 32-разрядную инструкцию.

Флэш-память программ разделена на две секции: секция программы начальной загрузки и секция прикладной программы.

Обе секции имеют раздельные биты защиты от записи и чтения/записи.

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

Внутрисистемно программируемая флэш-память программ содержит 128 кбайт внутренней внутрисистемно перепрограммируемой флэш-памяти для хранения программы.

Поскольку все AVR-инструкции являются 16 или 32-разрядными, то флэш-память организована как 64 кбайт?16. Для программной защиты флэш-память программ разделена на два сектора: сектор программы начальной загрузки и сектор прикладной программы.

Рисунок 2.2 — Карта памяти программ

Высокопроизводительное АЛУ AVR-микроконтроллеров работает в непосредственной связи со всеми 32 универсальными рабочими регистрами. АЛУ позволяет выполнить за один машинный цикл операцию между двумя регистрами или между регистром и константой.

Операции АЛУ могут быть классифицированы на три группы: арифметические, логические и битовые. Кроме того, архитектурой ATmega8A поддерживаются операции умножения со знаком и без знака и дробным форматом. В соответствии с гарвардской архитектурой память AVR-микроконтроллера разделена на две области: память данных и память программ. Кроме того, ATmega8A содержит память на ЭСППЗУ для энергонезависимого хранения данных. Все три области памяти являются линейными и равномерными.

В настоящее время в микропроцессорных системах для отображения широко используют жидкокристаллические индикаторы (ЖКИ). Условно все ЖКИ можно разделить на две категории: символьные, или знакосинтезирующие, и графические.

Графические индикаторы представляют собой матрицу из m строк и n столбцов, на пересечении которых находятся пиксели. Пиксель представляет собой неделимый объект прямоугольной или круглой формы, обладающий определённым цветом; пиксель — наименьшая единица растрового изображения.

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

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

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

Внешний вид ЖКИ показан на рисунке ниже.

Рисунок 2.3 — Внешний вид символьного ЖК индикатора

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

Для отображения различной информации о состоянии почвы и устройства был выбран символьный дисплей WH1602.

Данный жидкокристаллический индикатор, предназначенный для отображения буквенно — цифровой информации, русский /английский, с разрешением 16 символов x 2 строки фирмы Winstar пользуется большой популярностью у радиолюбителей и применяется в различных устройствах. Он показал себя как исключительно надежный и может быть рекомендован к применению в данной работе.

Технические характеристики дисплея:

Символьный тип дисплея;

— Напряжение питания постоянное, +3…5 В;

— Символов в строке 16 штук;

— Две строки для отображения информации;

— Набор символов русский/латинский.

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

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

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

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

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

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

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

Схема, по которой реле подключается к микроконтроллеру приведена на рисунке ниже.

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

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

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

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

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

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

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

Для организации связи блока управления с персональным компьютером был выбран преобразователь интерфейсов USB в UART под названием CP2102 от производителя Silicon Labs.

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

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

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

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

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

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

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

Падение напряжения (уменьшение потенциала при перемещении заряда от одной точки цепи до другой её точки) на каждом резисторе согласно закону Ома будет пропорционально сопротивлению (ток, как было описано ранее, одинаков) и равно U = I * R.

Формула, связывающая выходное (U2) и входное (U) напряжение делителя имеет вид

(2. 1)

Схема резистивного делителя напряжения приведена на рисунке 2.5.

Рисунок 2.5 — Схема резистивного делителя напряжения

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

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

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

2. Исходя из величины тока, по закону Ома определяют значение суммарного сопротивления R = R1 + R2. Остается только взять конкретные значения сопротивлений из стандартного ряда, отношение величин которых близко требуемому отношению напряжений, а сумма величин близка расчетной.

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

Максимальная рассеиваемая мощность резисторов должна превышать выделяемую на них мощность P = I2 * (R1 + R2), где I — ток источника при отключенной нагрузке. В этом случае через резисторы течет максимально возможный ток.

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

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

2.2 Алгоритм реализации

Для программирования микроконтроллера ATmega8A можно использовать языки программирования С и ассемблер.

Алгоритм работы данного устройства представлен на рисунке 2.6.

Рисунок 2.6 — Алгоритм функционирования устройства

3. Эскизный проект

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

На рисунке 3.1 изображена функциональная модель устройства

Рисунок 3.1 — Функциональная модель устройства

3.1 Описание основных модулей микроконтроллера

3.1.1 Интерфейс SPI

SPI (Serial Peripheral Interface — последовательный периферийный интерфейс) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, разработанный компанией Motorola для обеспечения простого и недорогого сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным интерфейсом.

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

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

Ведущее устройство выбирает ведомое для передачи, активируя сигнал «выбор кристалла» (chip select) на ведомой микросхеме. Периферия, не выбранная процессором, не принимает участия в передаче по SPI.

3.1.2 LCD — экран

Модуль TFTDisplay формирует все необходимые сигналы для передачи команд и данных чипу драйвера ЖКИ.

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

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

Драйвер дисплея содержит в себе управляющие регистры (Index Register, Control Register и Address Register), регистры настроек и память для хранения изображения GRAM.

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

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

В Index Register записывается адрес команды равный 0022h и далее передаются данные, соответствующие информации о каждом отображаемом пикселе в выбранном формате отображения.

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

3.1.3 Интерфейс USART

Интерфейс USART (адресуемый универсальный синхронно-асинхронный приемо-передатчик) — весьма гибкий модуль последовательной связи.

USART поддерживает полнодуплексную асинхронную или синхронную передачу данных. USART также может работать в режиме «ведущий SPI» для работы с шиной SPI.

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

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

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

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

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

В микроконтроллерах AVR для работы с UART используются несколько регистров:

1) UDR — регистр хранения принятых-отправляемых данных;

2) регистры UCSRA, UCSRB, UCSRC — управляющие и статусные регистры;

3) UBRRL и UBRRH — регистры для задания скорости передачи данных.

3.1.4 Интерфейс I2C

I2C — двухпроводная последовательная шина данных для связи интегральных схем, разработанная фирмой Philips в начале 1980-х как простая шина внутренней связи для создания управляющей электроники. Она используется для соединения низкоскоростных периферийных компонентов с материнской платой, встраиваемыми системами и мобильными телефонами.

IІC использует две двунаправленных линии, подтянутые к напряжению питания и управляемые через открытый коллектор или открытый сток — последовательная линия данных (SDA) и последовательная линия тактирования (SCL). Стандартные напряжения +5 В или +3,3 В, однако допускаются и другие. Классическая адресация включает 7-битное адресное пространство с 16 зарезервированными адресами. Это означает до 112 свободных адресов для подключения периферии на одну шину.

Основной режим работы — 100 кбит/с; 10 кбит/с в режиме работы с пониженной скоростью. Заметим, что стандарт допускает приостановку тактирования для работы с медленными устройствами.

В AVR Atmega8А для работы с шиной TWI используются регистры:

1) TWDR — сдвиговый регистр данных и адреса;

2) TWBR — регистр задания частоты работы шины;

3) TWAR — адресный регистр;

4) TWSR — регистр состояния;

5) TWCR — управляющий регистр.

4. Технический проект

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

Основными моментами данного этапа являются:

— составление и описание блоков на языке программирования;

— определяются межблоковые связи;

— описание констант и переменных;

-отладка проекта (пошаговое тестирование основных блоков программы в процессе написания и исправление некорректной работы).

4.1 Разработка проекта

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

Рисунок 4.1 — Связи файлов

4.2 Описание интерфейса

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

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

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

Начальные значения выбираются в соответствие с описанием устройства.

Тип параметров — int целочисленный тип. При этом по умолчанию используется модификатор типа unsigned, который указывает, что переменная принимает неотрицательные значения.

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

Таблица 4.1 — Описание интерфейса всей программы

Входы

Тип

Начальные значения

Описание

sensorPin

int

A0

Задание входного пина для датчика

ledPn

int

Y0

Задание выходной ножки для светодиода

Motor

int

13

Задание пина для управления

sensorValue

int

0

Считанное значение проводимости почвы

Displey_g

int

0

Используется для вывода информации на дисплей

4.3 Реализация основных функций

При разработке проекта необходимо подключить заголовочные файлы:

1. #include «mega8. h» — для регистрации вводов-выводов для ATMEGA8;

2. #include «delay. h» — для использования задержек;

3. #include «spi. h» — для вызова функций используемых в главном файле main.c.

4. #include «eeprom. h» — используется для подключения встроенной памяти ЭПСП микроконтроллера.

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

Листинг 4.1 — Инициализация микроконтроллера

void setup ()

{Serial. begin (9600);

pinMode (ledPin, OUTPUT);

pinMode (slaveSelectPin, OUTPUT);

SPI. begin ();}

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

Листинг 4.2 — Калибровка системы полива

addr = addr + 1;

if (addr == 512)

addr = 0;

// read the value from the sensor:

sensorValue = analogRead (sensorPin);

В системе предусмотрено каскадирование модулей контроля. Модули связанны между собой по последовательной шине SPI.

Листинг 4.3 — Каскадирование модулей контроля

// take the SS pin low to select the chip:

digitalWrite (slaveSelectPin, LOW);

// send in the address and value via SPI:

SPI. transfer (address);

SPI. transfer (value);

// take the SS pin high to de-select the chip:

digitalWrite (slaveSelectPin, HIGH);

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

Листинг 4.4 — Контроль влажности почвы

if (sensorValue == EEPROM. read (address))

{

analogWrite (motor, 255);

delay (100);

analogWrite (motor, 0);

}

Вся полученная информация передается в компьютер посредством шины RS-232.

В дальнейшем можно будет реализовать сбор данных на удаленном сервере посредством LAN.

Листиннг 4.5 — Передача информации в компьютер

sensorValue = digitalRead (2);

Serial. println (sensorValue, DEC);

digitalWrite (ledPin, LOW);

5. Рабочий проект

5.1 Компиляция проекта

Данный проект реализован с помощью программы CodeVisionAVR.

Интегрированная среда CodeVisionAVR представляет собой кросс-компилятор языка С ориентированный на семейство микроконтроллеров AVR и содержит: графическую оболочку для управления ресурсами проекта; текстовый редактор исходного модуля программы; кросс-компилятор; отладчик, программатор; автоматический генератор программного кода; терминал для работы с последовательным интерфейсом RS232C (USART). Полученный в результате компиляции исходного кода программы на языке С исполняемый модуль (файл прошивки) может быть непосредственно записан в память программ микроконтроллера.

Рисунок 5.1 — Окно студии CodeVisionAVR

5.2 Прошивка

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

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

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

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

Рисунок 5.2 — Окно отображения информации о результатах компиляции проекта

В некоторых случаях для проверки работоспособности загруженной программы необходимо выполнить сброс микроконтроллера (Reset Chip) или удалить программу из памяти (Erase Chip). На рисунке 5.3 изображено окно отображения настроек программатора.

Рисунок 5.3 — Окно отображения настроек программатора

5.3 Физическое тестирование

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

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

Устройство было запитано от стабилизированного источника постоянного напряжения 5 В.

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

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

При добавлении воды в грунт устройство индицировало изменение проводимости грунта и сигнализировало о его достаточной увлажненности.

Далее датчик устройства был установлен в более сухой грунт. Устройство сигнализировало о недостаточном поливе почвы и включило насос на подачу воды.

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

Рисунок 5.4 — Внешний вид устройства при работе

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

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

Выводы

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

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

Система сама принимает решение о поливе почвы, самостоятельно производит полив и ведет протокол.

В системе не было реализовано сброса данных на сервер, но заложен функциональный блок стыковки с компьютерной системой посредством последовательной шины с протоколом RS 232.

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

Перечень ссылок

1. Методические указания к лабораторным работам по курсу «Микроконтроллеры во встроенных системах управления для студентов всех специальностей» / Составители Аврунин О. Г., Крук О. Я., Семенец В. В. — ХНУРЭ, 2005. — 105 с.

2. Методические указания к комплексному курсовому проекту / Составители: В. Г. Лобода, А. С. Шкиль, Л. К. Штец — Харьков, ХНУРЭ, 2001- 8 с.

3. Голубцов М. С., Кириченкова А. В. Микроконтроллеры AVR: от простого к сложному.- М.: СОЛОН-Пресс, 2004. — 304 с.

4. Баранов В. Н. Применение микроконтроллеров AVR: схемы, алгоритмы, программы.- М.: Издательский дом «Додэка-XXI», 2004. — 288 с.

5. В. А. Гулиус, В. Г. Лобода, В. П. Степанов, В. Ю. Цуканов. «Средства автоматизированного проектирования специализированных микропроцессорных устройств»: Учебное пособие — Харьков: ХНУРЭ, 2001. — 228 с.

6. Белова Н. В., Коряк С. Ф., Лобода В. Г. «Основы построения ориентированных ЭВМ и систем». Под общ. ред. В. Г. Лободы. — Харьков: ООО «Компания СМИТ», 2007. — 148 с.

7. Документация на микроконтроллер ATMEL ATmega8A atmega8a. pdf

Приложение А. Исходный код основной программы модуля управления

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

#include < EEPROM. h>

#include < SPI. h>

int sensorPin = A0; // select the input pin for the potentiometer

int ledPin, motor = 13; // select the pin for the LED

int sensorValue = 0; // variable to store the value coming from the sensor

void setup ()

{

Serial. begin (9600);

pinMode (ledPin, OUTPUT);

pinMode (slaveSelectPin, OUTPUT);

SPI. begin ();

}

void loop () {

int val = analogRead (0) / 4;

// write the value to the appropriate byte of the EEPROM.

// these values will remain there when the board is

// turned off.

EEPROM. write (addr, val);

// advance to the next address. there are 512 bytes in

// the EEPROM, so go back to 0 when we hit 512.

addr = addr + 1;

if (addr == 512)

addr = 0;

// read the value from the sensor:

sensorValue = analogRead (sensorPin);

// turn the ledPin on

sensorValue = digitalRead (2);

Serial. println (sensorValue, DEC);

digitalWrite (ledPin, LOW);

if (sensorValue == EEPROM. read (address))

{

analogWrite (motor, 255);

delay (100);

analogWrite (motor, 0);

}

digitalWrite (slaveSelectPin, LOW);

// send in the address and value via SPI:

SPI. transfer (address);

SPI. transfer (value);

// take the SS pin high to de-select the chip:

digitalWrite (slaveSelectPin, HIGH);

// stop the program for for < sensorValue> milliseconds:

delay (sensorValue);

}

ПоказатьСвернуть
Заполнить форму текущей работой