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

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

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «МАГНИТОГОРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМ. Г.И. НОСОВА»






ДИПЛОМНЫЙ ПРОЕКТ

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

ЗАДАНИЕ

Тема: Разработка универсальной микропроцессорной системы сбора сигналов с заданными параметрами

Исходные данные к работе:

)        результаты прохождения преддипломной практики;

)        техническое задание на разработку универсальной микропроцессорной системы сбора данных;

)        структурные схемы известных систем детектирования шлака в струе металла;

)        техническая документация на контроллеры STM32F2xx;

)        стандарт UDP протокола.

Перечень вопросов, подлежащих разработке в дипломном проекте:

)        анализ функциональных возможностей платы TE-STM32F207;

)        разработка программного обеспечения для настройки периферии контроллера STM32F207;

)        применение известного TCP стека для реализации технического задания.

Графическая часть:

)        элементы системы детектирования шлака на конвертере;

)        элементы системы детектирования шлака на МНЛЗ;

)        вид чувствительного элемента вибрационной системы детектирования шлака;

)        внешний вид модуля TE-STM32F207;

)        архитектура микроконтроллера STM32F207;

)        характеристики модуля TE-STM32F207;

)        алгоритм работы микроконтроллера;

)        листинг программы настройки выводов общего назначения;

)        листинг программы настройки АЦП;

)        листинг программы настройки ПДП;

)        листинг программы настройки таймера.

РЕФЕРАТ

контроллер плата программное обеспечение

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

Микроконтроллер, вывод общего назначения, состояния сигналов, аналогово-цифровой преобразователь, прямой доступ к памяти, таймер, UDP, прерывание, Ethernet.

Целью проекта является разработка универсальной микропроцессорной системы сбора сигналов со следующими характеристиками: 8 каналов, частота опроса 10 кГц, Ethernet интерфейс, микроконтроллер STM32F207.

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

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

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

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

ГЛАВА 1. АНАЛИЗ ИЗВЕСТНЫХ МЕТОДОВ ОТСЕЧКИ ШЛАКА В ТЕХНОЛОГИЧЕСКОМ ПРОЦЕССЕ ПРОИЗВОДСТВА СТАЛЕЙ

.1 Шлаки сталеплавильных процессов

.2 Влияние шлака на качество процесса

.3 Известные методы детектирования шлака в струе металла

.4 Описание электромагнитной системы детектирования шлака

.5 Описание вибрационной системы детектирования шлака

.6 Анализ поставленной задачи

ГЛАВА 2. РАЗРАБОТКА УНИВЕРСАЛЬНОЙ МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ СБОРА СИГНАЛОВ

.1 Анализ возможностей периферийных устройств контроллера STM32F207

.2 Описание алгоритма работы микроконтроллера

.3 Выводы общего назначения

.3.1 Описание выводов общего назначения

.3.2 Описание регистров выводов общего назначения

.3.3 Настройка выводов общего назначения

.4 Аналогово-цифровой преобразователь

.4.1 Характеристики АЦП

.4.2 Описание работы АЦП

.4.3 Описание регистров АЦП

.4.4 Настройка АЦП

.4.5 Обработчик прерываний АЦП

.5 Прямой доступ к памяти

.5.1 Описание работы ПДП

.5.2 Описание регистров ПДП

.5.3 Настройка ПДП

.6 Таймер

.6.1 Описание работы таймера

.6.2 Описание регистров таймера

.6.3 Настройка таймера

.6.4 Обработчик прерываний таймера

.7 UDP стек

.7.1Настройка UDP стека

.8 Основное тело программы

.9 Краткая инструкция по применению и настройке

ГЛАВА 3. БЕЗОПАСНОСТЬ И ЭКОЛОГИЧНОСТЬ

.1 Требования к помещениям при работе за компьютером

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

.3 Требования к освещению помещений и рабочих мест

.4 Требования к шуму и вибрации в помещениях

.5 Требования к организации и оборудованию рабочих мест

.6 Режим труда и отдыха при работе с компьютером

.7 Обеспечение электробезопасности и пожарной безопасности на рабочем месте

ГЛАВА 4. АНАЛИЗ ТЕХНИКО-ЭКОНОМИЧЕСКИХ ПОКАЗАТЕЛЕЙ И ОБОСНОВАНИЕ ЭКОНОМИЧЕСКОЙ ЦЕЛЕСООБРАЗНОСТИ ПРИНЯТЫХ В ПРОЕКТЕ РЕШЕНИЙ

.1 Расчет материальных затрат на необходимое дополнительное оборудование

.2 Расчет трудозатрат

.3 Расчёт заработной платы

.4 Смета затрат

.5 Амортизация

.6 Расчёт цены реализации разработки

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ А

ВВЕДЕНИЕ


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

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

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

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

·              Уменьшение затрат алюминия.

·              Увеличение срока службы футеровки ковша и шиберного механизма.

·              Уменьшение затрат на шлакоотсекающие устройства.

·              Улучшение качества металла.

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

Работа включает в себя следующие этапы:

.        Оценка существующих методов автоматического определения проникновения шлака в струю металла, для определения параметров системы.

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

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

.        Написание программного обеспечения по составленному алгоритму.

.        Подготовка краткого руководства по эксплуатации и настройке конечного устройства.

ГЛАВА 1. АНАЛИЗ ИЗВЕСТНЫХ МЕТОДОВ ОТСЕЧКИ ШЛАКА В ТЕХНОЛОГИЧЕСКОМ ПРОЦЕССЕ ПРОИЗВОДСТВА СТАЛЕЙ


1.1 Шлаки сталеплавильных процессов


Роль шлаков в процессе производства стали исключительно велика. Шлаковый режим, определяемый количеством и составами шлака, оказывает большое влияние на качество готовой стали, стойкость футеровки и производительность сталеплавильного агрегата. Шлак образуется в результате окисления составляющих части шихты, из оксидов футеровки печи, флюсов и руды. По свойствам шлакообразующие компоненты можно разделить на кислотные (SiO2; P2O5; TiO2; и др.), основные (CaO; MgO; FeO; MnO и др.) и амфотерные (Al2O3; Fe2O3; Cr2O3; и др.) оксиды. Важнейшими компонентами шлака, оказывающими основное влияние на его свойства, являются оксиды SiO2 и CaO.

Шлак выполняет несколько важных функций в процессе выплавки стали:

1.       Связывает все оксиды (кроме СО), образующиеся в процессе окисления примесей чугуна. Удаление таких примесей, как кремний, фосфор и сера, происходит только после их окисления и обязательного перехода в виде оксидов из металла в шлак. В связи с этим шлак должен быть надлежащим образом подготовлен для усвоения и удержания оксидов примесей;

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

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

.        Защищает металл от насыщения газами, содержащимися в атмосфере печи.

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

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

1.2 Влияние шлака на качество процесса


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

В качестве примера, можно привести влияние шлака, попадающего из конвертера в сталь ковш на основные показатели качества процесса:

·              Толстый слой шлака на поверхности металла вызывает образование твердой корки, которая мешает проведению дополнительных операций по обработке (разогреву) металла в сталь-ковше;

·              Высокий уровень FeO и MnO в шлаке приводит к высокому общему содержанию кислорода в стали. Неустойчивые оксиды в шлаке реагируют с алюминиевыми и другими добавками, что приводит к обеднению сплава

·              Большое количество алюминия, требующееся из-за наличия оксидов, приводит к образованию включений оксида алюминия (Al2O3), которые засоряют выходной канал и шиберный затвор сталь-ковша;

·              Фосфор, находящийся в шлаке, попадает в сталь во время подготовки (разогрева) сталь-ковша и ухудшает свойства стали;

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

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

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

1.3 Известные методы детектирования шлака в струе металла


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

Электромагнитный метод предполагает установку в зоне струи металла чувствительного элемента, состоящего из одной или нескольких обмоток. Обмотка возбуждения создает электромагнитное поле и при изменениях в струе металла, связанные с проникновением в нее шлака, происходят изменения параметров поля, которые фиксируются измерительной обмоткой. Основным недостатком данного метода является необходимость располагать чувствительный элемент в горячей зоне (особенно в конверторе), что накладывает на него специальные требования. В настоящее время эта проблема решена при использовании специальных жаропрочных материалов. По данным фирмы Amepa за последние 10 лет системы обнаружения шлака, построенные с применением электромагнитного метода, установлены на 58 конвертерах, 7 электропечах и 1758 сталь-ковшах.

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

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

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

·        высокая точность и быстродействие измерений;

·        независимость измерений от акустических и визуальных помех;

·        работа, как при открытой, так и при закрытой разливочной трубой струе металла

1.4 Описание электромагнитной системы детектирования шлака


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

Функции системы

ü  измерение сигнала содержания шлака в струе металла;

ü  выдача звукового сигнала при появлении в струе шлака;

ü  измерение угла наклона конвертера при сливе металла;

ü  измерение времени слива металла;

ü  автоматическая диагностика работы системы;

ü  запись технологических архивов.

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

Рисунок 1 - Структура системы детектирования шлака

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

На рисунке 2 представлена схема размещения двух чувствительных элементов в летке конвертера. 1 - чувствительные элементы, 2 - кольца выпускного канала, 3 - футеровочный материал, 4 - броня летки, 5 - дно летки.

Рисунок 2 - Схема размещения чувствительных элементов в летке конвертера

Датчик шлака состоит из двух одинаковых чувствительных элементов. На один из них подается переменное напряжение для создания электромагнитного поля в области струи металла. Струя металла влияет на величину и форму этого поля. При попадании в струю металла шлака, параметры электромагнитного поля меняются. Эти изменения фиксирует второй чувствительный элемент, сигнал которого усиливается, преобразуется в цифровую форму и обрабатывается в электронном блоке. В начале слива металла система автоматически производит калибровку сигнала по величине струи металла. Полученный после обработки и калибровки сигнал равен 0 % при отсутствии в струе шлака и равен 100 % в момент, когда в струе отсутствует сталь. При превышении сигнала установленного уровня «отсечки» на пульте оператора включается звуковая и визуальная сигнализация. Регулировкой уровня «отсечки» можно добиться срабатывания звукового сигнала при различном требуемом содержании шлака в струе металла.

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

Структура такой системы показана на рисунке 4: 1 - чувствительный элемент с термостойким кабелем, 2 - соединитель, 3 - технологический пульт, 4 - блок усиления сигналов, 5 - блок обработки сигналов и рабочая станция.

Рисунок 4 - Расположение элементов системы на машине непрерывного литья заготовок

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

.5 Описание вибрационной системы детектирования шлака

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

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

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

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

Частота опроса аналоговых каналов - 10 кГц, для получения качественной картины оцифрованного сигнала.

Возможность передачи данных через Ethernet по UDP протоколу со скоростью 10/100 мбит/с.

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

1.6 Анализ поставленной задачи


Для реализации данного технического задания был предоставлен модуль TE-STM32F207 выполненный на основе 32-разрядного микроконтроллера STM32F207 компании STMicroelectronics. Примененный микроконтроллер имеет ядро Cortex-M3, порты USB OTG и Ethernet, два порта CAN. Максимальная тактовая частота микроконтроллера составляет 120 МГц.

Отличительные особенности:

·              микроконтроллер STM32F207VGT6: 120 МГц Cortex-M3, 1 Mбайт Flash-памяти программ, 128 Кбайт ОЗУ, три 12-разрядных АЦП, два 12-разрядных ЦАП, Ethernet MAC 10/100, USB OTG, 2xCAN, 5хUSART, 3х SPI, I2C, SDIO, корпус LQFP100;

·              SPI Flash-память AT45DB161D (16 Мбит);

·              разъем и драйвер порта Ethernet;

·              разъем порта USB OTG;

·              2 разъема и драйверы портов CAN;

·              2 разъема портов RS-232;

·              разъем JTAG;

·              аудио-усилитель и динамик;

·              31 линия портов микроконтроллера выведена на разъем;

·              разъем питания +7,5 … 9,0 В

Данный микроконтроллер полностью удовлетворяет нашим задачам. Так как имеет два 12 разрядных АЦП с быстродействием 2 MSPS, разъем и драйвер порта Ethernet, приемлемую цену и малые габариты.

ГЛАВА 2. РАЗРАБОТКА УНИВЕРСАЛЬНОЙ МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ СБОРА СИГНАЛОВ


2.1 Анализ возможностей периферийных устройств контроллера STM32F207


Микроконтроллеры STM32 выполнены на основе ядра Cortex, которое подключено к Flash памяти по отдельной шине инструкций. Шина данных и системная шина Cortex подключены к матрице высокоскоростных шин AHB. Внутреннее статическое ОЗУ подключено напрямую к матрице шин AHB, с которой также связан блок ПДП. Подключение встроенных УВВ распределено между двумя шинами APB. Каждая из шин связана с матрицей шин AHB посредством шинных преобразователей. Матрица шин AHB синхронизируется той же частотой, что и ядро Cortex. Однако, у шин AHB имеются отдельные предделители и, поэтому, в целях снижения энергопотребления их можно синхронизировать более низкими частотами. В качестве шинных мастеров могут выступать, как ЦПУ Cortex, так и блок ПДП. Благодаря свойственной матрице шин параллелизму, необходимость в арбитраже возникает только в случае попыток одновременного доступа обеих мастеров к статическому ОЗУ, шине APB1 или APB2. Тем не менее шинный арбитр гарантированно предоставляет 2/3 времени доступа для блока ПДП и 1/3 для ЦПУ Cortex.

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

У микроконтроллера STM32 предусмотрено до 80 двунаправленных линий ввода-вывода. Все линии ввода-вывода разделены на 5 портов по 16 линий ввода-вывода в каждой.

Данные порты называются A…E и совместимы с напряжением 5В. Многие из внешних выводов могут выполнять альтернативную функцию линии ввода-вывода, например, модуля УСАПП или I2C. Кроме того, 16 входных линий встроенного блока внешних прерываний могут быть соединены с любыми из портов ввода-вывода.

В микроконтроллере STM32 два аналогово-цифровых преобразователя. АЦП питаются отдельным напряжением, которое в зависимости типа корпуса может находиться в пределах 2.4…3.6 В. Источник опорного напряжения АЦП соединен либо с напряжением питания АЦП, либо со специальными внешними выводами. АЦП характеризуется 12-битной разрешающей способностью и частотой преобразования 1МГц. У него имеется до 18 мультиплексированных каналов, 16 из которых можно использовать для измерения внешних сигналов. Оставшиеся два канала связаны со встроенным датчиком температуры и внутренним ИОН.

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

Все блоки таймеров выполнены на основе 16-битного перезагружаемого счетчика, который синхронизируется с выхода 16-битного предделителя. Перезагружаемое значение хранится в отдельном регистре. Счет может быть прямой, обратный или двунаправленный (сначала прямой до определенного значения, а затем обратный). Вход синхронизации счетчика можно связать с одним из восьми различных источников. В их число входят: специальный сигнал синхронизации, производный от сигнала главной системной синхронизации; выходной сигнал синхронизации одного из других таймеров или внешний сигнал синхронизации, связанный с выводами захвата/сравнения.

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

2.2 Описание алгоритма работы микроконтроллера


























Рисунок 8 - Блок-схема алгоритма работы микроконтроллера















Рисунок 8 - Блок-схема алгоритма работы микроконтроллера

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

2.3 Выводы общего назначения

2.3.1 Описание выводов общего назначения

В микроконтроллерах STM32 порты 16-разрядные, в зависимости от модели их может быть до 7.

Именуются они буквами A-G : PORTA, PORTB, PORTC, PORTD, PORTE, PORTF, PORTG.

Порты могут быть сконфигурированы как

·        вход;

·        выход.

Если порт настроен на ввод данных, возможны следующие режимы:

·        аналоговый вход;

·        цифровой вход.

Также предусмотрена возможность подключения подтягивающего резистора.

Если порт настроен на вывод данных, то необходимо задать:

·        максимальное быстродействие;

·        режим выхода.

Максимальное быстродействие может иметь следующие значения: 2, 10, 50 MHz.

Режим выхода может быть следующим:

·        двухтактный выход общего назначения;

·        выход с открытым стоком общего назначения;

·        двухтактный выход с альтернативной функцией;

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

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

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

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

Рисунок 9 - Функциональная схема вывода общего назначения

Если вывод порта сконфигурирован как выход общего назначения, используются транзисторы P-MOS и N-MOS. Если на выходе нужна единица - открывается транзистор P-MOS, если нужен ноль - N-MOS.

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

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

Важный элемент - защитные диоды. Они защищают контроллер от перенапряжений на входе. Этот узел является обычным для микроконтроллеров, но для микроконтроллеров данной серии есть одна особенность. Дело в том, что для них напряжение питания составляет 3.3 вольта. Но большинство устройств питаются от 5 вольт. Если соединить выход такого устройства со входом контроллера, 5 вольт с выхода устройства через защитный диод попадут на питание контроллера. Чтобы исключить такую проблему предусмотрены выводы двух типов: обычные, на которые можно подавать уровень не более напряжения питания контроллера, и выводы толерантные (терпимые) к 5 вольтам. В документации эти выводы обозначены буквами FT.

2.3.2 Описание регистров выводов общего назначения

Для конфигурирования портов и работы с ними на каждый порт выделено по семь регистров:

·        GPIOx_CRL, GPIOx_CRH - задают режимы работы каждого бита порта;

·        GPIOx_IDR - регистр, позволяющий читать физическое состояние выводов порта x;

·        GPIOx_ODR - позволяет записать данные непосредственно в порт;

·        GPIOx_BSRR - для сброса и установки отдельных битов порта;

·        GPIOx_BRR - для сброса битов порта;

·        GPIOx_LCKR - для блокировки выбранной конфигурации

где х - это имя порта (A,B,C,D,E,F или G).

Рассмотрим подробнее особенности каждого регистра._CRL, GPIOx_CRH - 32-х разрядные регистры, задающие режим работы каждого вывода порта.

Структура регистра GPIOx_CRL представлена на рисунке 10.

Рисунок 10 - Структура регистра GPIOx_CRL

Структура регистра GPIOx_CRH представлена на рисунке 11.

Рисунок 11 - Структура регистра GPIOx_CRH

Для того, чтобы задать режим одного вывода, необходимо четыре разряда. Так как порт имеет 16 разрядов, для конфигурации порта необходимо 64 разряда. Регистры микроконтроллера имею разрядность равную 32, поэтому для всего порта необходимо два конфигурационных регистра - GPIOx_CRL и GPIOx_CRH.

Регистр GPIOx_CRL конфигурирует первую половину выводов порта (разряды 0…7).

Регистр GPIOx_CRH конфигурирует вторую половину выводов порта (разряды 8…15).

Для конфигурирования одного вывода порта необходимо 4 разряда.

Назначение этих разрядов следующее:

·        биты 0,1 (MODE) определяют направление вывода и скорость обмена в режиме выхода;

·        биты 2,3 (CNF) задают конфигурацию выходного каскада.

Разряды MODE могут иметь следующее значение:

·        MODE [1,0]=00 - вывод сконфигурирован как вход;

·        MODE [1,0]=01 - вывод сконфигурирован как выход, максимальная скорость переключения - 10 MHz;

·        MODE [1,0]=10 - вывод сконфигурирован как выход, максимальная скорость переключения - 2 MHz;

·        MODE [1,0]=11 - вывод сконфигурирован как выход, максимальная скорость переключения - 50 MHz;

Если вывод сконфигурирован как вход, назначение разрядов CNF следующее:

·        CNF[1,0]=00 - аналоговый вход;

·        CNF[1,0]=01 - цифровой вход в третьем состоянии;

·        CNF[1,0]=10 - цифровой вход с подтягивающим резистором ;

·        CNF[1,0]=11 - зарезервировано

Если вывод сконфигурирован как выход, назначение разрядов CNF следующее:

·        CNF[1,0]=00 - двухтактный выход общего назначения;

·        CNF[1,0]=01 - выход общего назначения с открытым стоком;

·        CNF[1,0]=10 - двухтактный выход с альтернативной функцией;

·        CNF[1,0]=11 - выход с альтернативной функцией с открытым стоком

Следующим идет регистр GPIOx_IDR.

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

Регистр GPIOx_ODR предназначен для непосредственной записи в порт. Он также 16-ти разрядный.

Следующий регистр - GPIOx_BSRR. Он предназначен для атомарного управления выходами. Его структура представлена на рисунке 12.

Рисунок 12 - Структура регистра GPIOx_BSRR

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

Если записать «1» в разряд BS0, вывод №0 порта будет установлен. Если записать «1» в разряд BR0, вывод №0 порта будет сброшен. Приоритет имеет BSx.

Регистр GPIOx_BRR предназначен для работы с отдельными битами порта. Но он 16-ти разрядный, и предназначен только для сброса выводов порта. Регистр GPIOx_LCKR предназначен для блокировки выбранной конфигурации. Его структура представлена на рисунке 13.

Рисунок 13 - Структура регистра GPIOx_BSRR

Чтобы защитить настройку выбранного разряда порта, необходимо установить соответствующий бит LCK. Сразу после этого выполнить последовательную запись в разряд LCKK 1 - 0 - 1.

2.3.3 Настройка выводов общего назначения

Сконфигурируем выводы в соответствии с поставленной задачей:

.        Подаем тактирование на порт А. Для этого устанавливанием бит IOPAEN регистра APB2ENR в «1».>APB2ENR |= RCC_APB2ENR_IOPAEN;

.        Задаем режим работы соответствующих портов как аналоговый вход. Для этого устанавливаем биты MODEх[1:0] и CNFх[1:0] регистра CRL в «0».>CRL &= ~GPIO_CRL_MODE0;>CRL &= ~GPIO_CRL_MODE1;>CRL &= ~GPIO_CRL_MODE2;>CRL &= ~GPIO_CRL_MODE3;>CRL &= ~GPIO_CRL_MODE4;>CRL &= ~GPIO_CRL_MODE5;>CRL &= ~GPIO_CRL_MODE6;>CRL &= ~GPIO_CRL_MODE7;>CRL &= ~GPIO_CRL_CNF0;>CRL &= ~GPIO_CRL_CNF1;>CRL &= ~GPIO_CRL_CNF2;>CRL &= ~GPIO_CRL_CNF3;>CRL &= ~GPIO_CRL_CNF4;>CRL &= ~GPIO_CRL_CNF5;>CRL &= ~GPIO_CRL_CNF6;>CRL &= ~GPIO_CRL_CNF7;

2.4 Аналогово-цифровой преобразователь


2.4.1 Характеристики АЦП

Характеристики АЦП микроконтроллера STM32F207VGT6:

·        12-ти разрядная разрешающая способность;

·        время преобразования - 1 μs;

·        18 каналов, из которых 16 - внешние;

·        возможность задавать время преобразования индивидуально для каждого канала (8 дискретных значений);

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

·        самокалибровка;

·        наличие оконного компаратора;

·        запуск преобразования от внешнего источника;

·        работа с модулем DMA.

Структурная схема аналогово-цифрового преобразователя представлена на рисунке 14.MUX - это селектор каналов. АЦП имеет 18 каналов (входов). 16 каналов - это выводы микроконтроллера, на которые подается измеряемый сигнал. Еще два канала задействованы под внутренние сигналы: один для подачи внутреннего образцового напряжения, второй для подключения датчика температуры, который расположен на кристалле.channels (инжектированные каналы) и Regular channels (регулярные каналы). Это две разновидности опроса каналов. Если нужно опрашивать несколько каналов, создается их список, и АЦП измеряет напряжение на каждом канале из этого списка последовательно друг за другом. К примеру, нужно измерять напряжение в такой последовательности: канал №2 - канал № 5 - канал №1 - канал №1 - канал № 9. Эта последовательность записывается в специальный регистр, после чего запускается процесс преобразования. В результате все каналы будут последовательно опрошены.

Рисунок 14 - Функциональная схема аналогово-цифрового преобразователя

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

Регулярные каналы

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

Инжектированные каналы

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

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

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

Оконный компаратор

Оконный компаратор (Analog watchdog) имеет в своем составе два регистра.

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

Оконный компаратор может быть весьма полезным.

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

Если использовать оконный компаратор, от этого можно избавиться.

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

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

Прерывания от АЦП

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

Сохранение результата преобразования

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

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

2.4.2 Описание работы АЦП

Режим одиночного преобразования

В этом режиме АЦП выполняет всего одно преобразование. Оно запускается после установки разряда ADON регистра ADC_CR2 (только для регулярных каналов) или от внешнего сигнала (для регулярного и инжектированного каналов). При этом разряд CONT регистра ADC_CR2 должен быть равен нулю.

После окончания преобразования в выбранном канале выполняется:

Для регулярного канала:

·              Результат преобразования сохраняется в регистре ADC_DR

·              Устанавливается флаг EOC

·              Генерируется прерывание, если установлен разряд EOCIE

Для инжектированного канала:

·              Результат преобразования сохраняется в регистре ADC_DRJ1

·              Устанавливается флаг JEOC

·              Генерируется прерывание, если установлен разряд JEOCIE

После этого АЦП останавливается

Режим непрерывного преобразования

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

Этот режим стартует от внешнего источника или при установке разряда ADON регистра ADC_CR2, при этом разряд CONT регистра ADC_CR2 должен быть равен единице.

После каждого преобразования выполняется:

Для регулярного канала:

·              Результат преобразования сохраняется в регистре ADC_DR

·              Устанавливается флаг EOC

·              Генерируется прерывание, если установлен разряд EOCIE

Для инжектированного канала:

·              Результат преобразования сохраняется в регистре ADC_DRJ1

·              Устанавливается флаг JEOC

·              Генерируется прерывание, если установлен разряд JEOCIE

Режим сканирования

Этот режим используется для сканирования группы каналов.

Он выбирается установкой разряда SCAN регистра ADC_CR1. Если этот разряд установлен, АЦП сканирует все каналы, выбранные в регистрах ADC_SQRx (для регулярных каналов) или регистре ADC_JSQR (для инжектированных каналов). Для каждого канала группы выполняется одно преобразование. После окончания преобразования следующий канал (его преобразование) запускается автоматически. Если разряд CONT установлен, то преобразование не останавливается на последнем канале, а вновь запускается с первого канала.

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

В инжектированных каналах результат сохраняется в регистрах ADC_JDRx.

2.4.3 Описание регистров АЦП

Структура регистров аналогово-цифрового преобразователя представлена на рисунке 16.

.        SR - содержит флаги, указывающие на состояние АЦП.

.        CR1, CR2 - управляющие регистры, задают режим работы.

.        SMPR1, SMPR2 - задают время преобразования.

.        JOFR1…JOFR2 - определяют смещение данных в инжектированной группе (ух, как сложно воспринимается при первом прочтении).

.        HTR, LTR - задают верхнее и нижнее значение срабатывания оконного компаратора.

.        SQR1…SQR3 - задают последовательность каналов регулярной группы.

.        JSQR - задает последовательность каналов инжектированной группы.

.        JDR1…JDR4 - регистры данных инжектированной группы.

.        DR - регистр данных регулярной группы.

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

Регистр SR

Структура регистра SR представлена на рисунке 15.

 <#"564163.files/image011.gif">

Рисунок 16 - Регистры аналогово-цифрового преобразователя

Регистр CR1

Структура регистра CR1 представлена на рисунке 16.

 <#"564163.files/image013.gif"> <#"564163.files/image014.gif"> <#"564163.files/image015.gif"> <#"564163.files/image016.gif"> <#"564163.files/image017.gif"> <#"564163.files/image018.gif"> <#"564163.files/image019.gif"> <#"564163.files/image020.gif"> <#"564163.files/image021.gif"> <#"564163.files/image022.gif"> <#"564163.files/image023.gif"> <#"564163.files/image024.gif">

Рисунок 29 - Структура регистра ISR

·              TEIFx - флаг ошибки передачи;

·              HTIFx - флаг половины передачи;

·              TCIFx - флаг окончания передачи;

·              GIFx - флаг прерывания.

Регистр IFCR

Структура регистра IFCR представлена на рисунке 30.

Рисунок 30 - Структура регистра IFCR

·              TEIFx - очистка флага ошибки передачи;

·              HTIFx - очистка флага половины передачи;

·              TCIFx - очистка флага окончания передачи;

·              GIFx - очистка флага прерывания.

Регистр CCRx

Структура регистра CCRx представлена на рисунке 31.

Рисунок 31 - Структура регистра CCRx

·              MEM2MEM - Режим обмена память-память (0 - отключен, 1 - включен);

·              PL - Уровень приоритета канала (00 - низкий, 01 - средний, 10 - высокий, 11 - очень высокий);

·              MSIZE - Размер элемента данных в памяти (0 - 8 бит, 1 - 16 бит, 2 - 32 бита);

·              PSIZE - Размер элемента данных в периферии (0 - 8 бит, 1 - 16 бит, 2 - 32 бита);

·              MINC - Режим инкремента указателя в памяти (0 - отключен, 1 - включен);

·              PINC - Режим инкремента указателя в периферии (0 - отключен, 1 - включен);

·              CIRC - Режим цикличности (0 - отключен, 1 - включен);

·              DIR - Направления обмена данными (0 - чтение из периферии, 1 - из памяти);

·              TEIE - Разрешение прерывания при возникновении ошибки при обмене;

·              HTIE - Разрешение прерывания по завершении половины обмена;

·              TCIE - Разрешение прерывания по завершении обмена (1 - разрешен, 0 - запрещен);

·              EN - Разрешение канала (0 - выключен, 1 - включен).

Регистр CNDTRx

Структура регистра CNDTRx представлена на рисунке 32.

Рисунок 32 - Структура регистра CNDTRx

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

Регистр CPARx

Структура регистра CPARx представлена на рисунке 33.

Рисунок 33 - Структура регистра CPARx

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

Регистр CMARx

Структура регистра CMARx представлена на рисунке 34.

Рисунок 34 - Структура регистра CMARx

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

2.5.3 Настройка ПДП

Сконфигурируем блок ПДП в соответствии с поставленной задачей:

.        Подаем тактирование на ПДП. Для этого устанавливаем бит DMA1EN регистра AHBENR в «1».

>AHBENR |= RCC_AHBENR_DMA1EN;

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

_Channel1->CPAR = (uint32_t) &ADC1->DR;

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

_Channel1->CMAR = (uint32_t) &BuffRxd[0];

.        Задаем направление работы ПДП, в нашем случае из периферии в память. Для этого устанавливаем бит DIR регистра CCR4 в «0».

_Channel1->CCR &= ~DMA_CCR4_DIR;

.        Задаем размер передаваемых данных из периферии, в нашем случае 16 бит. Для этого устанавливаем бит PSIZE_0 регистра CCR4 в «1».

_Channel1->CCR |= DMA_CCR4_PSIZE_0;

.        Указываем, нужно ли инкрементировать указатель адреса в периферии, в нашем случае этого делать не нужно. Для этого устанавливаем бит PINC регистра CCR4 в «1».

_Channel1->CCR = ~DMA_CCR4_PINC;

.        Задаем размер передаваемых данных в память, в нашем случае 16 бит. Для этого устанавливаем бит MSIZE_0 регистра CCR4 в «1».

_Channel4->CCR |= DMA_CCR4_MSIZE_0;

.        Указываем, нужно ли инкрементировать указатель адреса в памяти, в нашем случае это нужно для заполнения буфера приема данных. Для этого устанавливаем бит MINC регистра CCR4 в «1»._Channel4->CCR |= DMA_CCR4_MINC;

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

_Channel1->CCR |= DMA_CCR1_CIRC;

.        Включаем ПДП. Для этого устанавливаем бит EN регистра CCR1 в «1».

_Channel1->CCR |= DMA_CCR1_EN;

 

.6 Таймер


2.6.1 Описание работы таймера

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

Базовый модуль состоит из счетного регистра (CNT), делителя с управляющим регистром PSC и регистра автоматической загрузки ARR. Эти регистры доступны из программы. Но, помимо их, базовый модуль содержит дополнительные регистры, которые недоступны программно. Функциональная схема работы таймера представлена на рисунке 35.

Рисунок 35 - Функциональная схема работы таймера

-разрядный счетный регистр CNT - это основа таймера. Он может считать вверх (сложение) и вниз (вычитание). Направление счета задается разрядом DIR управляющего регистра CR1. Значение счетного регистра можно программно прочитать или изменить в любой момент времени.

Счетный регистр 16-разрядный, поэтому максимальное значение до которого (а также с которого) он может считать равно 65535. Но это значение можно изменять в меньшую сторону. Для этого предназначен регистр ARR, благодаря которому счетный регистр является счетчиком с переменным коэффициентом деления.

Тактирование счетного регистра

Таймер может тактироваться от разных источников. На выходе схемы выбора источника тактирования получаем сигнал CK_PSC, который и является тактовым сигналом таймера, но он подается на счетный регистр не напрямую, а через предварительный делитель с переменным коэффициентом деления (1…65536). Сигнал, подаваемый непосредственно на вход счетного регистра, называется CK_CNT.

Коэффициент деления предварительного делителя задается управляющим регистром PSC.

Управление подачей тактовых импульсов на вход предварительного делителя (а также включение/выключение таймера) осуществляется с помощью разряда CEN регистра CR1.

Переполнение счетного регистра и событие обновления UEV

Перед началом счета в регистр CNT загружается его начальное значение. При счете вверх это значение равно нулю, а при счете вниз - содержимому регистра ARR. От каждого тактового импульса содержимое CNT увеличивается на 1 (при счете вниз уменьшается на 1), пока не достигнет своего максимального значения, которое определяется содержимым регистра ARR (при счете вниз - пока не достигнет своего минимального значения, т.е. нуля).

С приходом следующего тактового импульса произойдет сброс счетного регистра в ноль (при счете вниз в него автоматически будет записано значение регистра ARR). Этот переход и называется переполнением счетного регистра, в результате которого может формироваться событие обновления счетного регистра (UEV).

Имеется возможность запретить формирование этого сигнала. Делается это с помощью разряда UDIS регистра CR1: если он равен нулю - генерирование события обновления разрешено, единице - запрещено.

Помимо формирования сигнала обновления счетным регистром, его можно формировать программно (имитация переполнения счетного регистра). Для этого предназначен разряд UG регистра EGR. После записи в него единицы, произойдет перезагрузка счетного регистра и формирование сигнала обновления (если он разрешен разрядом UDIS).

Событие обновление используется для:

·        генерирования запроса прерывания от таймера;

·        генерирования запроса DMA от таймера;

·        запись нового значения регистров ARR и PSC;

·        управления другим таймером

Приведенная на рисунке 36 диаграмма иллюстрирует формирования события обновления по переполнению счетного регистра, который работает в режиме счета вверх. В регистре ARR содержится 0Ч36.

Рисунок 36 - Диаграмма формирования события по переполнению счетного регистра

Обновление регистров ARR и PSC.

Запись нового значения в эти регистры имеет некоторые особенности, о которых необходимо помнить.

Если записать новое значение в регистр PSC, то реально делитель будет его использовать только после очередного события обновления UEV. Приведенная на рисунке 37 диаграмма иллюстрирует это.

 <#"564163.files/image033.gif"> <#"564163.files/image034.gif"> <#"564163.files/image035.gif">

Рисунок 40 - Структура регистра CR1

·              CKD[1:0] - Битовое поле определяющее соотношение между частотой тактирования и тактовыми импульсами;

·              ARPE - Автоматическая перезагрузка регистра ARR;

·              CMS[1:0] - Указатель режимов счета таймера;

·              DIR - Указатель направления счета таймера;

·              OPM -Режим одного импульса;

·              URS - Флаг указывающий на источник UEV;

·              UDIS - Флаг UEV события;

·              CEN - Бит запуска счета;

Регистр DIER

Структура регистра DIER представлена на рисунке 41.

Рисунок 41 - Структура регистра DIER

Данный регистр разрешает\запрещает прерывания и ПДП запросы от разных источников.

Регистр CNT

Структура регистра CNT представлена на рисунке 42.

Рисунок 42 - Структура регистра CNT

Данный регистр содержит текущее значение счетчика.

Регистр PSC

Структура регистра PSC представлена на рисунке 43.

Рисунок 43 - Структура регистра PSC

Данный регистр содержит значение предделителя таймера

Регистр ARR

Структура регистра ARR представлена на рисунке 44.

Рисунок 44 - Структура регистра ARR

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

2.6.3 Настройка таймера

Сконфигурируем таймер в соответствии с поставленной задачей:

.        Подаем тактирование на таймер. Для этого устанавливаем бит TIM1EN регистра APB1ENR в «1».

>APB1ENR |= RCC_APB1ENR_TIM1EN;

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

TIM1->ARR = 1;

.        Задаем значение предделителя. Нужно обеспечить частоту опроса АЦП 10 кГц. По умолчанию таймер тактируется от внутреннего генератора, для нашего процессора частота равняется 120 МГц. Чтобы обеспечить заданную частоту нужно записать значение 12000, однако из-за того что отсчет начинается с нуля, а не с единицы, запишем 12000-1.

->PSC = 12000-1;

.        Запускаем ШИМ генератор. Для этого устанавливаем биты OC1M_1, OC1M_2 регистра CCMR1 и бит OIS1 регистра CR2 в «1».

->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2;->CR2 |= TIM_CR2_OIS1;

.        Разрешим прерывание по обновлению счетчика. Для этого устанавливаем бит UIE регистра DIER в «1».

->DIER |= TIM_DIER_UIE;

.        Запускаем счет таймера. Для этого устанавливаем бит CEN регистра CR1 в «1».

->CR1 |= TIM_CR1_CEN;

2.6.4 Обработчик прерываний таймера

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

Реализация в программном коде:

.        Сбрасываем флаг прерывания. Для этого устанавливаем бит UIF регистра SR в «0».

->SR &= ~TIM_SR_UIF;

.        Запускаем преобразование каналов регулярной группы. Для этого устанавливаем бит SWSTART регистра CR2 в «1».

->CR2 |= ADC_CR2_SWSTART;

2.7 UDP стек


2.7.1Настройка UDP стека

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

Реализация в программном коде:

.        Инициализируем Ethernet. Для этого используем библиотечную функцию.

_BSP_Config();

.        Инициализируем TCP стек. Для этого используем библиотечную функцию.

_Init();

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

(ETH_CheckFrameReceived())

{ _Pkt_Handle();

}_Periodic_Handle(LocalTime);

2.8 Основное тело программы


В основном теле программы инициализируем все периферийные устройства, глобально разрешаем прерывания, инициализируем стек, объявляем буфер данных, разрешаем прерывания от таймера и АЦП, выставляем приоритеты прерываний и запускаем функции ответа на ARP и ICMP запросы. Полный текст программы представлен в приложении А.

Реализация в программном коде:main(void)

{char BuffTxd[1280]_init();_init();_init();_BSP_Config();_Init();_irq();_EnableIRQ(TIM1_IRQn);_SetPriority(TIM1_IRQn, 1);_EnableIRQ(ADC1_IRQn);(1)

{(ETH_CheckFrameReceived())

{_Pkt_Handle();

}_Periodic_Handle(LocalTime);

}

}

2.9 Краткая инструкция по применению и настройке


Настройка производится путем изменения соответствующих значений в файле заголовков main.h.

Для настройки IP адреса устройства используются строки #define IP_ADDR0; #define IP_ADDR1; #define IP_ADDR2; #define IP_ADDR3. Соответственно первый октет IP адреса задается строкой define IP_ADDR0 «значение», второй октет строкой #define IP_ADDR1 «значение» и так далее.

Например для задания IP адреса 192.168.0.10 должна быть запись вида:

#define IP_ADDR0 192

#define IP_ADDR1 168

#define IP_ADDR2 0

#define IP_ADDR3 10

Аналогичным образом задаются и остальные параметры.

Маска подсети:

#define NETMASK_ADDR0 «значение»

#define NETMASK_ADDR1 «значение»

#define NETMASK_ADDR2 «значение»

#define NETMASK_ADDR3 «значение»

Основной шлюз:

#define GW_ADDR0 «значение»

#define GW_ADDR1 «значение»

#define GW_ADDR2 «значение»

#define GW_ADDR3 «значение»

адрес устройства:

#define MAC_ADDR0 «значение»

#define MAC_ADDR1 «значение»

#define MAC_ADDR2 «значение»

#define MAC_ADDR3 «значение»

#define MAC_ADDR4 «значение»

#define MAC_ADDR5 «значение»

адрес назначения (куда отправлять пакеты):

#define DEST_IP_ADDR0 «значение»

#define DEST_IP_ADDR1 «значение»

#define DEST_IP_ADDR2 «значение»

#define DEST_IP_ADDR3 «значение»

порт назначения (на какой порт отправлять пакеты):

#define UDP_SERVER_PORT «значение»

ГЛАВА 3. БЕЗОПАСНОСТЬ И ЭКОЛОГИЧНОСТЬ


3.1 Требования к помещениям при работе за компьютером


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

Площадь на одно рабочее место <#"564163.files/image040.gif">,

где:  - общие материальные ресурсы;

 - затраты на закупаемое оборудование и материалы;

 - коэффициент транспортно-заготовительных расходов, принимается в пределах 15% от стоимости материалов;

4.2 Расчет трудозатрат


Определим этапы и исполнителей в процессе внедрения системы. Сведем данные в таблицу 3.

Таблица 3 - Трудозатраты

Наименование этапов

Исполнители

Трудоёмкость, чел/дни

1

Постановка задачи

руководитель

1

2

Разработка схемы прокладки кабеля

инженер

2

3

Прокладка кабеля и монтаж Сетевого оборудования

рабочий

4

4

Написание программы

инженер

3

5

Консультации по специальной части

руководитель

2

6

Консультации по БЖД

консультант

1

7

Консультации по экономике

консультант

1

8

Проведение нормоконтроля

консультант

1

9

Сдача работы

руководитель

1


Итого


16


4.3 Расчёт заработной платы


Определяем оклады руководителю, консультанту, рабочему и инженеру. Считая, что в месяце 22 рабочих дня, определяем дневной заработок, а также трудоёмкость. Месячный оклад руководителя составляет 12000 руб., консультанта-4500руб., рабочего-6000 руб., инженера-8500 руб. Сведем результаты расчетов в таблицу 4.

Таблица 4 - Расчет заработной платы

Исполнители

Дневной заработок, руб.

Участие, дни

Заработная плата, руб.

Руководитель

545,45

4

2181,8

Инженер

386,36

5

1931,8

Рабочий

272,72

4

1090,88

Консультант по экономике

204,55

1

204,55

Консультант по БЖД

204,55

1

204,55

Консультант по нормоконтролю

204,55

1

204,55

Итого


16

5818,13


4.4 Смета затрат


Фонд оплаты труда (ФОТ) определяется суммой основной заработной платы (ОЗП) и дополнительной заработной платы (ДЗП). ДЗП составляет 30% от ОЗП:


Отчисления в фонд социального страхования (ФСС) определяется в размере 35,6% от фонда оплаты труда:

.

Затраты на электроэнергию определяются по формуле


где  - коэффициент использования мощности, ;

 - мощность всех приборов;

 - фонд времени работы прибора;

 - стоимость киловатт-часа электроэнергии, .

Результаты расчета затрат на электроэнергию сведены в таблицу 5.

Таблица 5 - Затраты на электроэнергию

Оборудование

Потребляемая мощность, кВт

Фонд времени, час

Расход, кВт час

Затраты, руб.

НДС, руб.

Сумма без НДС, руб.

Программатор

0,05

4

0,2

0,19

0,038

0,152

Итого




0,19

0,038

0,152


4.5 Амортизация


В процессе установки программного обеспечения был использован программатор TE-ARM-LINK

На проведение экспериментальных работ выделен 1 день или 0,0027 года. Результаты работы сведены в таблицу 6. Норма амортизации составляет 15%.

Таблица 6 - Амортизационные отчисления

Наименование оборудования

Цена за единицу, руб.Время использования, годНорма амортизации, %Год. сумма амортизации, руб.Амортизационные отчисления, руб.





Программатор TE-ARM-LINK

2632.83

0,0027

15

394,92

1,06

Итого




394,92

1,06


Время дипломного проектирования 3 месяца, что составляет 0,25 лет. Затраты на специальное оборудование составляют:

,

где  - затраты на специальное оборудование;

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

 - время использования по теме;

 - длительность работы над дипломом.

Общая сумма всех затрат:

.

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

 .

Полученные результаты расчёта основных технико-экономических показателей модернизации сведены в таблицу 7.

Таблица 7 - Основные показатели

Статьи затрат

Сумма, руб.

1

Основная заработная плата

5818,13

2

Дополнительная заработная плата

1745,44

3

Фонд оплаты труда

7563,57

4

Отчисления в фонд социального страхования

2692,63

5

Амортизационные отчисления

1,06

6

Затраты на электроэнергию

0,152

7

Затраты на материальные ресурсы

15399,92

Полная себестоимость

22936,91

Лимитная цена

32111,67

Цена разработки

38534,00


4.6 Расчёт цены реализации разработки


Определим лимитную цену разработки по формуле:

где  - прибыль предприятия определяется рентабельностью изделия и принимается равной 40% от себестоимости.

Цена реализации разработки:


где - налог на добавленную стоимость,  составляет 20% от лимитной цены разработки.

ЗАКЛЮЧЕНИЕ


В данном дипломном проекте была разработана универсальная микропроцессорная система сбора сигналов со следующими характеристиками: 8 каналов, частота опроса 10 кГц, Ethernet интерфейс, микроконтроллер STM32F207.

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

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

Разработано программное обеспечение для модуля TE-STM32F207 позволяющее применять данную плату для любой системы детектирования шлака, описанной в данной работе.

Рассмотрены нормы безопасности необходимые к соблюдению при проектировании и реализации данного проекта.

Произведен анализ технико-экономических показателей и обоснование экономической целесообразности принятых в проекте решений

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


1. Машины и агрегаты металлургических заводов. / В 3-х томах.Т.2 Машины и агрегаты сталеплавильных цехов. Учебник для вузов/Целиков А.И., Полухин П.И., Гребеник В.М. и др. 2-е изд.,перераб. и доп.- М.:Металлургия, - 1988 - 432 с. - С.- 73 - 87.

2.       Technoap.ru - сайт НПО «ТехноАп».

.        Анализ эффективности раннего обнаружения шлака при сливе металла из одних металлургических емкостей в другие. Отчет НПО "ТехноАп" по материалам зарубежной прессы и результатам испытания на ММК.

.        Разработка и промышленная эксплуатация на ОАО "ММК" системы раннего обнаружения шлака "ДШ-К" фирмы ЗАО "ТЕХНОАП". Тахаутдинов Р.С., Носов А.Д., Бодяев Ю.А., Бузинник В.М.. (ОАО "Магнитогорский металлургический комбинат"), Сорокин А.Н., Формакидов А.М.(ЗАО "Техноап").

.        Cortex-M3 Technical reference manual, ARM Ltd.

.        ARMv7-M architectural reference manual, ARM Ltd.

.        ARM Architectural reference manual Thumb2 supplement, ARM Ltd.

.        STM32F207xx User Manual, ST Microelectronics.

.        STM32F20xxx FLASH Programming manual, ST Microelectronics.

ПРИЛОЖЕНИЕ А

(обязательное)

#include "stm32f2x7_eth.h"

#include "stm32f2xx_it.h"

#include "netconf.h"

#include "main.h"

AdcInit(void)

{

RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;

GPIOA->CRL &= ~GPIO_CRL_MODE0;

GPIOA->CRL &= ~GPIO_CRL_MODE1;

GPIOA->CRL &= ~GPIO_CRL_MODE2;

GPIOA->CRL &= ~GPIO_CRL_MODE3;

GPIOA->CRL &= ~GPIO_CRL_MODE4;

GPIOA->CRL &= ~GPIO_CRL_MODE5;

GPIOA->CRL &= ~GPIO_CRL_MODE6;

GPIOA->CRL &= ~GPIO_CRL_MODE7;

GPIOA->CRL &= ~GPIO_CRL_CNF0;

GPIOA->CRL &= ~GPIO_CRL_CNF1;

GPIOA->CRL &= ~GPIO_CRL_CNF2;

GPIOA->CRL &= ~GPIO_CRL_CNF3;

GPIOA->CRL &= ~GPIO_CRL_CNF4;

GPIOA->CRL &= ~GPIO_CRL_CNF5;

GPIOA->CRL &= ~GPIO_CRL_CNF6;

GPIOA->CRL &= ~GPIO_CRL_CNF7;

RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;

ADC1->CR2 |= ADC_CR2_DMA;

ADC1->CR1 |= ADC_CR1_EOCIE;

ADC1->CR2 |= ADC_CR2_CAL;

while (!(ADC1->CR2 & ADC_CR2_CAL)){};

ADC1->CR2 |= ADC_CR2_EXTSEL;

ADC1->CR2 |= ADC_CR2_EXTTRIG;

ADC1->SMPR1 |= ADC_SMPR1_SMP0;

ADC1->SMPR1 |= ADC_SMPR1_SMP1;

ADC1->SMPR1 |= ADC_SMPR1_SMP2;

ADC1->SMPR1 |= ADC_SMPR1_SMP3;

ADC1->SMPR1 |= ADC_SMPR1_SMP4;

ADC1->SMPR1 |= ADC_SMPR1_SMP5;

ADC1->SMPR1 |= ADC_SMPR1_SMP6;

ADC1->SMPR1 |= ADC_SMPR1_SMP7;

ADC1->SQR3 |= ADC_SQR3_SQ2_0;

ADC1->SQR3 |= ADC_SQR3_SQ3_1;

ADC1->SQR3 |= ADC_SQR3_SQ4_0;

ADC1->SQR3 |= ADC_SQR3_SQ4_1;

ADC1->SQR3 |= ADC_SQR3_SQ5_2;

ADC1->SQR3 |= ADC_SQR3_SQ6_0;

ADC1->SQR3 |= ADC_SQR3_SQ6_2;

ADC1->SQR3 |= ADC_SQR3_SQ7_1;

ADC1->SQR3 |= ADC_SQR3_SQ7_2;

ADC1->SQR3 |= ADC_SQR3_SQ8_0;

ADC1->SQR3 |= ADC_SQR3_SQ8_1;

ADC1->SQR3 |= ADC_SQR3_SQ8_2;

ADC1->SQR1 |= ADC_SQR1_L_3;

ADC1->CR2 |= ADC_CR2_ADON;

}

TIM_init(void)

{

RCC->APB1ENR |= RCC_APB1ENR_TIM1EN;

TIM1->ARR = 1;

TIM1->PSC = 12000-1;

TIM1->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2;

TIM1->CR2 |= TIM_CR2_OIS1;

TIM1->CR1 |= TIM_CR1_CEN;

TIM1->DIER |= TIM_DIER_UIE;

}

TIM2_IRQHandler (void)

{

TIM1->SR &= ~TIM_SR_UIF;

ADC1->CR2 |= ADC_CR2_SWSTART;

}

DMA_init (void)

{

RCC->AHBENR |= RCC_AHBENR_DMA1EN;

DMA1_Channel1->CPAR = (uint32_t) &ADC1->DR;

DMA1_Channel1->CMAR = (uint32_t) &BuffRxd[0];

DMA1_Channel1->CNDTR = 1;

DMA1_Channel1->CCR &= ~DMA_CCR4_DIR;

DMA1_Channel1->CCR |= DMA_CCR4_PSIZE_0;

DMA1_Channel1->CCR = ~DMA_CCR4_PINC;

DMA1_Channel4->CCR |= DMA_CCR4_MSIZE_0;

DMA1_Channel4->CCR |= DMA_CCR4_MINC;

DMA1_Channel1->CCR |= DMA_CCR1_CIRC;

DMA1_Channel1->CCR |= DMA_CCR1_EN;

}

ADC1_2_IRQHandler (void)

{

schetchik = schetchik + 1

if (schetchik = 80)

{

schetchik = 0

struct udp_pcb *upcb;

struct pbuf *p;

struct ip_addr DestIPaddr;

unsigned char tdata[1280] = BuffTxd[1280];

char *data = tdata;

upcb = udp_new();

IP4_ADDR( &DestIPaddr, DEST_IP_ADDR0, DEST_IP_ADDR1, DEST_IP_ADDR2, DEST_IP_ADDR3 );

udp_connect(upcb, &DestIPaddr, UDP_SERVER_PORT);

p = pbuf_alloc(PBUF_TRANSPORT,strlen((char*)data), PBUF_POOL);

pbuf_take(p, (char*)data, strlen((char*)data));

udp_send(upcb, p);

udp_disconnect(upcb);

pbuf_free(p);

}

}

main(void)

{

char BuffTxd[1280]_init();_init();_init();_BSP_Config();_Init();

__enable_irq();_EnableIRQ(TIM1_IRQn);_SetPriority(TIM1_IRQn, 1);_EnableIRQ(ADC1_IRQn)

(1)

{

if (ETH_CheckFrameReceived())

{

LwIP_Pkt_Handle();

}

LwIP_Periodic_Handle(LocalTime);

}

}

Похожие работы на - Разработка универсальной микропроцессорной системы сбора сигналов с заданными параметрами

 

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