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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
АННОТАЦИЯ
В данной курсовой работе произведена разработка цифрового измерителя технологического многоканального на основе AVR микроконтроллера AT90S4414 с характеристиками, согласно заданию. Выполнена разработка функциональной и структурной схем. Приведена подробная информация о выбранных элементах структурной схемы.
СОДЕРЖАНИЕ
Введение
1. Разработка схемы
2. Разработка программного обеспечения
2.1 Разработка структуры программного обеспечения изделия …………
2.2 Разработка алгоритма
одной из составных частей программного обеспечения …………….
2.3 Программа ………………………………………………………………
Приложение 1 ………………………………………………………………….
Приложение 2 (перечень элементов)…………………………………………
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
Разработка цифрового измерителя температуры и давления на базе контроллера AVR
- диапазон 100 С° до +750 С°.
- точность ±0,2
ВВЕДЕНИЕ
В промышленности и бытовой сфере проблема эффективного использования измерителей технологических многоканальных - одна из важнейших. Ее решение возможно только при комплексной автоматизации всего оборудования с помощью различных цифровых приборов локального учета, контроля и управления (с возможностью соединения таких приборов в локальную вычислительную сеть для создания систем глобального регулирования всего объекта).
AVR-микроконтроллеры в сочетании с датчиками позволяют создавать эффективные системы контроля в бытовой и промышленной технике. Их главные достоинства - универсальность, программная гибкость, возможность цифровой обработки данных и реализации сложных алгоритмов управления. Интеграция в одном корпусе большого количества периферийных устройств обеспечивает компактность и низкую стоимость приборов в условиях сжатых сроков разработки и постановки изделий на производство.
Однокристальная микро-ЭВМ (микроконтроллер) представляет собой, построенную вокруг микропроцессора вычислительную систему, которая выполнена на одном кристалле вместе с микропроцессором.
В данной работе используется микроконтроллер AT90S4414 фирмы Atmel. Микросхема выполнена в 40-выводном корпусе, что дает безусловный выигрыш. Таким образом, микроконтроллер имеет (4 внешних порта РА ,РВ,РС и РD). Прибор обеспечивает производительность, приближающуюся к 1 МГц. Архитектура эффективно поддерживает как языки высокого уровня, так и программы на языке ассемблер. Микроконтроллер AT90S4414 содержит: 4Кбайта загружаемого ПЗУ, 256 байтов СОЗУ дает возможность наращивать память данных, программируемый последовательный UART, программируемый сторожевой таймер и многое, многое другое.
ОБЗОР СУЩЕСТВУЮЩИХ РЕШЕНИЙ
Наша задача разработать дешевый и компактный технологический многоканальный измеритель напряжения и силы тока. Стандартное решение такой конструкторской задачи - построение схемы, выполняющей следующую последовательность действий:
Сегодня некоторые зарубежные фирмы выпускают АЦП, выполняющие описанную выше цепочку преобразований. Например, фирма Analog Devices производит аналого-цифровые преобразователи AD7710, AD7711 и AD7713 со встроенными операционным усилителем (с программируемым коэффициентом усиления), источниками тока и последовательным интерфейсом. Эти микросхемы адаптированы для применения в измерительных системах (где датчиками могут служить термометр сопротивления, термопара или тензорезистивный мост), и датчики подключаются непосредственно к АЦП при минимуме дополнительных компонентов. Применять такие АЦП в небольших приборах дорого (цена специализированных АЦП превышает стоимость всех остальных компонентов, вместе взятых), а использование обычных АЦП значительно увеличивает число компонентов в схеме (и отрицательно сказывается на стоимости, габаритах и надежности прибора).
Еще один путь решения поставленной задачи - преобразование сопротивления непосредственно в код. Имеется множество различных схем, реализующих такое преобразование. Принцип их действия основан на измерении (электронно-счетным методом) временного интервала, равного постоянной времени цепи разряда конденсатора через измеряемое сопротивление. Существует множество различных измерителей, например многоканальный измеритель-сигнализатор уровня серии ИСУ 2000И .
Особенности:
- мониторинг от 1 до 8 резервуаров;
- индикация текущих значений уровня на жидкокристаллическом дисплее;
- конфигурирование и программирование с клавиатуры пульта управления и индикации;
- адаптация к форме резервуара для мониторинга объема среды;
- калибровка показаний по двум фиксированным уровням;
Разнообразие выходных сигналов:
- токовый - для подключения дополнительных стрелочных приборов и других средств измерения;
- контакты реле или транзисторные ключи;
- интерфейсный выход для связи с ЭВМ;
- монтаж датчиков - вертикальный;
- линии подключения - двухпроводные;
- расстояние от датчиков до ИСУ 2000: до 1000 м.
Близкий аналог - дисплейный и управляющий модуль LPU 8000 фирмы LABKO (Финляндия).
Автоматизированная система материального учета и управления - состоит из датчиков уровня и других технологических параметров, до восьми многоканальных измерителей-сигнализаторов уровня ИСУ 2000И, адаптера "токовая петля" - RS232C и IBM-совместимой ЭВМ с базовым программным обеспечением.
Система адаптируется под требования конкретного заказчика с учетом характера технологического процесса и оборудования. Осуществляет мониторинг до 64 резервуаров с визуализацией состояния контролируемой среды и оборудования. Ведет технологический журнал и журнал тревог, архивирует необходимые данные с заданным периодом, обеспечивает просмотр архивов и формирование отчетов по требованию заказчика.
Комплект поставки:
Блок обработки - 1 шт.
Датчики уровня (см. "Датчики уровня для приборов типа ИСУ100") - до 8 шт.
Модуль реле (8 реле в каждом) - до 2 шт.
Показывающие приборы (миллиамперметр 0-5 мА со шкалой 0-100%, класс точности 1.5, степень защиты оболочки IP40) - до 8 шт.
Блок обработки обеспечивает:
Циклическое преобразование в цифровой код и постоянный ток входных импульсных сигналов от датчиков уровня.
Циклическое преобразование в цифровой код и передачу на ЭВМ входных стандартных токовых сигналов от датчиков технологических параметров (температура, давление и т.п.).
Формирование ступенчатых сигналов на выходах типа "открытый коллектор" и контактах реле при достижении измеряемой средой программируемых уровней.
Индикация измеренных значений на алфавитно-цифровом дисплее, как в относительных единицах, так и в единицах уровня или объема.
Автоматизированная калибровка характеристик преобразования.
Адаптация к форме резервуара любой конфигурации.
Программирование с панели индикации и управления прибора.
Интерфейс с ЭВМ. Возможность программирования прибора с помощью ЭВМ.
Самоконтроль и сигнализация отказов.
Два провода для подключения одного датчика.
Взрывозащита вида "искробезопасная цепь"
Допускается размещение датчиков во взрывоопасных зонах всех классов, модуля реле - в зонах классов В-Iб, В-Iг и В-IIа, блока обработки - в зонах классов В-Iа, В-Iб, В-Iг и В-IIа.
Блок искрозащиты, размещенный внутри блока обработки, ограничивает в цепях датчиков напряжения холостого хода и токи короткого замыкания до безопасных значений.
Технические данные
Два вида входных сигналов: |
25 ... 500 Гц |
Количество входов: |
8 |
Основная погрешность измерения уровня |
1.0 % |
Погрешность преобразования |
0.25 % |
Несколько вариантов выходных сигналов |
0 ... 5 (0 ... 20) мА |
Жидкокристаллический дисплей |
(1 строка x 16 символов) |
Степень защиты оболочек |
IP54 |
Напряжение питания |
220 В, 50 Гц |
Потребляемая мощность |
< 30 Вт |
РАЗРАБОТКА СХЕМЫ
1.1 РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ
Согласно заданию схема должна содержать следующие блоки:
Рис. 4.
1.2 РАЗРАБОТКА ФУНКЦИАНАЛЬНОЙ СХЕМЫ
Разработку функциональной схемы начнем с последовательного описания каждого блока схемы.
1) Стабилизатор напряжения. На вход данной микросхемы подается напряжение 220В с выхода получаем постоянное напряжение 5В. Напряжение 5в необходимо для питания микросхем.
Разрисовка структурной схемы представлена на рис.5.
Рис.5.
1.3 РАЗРАБОТКА ПРИНЦИПИАЛЬНОЙ СХЕМЫ
Согласно заданию требуется разработать цифровой измеритель технологический многоканальный на базе контролера AVR. Я взял микроконтроллер AT90S4414, потому что он имеет достаточное число выводов, напряжение питания от 2,7 до 6 В, есть программируемый полный дуплексный UART (так как мне необходимо организовать последовательную связь с компьютером). Еще в нем имеется сторожевой таймер и в данном микроконтроллере имеется возможность применить языки высокого уровня для его программирования. Все остальные характеристики приведены в приложении 2.
Супервизор напряжения: я выбрал микросхему mcp100 так как она обладает следующими характеристиками:
По характеристикам эта схема подходит для моего устройства.
В задании оговорено, что нужно для связи с компьютером использовать интерфейс RS485. Мною была выбрана микросхема МАХ481, у нее напряжение питания тоже 5 В.
Мне необходим жидко кристаллический индикатор со следующими характеристиками
Данными свойствами обладает модуль PG1602.
Нужно взять 16-ти разрядное АЦП. Я взял микросхему AD7706. К этой микросхеме необходим источник постоянного напряжения, микросхема AD680.
Для обеспечения питания микросхем используем стабилизатор напряжения DA37805. На данную микросхему подаем напряжение в диапазоне 10-30В, а с выхода получаем 5В. Здесь диод VD1(КЦ105) используется для того, чтобы не перепутать + и -. Электролитические конденсаторы C2,C6 (К56-100 мкФ) используется для отсечения низкочастотной помехи, а для отсечения высокочастотной помехи параллельно ставим конденсаторы С1,С5 (КМ4-0,1 мкФ).
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 РАЗРАБОТКА СТРУКТУРЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
На рис.6 представлена структура программного обеспечения
USR,RxC=1 |
Возврат и сброс флага |
Flagdan=1 и flagpr=1 |
Сброс флагов, если пустой буфер |
Рис.6.
В блоке инициализация делаем следующие действия. Для контроллера настройка портов, программирование таймеров, настройка UART, устанавливаем стек и т. д. Для АЦП устанавливаем частоту опроса, режим 16 бит, для ЖКИ устанавливаем разрядность шины данных=8,количество строк =2, шрифт 5х7 точек, направление сдвига курсор в право, запрещаем сдвиг дисплея вместе со сдвигом курсора и т.д.
В блоке “Выдача на дисплей начального приглашения” выдаем на дисплей следующее сообщение «Кнопка1-первый канал, кнопка2 второй канал, кнопка3-третий канал, кнопка4 четвертый канал ».
Блок опроса флагов: происходит постоянный опрос флагов, если какой-либо флаг установлен, то переходим на соответствующую подпрограмму обработки, которая после окончания своей работы возвращается в то место, откуда была вызвана и сбрасывает соответствующий флаг.
Программа опроса клавиатуры: постоянно опрашивает клавиатуру, и записывает ее состояние в заданный регистр1, как только в этом регистре1 появляется указанное число, она устанавливает Flagklav=1.
Подпрограмма обработки скан кода активизируется, когда установлен Flagklav=1, сначала проверяем, если действительно в регистре1 число (т.е. устраняем дребезг контактов), анализируем содержание регистра1 и в зависимости от того какое число там записано переходим на ту или иную подпрограмму обработки. В конце подпрограммы сбрасываем Flagklav.
Подпрограмма приема данных активизируется когда установлен флаг USR,RxC, его устанавливает компьютор приславший данные, выполняем прием даных и конце подпрограммы сбрасываем флаг USR,RxC.
Подпрограмма выдачи данных на компьютер начинает выполняться, когда Flagdan=1 и flagpr=1, далее выполняется выдача данных на компьютер и сброс флагов происходит в том случае, если буфер с данными пуст.
Подпрограмма обработки АЦП активизируется, когда установлен Flagadc, здесь происходит запись данных в буфер и устанавливается Flagdan, установка этого флага говорит о том, что в буфере есть данные для передачи.
2.2 РАЗРАБОТКА АЛГОРИТМА ОДНОГО ИЗ СОСТАВНЫХ ЧАСТЕЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Алгоритм инициализации ЖКИ представлен на рис.7.
Рис.7.
Программа инициализации ЖКИ составленная по данному алгоритму и написанная на языке Ассемблер будет выглядеть так:
initlcd:
rcall del
ldi r25,30h
rcall icom
rcall del
ldi r25,30h
rcall icom
rcall del
ldi r25,30h
rcall icom
ldi r25,38h l; устанавливаем разрядность шины данных=8,
количество строк =2, шрифт 5х7 точек
rcall icom
ldi r25,08h ; включить дисплей, зажечь курсор
rcall icom
ldi r25,01h ; очистить дисплей и установить курсор в нулевую позицию
rcall icom
ldi r25,06h; устанавливаем направление сдвига курсор в право, запретить
сдвиг дисплея вместе со сдвигом курсора
rcall icom
ret
del:
ldi r17,150 ;задержка ~15 ms при кварце 4 МГц
l: ldi r18,200 ;
l1: dec r18 ;
brne l1 ;
dec r17 ;
brne l ;
ret
icom:
in r0,portC
sbi r0,2 ; установит RS в 1
out portC,r0
in r0,portC
сbi r0,4 ; установит W/R в 0
out portC,r0
in r0,portC
sbi r0,3 ; установит Е в 1
out portC,r0
out portA,r25 ;записать в ЖКИ команду из регистра r25
in r0,portC
cbi r0,3 ;сбросить Е в 0
out portC,r0
in r0,portC
sbi r0,4 ; установит W/R в 1
out portC,r0
ret
2.3 НАПИСАНИЕ ПРОГРАММЫ
Текст программы составленный по структурной схеме на рис.6 приведен ниже
.include "4414def.inc"
.def flag=r1
.def flagadc =0
.def flagklav =1
.def flagdan =2
.def flagpr =3
.def tmp=r20
.cseg
.org 0
rjmp main
main:
rcall init ; инициализация контроллера
rcall initlcd ; инициализация ЖКИ
rcall ad ; инициализация АЦП
rcall priglashenie ;программа выдачи начального приглашения
m1:
in r30,PinC ; программа опроса клавиатуры и флагов
ldi r31,FEh
cp r30,r31 ;если равно, то переходим на подпрограмму обработки
rcall obrabot
ldi r31,FDh
cp r30,r31 ;если равно, то переходим на подпрограмму обработки
rcall obrabot
ldi r31,FBh
cp r30,r31 ;если равно, то переходим на подпрограмму обработки
rcall obrabot
ldi r31,F7h
cp r30,r31 ;если равно, то переходим на подпрограмму обработки
rcall obrabot
sbrc USR,RxC ; проверяем если бит USR,RxC=1, то переходим на
подпрограмму приема данных от компьютера, если не
равен то пропускаем следующую команду
rcall priem ; подпрограмма приема данных, после своего окончания
работы она скидывает флаг USR,RxC
sbrs flagdan ; проверяем если 0, то переход на m2, если нет, то
пропускаем следующую команду
rjmp m2
sbrs flagpr
rjmp m2
rcall outdan ; подпрограмма выдачи данных на компьютер, после
выполнения выдачи данных сбрасывает флаг данных и
приемника
m2:
rjmp m1
init:
ldi r31,ramend ; указываем стек
out SPL,r31
ldi r31,ffh ; порт А настроить на вывод
out ddra,r31
ldi r31, 00h ; Port С to ввод
out DDRС, r31
ldi r31,07h ; подключаем резисторы
out PortС, r31
ldi tmp,00011101 ; инициализация UART
out UCR,tmp ;
ldi tmp,25 ;9600 бит/сек при fclk=4МГц
out UBBR,tmp ;
ret
icom:
in r0,portC
sbi r0,2 ; установит RS в 1
out portC,r0
in r0,portC
сbi r0,4 ; установит W/R в 0
out portC,r0
in r0,portC
sbi r0,3 ; установит Е в 1
out portC,r0
out portA,r25 ;записать в ЖКИ команду из регистра r25
in r0,portC
cbi r0,3 ;сбросить Е в 0
out portC,r0
in r0,portC
sbi r0,4 ; установит W/R в 1
out portC,r0
ret
initlcd:
rcall del
ldi r25,30h ;8-битный интерфейс, 1-строка, шрифт-5х7 точек
rcall icom
rcall del
ldi r25,30h
rcall icom
rcall del
ldi r25,30h
rcall icom
ldi r25,38h
rcall icom
ldi r25,08h
rcall icom
ldi r25,01h
rcall icom
ldi r25,06h
rcall icom
ret
del:
ldi r17,150 ;задержка ~15 ms при кварце 4 МГц
l: ldi r18,200 ;
l1: dec r18 ;
brne l1 ;
dec r17 ;
brne l ;
ret
obrabot:
rcall del ;делаем задержку
ldi r31,FEh ;проверяем есть ли действительно в регистре r30
указанные числа(таким образом устраняем дребезг
контактов)
cp r30,r31 ;если равно, то выполняем следующую программу
rcall kanal1 ; подпрограмма выводит на ЖКИ измеренные данные из
первого канала
ldi r31,FDh ;проверяем есть ли действительно в регистре r30
указанные числа(таким образом устраняем дребезг
контактов)
cp r30,r31 ;если равно, то выполняем следующую программу
rcall kanal2 ; подпрограмма выводит на ЖКИ измеренные данные из
второго канала
ldi r31,FBh ;проверяем есть ли действительно в регистре r30
указанные числа(таким образом устраняем дребезг
контактов)
cp r30,r31 ;если равно, то выполняем следующую программу
rcall kanal3 ; подпрограмма выводит на ЖКИ измеренные данные из
третьего канала
ldi r31,F7h ;проверяем есть ли действительно в регистре r30
указанные числа(таким образом устраняем дребезг
контактов)
cp r30,r31 ;если равно, то выполняем следующую программу
rcall kanal4 ; подпрограмма выводит на ЖКИ измеренные данные из
четвертого канала
ret
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ 1
В данном приложении приведено описание микроконтроллера АТ90S4414.
8-ми разрядный КМОП микроконтроллер с загружаемой Flash ПЗУ
КМОП микроконтроллер AT90S4414 реализован по AVR RISC архитектуре (Гарвардская архитектура с разделенной памятью и разделенными шинами для памяти программ и данных) и совместим по исходным кодам и тактированию с 8-разрядными микроконтроллерами семейства AVR (AT90SXXX). Выполняя команды за один тактовый цикл, прибор обеспечивает производительность, приближающуюся к 1 МГц. AVR ядро объединяет мощную систему команд с 32 8 разрядными регистрами общего назначения и конвеерного обращения к памяти программ. Шесть из 32 регистров могут использоваться как три 16 разрядных регистра указателя при косвенной адресации пространства памяти. Выполнение относительных переходов и команд вызова реализуются с прямой адресацией всех 2К адресного пространства. Адреса периферийных функций содержатся в пространстве памяти ввода/вывода. Архитектура эффективно поддерживает как языки высокого уровня, так и программы на языках ассемблера.
Микроконтроллер AT90S4414 содержит: 4Кбайта загружаемого ПЗУ(2К*16), 256 байтов СОЗУ и 256 байтов ЭСППЗУ, с возможностью наращивания памяти данных до 64К за счет внешних ИС СОЗУ, 32 линии ввода/вывода общего назначения, 8-ми разрядный таймер/счетчик и 16 разрядный таймер/счетчик с режимом захвата и сравнения, систему внутренних и внешних прерываний, программируемый последовательный UART, программируемый сторожевой таймер с внутренним генератором, последовательный порт с интерфейсом SPI для внутри системной загрузки и для связи с внешними устройствами. Программно управляются два режима энергоснабжения. В пассивном режиме ЦПУ останавливается, но СОЗУ, таймеры/счетчики, порт SPI, сторожевой таймер и система прерываний остаются активными. В стоповом режиме останавливается тактовый генератор и, следовательно останавливаются все функции, пока не поступит сигнал внешнего прерывания или аппаратного сброса, но сохраняется содержимое регистров.
Встроенная загружаемая Flash память обеспечивает внутрисистемное программирование с использование интерфейса SPI или с использование стандартных программаторов энергонезависимой памяти.
Потребление прибора в активном режиме составляет 3,5 мА и в пассивном режиме 1мА. В стоповом режиме, при работающем сторожевом таймере, микроконтроллер потребляет 50 мкА.
Объединение на одном кристалле усовершенствованного 8-ми разрядного RISC ЦПУ с загружаемой Flash ПЗУ позволило фирме создать мощный микроконтроллер, обеспечивающий высокую гибкость и экономичность в использовании прибора в качестве встраиваемого контроллера.