Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых» В. С. ТУЛЯКОВ МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ Лабораторный практикум Владимир 2018 УДК 004.31 ББК 32.971.32-04 Т82 Рецензенты: Генеральный директор ООО «Автоматика и системы связи» И. С. Лапкин Доктор технических наук, профессор зав. кафедрой информационных систем и программной инженерии Владимирского государственного университета имени Александра Григорьевича и Николая Григорьевича Столетовых И. Е. Жигалов Издается по решению редакционно-издательского совета ВлГУ Туляков, В. С. Микропроцессорные системы : лаб. практикум / В. С. ТуТ82 ляков ; Владим. гос. ун-т им. А. Г. и Н. Г. Столетовых. ‒ Владимир : Изд-во ВлГУ, 2018. ‒ 72 с. ‒ ISBN 978-5-9984-0865-6. Способствует формированию у студентов базовых навыков проектирования устройств на основе микропроцессоров. Содержит восемь лабораторных работ, выполняемых на макете на базе микропроцессорных комплектов STM32, EVK1100, QT600 и с использованием нейрокомпьютерной гарнитуры NeuroSky MindWave. Предназначен для студентов вузов 4-го курса направления подготовки бакалавров 09.03.01 – Информатика и вычислительная техника. Также может быть полезен студентам других направлений подготовки, изучающим принципы создания цифровых электронных устройств на базе микроконтроллеров. Рекомендовано для формирования профессиональных компетенций в соответствии с ФГОС ВО. Табл. 1. Ил. 53. Библиогр.: 10 назв. УДК 004.31 ББК 32.971.32-04 ISBN 978-5-9984-0865-6 © ВлГУ, 2018 2 ВВЕДЕНИЕ Лабораторный практикум содержит восемь лабораторных работ и разделен на четыре раздела. Первый раздел посвящен программированию микроконтроллера STM32 в среде Relcon. Вариативность задач связана с программной ориентацией микроконтроллера на выполнение функций конкретных цифровых приборов – измерительных и управляющих. Лабораторные работы проводятся на базе макета, разработанного кафедрой вычислительной техники и систем управления ВлГУ. Каждый вариант задания состоит из трех пунктов и выполняется студентом в течение трех четырехчасовых занятий, т. е. каждый вариант задания ‒ это три связанные между собой лабораторные работы. Второй раздел посвящен изучению принципа работы сенсорной панели микропроцессорной системы на основе микроконтроллерного комплекта QT600 фирмы Atmel. Комплект включает в себя аппаратную платформу и программное обеспечение, которое позволяет исследовать работу сенсорной панели. Раздел рассчитан на одну четырехчасовую лабораторную работу. Третий раздел посвящен изучению принципа работы нейрокомпьютерной гарнитуры NeuroSky MindWave и ее возможностей при создании микропроцессорных систем, управляемых непосредственно мозгом человека. Раздел рассчитан на одну четырехчасовую лабораторную работу с двумя вариантами задания. Четвертый раздел посвящен изучению возможностей микроконтроллерного набора EVK1100 фирмы Atmel, в том числе изучению среды программирования AVR Studio и разработке программ, обеспечивающих работу с разрядами порта как дискретными, так и аналоговыми, с знакосинтезирующим индикатором. Предлагается три четырехчасовые лабораторные работы. Лабораторные работы первого и четвертого разделов не могут быть выполнены без предварительной самостоятельной подготовки студентов, так как требуют времени для изучения сред программирования, которые являются надстройками языка С++, а также предназначены исключительно для формализации алгоритмов управления. Базовые знания студенты получают в рамках курсов «Программирование» и «Электроника и схемотехника». 3 Раздел 1 Лабораторные работы № 1 ‒ 3 ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРА STM32 Цель работы: изучение среды программирования микроконтроллера STM32, разработка программ в среде Relcon, программирование микроконтроллера макета и проверка результатов работы. Задания по вариантам связаны с созданием измерительных и регулирующих приборов на базе микроконтроллера. Теоретическая часть Для выполнения работы используется компьютер с установленной программной средой Relcon (разработана фирмой «Контэл» и предлагается пользователю бесплатно через ресурс www.kontel.ru); лабораторный макет программируемого логического контроллера (рис. 1.1); установленная на компьютере программа управления USBпрограмматором для связи компьютера с лабораторным макетом. Конфигурируется система автоматически. Рис. 1.1. Макет программируемого логического контроллера 4 Описание программной среды Relcon представлено в электронном виде (на сайте www.kontel.ru) и изучается студентами самостоятельно. Данная среда содержит редактор, отладчик, компилятор, является надстройкой языка программирования Си и не требует длительного изучения и навыков профессиональных программистов, так как предназначена для специалистов, формализующих в виде программы алгоритмы управления микропроцессорными системами. Лабораторные работы заключаются в изучении студентом предлагаемого готового программного примера задачи и затем в разработке программы по индивидуальному варианту задания. Макет программируемого логического контроллера подключается к сети питания 220 В и через встроенный разъем USB к компьютеру пользователя. Он выполнен на базе микроконтроллера STM32. Макет имеет в своем составе встроенный знакосинтезирующий индикатор (четыре строки по двадцать символов); пульт кнопочного управления индикатором; восьмиканальный встроенный аналогоцифровой преобразователь (АЦП), по каждому входу которого можно изменять аналоговый сигнал с помощью потенциометра в диапазоне от 0 до 20 мА, моделируя подключение аналоговых датчиков промышленного стандарта; восемь дискретных входов, к которым подключены переключатели для моделирования цифрового кода или логической установки состояния определенного разряда порта микропроцессора. В макет встроен USB-программатор для программирования флеш-памяти микропроцессора. Среда программирования Relcon имеет дружественный интерфейс. Для пояснения выполнения работы ниже приведены примеры программ, выполненные в среде Relcon. Их можно активировать, откомпилировать и запрограммировать с их помощью макет. В преамбуле к каждой программе описан ее алгоритм. Первый пример демонстрирует работу с аналоговыми входами микроконтроллера и с десятиразрядным встроенным АЦП. Второй пример отражает работу с дискретными входами и выходами порта микроконтроллера. Третий пример показывает, как надо работать с дисплеем и клавиатурой. 5 Пример исходного текста программы, моделирующей использование аналоговых входов /* Аналоговые входы/выходы Значение ADC1 пересчитывается в ток. Если ток ниже 3 мА, выдаётся сообщение об обрыве канала. Если ток превышает 10 мА, формируется аварийное сообщение и на первый аналоговый выход подаётся ток 8 мА. Реакция на превышение максимального уровня не мгновенная, а с фильтрацией по времени для исключения влияния кратковременных скачков входного тока. */ #DATA // Присвоение переменных программы. unsigned short cnt; // вспомогательный счётчик unsigned short my_adc; // значение для вывода на пульт float v1; // значение ADC1, пересчитанное в мА #INIT #STARTp0; //-----Начало программы. #PROCESS 0 #SIT1(0.1) my_adc = ADC1; v1 = (float)ADC1*20/65536; if(v1<3) {st3=2;} // ток канала менее 3 мА - обрыв датчика else { if(v1>10) // ток канала более 10 мА { cnt++; if(cnt>=20) { DAC1 = 65535/20*8; cnt=0; st3=1; } } else 6 { DAC1=0; cnt=0; st3=0; } } #/R; /* Пример программы, моделирующей работу с дискретными входами и выходами Работа с дискретными входами/выходами Первые три дискретных входа формируют содержимое аварийной переменной. Наличие аварии приводит к срабатыванию первого дискретного выхода. */ #DATA // Присвоение переменных программы. unsigned char my_avar=0; // переменная для хранения состояния объекта #INIT #STARTp0; //-----Начало программы. #PROCESS 0 #SIT1(0.1) if(#IN0.0) {my_avar |= 1;}else {my_avar &= ~1;} if(#IN0.1) {my_avar |= 2;}else {my_avar &= ~2;} if(#IN0.2) {my_avar |= 4;}else {my_avar &= ~4;} if(my_avar) #OUT0.0=1;else #OUT0.0=0; #/R; /* Пример программы, моделирующей работу с индикатором макета программируемого логического контроллера РАБОТА С ПУЛЬТОМ Номер первой строки (st1) меняется от 0 до 3 с интервалом в 1 секунду. Во второй строке отображается текущее состояние кнопок. 7 В третьей строке выводятся 2 переменные, доступные для редактирования. Значение первой инкрементируется, а второй ‒ декрементируется 100 раз в секунду. Нажатие F1 или F2 приводит к их обнулению. Четвёртая строка прокручивается вперёд/назад кнопками "вправо/влево". Эта функция встроена в ОС контроллера и не требует дополнительного программного кода. */ #DATA // Присвоение переменных программы. unsigned char my_key; // переменная для хранения кода нажатой кнопки unsigned char cnt; // вспомогательный счётчик short v1,v2; #INIT #STARTp0;#STARTp1; //-----Начало программы. #PROCESS 0 #SIT1(0.1) st1 = cnt++; if(cnt>=4) cnt=0; #/1.0/R; #PROCESS 1 #SIT1(0.01) my_key=key; v1++; v2--; if((key_1)||(my_key & 0x80)) {v1=0;v2=0;} #/R; Порядок выполнения работы 1. Изучить руководство по использованию среды программирования Relcon. При работе студента на собственном компьютере получить у преподавателя комплект электронной документации и установить на компьютер среду программирования, драйвер программатора, листинги программ примеров, руководство по использованию среды программирования. 2. Выбрать вариант задания согласно порядковому номеру фамилии студента в журнале. Изучить задание. 8 3. Активировать среду программирования. 4. В среде программирования открыть меню «Новый проект» и приступить к разработке программы. 5. Разработанная программа компилируется. При отсутствии ошибок может быть активирована процедура программирования макета. Предварительно подключить к используемому компьютеру через USB-порт лабораторный макет. Необходимо выполнять следующее правило: подключение макета к сети питания производится после подключения разъема программирования к компьютеру. 6. На запрограммированном макете проверить правильность выполненного варианта задания. Продемонстрировать работу программы преподавателю. 7. Отчет о выполненной работе должен содержать задание и листинг программы. Варианты заданий Вариант 1 Пункт 1. Работа с дискретными входами и выходами При включении дискретного входа 1 на индикаторе появляется сообщение «РЕЖИМ 1» и дискретные выходы с первого по восьмой поочередно меняют свое состояние, имитируя на светодиодах «бегущую строку». При включении дискретного входа 2 на индикаторе появляется сообщение «РЕЖИМ 2». При этом в два раза уменьшается частота смены состояний «бегущей строки». При включении дискретного входа 3 появляется сообщение «РЕЖИМ 3», фиксируется состояние дискретных выходов и останавливается режим «бегущей строки». Пункт 2. Работа с аналоговыми входами и дискретными выходами К аналоговому входу 1 подключен датчик давления с диапазоном измерения 0 ‒ 6 бар. При включении дискретного входа 1 на индикаторе появляется сообщение «КЛАПАН ОТКРЫТ». При включении дискретного входа 2 на индикаторе к первому сообщению добавляется сообщение «ПРОДУВКА», и моделируется включение венти9 лятора путем активации дискретного выхода 8. После активации дискретных входов 1 и 2 измеряется давление, которое может находиться в следующих диапазонах: ‒ давление 3 ‒ 4 бар – на индикаторе появляется сообщение «Р НОРМА»; ‒ давление меньше 4 бар – на индикаторе появляется сообщение «ВКЛ. НАСОС 1», и запуск насоса моделируется включением дискретного выхода 7; ‒ давление больше 5 бар – на индикаторе появляется сообщение «АВАРИЯ», и моделируется включение звуковой сирены путем активации дискретного выхода 6. Если датчик выдает токовое значение меньше 3 мА, это указывает на неисправность датчика или обрыв цепи датчика. Пункт 3. Работа с кнопками управления индикатора Ввести в дополнение к п. 2 режим изменения уставок датчика давления, например чтобы сообщение «Р НОРМА» на дисплее появлялось при диапазоне давления от 3,5 до 5,5 бар. При этом значения срабатывания других диапазонов давления также можно изменить. Вариант 2 Пункт 1. Работа с дискретными входами и выходами Смоделировать работу таймера внешнего события с коэффициентом счета 60. Счетный вход ‒ дискретный вход 1. Индицировать состояние таймера сообщением «ТАЙМЕР – ХХ», где ХХ – текущее значение таймера. Принудительно обнулить таймер по дискретному входу 2. Блокировать состояние счетчика по дискретному входу 3. При достижении значений 10, 20, 30, 40, 50, 60 выводить на дисплей сообщение «УПАКОВАНО». Пункт 2. Работа с аналоговыми входами и дискретными выходами Моделировать управление шаговым приводом дисковой гидравлической задвижки. Задвижка имеет датчик положения с диапазоном измерения 0 ‒ 90º по аналоговому входу 1. Ею управляет датчик тем10 пературы с диапазоном измерения 0 ‒ 100 ºС. Датчик температуры подключен к аналоговому входу 2. Зависимость положения задвижки от значения температуры следующая. При значении сигнала по аналоговому входу 1 или аналоговому входу 2 меньше 3 мА на индикаторе появляется сообщение «ОБРЫВ ПО ВХОДУ 1» и «ОБРЫВ ПО ВХОДУ 2». При температуре 20 ‒ 40 ºС задвижка должна быть открыта на угол 20º. При положении задвижки 0 или 90º, что соответствует срабатыванию концевых выключателей, данную ситуацию показывать включением светодиодов, подключенных к дискретным выходам 1 и 2. Соответствие диапазона температуры и степени открытия задвижки отражается в сообщениях «Т = ХХ С» и «ЗАДВИЖКА ХХ УГЛОВЫХ ГРАДУСОВ». Несоответствие диапазонов индицируется сообщением «РЕГУЛИРОВАНИЕ». Аналогично задаются ситуации диапазона температуры 41 ‒ 60 ºС и положения задвижки 50º. При температуре 61 ‒ 90 ºС и положении задвижки 90º выводить сообщение «АВАРИЯ». Пункт 3. Работа с кнопками управления индикатора Написать программу изменения уставок задания для п. 2, например чтобы диапазону температуры 10 – 30 ºС соответствовало положение задвижки 10º. Вариант 3 Пункт 1. Работа с дискретными входами и выходами Включение дискретного входа с определенным номером должно инициировать включение соответствующего дискретного выхода. При этом на индикаторе должно появляться сообщение, поясняющее выполненное действие, например «ОБЪЕКТ 1», «ОБЪЕКТ 1, 2». При активации семи объектов вывести сообщение «КАССЕТА ПУСТА» Пункт 2. Работа с аналоговыми входами и дискретными выходами Моделировать работу двухканального измерителя. К первому каналу подключен датчик температуры с диапазоном измерения 0 ‒ 500 ºС. Ко второму каналу подключен датчик давления с диапазоном 11 измерения 0 ‒ 4 бар. При значении входного тока на датчиках меньше 3 мА на индикатор вывести сообщение «ДАТЧИК НЕИСПРАВЕН». На индикатор постоянно выводить текущее состояние температуры и давления. При температуре 40 ºС активировать дискретный выход 1 и вывести на индикатор сообщение «ВКЛ. НАГРЕВ». При температуре 200 ‒ 350 ºС вывести сообщение «РАБОТА». При температуре больше 350 ºС вывести сообщение «ВНИМАНИЕ». При температуре 400 ºС вывести сообщение «ВКЛ. ОХЛАЖДЕНИЕ». При температуре больше 450 ºС вывести сообщение «АВАРИЯ». Пункт 3. Работа с кнопками управления индикатора К п. 2 добавить функцию изменения уставок задания диапазонов температуры и сообщений на дисплее, используя кнопки управления индикатора. Вариант 4 Пункт 1. Работа с дискретными входами и выходами При активации дискретного входа 1 на индикатор выводить сообщение «ЗАПУСК СИСТЕМЫ». При активации дискретного входа 3 на индикатор выводить сообщение «ВВЕДИТЕ КОД», при этом с пульта индикатора необходимо ввести четырехразрядный код. Если код правильный, то возможна активация входа 2. При активации дискретного входа 2 выводить на дисплей сообщение «ОБРАТНЫЙ ОТСЧЕТ ХХ», где ХХ ‒ реальное состояние таймера отсчета в секундах (всего 60 с). Пункт 2. Работа с аналоговыми входами и дискретными выходами Моделировать включение теплогенератора по показаниям датчика температуры в помещении. К аналоговому входу 1 подключен датчик температуры с диапазоном измерения от 0 до 50 ºС. К дискретному выходу 1 подключено реле включения теплогенератора. При температуре 10 ‒ 15 ºС активировать дискретный выход 1. При температуре 20 ‒ 22 ºС деактивировать дискретный выход 2. При температуре больше 25 ºС активировать звуковую и световую сигна12 лизацию включением дискретного выхода 3. На индикаторе показывать текущее значение температуры и состояние теплогенератора («ВКЛЮЧЕН» или «ВЫКЛЮЧЕН»), а также аварийной сигнализации («АВАРИЯ»). Пункт 3. Работа с кнопками управления индикатора К п. 2 добавить функцию изменения уставок задания температуры с помощью кнопок управления индикатора. Вариант 5 Пункт 1. Работа с дискретными входами и выходами При включении дискретного входа или комбинации входов на индикаторе показывать сообщение о номерах включенных дискретных входов. При четном количестве включенных дискретных входов активировать дискретный выход 8. При нечетном количестве активированных дискретных входов включить дискретный выход 1. Пункт 2. Работа с аналоговыми входами и дискретными выходами Моделировать работу восьмиканального измерителя температуры. Снятие показаний датчика температуры с определенным номером задается с помощью активации дискретных входов. Например, при активации дискретного входа 1 на индикатор выводится сообщение «ДАТЧИК ТЕМПЕРАТУРЫ № 1 – ХХХ», где ХХХ – значение температуры. Датчики температуры имеют диапазон измерения от ‒50 до +50 ºС. Кроме численного значения температуры на индикатор необходимо выводить дополнительные сообщения. При диапазоне от ‒50 до 0 ºС ‒ «ЗИМА», при диапазоне от 0 до +40 ºС – «ЛЕТО», при температуре больше 45 ºС ‒ «ПЕРЕГРЕВ». Если на аналоговых входах ток меньше 3 мА, то выводить сообщение «ЗАМЕНА ДАТЧИКА». Пункт 3. Работа с кнопками управления индикатора К п. 2 добавить функцию изменения уставок диапазонов температуры и выводить сообщения на индикатор. Данная функция должна быть реализована с использованием кнопок управления индикатора. 13 Вариант 6 Пункт 1. Работа с аналоговыми входами и дискретными выходами Моделировать систему управления, которая по показаниям датчика температуры (от 0 до +50 ºС) и датчика давления (от 0 до 4 бар) включает и выключает исполнительные устройства, подключенные к дискретным выходам. На индикаторе показывать текущее значение температуры и давления. При значении входного тока меньше 3 мА выводить сообщение «ОБРЫВ Т» или «ОБРЫВ Р». При давлении до 3 бар показывать сообщение «НОРМА», при этом активировать дискретные выходы 1, 2, 3, 4. При давлении от 3 до 4 бар выводить сообщение «АВАРИЯ», деактивировать дискретные выходы 1, 2, 3, 4 и включить дискретный выход 8. При температуре до 40 ºС выводить сообщение «Т НОРМА». При температуре больше 40 ºС выводить сообщение «ПЕРЕГРЕВ» и активировать дискретный выход 7. Пункт 2. Работа с дискретными входами и выходами К п. 1 добавить функции блокировки работы канала измерения давления путем активации дискретного входа 1 и блокировки работы канала измерения температуры путем активации дискретного входа 2. При активации дискретного входа 3 на индикатор вывести сообщение «ВВЕДИТЕ КОД». Пункт 3. Работа с кнопками управления индикатора К п. 1 добавить функцию изменения уставок диапазонов температуры и давления и функцию вывода сообщений на индикатор. Например, сообщение «АВАРИЯ» выводить, если значение давления находится в диапазоне от 3,5 до 4 бар. Изменять уставки задания кнопками индикатора. Вариант 7 Пункт 1. Работа с дискретными входами и выходами При включении дискретных входов 1, 2, 4 активировать все дискретные выходы. При включении дискретного выхода 6 активировать 14 все дискретные выходы по принципу «бегущей строки». При активации дискретного входа 7 все действия по другим входам запретить. На индикатор выводить номера активированных дискретных входов. Пункт 2. Работа с аналоговыми входами и дискретными выходами К аналоговым входам подключены три датчика: датчик давления с диапазоном измерения от 0 до 4 бар, датчик температуры с диапазоном измерения от 0 до 100 ºС, датчик направления с диапазоном измерения от 0 до 180º. Показывать на индикаторе значения сигналов датчиков и дополнительную информацию. По датчику давления при значении до 3 бар показывать на индикаторе сообщение «НОРМА». При давлении больше 3 бар показывать сообщение «АВАРИЯ». При температуре от 10 до 50 ºС показывать сообщение «НОРМА»; при температуре от 51 до 70 ºС показывать сообщение «ВКЛ. ОХЛАЖДЕНИЕ» и активировать дискретный выход 8; при температуре больше 70 ºС вывести сообщение «АВАРИЯ». При значении сигнала на любом датчике менее 3 мА показывать сообщение «ОБРЫВ ЦЕПИ». Пункт 3. Работа с кнопками управления индикатора В п. 2 ввести дополнительную функцию изменения уставок оператором с помощью кнопок управления индикатора, например чтобы сообщение «ВКЛ. ОХЛАЖДЕНИЕ» появлялось при другом диапазоне температуры: от 60 до 70 ºС. Вариант 8 Пункт 1. Работа с дискретными входами и выходами Моделировать работу системы охранной и пожарной сигнализации. При активации любой комбинации дискретных входов 1, 2, 3, 4 срабатывает система охранной сигнализации, запускается таймер на 5 с. Если в течение 5 с состояние дискретных входов не изменилось, то активируется дискретный выход 1, включающий световую и звуковую сигнализацию. На индикаторе показать номера активирован15 ных дискретных входов и вывести сообщение «НАРУШЕНИЕ ПЕРИМЕТРА». Пожарная сигнализация включается немедленно после активации любой комбинации дискретных входов 5, 6, 7, 8. При этом дискретный выход 2 активирует включение насосов спринклерной системы пожаротушения. На индикатор вывести сообщение «ПОЖАР». Пункт 2. Работа с аналоговыми входами и дискретными выходами К аналоговому входу 3 подключен датчик давления с диапазоном измерения от 0 до 10 бар. На индикаторе отображать текущее значение давления и заданные ниже диапазоны сопровождать дополнительными сообщениями и действиями. При значении сигнала на аналоговом входе менее 3 мА выводить на индикатор сообщение «ДАТЧИК Т НЕИСПРАВЕН». При давлении менее 3 бар выводить на индикатор сообщение «Р НИЗКОЕ» и активировать при этом дискретный выход 1, имитируя включение насоса повышения давления. При достижении значения давления 6 бар дискретный выход 1 деактивировать. При диапазоне давления от 4 до 6 бар на индикаторе показывать сообщение «НОРМА». При давлении 6,1 ‒ 7 бар выводить на индикатор сообщение «ВНИМАНИЕ Р ВЫСОКОЕ». Пункт 3. Работа с кнопками управления индикатора К п. 2 добавить функцию изменения диапазона уставок для датчика давления с помощью кнопок управления на индикаторе. Вариант 9 Пункт 1. Работа с дискретными входами и выходами Система предназначена для управления тремя независимыми насосами, каждый из которых поддерживает уровень жидкости в одной из трех емкостей по показаниям трех дискретных датчиков уровня (рис. 1.2). Датчики уровня подключены к дискретным входам 1, 2, 3 прибора, который может работать согласно двум типам логики – прямой и обратной. Логика задается единой для трех каналов. При прямой логике насос включается при размыкании контактов датчика, 16 т. е. насос начинает накачивать в емкость жидкость тогда, когда ее уровень опускается ниже уровня контактов датчика. При обратной логике насос включается при замыкании контактов датчика, т. е. насос начинает откачивать жидкость из емкости, когда ее уровень станет выше уровня контактов датчика. Программа должна реализовывать обе логики работы при активации дискретного входа 8. На индикаторе необходимо показывать сообщения о том, какие насосы работают и в каком режиме (заполнения или откачки жидкости). Дискретные входы 1, 2, 3 макета использовать для моРис. 1.2. Система управления делирования сигнала с датчиков тремя насосами при наполнении уровня. трех баков воды Пункт 2. Работа с аналоговыми входами и дискретными выходами Разработать программу поддержания температуры в системе, показанной на рис. 1.3. Датчик Т – аналоговый датчик температуры с диапазоном измерения от 0 до 200 ºС. На основе показаний датчика включается или выключается нагревательный элемент с помощью си- Рис. 1.3. Система управления температурой лового элемента, подключенного к дискретному выходу 2 регулятора. Если при измерении датчиком фиксируется сигнал менее 3 мА, то на индикатор выводится сообщение «ДАТЧИК НЕИСПРАВЕН». В диапазоне значений температуры до 100 ºС включается нагревательный элемент, и на индикатор выводится сообщение «НАГРЕВ ХХХ», где ХХХ – текущее значение температуры в градусах Цельсия. При достижении температуры в камере 200 ºС нагревательный элемент отключается и на индикатор выводится сообщение «ТЕМПЕРАТУРА ХХХ», где ХХХ – текущее значение температуры. При снижении температуры до 180 ºС включается нагревательный элемент. 17 Пункт 3. Работа с кнопками управления индикатора В п. 2 ввести функцию изменения уставок температуры с помощью кнопок управления индикатора. Режим изменения уставок должен отображаться на индикаторе миганием значений и в соответствующих сообщениях. Значение кнопок задать самостоятельно. Вариант 10 Пункт 1. Работа с дискретными входами и выходами Система автоматического управления (САУ) двумя циркуляционными насосами, поочередно работающими на одну магистраль, с возможностью аварийной сигнализации показана на рис. 1.4. На магистрали установлен датчик давления (типа «сухой контакт»), подключаемый к дискретному входу 4. Реле 1 и 2 включают насосы 1 и Рис. 1.4. Система управления 2. Если отказывают оба двумя насосами насоса, на реле 3 выдается сигнал аварии, например для подключения напрямую, без контроля давления аварийного насоса. Вход 1 используется для перехода в автоматический режим работы и сброса аварийной сигнализации. Все возникающие ситуации должны отражаться на индикаторе. Пункт 2. Работа с аналоговыми входами и дискретными выходами К п. 1 добавить ситуацию подключения к магистрали для измерения температуры жидкости аналогового датчика с диапазоном измерения от 0 до 100 ºС. При токе меньше 3 мА на индикаторе показывать сообщение «ДАТЧИК Т ЗАМЕНИТЬ». При диапазоне измерения температуры до 70 ºС выводить на экран текущее значение температуры. При превы18 шении температуры (71 ‒ 100 ºС) на индикатор к текущему показанию температуры добавить мигающее сообщение «ПЕРЕГРЕВ» и активировать дискретный выход 3. Пункт 3. Работа с кнопками управления индикатора В п. 2 ввести функцию изменения уставок температуры с помощью кнопок управления индикатора. Режим изменения уставок должен отображаться на индикаторе миганием значений и в соответствующих сообщениях. Значение кнопок задать самостоятельно. Вариант 11 Пункт 1. Работа с дискретными входами и выходами Система автоматического управления двумя насосами, поочередно работающими на наполнение расходного бака, показана на рис. 1.5. На подающей трубе установлен датчик давления (типа «сухой контакт»), подключаемый к дискретному входу 4. Датчик верхнего уровня («короткий» электрод) подключается к дискретному входу 2, а датчик нижнего уровня («длинный» электрод) – к дискретному входу 3. Если уровень воды выше «короткого» электрода, насосы не работают, и так до тех пор, пока уровень не станет ниже «длинного» электрода – тогда включается один из насосов. Уровень воды в баке Рис. 1.5. Система управления насосами, повышается, но насос продолработающими на резервуар жает работать до тех пор, пока вода не закроет «короткий» электрод. Двигатель выключается, а при следующем осушении «длинного» электрода включается двигатель другого насоса. При этом на реле 3 выдается сигнал «АВАРИЯ». Вход 1 используется для сброса аварийного сигнала. 19 Пункт 2. Работа с аналоговыми входами и дискретными выходами К п. 1 добавить ситуацию подключения к магистрали аналоговых датчиков давления и температуры. Датчик давления имеет диапазон измерения от 0 до 6 бар, а датчик температуры ‒ диапазон измерения от 0 до 100 ºС. Смоделировать систему измерения температуры и давления в магистрали и вывода текущих значений на индикатор. При работающей программе п. 1 задания и давлении больше 6 бар на индикатор выводить сообщение «АВАРИЯ Р», а при превышении температуры (более 70 ºС) ‒ сообщение «ПЕРЕГРЕВ». При возникновении подобных ситуаций включать реле сигнализации 3. Пункт 3. Работа с кнопками управления индикатора В п. 2 ввести функцию изменения уставок задания температуры и давления с помощью кнопок управления индикатора. Режим изменения уставок должен отображаться на индикаторе миганием значений и в соответствующих сообщениях. Значение кнопок задать самостоятельно. Вариант 12 Пункт 1. Работа с дискретными входами и выходами На рис. 1.6 показана схема САУ, предназначенной для управления установкой из трех циркуляционных насосов, работающих на одну магистраль. На каждом насосе установлен свой датчик давления типа «сухой контакт». Они подключаются к дискретным входам 1, 2, 3. Насосы работают поочередно парами: 1 ‒ 2, 1 ‒ 3, 2 ‒ 3. Если один из насосов отказал, то постоянно работает оставшаяся пара насосов. При включении прибора, Рис. 1.6. Система управления тремя насосами 20 когда должны одновременно запускаться насосы первого и второго каналов, во избежание большой нагрузки на сеть пусковыми токами двух двигателей включение второго канала производится с задержкой. Аварийная сигнализация отсутствует. Вся работа САУ должна отображаться на индикаторе. Пункт 2. Работа с аналоговыми входами и дискретными выходами К п. 1 добавить ситуацию подключения датчика температуры к магистрали для измерения температуры жидкости. Диапазон работы датчика условно разбивается на три зоны, которые отображаются на индикаторе: «ХОЛОДНАЯ», «НОРМА», «ПЕРЕГРЕВ». Значения диапазонов зон задать самостоятельно. Текущее значение температуры показывать постоянно. Пункт 3. Работа с кнопками управления индикатора В п. 2 ввести функцию изменения уставок температуры с помощью кнопок управления индикатора. Режим изменения уставок должен отображаться на индикаторе миганием значений и в соответствующих сообщениях. Значение кнопок задать самостоятельно. Вариант 13 Пункт 1. Работа с дискретными входами и выходами Смоделировать работу приоритетного шифратора на восемь входов с помощью дискретных входов макета. Дискретные светодиодные выходы макета использовать для индикации включенного входа. На индикаторе показывать сообщение о результатах работы, например «АКТИВЕН ВХОД Х», где Х ‒ номер входа. Пункт 2. Работа с аналоговыми входами и дискретными выходами На рис. 1.7 показана схема системы выдержки заданной температуры в камере по времени. Например, технологический процесс занимает три часа. Первый час в камере поддерживается температура 100 ºС, второй час 200 ºС, в третий час отключается нагреватель и идет снижение 21 Рис. 1.7. Система выдержки температуры по времени температуры. Диапазон измерения температуры датчиком составляет от 0 до 300 ºС. Датчик температуры подключается к аналоговому входу 8. Силовой элемент активируется дискретным выходом 8. На индикаторе показывать состояние процесса и температуру. Пункт 3. Работа с кнопками управления индикатора В п. 2 ввести функцию изменения уставок температуры в зонах регулирования с помощью кнопок управления индикатора. Режим изменения уставок должен отображаться на индикаторе миганием значений и в соответствующих сообщениях. Значение кнопок задать самостоятельно. Вариант 14 Пункт 1. Работа с дискретными входами и выходами На рис. 1.8 показана схема подключения электропривода к управляющему контроллеру. Разработать программу управления электроприводом. Использовать дискретный вход 1 макета в качестве сигнала «ОТКРЫТЬ»; дискретный вход 2 макета ‒ в качестве сигнала «ЗАКРЫТЬ»; дискретный выход 1 ‒ для подключения схемы на открытие, а дискретный выход 2 ‒ для подключения схемы на закрытие. Показывать на индикаторе текущую ситуацию. Рис. 1.8. Схема управления электроприводом 22 Пункт 2. Работа с аналоговыми входами и дискретными выходами Заданы два аналоговых датчика положения. Первый датчик имеет диапазон измерения от 0 до 360º, второй ‒ диапазон измерения от 0 до 80º. Датчики установлены на подвижном объекте. Разработать программу, которая постоянно фиксирует положение объекта по вертикали и горизонтали. На индикаторе показывать текущее положение объекта в угловых градусах. При включении дискретного входа 1 активировать дискретный выход 1 и вывести на индикатор сообщение «ЗАХВАТ ЦЕЛИ». Пункт 3. Работа с кнопками управления индикатора Разработать программу вывода цифр от 0 до 9 в разные позиции первой строки индикатора макета. Для задания положения цифры в строке и самой цифры использовать клавиатуру индикатора. Вариант 15 Пункт 1. Работа с аналоговыми входами и дискретными выходами Моделировать блок управления холодильными агрегатами. Функциональная схема прибора показана на рис. 1.9. Рис. 1.9. Система управления холодильником Прибор измеряет температуру в камере и с помощью реле, управляемых дискретными выходами, включает компрессор и подключает внешнюю аварийную сигнализацию. Индикатор показывает 23 текущее значение температуры. Прибор выполняет следующие функции: поддержание заданного значения температуры в камере; набор холода; оттайка (путем периодического отключения компрессора); отсчет времени между оттайками; подключение внешней сигнализации. Реализовать индикацию режима работы холодильника. Диапазон измерения датчика температуры составляет от ‒ 50 до +50 ºС. Пункт 2. Работа с дискретными входами и выходами К п. 1 добавить функции включения питания с индикацией, принудительной разморозки с помощью нагревательного элемента, который включается через дискретный выход 8. Кроме этого добавить в схему потенциометр, подключаемый к аналоговому входу 3; потенциометр задает значение температуры, поддерживаемой в камере. Пункт 3. Работа с кнопками управления индикатора Ввести к пп. 1 и 2 функцию изменения уставок включения сигнализации, времени между автоматическими разморозками морозильной камеры. Вариант 16 Пункт 1. Работа с аналоговыми входами и дискретными выходами Разработать программу для устройства контроля давления по восьми каналам с возможностью включения аварийной сигнализации. Функциональная схема устройства показана на рис. 1.10. К аналоговым входам подключены датчики давления с диапазоном измерения от 0 до 10 бар. Контролируемые диапазоны давления следующие: до 6 бар – «РХ НОРМА»; больше 6 бар – «АВАРИЯ РХ». Значения давления по входам показывать на индикаторе. Аварийную сигнализацию включать при сообщении «РХ ОБРЫВ» и значении давления больше 6 бар. Если датчик выдает токовое значение меньше 3мА, это указывает на неисправность датчика или обрыв цепи датчика. 24 Рис. 1.10. Схема измерительного прибора Пункт 2. Работа с дискретными входами и выходами К п. 1 добавить функцию просмотра значения давления по включенному дискретному входу. Например, включен дискретный вход 1, на индикаторе появляется сообщение «ДАТЧИК 1 – ХХХ», где ХХХ – текущее значение давления. Пункт 3. Работа с кнопками управления индикатора К пп. 1 и 2 добавить функцию изменения диапазона срабатывания сигнализации «АВАРИЯ» с помощью кнопок управления индикатора. Вариант 17 Пункт 1. Работа с аналоговыми входами и дискретными выходами Создать программу работы монитора напряжения электрической сети. Функциональная схема прибора показана на рис. 1.11. Прибор выполняет защитное отключение электрооборудования в следующих 25 ситуациях: отсутствие одной или двух фаз в трехфазной сети; выход напряжения за заданные пределы; перегрев обмотки электродвигателя; обрыв фазы. А также прибор осуществляет автоматическое включение оборудования после устранения аварии; установку времени включения. Для контроля пользователем устанавливаются номинальное напряжение сети, зона допустимого отклонения, время задержки срабатывания аварийного отключения электродвигателя и время его включения. Рис. 1.11. Монитор напряжения электрической сети Точки А, B, C, N подключаются к аналоговым входам и имитируют работу аналоговых датчиков. При токе 3 мА или меньше фиксируется состояние «ОБРЫВ ЦЕПИ». Датчик температуры с диапазоном измерения от 0 до +100 ºС определяет температуру обмоток статора электродвигателя. При достижении температуры 70 ºС необходимо выполнить защитное отключение электродвигателя от сети. При снижении температуры до 50 ºС электродвигатель подключается к цепи питания. Все состояния прибора отображаются на индикаторе. Пункт 2. Работа с дискретными входами и выходами Разработать программу кодового замка на семь входов. Реализовать режим изменения кода. На индикатор выводить сообщения «КОД ВЕРЕН», «КОД НЕВЕРЕН», «ИЗМЕНЕНИЕ КОДА». При срабатывании кодового замка на дискретный выход выводить сигнал отключения электромагнита. При включении входов активировать дискретный выход с аналогичным номером. 26 Пункт 3. Работа с кнопками управления индикатора В п. 1 ввести функцию изменения уставок допустимого отклонения состояний фаз от номинала и температуры аварийного отключения. Функции реализовать через кнопки индикатора. Вариант 18 Пункт 1. Работа с аналоговыми входами и дискретными выходами Разработать программу, имитирующую работу реле ‒ регулятора температуры. Температура регулируется по двухпозиционному закону. Функциональная схема работы прибора показана на рис. 1.12. Рис. 1.12. Схема реле ‒ регулятора температуры Датчик температуры имеет диапазон измерения от 0 до +400 ºС. На индикатор постоянно выводить значение температуры и дискретный выход 1 использовать для фиксации текущего состояния реле для управления нагревателем. Аналоговый вход 7 использовать для задания рабочей температуры. Пункт 2. Работа с дискретными входами и выходами Разработать программу, моделирующую работу световых приборов автомобиля: габаритных огней, фар ближнего и дальнего света, поворотников, аварийной сигнализации, фар заднего хода, стопсигналов. Состояние показывать на индикаторе. Включение каждого сигнала осуществлять путем активации дискретного выхода с определенным номером. 27 Пункт 3. Работа с кнопками управления индикатора Создать программу, позволяющую пользователю работать с индикатором в режиме изменения сообщений в трех полях индикатора. При выборе одного из трех полей для работы необходимо предусмотреть световую фиксацию выбора. Значения сообщений задать самостоятельно. Вариант 19 Пункт 1. Работа с дискретными входами и выходами На рис. 1.13 изображена структурная схема системы управления водоснабжением частного дома. ПР110 ‒ прибор, моделируемый в задании; НБ – накопительный бак; Н1, Н2 и ПН – насосы; ВАУ – дискретный датчик верхнего аварийного уровня; ВУ – дискретный датчик верхнего уровня; НУ – дискретный датчик нижнего уровня; НАУ – дискретный датчик нижнего аварийного уровня; ДП – дискретный датчик давления для защиты погружного насоса (ПН) от «сухого хода». Разработать программу модуля для управления системой. Рис. 1.13. Система управления водоснабжением Насосы Н1 и Н2 включаются по расходу воды независимо друг от друга. Для их защиты предназначен датчик НАУ. Насос из скважины закачивает воду в накопительную емкость, из которой насос Н1 28 качает воду в дом, насос Н2 ‒ на полив и технические нужды. При получении сигнала от датчика НАУ включается ПН. После заполнения емкости и получения сигнала с датчика ВУ ПН выключается. Погружной насос выключается в любом случае, если сработал датчик ДП (нет давления – нет воды от ПН). По датчику ВАУ срабатывает аварийная сигнализация и все насосы отключаются от электрической сети. Пункт 2. Работа с аналоговыми входами и дискретными выходами К п. 1 добавить функцию измерения температуры воздуха в помещении с помощью аналогового датчика с диапазоном измерения от ‒50 до +50 ºС. Текущее значение температуры отображать на индикаторе. При достижении температуры 30 ºС активировать реле включения электродвигателя приточной вентиляции. Пункт 3. Работа с кнопками управления индикатора К п. 2 добавить функцию изменения уставки температуры включения вентилятора. Функцию реализовать с помощью кнопок управления индикатора. Вариант 20 Пункт 1. Работа с аналоговыми входами и дискретными выходами Разработать программу для восьмиканального измерителя аналоговых сигналов с аварийной сигнализацией. Функциональная схема прибора показана на рисунке 1.14. Задан датчик температуры с диапазоном измерения от 0 до +200 ºС. Датчиков ‒ восемь штук. Они контролируют технологический процесс в восьми зонах. На индикатор выводить информацию о трех состояниях. При сигнале с датчика менее 3 мА выводить на индикатор сообщение «ДАТЧИК Х НЕИСПРАВЕН», где Х – номер датчика. Одновременно необходимо активировать реле 2, которое включает сигнализацию о неисправности. При диапазоне температур от 0 до 100 ºС на индикатор выводить сообщение «НАГРЕВ ЗОНЫ Х». При диапазоне температур от 101 до 150 ºС на индикатор выводить сооб29 щение «НОРМА ЗОНА Х». При температуре свыше 150 ºС выводить на индикатор сообщение «АВАРИЯ ЗОНЫ Х» и включать аварийную сигнализацию с помощью реле 1. Рис. 1.14. Схема многоканального измерителя Пункт 2. Работа с дискретными входами и выходами Смоделировать работу мультиплексора 4 на 1, используя дискретные входы и выходы. Работа мультиплексора индицируется светодиодами дискретных выходов. Пункт 3. Работа с кнопками управления индикатора К п. 1 добавить функцию изменения уставок диапазонов температуры при состоянии «АВАРИЯ», используя кнопки управления индикатора. Вариант 21 Пункт 1. Работа с аналоговыми входами и дискретными выходами Устройство имеет один аналоговый вход, к которому подключены датчик давления с диапазоном измерения от 0 до 6 бар и дискретный 30 датчик пожарной сигнализации. К четырем дискретным выходам подключены реле включения насосов станции пожаротушения, которые работают по параллельной схеме. Датчик давления измеряет давление воды в трубопроводе после насосов. При срабатывании дискретного датчика пожарной сигнализации система дает сигнал на включение первого насоса. Если давление в системе менее 3 бар, то система включает второй насос. Если давление не увеличивается, система включает третий насос. Если давление в течение одной минуты не растет, то включается четвертый насос. При давлении 5 бар анализируется прирост градиента давления. Если он положительный, отключается первый насос. Если давление в системе 5 бар только при одном включенном насосе, то другие не включаются. На индикаторе необходимо показывать текущее значение давления и номера работающих насосов. Пункт 2. Работа с аналоговыми входами и дискретными выходами К п. 1 добавить функцию включения аварийной сигнализации при срабатывании датчика пожарной сигнализации и функцию принудительного отключения системы пожаротушения. Пункт 3. Работа с кнопками управления индикатора К пп. 1 и 2 добавить функцию изменения уставок давления, при котором включаются насосы, используя кнопки управления индикатора. Вариант 22 Пункт 1. Работа с аналоговыми входами и дискретными выходами Имеется универсальный измеритель аналоговых сигналов по двум каналам с двумя дискретными выходами управления. Настройка прибора на диапазон подключаемого датчика производится с помощью кнопок управления индикатора в режиме «НАСТРОЙКА КАНАЛА Х», где Х – номер датчика. В режиме измерения прибор показывает на индикаторе текущее значение датчика. В режиме «НАСТРОЙКА» предусмотреть привязку срабатывания дискретных выходов к значению сигнала с датчика. 31 Пункт 2. Работа с дискретными входами и выходами При активации дискретного входа 1 дискретные выходы 1, 2, 3, 4 включаются с частотой 1 Гц. На индикаторе показывать сообщение «СТАРТ». При включении дискретного входа 2 дискретные выходы 1, 2, 3, 4, 5, 6, 7, 8 активируются в режиме «бегущей строки» с частотой 1 Гц. При этом индицируется сообщение «ПРОЦЕСС». При включении дискретного входа 3 все дискретные выходы активны и на индикаторе показывается сообщение «СТОП». Пункт 3. Работа с кнопками управления индикатора Разработать программу управления курсором на экране индикатора и ввода в установленную позицию цифр от 0 до 9. Защита лабораторных работ предполагает проверку правильности работы программы на макете. 32 Раздел 2 Лабораторная работа № 4 СЕНСОРНАЯ ПАНЕЛЬ НА ОСНОВЕ МИКРОПРОЦЕССОРНОГО НАБОРА ATMEL QT600 Цель работы: изучение принципа работы сенсорных клавиатур. Теоретическая часть Atmel QT600 ‒ отладочный комплект, демонстрирующий возможность использования микроконтроллеров Atmel для создания емкостных сенсоров. Данный комплект позволяет визуально оценить работу сенсорной панели. Комплект включает в себя следующие изделия. 1. Универсальный программатор (плата с шелкографией QT600) (рис. 2.1). Может выступать либо в качестве программатора для подключенной платы с микроконтроллером, либо в качестве устройства для передачи данных на компьютер с микроконтроллера, обрабатывающего нажатия на сенсорную панель. 2. Несколько дочерних плат с микроконтроллерами различных серий Рис. 2.1. Программатор (AVR TINY, MEGA, XMEGA) (рис. 2.2, 2.3, 2.4). Рис. 2.3. Плата с микроконтроллером ATXMEGA128 Рис. 2.2. Плата с микроконтроллером ATTINY88 33 Рис. 2.4. Плата с микроконтроллером ATMEGA324 3. Несколько сенсорных панелей различной конфигурации (рис. 2.5, 2.6). Рис. 2.5. Сенсорные панели QTOUCH16 и QTOUCH8 Рис. 2.6. Сенсорная панель QMATRIX 34 Принцип работы сенсора Микроконтроллер фиксирует прикосновение к сенсорной панели, регистрируя изменения емкости, создаваемой полигоном на печатной плате сенсорной панели и человеком, прикасающимся к ней. В общем случае к порту микроконтроллера подключена схема, показанная на рис. 2.7. P J [7 .. 0] P J[7. . 0] P K [7 .. 0] P K[7. . 0] P F [7 .. 0] P F [7 .. 0 ] P H [7 .. 0] P H[7. . 0] PF 0 P H0 PF 1 P H1 R 10 0 1k C H0 C 10 0 22 n P J0 P K0 R 10 2 1k C 10 2 22 n C H1 P J1 P K1 R 101 1 k C H8 C 101 22 n R 103 1 k C H9 C 103 22 n Рис. 2.7. Фрагмент электрической схемы платы QT600 Линии «P*» подключены к разрядам порта микроконтроллера, линии «CH*» ‒ к контактам сенсорной панели. Конденсаторы C100 ‒ C103 называются референсными емкостями. Принцип работы сенсорных кнопок можно представить следующим алгоритмом. 1. Емкость сенсорной панели заряжается коротким импульсом через резистор. 2. После того как импульс заряда отправлен, разряд порта, подключенного к емкости панели, переводится в состояние высокого сопротивления (третье состояние). Референсный конденсатор заряжается энергией, накопленной емкостью панели. 3. Конденсатор подключен к компаратору, срабатывающему при определенном значении заряда. Каждый цикл пп. 1 и 2 немного заряжает конденсатор. По достижении определенного уровня заряда срабатывает компаратор, формирующий сигнал прерывания. 4. После того как компаратор перейдет в состояние «1», можно определить степень воздействия внешних объектов на сенсорную панель. Когда человек прикасается к панели, емкость, подключенная к соответствующей линии (CH*) на схеме, увеличивается. За каждое прохождение шагов 1 и 2 количество энергии, переданной 35 в референсный конденсатор, возрастает, что влечет за собой уменьшение количества импульсов, необходимых для полной зарядки конденсатора. Таким образом можно определить, прикоснулся ли человек к панели и насколько сильно. Порядок выполнения работы Для компиляции и установки прошивки необходимо инсталлировать на компьютер следующее программное обеспечение, входящее в состав комплекта Atmel QT600: 1) Atmel QTouch Studio; 2) Atmel AVR Studio; 3) Atmel QTouch Library. После установки AVR Studio необходимо скомпилировать и загрузить прошивку на одну из плат. В качестве примера рассмотрена работа с платой QT600-ATXMEGA128A1-QT16 и сенсорной панелью QTOUCH16. 1. Подключите программатор к дочерней плате. Для этого понадобится два десятиконтактных шлейфа из комплекта поставки. Необходимо соединить разъемы Touch Data и JTAG (обозначения разъемов можно найти на шелкографии платы). Точка рядом с разъемом обозначает первый контакт (рис. 2.8). Рис. 2.8. Пример комплекта в сборе 2. Подключите программатор к компьютеру. 3. Нажмите и удерживайте единственную кнопку на программаторе в течение 5 с. Это переведет устройство из режима передачи данных в режим программатора. Дождитесь, пока ОС установит необходимые драйверы. 4. Откройте AVR Studio. 36 5. Выберите Файл ‒ Открыть ‒ Решение или проект. 6. В папке QTouch Library есть подпапка examples. Найдите в ней проект QT600_ATxmega128a1_gnu_qt16 и откройте его. 7. Запустите построение решения (F7). 8. После сборки проекта выберите меню Сервис ‒ Device programming; далее соответствующий программатор и микроконтроллер; интерфейсы ISP для ATTINY88 и JTAG для остальных контроллеров. Нажмите Apply. Процесс прошивки ATTINY88 отличается от прошивки других плат из-за особенностей системы тактирования, поэтому для этого микроконтроллера в разделе «Interface Settings» установите частоту ISP равной 64 кГЦ и нажмите Set. После этого можно прошить устройство в разделе «Production file», где необходимо выбрать файл формата .elf, находящийся в папке проекта, установить флаг Flash и нажать кнопку Program. После прошивки и проверки можно перевести комплект в режим обработки данных с сенсора и запустить QTouch Studio. 9. Отключите программатор. С помощью шлейфа подключите сенсорную панель. 10. Подключите программатор и откройте Atmel QTouch Studio. После нажатия в левой части окна на кнопку Start Reading в правой части окна начнут отображаться данные с сенсорной панели. Рис. 2.9. Окно программы QTouch Studio 37 Варианты подключения плат следующие: 1) QTOUCH8 и QT600-ATTINY88; 2) QTOUCH16 и QT600-ATTINY128A1; 3) QMATRIX и QT600-ATMEGA324. Задание 1. Изучить теоретическую часть работы. 2. Установить программное обеспечение и соединить рабочие элементы комплекта Atmel QT600. 3. Программировать микроконтроллер ATTINY88. 4. Проверить работу сенсорной панели. 5. Результат работы показать преподавателю. 38 Раздел 3 Лабораторная работа № 5 НЕЙРОКОМПЬЮТЕРНЫЙ ИНТЕРФЕЙС NEUROSKY MINDWAVE Цель работы: исследование принципа работы нейрокомпьютерного интерфейса NeuroSky MindWave. Теоретическая часть Описание устройства Система MindWave – это нейрогарнитура, позволяющая считывать электрические сигналы мозга человека и преобразовывать их в цифровые сигналы. Другими словами, гарнитура NeuroSky MindWave ‒ это одноканальный измеритель Рис. 3.1. Внешний вид нейрогарнитуры электроэнцефалографичеNeuroSky MindWave ского сигнала (рис. 3.1). Нейрогарнитура подключается к компьютеру для считывания альфа-, бета-, тета-волн и прочих, отражающих деятельность мозга человека. Основные возможности гарнитуры: • прямое соединение с сухим датчиком (электродом); • считывание исходного электроэнцефалографического сигнала; • анализ внимания человека, обнаружение состояния медитации и моргания глаз; • измерение мозговых волн: дельта, тета, низких альфа, высоких альфа, низких бета, высоких бета, гамма. Применяемая технология. Когда мы мыслим или испытываем разнообразные эмоции и чувства, специальные нейроны мозга взаимодействуют между собой через отростки, называемые аксонами. Это взаимодействие имеет электрохимическую природу. Когда контакти39 руют большие группы нейронов (сотни тысяч) единовременно, то в результате электрохимической активности генерируется электрическое поле достаточной мощности, чтобы быть зафиксированным нейрогарнитурой. Таким образом, датчики, расположенные в определенных местах головы, могут воспринять такого рода информацию. Более того, современные разработки демонстрируют следующее: чтобы получить электроэнцефалографический сигнал от головного мозга с точностью не ниже 96 %, достаточно использовать один сухой датчик, плотно прилегающий к передней, лобной части черепа. Также применяют индифферентный датчик. Его подключают к так называемой «нулевой точке», т. е. к такой части головы, в которой отсутствует биоэлектрическая активность головного мозга. При работе устройств «нулевая точка» подключения индифферентного датчика используется для измерения разницы потенциалов с основным, рабочим, датчиком. Индифферентный датчик обычно крепится к мочке уха. По описанному выше принципу работают все нейрогарнитуры NeuroSky. На рис. 3.2 приведены примеры графиков разных типов волн, выделенных из общего спектра. Рис. 3.2. Типы электроэнцефалограмм 40 Обычно первичный сигнал получают в диапазоне от 0 до 70 Гц. Исследования показали, что в нем можно выделить пять основных диапазонов, которые отражают определенные виды активности головного мозга: • дельта-волны: диапазон от 0 до 4 Гц; • тета-волны: диапазон от 4 до 8 Гц; • альфа-волны: диапазон от 8 до 12 Гц. В некоторых программах данный диапазон представляют как низкие альфа (8 ‒ 10 Гц) и высокие альфа (10 ‒ 12 Гц); • бета-волны: диапазон от 12 до 30 Гц. В некоторых программах данный диапазон представляют как низкие бета (12 ‒ 18 Гц) и высокие бета (18 ‒ 30 Гц); • гамма-волны: диапазон от 30 до 70 Гц. В некоторых программах данный диапазон представляют как низкие гамма (30 ‒ 50 Гц) и высокие гамма (50 ‒ 70 Гц). Дельта-волны. Самые медленные в спектре. Обычно ассоциируются с глубоким сном без сновидений. В нормальном состоянии уровень данных волн в сигнале уменьшается, когда человек пытается сфокусироваться. Увеличение уровня дельта-активности связано с понижением уровня осознания окружающего пространства и уровнем восприятия информации, ассоциирующейся с бессознательным. Интересно, что в возрасте 75 лет дельта-волны как индикаторы глубокого сна могут быть совершенно не представлены в спектре. Данные волны доминируют в электроэнцефалограммах (ЭЭГ) детей в возрасте до одного года. В состоянии глубокого сна, который характеризуется высокой дельта-активностью, происходит наиболее эффективное восстановление организма. Не все свойства дельта-волн на данный момент изучены. В частности, в некоторых источниках утверждается, что дельта-активность характерна для моментов проявления интуиции и бессознательного. Тета-волны. Обычно ассоциируются с состоянием глубокого расслабления, сонливостью, дремотой, состоянием сна у старших детей и взрослых. Также могут фиксироваться у маленьких детей даже в состоянии бодрствования. Тета-активность достаточно высока, когда человек находится в медитативном состоянии или концентрируется на внутреннем мире. Все действия, которые заучены до автоматизма, 41 например вождение автомобиля по свободной дороге, также характеризуются высокими показателями тета-волн. Данными волнами отображаются состояния вдохновения, неожиданные проявления креативных идей и т. д. Дети имеют склонность к сильному проявлению тетаактивности в спектре. Альфа-волны. В нормальных условиях альфа-волны ‒ проявление расслабленного состояния сознания взрослого человека. Также эти волны на определенном уровне отображают хорошее настроение, состояние «внутреннего уюта», когда человек отключается от окружающего мира, закрывает глаза, позволяет образам самостоятельно появляться в сознании. Альфа-волны отражают связь сознания с подсознанием. Тренировка сознания на вхождение в альфа-состояние очень полезна как тренинг медитативного состояния, а также повседневной стрессоустойчивости. Альфа-состояние весьма желательно в ситуациях усвоения мозгом нового информационного материала, в ситуациях обучения, выполнения нестандартных задач. На понижение уровня альфа-волн может повлиять следующее: сосредоточенность на некоторой задаче, внимательность, открытие глаз после релаксации. Крайне важно, чтобы в спектре мозговых волн обычного человека альфа-волны обязательно проявляли свою активность. В таком состоянии человек позитивно смотрит на мир, с легкостью решает креативные задачи. Некоторые исследования показали, что люди, у которых в обычных условиях ЭЭГ выявляет перманентно низкие показатели альфа-активности, склонны к алкоголизму и наркомании. Н и з к и е а л ь ф а. Волны этого участка спектра в большей степени ассоциируются с релаксацией, состоянием отчуждения от окружающего мира. Можно сказать, что это в некотором смысле переходное состояние к тета-состоянию. В ы с о к и е а л ь ф а. Волны этого участка спектра в большей степени ассоциируются с состояниями охлаждения тела, тревоги, фокусировки. Они отражают повышение уровня собранности и ментальную стабильность. Бета-волны. Связаны с периодом бодрствования, активными раздумьями, вниманием и сосредоточением на окружающем мире. Бета-активность особенно сильна, когда человек решает проблемы, судит, принимает сложные решения. Бета-волны также активно излучаются, когда человек возбужден, взволнован или испуган. При увеличении бета-активности возрастает эффективность работы мозга, 42 усвоения и обработки им информации. Интересно, что с ростом внутренней тревожности увеличивается уровень бета-волн в ЭЭГ; с повышением мышечной активности уровень бета-волн снижается. Н и з к и е бета. Эта часть спектра более свойственна состояниям фокусировки, концентрации, активным размышлениям. Низкие бетаволны также обычно связывают с максимальной производительностью при тренировках атлетов. Они отражают состояние решения умственных задач ( чтение, математические вычисления и решение проблем). В ы с о к и е бета. Волны этой части спектра обычно ассоциируют с бдительностью, настороженностью, взволнованностью, возбуждением. Высокий уровень этих волн прослеживается в состоянии паники. Гамма-волны. Отражают когнитивные процессы, проходящие в сознании, консолидацию информации, т. е. переход ее из кратковременной памяти в долговременную. Высокие показатели гамма-волн ассоциируются с интеллектуальной деятельностью, проявлениями сострадания и самоконтролем. Также была выявлена корреляция между гамма-волнами и трансцендентными состояниями сознания. В целом эти волны как самые быстрые отражают пиковую работу сознания. Н и з к и е гамма . Эта часть спектра проявляется при обучении и ментальной активности. Хорошо и устойчиво демонстрируемая гамма-активность на частоте 40 Гц ‒ отражение хорошей памяти и высокой эффективности при решении проблем как детьми, так и взрослыми. Низкий уровень волн данного частотного диапазона обусловливает низкие возможности запоминания информации. В ы с о к и е гамма . Эта часть спектра ассоциируется с когнитивными задачами, такими как чтение, слушание, разговор. Низкий уровень волн данной части спектра может быть связан с прекращением когнитивной активности. Комплект нейрогарнитуры. В комплект (рис. 3.3) Рис. 3.3. Комплект нейрогарнитуры входит: NeuroSky MindWave 43 • • • • регулируемая по размеру беспроводная гарнитура; Bluetooth-передатчик с разъемом USB; диск с драйверами; батарейка типа AAA. Программное обеспечение. В комплект нейрогарнитуры включен диск с основными программами. На диске находится инсталлятор. После установки в меню Пуск появляется папка NeuroSky MindWave c пунктами: • App Central ‒ собственно программа, с помощью которой вызываются мини-игры; • MindWave Tutorial ‒ видео, в простой и доступной форме излагающее, как пользоваться гарнитурой; • NeuroSky Store ‒ ссылка на интернет-магазин программ; • Documentation ‒ подробная документация; • Utilities ‒ служебные программы. Программы, поставляемые в комплекте, достаточно условно можно разделить на три категории: 1) программы визуализации параметров ЭЭГ. Они записывают данные ЭЭГ и представляют какую-то из ее характеристик в наглядной форме в виде столбика или графика. Например, Meditation Journal – программа, которая ведет журнал медитации и отображает в виде графика изменения уровня двух параметров: Attention (концентрация) и Meditation (медитация); 2) программы контроля уровня концентрации (Speed Math, Shulte, Find Number, SpadeA). Предлагается сыграть в относительно простые логические игры, а в это время измеряются колебания уровня внимательности (Attention). Измерение уровня концентрации никак не влияет на игровой процесс; 3) программы-тренажеры (Mind Hunter, Jack's Adventure, The Mindity Ant, Man.UP, Blink Zone). Наиболее интересен класс программ, цель которых ‒ тренировка сознательного влияния на ритмы мозга. По сюжету игры необходимо поддерживать определенное состояние сознания, чтобы персонаж что-то делал (катил, стрелял, прицеливался). Использование таких программ может обеспечить лечение синдрома нарушения внимания с гиперреактивностью (СНВГ) без использования лекарств. 44 Технические характеристики Гарнитура MindWave надевается на голову и позволяет снимать данные по принципу электроэнцефалограммы (одноканальный сухой электрод). Программная часть обрабатывает эти данные и отправляет на ПК по Bluetooth. Внешний вид печатной платы нейрогарнитуры представлен на рис. 3.4. Рис. 3.4. Внешний вид печатной платы нейрогарнитуры Нейросетевой интерфейс построен на базе специализированной микросхемы (ASIC) компании NeuroSky, поставляемой в виде готового модуля TGAM1. Модуль имеет три входа: EEG (электрод на лбу), REF и GND (электроды на клипсе, размещаемой на ухе). Все электроды подключены экранированным кабелем. Питание модуля (батарейка 3,3 В) формируется DC-DCпреобразователем, размещенным на Рис. 3.5. Внешний вид основной плате. MindWave RF приемо-передающего Dongle – USB приемо-передающее устройства нейрогарнитуры устройство ‒ изображено на рис. 3.5. Основные технические характеристики нейрогарнитуры следующие: • беспроводное подключение по Bluetooth; • максимальный уровень выходного сигнала 1 мВ; • диапазон аппаратного фильтра 3 ‒ 100 Гц; • разрядность АЦП 12 бит; • частота выборки 512 Гц; 45 • • • • • • • • • до 8 часов работы (батарейка AAA); частота передачи данных 2,420 ‒ 2,471 ГГц; максимальная мощность по передаче 6 дБм; скорость передачи данных 250 кбит/с; максимальная дальность приема 10 м; скорость передачи данных по UART 57 600 бод; размеры гарнитуры при поднятой штанге 22,5×15,5×9,2 см; размеры с опущенной штангой 22,5×15,5×16,5 см; операционные системы: Windows XP/Vista/7 (32, 64), Mac OS X 10.5.8 и выше. Подготовка к работе Для начала работы необходимо вставить батарейку, соответствующую спецификации. На устройстве есть рычажок включения гарнитуры, изображенный на рис. 3.6. После включения на корпусе гарнитуры загорится светодиодный индикатор. Возможные состояния Рис. 3.6. Кнопка включения индикатора показаны в таблице. питания устройства Состояния индикатора гарнитуры Состояние/цвет лампочки Выключена Красный Голубой Красный или голубой Мигание Нет Нет Нет Да Состояние гарнитуры Питание выключено Питание включено, но нет соединения Питание включено, соединение установлено Низкий заряд батареи Завершив проверку гарнитуры, необходимо установить драйверы для USB-адаптера. 1. Запустите программу MindWave-Setup.exe. 2. Проделайте все операции, которые потребует инсталлятор. 3. Подключите MindWave Wireless USB-адаптер к компьютеру. 4. Далее запустится MindWave Manager. Проделайте требуемые операции. 46 5. Выберите Automatically scan for MindWaves in range (рекомендуется) и нажмите Продолжить. 6. MindWave Manager выполнит поиск вашей нейрогарнитуры. Если найдет, программа покажет ID вашего устройства. 7. Ваше устройство соединено с ПК. В ряде случаев требуется ввести номер последовательного COMпорта, чтобы игра или приложение могли подключиться к гарнитуре. Для того чтобы узнать номер СОМ-порта, необходимо открыть окно диспетчера устройств, найти в списке ваше устройство и открыть окно его свойств. Работа с MindWave Важно! Для того чтобы в полной мере воспользоваться функциями и особенностями MindWave, гарнитура должна быть правильно надета. Основные действия для правильной установки гарнитуры следующие. 1. Поверните на 90º лобный датчик, как показано на рис. 3.7. 2. Возьмите гарнитуру двумя руками и наденьте ее на голову. После чего закрепите клипсу на ухе, как показано на рис. 3.8. 3. Далее нужно плотно прижать лобный датчик к коже. Для того чтобы передавался максимальный уровень сигнала, датчик на лбу должен постоянно прилегать ко лбу. Рис. 3.7. Поворот сухого датчика Рис. 3.8. Установка гарнитуры на голову Порядок выполнения работы Цель работы: научиться работать с нейрогарнитурой, а также получить практические результаты взаимодействия интерфейса мозг ‒ компьютер с программой из пакета приложений App Central for MindWave. 47 Вариант 1 Ход работы После установки программы App Central находим ее иконку на рабочем столе и запускаем двойным нажатием клавиши мыши. На экране появляется основное рабочее окно (рис. 3.9). В верхней части на фоне синей полосы видны следующие кнопки (слева направо): • Посмотреть вступительное видео. При нажатии на эту кнопку проигрывается короткий вступительный ролик по гарнитуре; • Загрузить обновления. При нажатии на эту кнопку автоматически загружаются обновления программы; • Менеджер настроек. Предлагаемые настройки касаРис. 3.9. Рабочее окно ются коммутации нейропрограммы App Central гарнитуры и компьютера. Находим иконку Meditation Journal в левом верхнем углу экрана управления приложениями и нажимаем на нее. На экране появляется приветственное окно запуска программы. Через несколько секунд происходит автоматический переход к следующему окну. Доступным становится диалоговое окно, в котором можно выбрать, добавить, удалить пользователя программы. В списке выбираем пользователя и нажимаем на стрелку. На рис. 3.10 изображено рабочее окно журнала медитаций. Это календарь: на каждый день записываются данные сессий медитаций. Если тренинг на текущую дату не проводился, то окно не содержит изображение медитирующего человека, а только выделено. Слева в столбик расположены кнопки команд. Если нажать на дату, когда тренинг проводился, появится всплывающее меню (рис. 3.11). 48 Рис. 3.11. Меню медитации Рис. 3.10. Рабочее окно В меню видны три кнопки: время начала медитации, средний показатель уровня медитации и средний показатель уровня концентрации. Выбрав первую кнопку, получаем отображение средних показателей медитации и концентрации (внимания), пиковых значений. Во вкладке среднего уровня медитации представлен детализированный график медитативной результативности сессии в зависимости от времени в секундах (рис. 3.12). Рис. 3.12. Средние показатели и детализированный график Последняя кнопка выводит на график концентрации и ее уровней в сессии (рис. 3.13). 49 Рассмотрим боковые кнопки меню. Первая кнопка ‒ начало сессии медитации. Открывается окно с динамическим графиком состояний концентрации и медитации (рис. 3.14). На графике изображены две кривые, которые отражают уровни концентрации (красный цвет) и медитации (синий цвет). В верхней части окна можно установить или убрать галочки и отслеживать лишь тот показатель, который необходим. В центральной части окна изображен красный круг. При нажатии на него начинается запись, пользователю нужно медитировать, на экран не смотреть, иначе будет происходить анализ результатов и медитативное состояние не будет достигнуто. По истечении определенного времени можно остановить запись. Сессия записана в журнал медитаций на соответствующую дату. Рис. 3.14. Динамический график состояний Рис. 3.13. Межсессионный график концентрации Вариант 2 Ход работы Рассмотрим программу Schulte, направленную на развитие внимательности. Дважды кликаем на иконку этой программы, появляется стартовое окно. В нем находится описание тренинга и кнопка в нижней части Подключить устройство. Предлагается квадрат 5 × 5, образованный цифрами от 1 до 25, которые располагаются в случайном порядке при каждом новом запуске программы. Пользователю 50 показывается цифра, которую нужно найти как можно быстрее на экране, а затем нажать на нее левой кнопкой мыши. При этом программа измеряет уровень внимательности пользователя, записывает его и готовит отчет. По окончании игры появляется окно, в котором еще раз описываются правила игры и сообщается, что после завершения испытания будет составлен и представлен отчет. Закрываем это окно и нажимаем кнопку Подключить устройство. На рис. 3.15 показано окно программы, в котором находится шкала уровня внимательности (Attention), индикатор уровня сигнала (Signal). Кнопка Start служит для начала тренинга. На рис. 3.16 показано задание данной программы: квадрат 5×5 из 25 цифр. Внизу, в строке Next Num, отображено, какую нужно найти цифру. Необходимо как можно быстрее найти эту цифру и кликнуть на нее мышкой. В правой части окна показывается время в секундах, которое затрачивается на поиск нужной цифры. Задача не выполнена до тех пор, пока не найдены все цифры. По завершении задания появится окно результатов (рис. 3.17). Рис. 3.16. Рабочее окно приложения Рис. 3.15. Предстартовое окно программы Рис. 3.17. Окно результатов 51 Результат показывается в баллах. Если нажать кнопку Show Detail, станет доступен отчет о пройденном упражнении (рис. 3.18). В отчете доступны следующие данные: • Score: оценочный результат упражнения в баллах; • Time: потраченное время в секундах; • Correct: количество правильно найденных цифр; • Incorrect: количество непраРис. 3.18. Отчет вильно выбранных цифр; о пройденном упражнении • Avg Value: значение среднего уровня внимательности за проведенное упражнение; • Max Value: значение максимального уровня внимательности за упражнение. Внизу окна расположены две кнопки: Restart (переиграть упражнение) и CogniScore List (открывает список возможных и достигнутых результатов). На рис. 3.19 представлен список достигнутых и возможных результатов. Active ‒ полученная награда за достижение, Inactive ‒ возможный, но еще не достигнутый результат. Например, на рис. 3.19 выделен достигнутый результат «Максимальная медитация» (пользователь достиг уровня медитации, равного 100). Рис. 3.19. Список результатов Задание 1. Изучить теоретические основы работы нейрокомпьютерной гарнитуры. 2. Выполнить загрузку программного обеспечения. 3. Подключить гарнитуру к питанию. 52 4. Сделать первый и второй варианты работы. Первый выполняется каждым студентом в течение 15 мин для получения графика концентрации внимания, второй ‒ каждым студентом 10 раз. Результаты фиксируются. 5. Полученные результаты представить преподавателю в виде отчета. 53 Раздел 4 Лабораторные работы № 6 ‒ 8 ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРНОГО КОМПЛЕКТА EVK1100 Цель работы: изучение среды AVR32 Studio version 2.6.0 фирмы Atmel и программирование отладочного комплекта EVK1100. Теоретическая часть Состав комплекта EVK1100 следующий: • микроконтроллер AT32UC3A0512; • микросхема памяти DataFlash объемом 8 Мбайт для хранения пользовательских данных, подключенная к интерфейсу SPI1 микроконтроллера; • микросхема памяти SDRAM объемом 32 Мбайт, подключенная на шину EBI микроконтроллера; • разъемы mini-USB А, В, подключенные к интерфейсу USB OTG микроконтроллера; • разъем RJ-45 с микросхемой, реализующей физический уровень Ethernet, подключенный к блоку MAC/Ethernet микроконтроллера; • задающий кварцевый генератор на 12 МГц на OSC1; • два разъема DB9, подключенные через преобразователи уровней к USART0 или USART1 микроконтроллера; • символьный четырехстрочный ЖК-дисплей по 20 символов в строке с голубой ШИМ-регулируемой подсветкой; • два трехцветных и четыре одноцветных светодиода; • джойстик с функцией нажатия и три отдельные кнопки; • элементы с аналоговым выходным сигналом: потенциометр, датчик освещенности и температурный датчик; • разъем для карт памяти SD/MMC, подключенный к SPI1; • разъем для подключения внутрисхемного эмулятора. На плате EVK1100 есть макетное поле (с шагом 2,54 мм). Все выводы микроконтроллера разведены на контактные площадки. Сигналы интерфейсов SPI0, TWI и скоростного отладочного интерфейса Nexus выведены отдельно. 54 Плата EVK1100 может быть запитана по интерфейсу USB либо от внешнего источника питания с напряжением 8 ‒ 20 В. На плате есть два DC-DC-преобразователя: для преобразования напряжения питания внешнего источника в напряжение 5 В и преобразования напряжения 5 В в напряжение 3,3 В, имеется также линейный стабилизатор для получения уровня напряжения 1,8 В. В системе питания предусмотрена схема последовательного включения всех трех преобразователей (power sequencer). Порядок выполнения работы Установка программного обеспечения и введение платы в режим программирования по шагам 1. Установите AVR32 Studio version 2.6.0. Установочный файл находится на диске комплекта. 2. Установите Flip 3.4.5, для того чтобы получить драйверы для платы. 3. Установите драйверы для платы: • подключите плату к ПК по USB с помощью кабеля из комплекта (коннектор USB находится в левом верхнем углу платы (рис. 4.1)); Рис. 4.1. Место расположения USB-разъема • переведите переключатель питания в режим USB (переключатель находится в правом верхнем углу платы (рис. 4.2)); 55 Рис. 4.2. Место расположения переключателя питания • после присоединения платы к компьютеру переведите ее в режим программирования. Это можно сделать с помощью средней кнопки джойстика (расположена в правом нижнем углу (рис. 4.3)) и кнопки RESET (расположена в левом нижнем углу). Удерживайте среднюю кнопку джойстика и периодически нажимайте на кнопку RESET. Если все сделано правильно, то экран на плате погаснет и в операционной системе высветится сообщение о новом обнаруженном устройстве; Рис. 4.3. Расположение кнопки RESET и джойстика 56 • далее установите драйвер для устройства «вручную»: укажите, из какой директории файловой системы взять необходимый файл. Если установлен Flip по умолчанию, то файл находится в C:\Program Files(x86)\Atmel\Flip 3.4.5\usb. Для установки драйвера устройства нужно: ‒ перейти в Панель управления – Оборудование и звук – Устройства и принтеры; ‒ нажать правой клавишей мыши на иконку нового устройства, выбрать вкладку Оборудование, нажать кнопку Свойства. В новом окне выбрать вкладку Драйвер, нажать кнопку Обновить. В появившемся окне выбрать Поиск драйверов на этом компьютере и прописать нужную директорию (рис. 4.4); Рис. 4.4. Иллюстрация меню Свойства • запускаете программу AVR32 Studio. Пропускаете приветственное сообщение. В правом нижнем углу расположено окно AVR32 Targets (рис. 4.5), если его нет, то можно открыть его, выбрав в меню сверху Window – Show View – AVR32 Targets. Создайте новое устройство. Нажмите правой клавишей мыши на появившееся устройство и выберите Properties (рис. 4.6). В окне, в нижней части интерфейса, во вкладке General измените название устройства на EVK1100; во вкладке «Details» выставьте следующие значения: ‒ Debugger/programmer: USB DFU; ‒ Microcontroller: UC3A0512; ‒ Clock source: Internal RC Oscillator; ‒ Board: EVK1100. 57 Рис. 4.5. Иллюстрация меню Рис. 4.6. Иллюстрация меню выбора устройства 4. Создайте проект: • когда все настройки установлены, создайте программу и загрузите ее в микроконтроллер для проверки платы. В верхнем меню выберите File – New – Project from template. В окне Project type выберите Start EVK1100 application (ES), в строке Project name введите название проекта, в меню Target MCU выберите UC3A0512 и нажмите Finish. В появившейся слева папке выберите вкладку src и откройте файл main.c; • для написания программы работы со светодиодами, которые подключены к выходному порту микроконтроллера, воспользуйтесь Atmel software framework ‒ огромной библиотекой, написанной сотрудниками компании Atmel для высокоуровневой работы с микроконтроллерами. В данной работе необходима всего лишь одна 58 функция и несколько макросов. Диоды, с которыми ведется работа, расположены в центре платы, под экраном (рис. 4.7); • обратимся к принципиальной схеме устройства, секции LEDS на седьмой странице документа EVK1100-Schematics.pdf. Всего диодов шесть штук. Каждому из них присвоен свой макрос: LED0, LED1, …, LED5. Для работы с диодами существуют две функции LED_On и LED_Off. Передавать в эти функции нужно макрос необходимого диода. Напишите простую программу, в которой актиРис. 4.7. Расположение светодиодов на плате вируйте все диоды: #include "board.h" int main(void) { LED_On(LED0); LED_On(LED1); LED_On(LED2); LED_On(LED3); LED_On(LED4); LED_On(LED5); return 0; } • Далее скомпилируйте программу. Для этого найдите в верхнем меню кнопку Build ‘Debug’ (молоточек), нажмите на нее. В случае отсутствия ошибок в программе по окончании работы компилятора в папке Debug появится файл форматом .elf, нужный для загрузки в микроконтроллер. 5. Загрузите программу. В окне AVR32 Targets нажмите правой клавишей мыши на иконку устройства, выберите Program. В строке File path введите путь к файлу формата .elf и выставьте все галочки. Если после загрузки программы устройство отключилось от ОС и 59 загорелись все диоды, то работа правильно выполнена. Для последующих действий необходимо перевести плату в режим программирования и повторить пп. 4 и 5. Задание к лабораторной работе № 6 Работа со светодиодами EVK1100 имеет в своем составе шесть светодиодов: первые четыре ‒ одинарные (зеленый цвет), последние два ‒ двойные (красный/зеленый). Расположение светодиодов на плате показано на рис. 4.8. Для работы со светодиодами используются две функции: LED_On() (для включения) и LED_Off() (для выключения). В качестве входных параметров эти функции принимают макрос (LED0, LED1, LED2, LED3, Рис. 4.8. Расположение светодиодов LED4, LED5), отвечающий за на плате Atmel EVK1100 отдельный светодиод. Пример работы со светодиодами led_blink.c представлен ниже. В функции main(), перед тем как уйти в непрекращающееся переключение светодиода, выберите светодиод с помощью функции delay_init() и макроса, отвечающего за светодиод под номером 0, по которому считается задержка. Сама задержка активизируется функцией delay_ms(), которая принимает в качестве входных параметров количество миллисекунд. led_blink.c #include "board.h" #include "delay.h" int main(void) { delay_init(FOSC0); for (;;) { delay_ms(10); LED_On(LED0); delay_ms(10); LED_Off(LED0); } } 60 Для того чтобы работать с различными компонентами, составляющими микроконтроллер, такими как АЦП, SPI и другими, необходимо добавить библиотеки из Framework. Для этого нужно в панели сверху выбрать Framework/Select Drivers/Components/Services и в появившемся окне выбрать нужные компоненты. Настройка SPI Перед тем как начать работать с дисплеем, нужно сконфигурировать интерфейс SPI, по которому происходит обмен информацией. Порядок конфигурирования SPI следующий. 1. Определение пинов для организации интерфейса. Найти список пинов можно на фрагменте принципиальной схемы, представленном на рис. 4.9. Макросы, необходимые для обозначения пинов, можно найти в библиотеке evk1100.h. Рис. 4.9. Фрагмент принципиальной схемы платы Atmel EVK1100 (список пинов) • • • • Для рассматриваемой ситуации понадобятся следующие макросы: DIP204_SPI_SCK_PIN, DIP204_SPI_SCK_FUNCTION (тактовый сигнал для интерфейса); DIP204_SPI_MISO_PIN, DIP204_SPI_MISO_FUNCTION (линия MISO); DIP204_SPI_MOSI_PIN, DIP204_SPI_MOSI_FUNCTION (линия MOSI); DIP204_SPI_NPCS_PIN, DIP204_SPI_NPCS_FUNCTION (сигнал Chip Select). 61 Определяются пины с помощью структуры gpio_map_t. 2. Настройка SPI для работы с дисплеем с помощью структуры spi_options_t. Нас интересуют только первые две опции, остальные должны оставаться неизменными: .reg – линия Chip Select, .baudrate ‒ частота тактового сигнала в герцах. 3. Инициализация функции пинов интерфейса с помощью функции gpio_enable_module(). В качестве входных параметров нужно передать определенную в п. 1 структуру и количество пинов. 4. Инициализация режима работы с помощью мастера spi_init_ master. 5. Запуск SPI с помощью функции spi_enable. 6. Сохранение настроек в регистрах с помощью spi_setupChipReg. Пример конфигурирования интерфейса SPI представлен во фрагменте программы spi_config.c. spi_config.c static const gpio_map_t DIP204_SPI_GPIO_MAP = { {DIP204_SPI_SCK_PIN, DIP204_SPI_SCK_FUNCTION }, // {DIP204_SPI_MISO_PIN, DIP204_SPI_MISO_FUNCTION}, {DIP204_SPI_MOSI_PIN, DIP204_SPI_MOSI_FUNCTION}, {DIP204_SPI_NPCS_PIN, DIP204_SPI_NPCS_FUNCTION} // }; SPI Clock. // MISO. // MOSI. Chip Select spi_options_t spiOptions = { .reg = DIP204_SPI_NPCS, .baudrate = 1000000, .bits = 8, .spck_delay = 0, .trans_delay = 0, .stay_act = 1, .spi_mode = 0, .modfdis = 1 }; gpio_enable_module(DIP204_SPI_GPIO_MAP, sizeof(DIP204_SPI_GPIO_MAP) / sizeof(DIP204_SPI_GPIO_MAP[0])); // Initialize as master spi_initMaster(DIP204_SPI, &spiOptions); 62 // Enable SPI spi_enable(DIP204_SPI); // setup chip registers spi_setupChipReg(DIP204_SPI, &spiOptions, FOSC0); Задание к лабораторной работе № 7 Работа с дисплеем Работа дисплея инициализируется с помощью функции dip204_ init(backlight_PWM, 1). Дисплей состоит из четырех строк по 20 символов. Для передвижения курсора используется функция dip204_set_ cursor_position(1,1), где первый операнд ‒ номер элемента в строке, а второй ‒ номер строки. С помощью функции dip204_write_ string("HELLO: ") можно выводить на дисплей информацию строкового типа. Если же требуется вывести информацию другого типа, используется функция dip204_printf_string(), эквивалентная функции printf() в C. Для скрытия курсора применяют функцию dip204_hide_cursor(). Ниже представлен пример вывода информации на дисплей. dip204.c int main() { static const gpio_map_t DIP204_SPI_GPIO_MAP = { {DIP204_SPI_SCK_PIN, DIP204_SPI_SCK_FUNCTION }, // SPI Clock. {DIP204_SPI_MISO_PIN, DIP204_SPI_MISO_FUNCTION}, // MISO. {DIP204_SPI_MOSI_PIN, DIP204_SPI_MOSI_FUNCTION}, // MOSI. {DIP204_SPI_NPCS_PIN, DIP204_SPI_NPCS_FUNCTION} // Chip Select }; pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP); Disable_global_interrupt(); INTC_init_interrupts(); Enable_global_interrupt(); spi_options_t spiOptions = { 63 .reg .baudrate .bits .spck_delay .trans_delay .stay_act .spi_mode .modfdis = = = = = = = = DIP204_SPI_NPCS, 1000000, 8, 0, 0, 1, 0, 1 }; gpio_enable_module(DIP204_SPI_GPIO_MAP, sizeof(DIP204_SPI_GPIO_MAP) / sizeof(DIP204_SPI_GPIO_MAP[0])); spi_initMaster(DIP204_SPI, &spiOptions); spi_enable(DIP204_SPI); spi_setupChipReg(DIP204_SPI, &spiOptions, FOSC0); dip204_init(backlight_PWM, 1); dip204_set_cursor_position(1,1); dip204_write_string("THIS IS"); dip204_set_cursor_position(1,2); dip204_write_string("MY"); dip204_set_cursor_position(1,3); dip204_write_string("FIRST"); dip204_set_cursor_position(1,4); dip204_write_string("PROGRAMM"); for (;;) { } } Задание к лабораторной работе № 8 Работа с АЦП Аналогично интерфейсу SPI настроить пины на микроконтроллере, которые выполняют функцию входа АЦП. С помощью функции adc_ configure() можно конфигурировать, а с помощью функции adc_enable() ‒ сделать возможным получение данных по каналу потенциометра. С помощью функции adc_start() активировать АЦП и с помощью функции adc_get_value() получить данные с АЦП. 64 В примере adc.c представлен код считывания данных со второго канала АЦП для потенциометра. Расположение потенциометра на плате показано на рис. 4.10. Макросы для пинов микроконтроллера и каналов АЦП (аналогично настройке SPI) можно найти в библиотеке evk1100.h. Фрагмент принципиальной схемы с расположением потенциометра представлен на рис. 4.11. Рис. 4.10. Расположение потенциометра на плате Atmel EVK1100 Рис. 4.11. Фрагмент принципиальной схемы платы Atmel EVK1100 (расположение потенциометра) adc.c int main() { static const gpio_map_t ADC_GPIO_MAP = { {AVR32_ADC_AD_1_PIN, AVR32_ADC_AD_1_FUNCTION} }; volatile avr32_adc_t *adc = &AVR32_ADC; unsigned short adc_channel_pot = 1; Disable_global_interrupt(); INTC_init_interrupts(); Enable_global_interrupt(); gpio_enable_module(ADC_GPIO_MAP, sizeof(ADC_GPIO_MAP) / sizeof(ADC_GPIO_MAP[0])); 65 adc_configure(adc); adc_enable(adc,adc_channel_pot); for (;;) { adc_start(adc); temp = adc_get_value(adc, adc_channel_pot); }; } Код программы имитации теплового датчика представлен ниже. #include #include #include #include #include #include #include #include #include "board.h" "compiler.h" "dip204.h" "intc.h" "gpio.h" "pm.h" "delay.h" "spi.h" "adc.h" volatile unsigned int temp; int main() { static const gpio_map_t DIP204_SPI_GPIO_MAP = { {DIP204_SPI_SCK_PIN, DIP204_SPI_SCK_FUNCTION }, {DIP204_SPI_MISO_PIN, DIP204_SPI_MISO_FUNCTION}, {DIP204_SPI_MOSI_PIN, DIP204_SPI_MOSI_FUNCTION}, {DIP204_SPI_NPCS_PIN, DIP204_SPI_NPCS_FUNCTION} }; static const gpio_map_t ADC_GPIO_MAP = { {AVR32_ADC_AD_1_PIN, AVR32_ADC_AD_1_FUNCTION} }; volatile avr32_adc_t *adc = &AVR32_ADC; unsigned short adc_channel_pot = 1; pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP); Disable_global_interrupt(); INTC_init_interrupts(); Enable_global_interrupt(); spi_options_t spiOptions = { 66 .reg .baudrate .bits .spck_delay .trans_delay .stay_act .spi_mode .modfdis = = = = = = = = DIP204_SPI_NPCS, 1000000, 8, 0, 0, 1, 0, 1 }; gpio_enable_module(DIP204_SPI_GPIO_MAP, sizeof(DIP204_SPI_GPIO_MAP) / sizeof(DIP204_SPI_GPIO_MAP[0])); gpio_enable_module(ADC_GPIO_MAP, sizeof(ADC_GPIO_MAP) / sizeof(ADC_GPIO_MAP[0])); spi_initMaster(DIP204_SPI, &spiOptions); spi_enable(DIP204_SPI); spi_setupChipReg(DIP204_SPI, &spiOptions, FOSC0); delay_init( FOSC0 ); dip204_init(backlight_PWM, 1); dip204_set_cursor_position(1,1); dip204_write_string("TEMP: "); adc_configure(adc); adc_enable(adc,adc_channel_pot); for (;;) { delay_ms(200); adc_start(adc); temp = adc_get_value(adc, adc_channel_pot); if (temp < 100) { LED_On(LED0);LED_Off(LED1);LED_Off(LED2);LED_Off(LED3);LED_Off(LED4); LED_Off(LED5);LED_Off(LED6);LED_Off(LED7); } else if (temp < 200) { LED_On(LED0);LED_On(LED1);LED_Off(LED2);LED_Off(LED3);LED_Off(LED4); LED_Off(LED5);LED_Off(LED6);LED_Off(LED7); } else if (temp < 300) { LED_On(LED0);LED_On(LED1);LED_On(LED2);LED_Off(LED3);LED_Off(LED4); LED_Off(LED5);LED_Off(LED6);LED_Off(LED7); } else if (temp < 400) { 67 LED_On(LED0);LED_On(LED1);LED_On(LED2);LED_On(LED3);LED_Off(LED4); LED_Off(LED5);LED_Off(LED6);LED_Off(LED7); } else if (temp < 500) { LED_On(LED0);LED_On(LED1);LED_On(LED2);LED_On(LED3);LED_On(LED4); LED_Off(LED5);LED_Off(LED6);LED_Off(LED7); } else if (temp < 600) { LED_On(LED0);LED_On(LED1);LED_On(LED2);LED_On(LED3);LED_On(LED4); LED_On(LED5);LED_Off(LED6);LED_Off(LED7); } else if (temp < 700) { LED_On(LED0);LED_On(LED1);LED_On(LED2);LED_On(LED3);LED_On(LED4); LED_On(LED5);LED_On(LED6);LED_Off(LED7); } else if (temp < 800) { LED_On(LED0);LED_On(LED1);LED_On(LED2);LED_On(LED3);LED_On(LED4); LED_On(LED5);LED_On(LED6);LED_On(LED7); } else { LED_Off(LED0);LED_Off(LED1);LED_Off(LED2);LED_Off(LED3);LED_Off (LED4);LED_Off(LED5);LED_Off(LED6);LED_Off(LED7); } dip204_set_cursor_position(7,1); dip204_printf_string("%i", temp); dip204_hide_cursor(); }; } 68 ЗАКЛЮЧЕНИЕ Развитие микропроцессоров происходит стремительными темпами. По словам Ананта Агарвала (профессора Массачусетского технологического института, основателя компании Tilera), микропроцессор – это транзистор современности. Микропроцессор ‒ основа любого устройства. В рамках лабораторного практикума студенту предоставляется возможность изучить устройство плат развития EVK1100, QT600, нейрокомпьютерный интерфейс NeuroSky MindWave, а также программные среды свободного доступа AVR Studio и Relcon. Знание аппаратной и программной частей, а также практическая работа по написанию программ, по их компиляции в HEX-файл, по программированию флеш-памяти микропроцессоров и последующей проверке на макетах работоспособности этих программ формируют у студентов уверенность в своих способностях решать реальные задачи создания микропроцессорных устройств различного назначения. 69 БИБЛИОГРАФИЧЕСКИЙ СПИСОК* 1. Бабич, Н. П. Основы цифровой схемотехники : учеб. пособие / Н. П. Бабич, И. А. Жуков. ‒ М. : ДМК Пресс, 2016. ‒ 480 с. ‒ ISBN 978-5-97060-209-6. 2. Бич, М. Микроконтроллеры семейства ХС166. Вводный курс разработчика / М. Бич, Д. Гринхилл. ‒ М. : ДМК Пресс, 2016. ‒ 200 с. ‒ (Серия «Мировая электроника»). ‒ ISBN 978-5-97060-357-4. 3. Евстифеев, А. В. Микроконтроллеры AVR семейства Tiny. Руководство пользователя / А. В. Евстифеев. ‒ М. : ДМК Пресс, 2015. ‒ 426 с. ‒ (Серия «Программируемые системы»). ‒ ISBN 978-5-97060262-1. 4. Евстифеев, А. В. Микроконтроллеры AVR семейства Mega. Руководство пользователя / А. В. Евстифеев. ‒ М. : ДМК Пресс, 2015. ‒ 588 с. ‒ (Серия «Программируемые системы»). ‒ ISBN 978-5-97060259-1. 5. Катупития, Я. Управление электронными устройствами на C++. Разработка практических приложений / Я. Катупития, К. Бентли ; пер. с англ. И. В. Бакомчева. ‒ М. : ДМК Пресс, 2016. ‒ 442 с. ‒ ISBN 978-5-97060-175-4. 6. Мартин, Т. Микроконтроллеры ARM7 семейств LPC2300/2400. Вводный курс разработчика / Т. Мартин ; пер. с англ. А. В. Евстифеева. ‒ М. : ДМК Пресс, 2016. ‒ 336 с. ‒ (Серия «Мировая электроника»). ‒ ISBN 978-5-97060-400-7. 7. Мортон, Дж. Микроконтроллеры AVR. Вводный курс / Дж. Мортон. ‒ М. : ДМК Пресс, 2015. ‒ 272 с. ‒ (Серия «Мировая электроника»). ‒ ISBN 978-5-97060-258-4. 8. Стюарт Болл, Р. Аналоговые интерфейсы микроконтроллеров / Р. Болл Стюарт. ‒ М. : Додэка-XXI, 2007. ‒ 354 с. ‒ (Серия «Программируемые системы»). ‒ ISBN 978-5-94120-142-6. 9. Фрунзе, А. В. Микроконтроллеры? Это же просто! / А. В. Фрунзе. ‒ М. : ДМК Пресс, 2015. ‒ Т. 1. ‒ 312 с. ‒ ISBN 978-5-97060-263-8. 10. Фудзисава, Ю. 32-битные микропроцессоры и микроконтроллеры SuperH / Ю. Фудзисава ; пер. с япон. А. Б. Клионского. ‒ М. : Додэка-XXI, 2009. ‒ 356 с. ‒ (Серия «Мировая электроника»). ‒ ISBN 978-5-94120-206-5. __________________ * Электронные версии изданий можно найти на сайте http://www.studentlibrary.ru. 70 ОГЛАВЛЕНИЕ ВВЕДЕНИЕ ................................................................................................ 3 Раздел 1 Лабораторные работы № 1 ‒ 3. ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРА STM32 ............................................................. 4 Раздел 2 Лабораторная работа № 4. СЕНСОРНАЯ ПАНЕЛЬ НА ОСНОВЕ МИКРОПРОЦЕССОРНОГО НАБОРА ATMEL QT600 ......................................................................................... 33 Раздел 3 Лабораторная работа № 5. НЕЙРОКОМПЬЮТЕРНЫЙ ИНТЕРФЕЙС NEUROSKY MINDWAVE ............................................. 39 Раздел 4 Лабораторные работы № 6 ‒ 8. ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРНОГО КОМПЛЕКТА EVK1100 ....................... 54 ЗАКЛЮЧЕНИЕ ....................................................................................... 69 БИБЛИОГРАФИЧЕСКИЙ СПИСОК .................................................... 70 71 Учебное издание ТУЛЯКОВ Валерий Станиславович МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ Лабораторный практикум Редактор Т. В. Евстюничева Технический редактор А. В. Родина Корректор О. В. Балашова Компьютерная верстка Е. А. Кузьминой Выпускающий редактор А. А. Амирсейидова Подписано в печать 17.10.2018. Фомат 60×84/16. Усл. печ. л. 4,19. Тираж 50 экз. Заказ Издательство Владимирского государственного университета имени Александра Григорьевича и Николая Григорьевича Столетовых. 600000, Владимир, ул. Горького, 87. 72