Система сбора данных на микроконтроллере ATtiny13A
Концепция построения системы сбора данных. АЦП микроконтроллера ATmega8L: основные характеристики и принцип работы. Спектральный анализ сигналов. Быстрое преобразование Фурье. Схема сопряжения микроконтроллер-компьютер, его программное обеспечение.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 18.08.2014 |
Размер файла | 1,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
КУРСОВАЯ РАБОТА
Система сбора данных на микроконтроллере ATtiny13A
Оглавление
Введение
Глава 1. Концепция построения системы сбора данных
1.1 Роль компьютера
1.2 Роль интерфейсных устройств
1.3 Роль программного обеспечения
Глава 2. АЦП микроконтроллера ATmega8L
2.1 Основные характеристики
2.2 Принцип работы
Глава 3. Спектральный анализ сигналов
3.1 Быстрое преобразование Фурье
3.2 Обобщение метода БПФ
3.3 Метод сортировки
Глава 4. Реализация системы сбора данных
4.1 Плата сбора данных
4.2 Схема сопряжения микроконтроллер-компьютер
4.3 Программное обеспечение персонального компьютера
Заключение
Литература
Приложение 1
Введение
данный микроконтроллер сигнал
Измерение расстояния между двумя точками всегда оставалось актуальной проблемой. Развитие электроники и вычислительной техники позволило человеку упростить и ускорить расчёт своих глобальных координат, относительного смещения, скорости и т.п. Так, в настоящее время практически любой вид транспорта оснащён бортовой системой сбора данных. Подобные системы различаются лишь точностью производимых расчётов и детальностью предоставляемой информации. Они, как правило, строятся с использованием бесконтактных датчиков (элемент Холла, оптрон), которые переводят вращательное движение колеса (ротора) в серию импульсов, анализ которой даёт компьютеру представление о пройденном расстоянии, направлении движения, скорости и пр.
Эта идея была связана с простотой реализации подобных систем сбора данных на микроконтроллерах фирмы AVR. Целью настоящей курсовой работы является проектирование, изготовление и калибровка автономного бортового компьютера на микроконтроллере ATtiny13A для измерения пройденного пути.
Глава 1. Автономная система сбора данных
Задачи автоматизации или измерения можно разделить на два уровня: нижний и верхний. Они отличаются сложностью аппаратной и программной составляющих. Задачами автоматизации на нижнем уровне занимаются PLC-устройства (программируемые логические контроллеры). Условно эти контроллеры состоят из трёх частей: системы ввода данных для сбора аналоговых или цифровых сигналов с датчиков или переключателей, процессора для выполнения программ и обеспечения сетевыми функциями и системы вывода управляющих сигналов для управления машинами или переключателями [14]. Задачи верхнего уровня (обычно обработка, анализ, хранение) требуют гораздо больше вычислительных мощностей и решаются уже на персональных компьютерах или суперкомпьютерах. Здесь интерес представляет уже не структура аппаратной части, а методы обработки сигналов, заложенные в программном обеспечении.
1.1 Роль компьютера
Компьютер (обычно IBM-совместимый, настольный или портативный) как центральный орган системы сбора данных выполняет, прежде всего, функции интерфейса «человек-объект измерения». Экран любого монитора даёт гораздо больше возможностей для индикации, чем экран осциллографа, и, разумеется, экран монитора значительно больше, чем дисплей мультиметра. Клавиатура и особенно мышь удобнее в работе, чем кнопки, а принтер - даже простейший - предоставляет неоценимые возможности для выводов результатов на бумагу. Кроме того, любой ПК, пусть даже очень «древний» обладает достаточной вычислительной мощностью, необходимой для применения различных видов обработки результатов измерений: нормирование (приведение шкалы), линеаризацию, временную привязку, вычисление статистических показателей и т.д. Наконец, дисковый накопитель будет очень удобен для накопления больших объёмов данных с целью их последующей обработки, архивирования или передачи по линиям связи [4].
1.2 Роль интерфейсных устройств
Измерение физических параметров, таких как напряжение, ток, температура или давление, предполагает точную оценку аналоговых величин. Компьютер же работает исключительно с дискретными величинами. Следовательно, процесс превращения ПК в виртуальный измерительный прибор предполагает подключение аналого-цифрового преобразователя (АЦП). Компьютер может управлять АЦП либо через последовательный или параллельный порты, либо непосредственно через шины, если АЦП выполнен в виде платы расширения PCMCIA.
Первый вариант гарантирует максимальную простоту и дешевизну, а при использовании второго можно получить отличные характеристики, но только за счёт сложности и высокой цены [4].
При выборе платы сбора данных необходимо обращать внимание на динамические параметры аналого-цифрового канала (АЦК). Если взять АЦП с великолепными характеристиками, такими как разрядность, дифференциальная нелинейность, время преобразования, то на самом деле это совершенно не означает, что весь измерительный тракт будет иметь такие же характеристики. Для получения максимальных параметров, близких к заявленным производителем АЦП в реальных условиях работы с реальными сигналами, необходимо согласовать входные цепи АЦК измерительной платы с выходными каскадами измеряемого объекта. Основными задачами схемотехнического решения такой платы будут [15]:
приведение уровня сигнала от источника к динамическому диапазону АЦП;
согласование входного сопротивления;
обеспечение минимального уровня наводок;
по возможности избавиться от паразитных составляющих сигнала.
Поэтому необходимо применять специальные меры для получения максимально точных результатов измерений, такие как [15]:
экранирование АЦК;
максимальная стабилизация питания измерительного тракта;
гальваническая развязка АЦК от цифровой части устройства.
На базе одной платы сбора данных, содержащей аналого-цифровой преобразователь, можно реализовать несколько приборов, так как плата АЦП является универсальным устройством ввода аналоговой информации в компьютер. Функции различных приборов реализуются программным обеспечением [14].
1.3 Роль программного обеспечения
Область применения виртуального прибора практически полностью определяется характеристиками программного обеспечения, в то время как характеристики интерфейсных устройств в большинстве случаев вполне понятны пользователю.
Промышленные изделия подобного рода почти всегда используются при работе с более или менее развитыми графическим интерфейсом (не всегда под Windows), позволяющим выбрать какой либо режим с помощью клавиатуры или мыши через различные меню.
Помимо выполнения программ сбора данных, пользователь виртуального измерительного прибора может часто экспортировать результаты измерений в более развитые приложения, например электронные таблицы или программы построения диаграмм. Эти офисные приложения делают понятными самые абстрактные массивы данных, выделяя в них незаметные на первый взгляд тенденции или взаимные связи. И, конечно файлы цифровых данных, полученные при записи измеряемых физических параметров, могут передаваться по линиям связи с использованием модема, в частности по электронной почте и через Internet [4].
Глава 2. АЦП микроконтроллера ATmega8L
Аналого-цифровые преобразователи (АЦП) являются устройствами, которые принимают входные аналоговые сигналы и генерируют соответствующие им цифровые сигналы, пригодные для обработки микропроцессорами и другими цифровыми устройствами. АЦП входит во многие современные модели микроконтроллеров AVR.
2.1 Основные характеристики
Данный микроконтроллер имеет 6 канальный 10 разрядный АЦП последовательного приближения с несимметричными входами.
Многоканальность означает, что на входе единственного модуля АЦП установлен аналоговый мультиплексор, который может подключать этот вход к различным выводам МК для осуществления измерений нескольких независимых аналоговых величин с разнесением по времени. Несимметричность входов мультиплексора означает то, что они могут работать по отдельности (режим для измерения напряжения относительно "земли").
Из разрядности АЦП высчитывают, так называемое, количество уровней квантования, для данного МК это количество равно 210 = 1024. С этим понятием тесно связана такая величина, как разрешение АЦП -- это минимальное изменение величины аналогового сигнала, которое может быть преобразовано данным АЦП. Для ATmega8L при опорном напряжении +5В разрешение АЦП составляет: 5В/1024 ? 4,8 мВ.
Среди динамических характеристик у АЦП МК ATmega8L выделяют [2, 6]:
время преобразования: от 13 до 260 мкс;
быстродействие до 15000 SPS (samples per second - измерений в секунду);
абсолютная погрешность: ± 2 LSB (less significant bit - младший значащий бит);
интегральная нелинейность: 0,5 LSB.
2.2 Принцип работы
Тип электронного АЦП обуславливает метод приведения мгновенного значения аналогового сигнала в цифровую форму (некоторое число). Существует три основных типа АЦП: параллельные, последовательного приближения и с двойным интегрированием. Параллельные АЦП имеют наибольшую скорость преобразования; у АЦП с двойным интегрированием максимальная точность преобразования, но они менее быстрые.
В качестве компромисса между скоростью и точностью выступают АЦП последовательного приближения. АЦП данного типа содержит устройство выборки-хранения (УВХ), компаратор, вспомогательный ЦАП и регистр последовательного приближения (Рис. 1).
Рисунок 1. АЦП последовательного приближения
АЦП преобразует аналоговый сигнал в цифровой за N шагов, где N -- разрядность АЦП. На каждом шаге определяется по одному биту искомого цифрового значения, начиная от MSB (most significant bit - старший значащий бит) и заканчивая LSB (less significant bit - младший значащий бит). Последовательность действий по определению очередного бита заключается в следующем. На вспомогательном ЦАП выставляется аналоговое значение, образованное из битов, уже определённых на предыдущих шагах; бит, который должен быть определён на этом шаге, выставляется в 1, более младшие биты установлены в 0. Полученное на вспомогательном ЦАП значение сравнивается с входным аналоговым значением. Если значение входного сигнала больше значения на вспомогательном ЦАП, то определяемый бит получает значение 1, в противном случае 0 [1].
В качестве источника опорного напряжения (ИОН) для АЦП может использоваться внутренний (+2,56В) или внешний источник, напряжение питания микроконтроллера (+5В), или вывод AREF может быть программным образом подключён к выводу GND внутри ИМС (интегральной микросхемы).
Модуль АЦП может работать в двух режимах [6]:
режим одиночного преобразования, когда запуск каждого преобразования инициируется пользователем;
режим непрерывного преобразования, когда запуск преобразований выполняется непрерывно через определённые интервалы времени.
Глава 3. Спектральный анализ сигналов
Теорема Фурье гласит, что любой сигнал можно разложить в ряд по ортонормированному набору периодических функций (например, по синусам и косинусам) с частотами кратными частоте периодического сигнала. Таким образом, в основе спектрального анализа сигнала лежит поиск весовых коэффициентов (в общем случае комплексных), модуль которых соответствует доли мощности колебаний соответствующей гармоники, вносимой в общую суперпозицию всех гармоник.
3.1 Быстрое преобразование Фурье
Быстрое преобразование Фурье - это алгоритм вычисления, который успешно использует свойства периодичности тригонометрических функций для того, чтобы избежать ненужных вычислений в дискретном преобразовании Фурье (ДПФ), за счёт чего быстрее осуществляется поиск коэффициентов в разложении Фурье. Основное отличие от дискретного преобразования заключается лишь в методе вычисления числовых значений (алгоритме), а не в самой обработке сигнала. И в случае БПФ, и в случае ДПФ результат вычислений один и тот же [16]. Единственным требованием для алгоритма БПФ является размер выборки, кратный N = 2L, где L - любое положительное целое число. Наиболее распространёнными алгоритмами БПФ по основанию 2 являются: с прореживанием по времени и с прореживанием по частоте.
В данной работе реализован алгоритм БПФ по основанию 2 с прореживанием по времени (алгоритм Кули - Тьюки). Его легко получить, исследуя некоторые закономерности ДПФ. Введём так называемый поворотный коэффициент:
(1)
В этом случае в ДПФ коэффициенты Фурье для ряда значений сигнала {f0,f1,…,fN-1} выражаются соотношением:
(2)
Рассмотрим ряд сигнала из 4 значений: {f0,f1,f2,f3}. Представим преобразование Фурье в матричном виде (нормировочный коэффициент 1/N внесён в вектор-столбец Сij в правой части выражения):
(4)
Расписав поворотные коэффициенты по формуле Эйлера и определив их значения при k = 0, 1, 2,.. 9, можно построить диаграмму (Рис. 2), из которой видна закономерность повторяющихся коэффициентов.
Рисунок 2. Степенной ряд w для N=4
Подставляя численные значения в (4) получим:
(4*)
То есть значения w, начиная с w4, равны соотвествующему значению от w0 до w3. Далее перепишем матричное уравнение (4) в нестандартном виде (подобные обозначения введены для наглядности дальнейших операций):
(5)
(6)
Поменяем местами столбцы матрицы, разделив её на две группы: по чётным f0, f2 и нечётным f1, f3 индексам:
Учтём, что wk+1 = wkw1, тогда выражение (6) перепишется в виде:
(7)
Используя соотношения:
(8)
(9)
Получаем искомые коэффициенты разложения в виде вектора-столбца со значениями ячеек:
(10)
Графическое изображение алгоритма (Рис. 3) похоже на бабочку с распахнутыми крыльями, поэтому этот метод вычисления называют «бабочкой».
Рисунок 3. Граф «Бабочка» для ряда из 4 членов
Итак, на первом шаге алгоритма идёт разбиение по чётным и нечётным индексам членов ряда значений сигнала. Затем выполняется граф «бабочка», он состоит из двух ступеней, их количество равно степени двойки объёма выборки (N = 4 = 22). На каждом ступени выполняется по две «бабочки» и их общее количество неизменно. Каждой операции «бабочка» соотвествует одна операция умножения. Для сравнения: в ДПФ с выборкой {f0,f1,f2,f3} операцию умножения необходимо было бы выполнить 4Ч4 = 16 раз, а в случае БПФ всего лишь 4 раза [16].
3.2 Обобщение метода БПФ
Метод для ряда из 4 членов можно обобщить на любое другое количество членов ряда с основанием 2 (N = 2, 4, 8, 16, 32, ...) [16]. Составим ДПФ для выборки из 8 значений сигнала:
(11)
По диаграмме значений поворотных коэффициентов определяем их периодичность. Делаем соответствующие замены, группируем по чётным и нечётным индексам значений сигнала и выносим условный вектор-столбец, получаем:
(12)
Подставляя в (12) значения для поворотных коэффициентов:
(13)
(14)
Получаем выражение:
(15)
Можно заметить, что матрицы, стоящие под группой с чётными и нечётными индексами значений сигнала одинаковы. Кроме того эти матрицы одинаковы с расстановкой значений w выражения (4*). Это означает, что если осуществить БПФ в каждой из групп сигналов с чётными и нечётными индексами, то, используя его результаты, можно выразить БПФ для ряда из 8 членов (Рис.4).
Оценим количество операций умножения. Если число данных N = 2P, то число операций умножения для ДПФ равно N2, в случае БПФ - N·P/2. Если число данных не велико, то и разница в числе операций незначительна. Но, к примеру, при N = 210, для ДПФ получим ?1050000, а для БПФ достаточно ?5000 операций умножения.
Рисунок 4. Схема алгоритма БПФ для ряда из 8 членов
Итак, прогнозируя развитие процесса можно сделать следующий вывод. Если повторять метод вычисления «бабочкой» и соответствующую перестановку ряда значений сигнала, переходя из БПФ для ряда из 4 членов к БПФ для ряда из 8 членов, то, в конце концов, можно осуществить быстрое преобразование Фурье сигнала для ряда, состоящего из любого числа членов количеством, равном 2L.
3.3 Метод сортировки
Как следствие предыдущих двух пунктов, одной из главных ступеней алгоритма БПФ является метод вычисления «бабочкой». Ещё один важный момент заключается в последовательных разбиениях ряда значений сигнала на две группы и перестановке значений сигнала таким образом, чтобы в последующем прийти к методу вычислений «бабочкой».
Данная процедура называется двоично-инверсной перестановкой. Эта техника сортировки позволяет выполнить перенумерацию отсчетов, переписав номер отсчета в двоичной системе в обратном направлении (Рис.5).
Рисунок 5. Двоично-инверсная запись индекса значения сигнала
Например, f4 имеет индекс в десятичной системе счисления 410 = 1002, если же 1002 переписать справа налево, то получим 0012, то есть f4 после разбиения на группы с четными и нечетными индексами перед первой операцией «Бабочка» встанет на место f1, которая в свою очередь встанет на место f4. По аналогичному правилу поменяются местами все отсчеты, при этом некоторые останутся на месте, в частности f2, так как если 210 = 0102 переписать справа налево, то все равно останется 0102, аналогично f0, f5 и f7. Очень важно понять, что данный метод перенумерации должен применяться при записи числа в двоичной системе, состоящей из L разрядов. В приведенном примере использовалось 3 разряда двоичного числа, но если же L = 4 (N = 24 = 16), то необходимо записать число при использовании 4 разрядов. В этом случае 210 = 00102 и после переписывания получим 01002, то есть при N = 16 f2 не останется на месте, а поменяется местами с f4.
Глава 4. Реализация системы сбора данных
Отталкиваясь от основополагающих пунктов концепции построения системы сбора данных, я разбил поставленную цель на три ключевые задачи: изготовление платы сбора данных, изготовление схемы сопряжения и написание соответствующего программного обеспечения для персонального компьютера. Рассмотрим каждый пункт подробнее.
4.1 Плата сбора данных
Данное устройство реализовано на микроконтроллере ATmega8L. Он имеет 6-и канальный 10-и разрядный АЦП, время преобразования которого позволяет делать выборки до 15 kSPS (что соответствует диапазону частот входных сигналов 0 ч 7500 Гц). Также на борту этого котроллера имеется 1 Кбайт внутренней оперативной памяти и 512 байт EEPROM. Это позволяет делать выборку длинной серии, что в свою очередь снижает погрешность измерения входного сигнала.
На плате данного устройства (Рис. 6) собран LC-фильтр нижних частот (L1, C4) для стабилизации питания АЦП микроконтроллера, а также поставлен конденсатор, шунтирующий источник опорного напряжения АЦП (С3). Это включение является стандартным для данного микроконтроллера и обеспечивает минимальную ошибку при оцифровывании входного сигнала, составляющую ±2 LSB. Обратная сторона двустороннего текстолита является общим проводом аналоговой части и соединена с общим проводом цифровой части устройства в единственной точке. Это тоже является мерой подавления лишних шумов, наводящихся на аналоговые входы АЦП [2,3,6].
Также на плате имеется:
разъём SPI для внутрисхемного программирования;
разъём для подключения контроллера к персональному компьютеру по интерфейсу USART;
4 кнопки управления.
Дублированные PORTD и PORTB, аналоговые входы АЦП и разъём приёмопередатчика выполнены в виде PLS штыревых вилок.
Рисунок 6. Принципиальная схема ПСД
Входной сигнал поступает на канал АЦП ADC0. Управляющая программа микроконтроллера предусматривает работу устройства в режиме ручного запуска, осуществляемого с помощью кнопки PD2. Входной сигнал после одной выборки-преобразования представляет собой 1 байт информации, помещаемый в SRAM. По заполнению 128 ячеек (128 выборок), массив данных из оперативной памяти микроконтроллера передаётся на персональный компьютер через приёмопередатчик USART по интерфейсу RS-232. Настройка приёмопередатчика: 9600 бод, 8 бит данных, без проверки на чётность, 1 стоповый бит.
Рисунок 7. Алгоритм работы управляющей программы для микроконтроллера
Листинг управляющей программы для контроллера ПСД.
.include "m8def.inc"
.def temp1 = r16
.def temp2 = r17
.def count = r20
.def loop1 = r22
.def loop2 = r23
.equ Nexp = 128
;настройки для USART
.equ Clock = 8000000
.equ baud = 9600
.equ Speed = (Clock/(16*baud))-1
.dseg
.org 0x0070
CaptBuf: .byte Nexp
.cseg
.org 0
reset:
rjmp start
.org 0x0E
rjmp ADCIRQ
.org 0x0013
start:
;инициализация стека
ldi temp1, low(RAMEND)
out spl, temp1
ldi temp1, high(RAMEND)
out sph, temp1
;настройка USART
ldi temp1, Speed
out UBRRL, temp1
;получить адрес для буфера АЦП
ldi zl, low(CaptBuf)
ldi zh, high(CaptBuf)
ldi count, 0
;настройка ацп(опорное=питание, выравнивание по левому краю, канал 0)
ldi temp1, 0b01100000
out ADMUX, temp1
ldi temp1, 0b11101110
out ADCSR, temp1
main1:
ldi temp1, 0 ;PORTD на вывод
out ddrd, temp1
ldi temp1, 0xff
out portd, temp1
;читать PD2
in temp1, pind
sbrc temp1, 2
rjmp main1
;задержка
ldi temp1, 3
wt: rcall wait
dec temp1
brne wt
sei ;включить глобальные прерывания
main:
;сравнить счётчик с 128
cpi count, 128
brne main
cli ;приостановить глобальные прерывания
;выключение АЦП
ldi temp1, 0b01101110
out ADCSR, temp1
;двоично-инверсная перестановка
;используется X регистр адрес передатчика, Y регистр адрес приёмника
ldi count, 0
ldi adrptr, 0
ldi xl, low(CaptBuf)
ldi xh, high(Captbuf)
binv:
ldi adrptr, 0
ld temp2, x+
;вычисление указателя адреса переставленного элемента во втором буфере
mov adrptr, count
bst count, 6
bld adrptr, 0
bst count, 5
bld adrptr, 1
bst count, 4
bld adrptr, 2
bst count, 2
bld adrptr, 4
bst count, 1
bld adrptr, 5
bst count, 0
bld adrptr, 6
ldi yl, low(Bfly)
ldi yh, high(Bfly)
add yl, adrptr
adc yh, zero
st y, temp2
inc count
cpi count, 128
brne binv
;Включение USART на передачу: UDRIEE = 1, TxEN = 1
ldi temp1, 0x28
out UCSRB, temp1
ldi count, 0
ldi zl, low(CaptBuf)
ldi zh, high(CaptBuf)
;передача 256 ячеек данных по готовности буфера передатчика
transmit:
ld temp1, Z+
t1:
sbis UCSRA, UDRE
rjmp t1
out UDR, temp1
cpi count, 255
breq outtx
inc count
rjmp transmit
outtx:
;выключение USART
ldi temp1, 0
out UCSRB, temp1
;обнуление параметров
ldi count , 0
ldi zl, low(CaptBuf)
ldi zh, high(CaptBuf)
;включить АЦП
ldi temp1, 0b11101110
out ADCSR, temp1
ldi temp1, 0 ;PORTD на вывод
out ddrd, temp1
ldi temp1, 0xff
out portd, temp1
;читать PD2
main2:
in temp1, pind
sbrs temp1, 2
rjmp main2
;задержка
ldi temp1, 15
wt0: rcall wait
dec temp1
brne wt0
rjmp main1
;подпрограмма для обработки прерывания АЦП (используется 8 разрядов)
ADCIRQ:
;читаются только старшие 8 бит 10-и разрядного слова
in temp2, ADCH
st Z+, temp2
inc count
reti
;подпрограмма задержки
wait:
ldi loop2, 256
wt1: dec loop2
breq wt3
ldi loop1, 256
wt2:
dec loop1
brne wt2
rjmp wt1
wt3:
ret
Особенностью использования АЦП в моей программе является то, что результатом преобразования является двоичное 8 разрядное число. Использование неполной разрядности АЦП обусловлено неидеальным источником опорного напряжения и погрешностью, заявленной производителем: ± 2 LSB (less significant bit - младший значащий бит). Как следствие, последние два разряда содержат ошибку измерения и в дальнейших расчётах не участвуют [6, 10-12].
4.2 Схема сопряжения микроконтроллер-компьютер
Данное устройство выполнено на микросхеме FT232RL фирмы FTDI. Она представляет собой конвертер USB-USART. Драйвера для операционной системы Windows находятся в свободном доступе на сайте производителя. Эта схема выполняет двойную роль, она является программатором и служит узлом сопряжения «микроконтроллер-компьютер».
В состав данной платы (Рис. 8) вошли микросхема FT232RL, шунтирующие конденсаторы (C1, C2) и световая индикация «Rx» и «Tx» (R1, D1 и R2, D2 соответственно).
Рисунок 8. Принципиальная схема сопряжения
Разъёмы приёмопередатчика (интерфейс RS-232) выполнен в виде PLS штыревой вилки. Питание программатора берётся с USB-порта персонального компьютера.
После установки данного оборудования в системе Windows появляется дополнительный виртуальный COM-порт. Работа с ним не отличается от работы с физически реальными портами.
Программирование контроллера осуществляется через консольную программу «AVRDUDE», распространяемую по лицензии GNU GPL.
4.3 Программное обеспечение персонального компьютера
Последним узлом в моей системе сбора данных является персональный компьютер с соответствующим ПО. Оболочка для анализа собранных данных написана на языке Visual Basic 6.0. Листинг программы приведён в приложении 1.
Для работы с COM-портом VB6 использует ActiveX компонент Microsoft Comm Control 6.0, для которого пишется процедура обработки событий [7]. Основное окно программы представлено на рисунке 9. Процедура для кнопки «Читать буфер» выполняет соответствующую операцию с построением осциллограммы, спектра мощностей в логарифмическом масштабе и выводом полученных данных слева в текстовом окне, доступных для сохранения. Процедура для кнопки «Калибровка» выполняет условную функцию и используется только для отладки программы. Кнопка «Выбрать порт» позволяет в любое время сменить рабочий COM-порт, в случае неверного задания порта программа сообщает об ошибке. Форма снабжена индикациями координаты курсора на осциллограмме и спектрограмме, открытого или закрытого порта, состояния буфера приёмника и его размера в байтах.
Рисунок 9. Окно программы в режиме анализа входного сигнала с открытым COM3
После запуска программы появляется диалоговое окно для задания номера COM-порта, после чего программа инициализирует этот порт с параметрами: 9600 бод, 8 бит данных, без проверки на чётность, 1 стоповый бит, и переходит в режим ожидания поступления в буфер приёмника 256 байт информации. При поступлении данных с микроконтроллера инициализируется событие: comEvReceive, которое пересылает входные данные в массив InBuff, после чего буфер чистится, и становится доступной кнопка «Читать буфер».
На рисунке 9 представлен пример анализа гармонического сигнала (400 Гц, 2,6В). Осциллограмма получилась характерной для однополупериодного выпрямления. Это связано с тем, что входной сигнал заводился с биполярного генератора на АЦП напрямую без схемы смещения. По аналогичной причине наблюдаются искажения и в спектре сигнала.
Заключение
В ходе работы над курсовым проектом были:
изучен принцип работы АЦП МК ATmega8L;
освоен принцип работы приёмопередатчика USART;
спроектирован и собран вариант собственной платы сбора данных и платы сопряжения;
освоен метод быстрого преобразования Фурье;
виртуальное моделирование устройств производилось с помощью пакета программ Proteus VSM;
печатные платы соответствующих устройств изготавливались с использованием программы EAGLE;
управляющая программа была написана и отлажена в средах VMlab и AVR Studio;
программное обеспечение для ПК написано и отлажено в среде Visual Basic 6;
изготовленная система сбора данных протестирована и откалибрована.
Литература
Ан П. Сопряжение ПК с внешними устройствами: Пер. с англ. - М.: ДМК Пресс, 2011. - 320 с.
Баранов В.Н. Применение микроконтроллеров AVR: схемы, алгоритмы, программы, 2-е изд. испр. - М.: Издательский дом «Додэка-XXI», 2006. - 288 с.
Белов А.В. Самоучитель разработчика устройств на микроконтроллерах AVR. - СПб.: Наука и Техника, 2008. - 544 с.
Гёлль П. Как превратить персональный компьютер в измерительный комплекс: Пер. с фр. - 2-е изд., испр. - М.: ДМК Пресс, 2009. - 144 с.
Гук М. Аппаратные интерфейсы ПК. Энциклопедия. - СПб.: Питер, 2002. - 528 с.
Евстифеев А.В. Микроконтроллеры AVR семейства Mega фирмы. Руководство пользователя. - М.: Издательский дом «Додэка-XXI», 2007. - 592 с.
Кузьменко В.Г. Visual Basic 6. Самоучитель. - 2-е изд. - М.: ООО «Бином-Пресс», 2003. - 432 с.
Лапин А.А. Интерфейсы. Выбор и реализация. - М.: Техносфера, 2005. - 168 с.
Мортон Дж. Микроконтроллеры AVR. Вводный курс. /Пер. с англ. - М.: Издательский дом «Додэка-XXI», 2010. - 272 с.
Ревич Ю.В. Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера. - СПб.: БВХ-Петербург, 2008. - 384 с.
Трамперт В. AVR-RISC микроконтроллеры. /Пер. с нем. - К.: «МК-Пресс», 2006. - 464 с.
Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2009. - 240 с.
Устройство микроконтроллеров AVR [Электронный ресурс] - Режим доступа: http://www.myrobot.ru/stepbystep/mc_architecture.php - Загл. с экрана.
Журнал мир компьютерной автоматизации - Типовые аппаратные решения построения систем сбора данных [Электронный ресурс] - Режим доступа: http://www.mka.ru/?p=40005 - Загл. с экрана.
Журнал мир компьютерной автоматизации - Концепция построения виртуальной измерительной лаборатории [Электронный ресурс] - Режим доступа: http://www.mka.ru/?p=40001 - Загл. с экрана.
Юкио Сато. Без паники! Цифровая обработка сигналов. /Пер. с яп. Селиной Т.Г. М.: Додэка-XXI, 2010. - 176 с.
Приложение 1
Листинг управляющей программы персонального компьютера.
'Объявление глобальных переменных
Dim clearX(128) As Integer'входные данные из буфера
Dim X(128) As Integer'массив действительной части коэффициентов Фурье
Dim Y(128) As Integer'массив мнимой части коэффициентов Фурье
Dim butX(129) As Double'массив данных после двоично-инверсной перестановки
Dim InBuff As Variant'переменная возвращает байты из буфера порта
Dim port As String'переменная указатель буфера порта
'Процедура для нажатия кнопки «Читать буфер»
Private Sub Command1_Click()
Dim i As Integer
Command1.Enabled = False
Text3.Text = ""
If MSComm1.InBufferCount = 0 Then
Text3.Text = "empty"
Exit Sub
End If
For i = 0 To 127
butX(i) = 0
X(i)=0
Y(i)=0
clearX(i)=0
Next i
InBuff = MSComm1.Input
For i = 0 To 127
clearX(i) = CInt(InBuff(i)) - 128
Text3.Text = Text3.Text & clearX(i) & " "
Next i
Text3.Text = Text3.Text & Chr(13) & Chr(10)
Text3.Text = Text3.Text & "------------------------------" & Chr(13) & Chr(10)
For i = 0 To 127
butX(i) = CInt(InBuff(i + 128)) - 128
Text3.Text = Text3.Text & butX(i) & " "
Next i
Text3.Text = Text3.Text & Chr(13) & Chr(10)
Text3.Text = Text3.Text & "------------------------------" & Chr(13) & Chr(10)
Text1.Text = MSComm1.InBufferCount
Picture1.Cls
Picture1.Scale (0, 5.5)-(13.19, -5.5)
Picture2.Cls
Call Makelines
Picture1.DrawWidth = 2
Picture1.DrawStyle = 0
Picture1.ForeColor = &HFF&
Picture1.PSet (0, (clearX(0) * 5 / 256) + 2.5)
For i = 1 To 127
Picture1.Line -(i * 13.19 / 127, (clearX(i) * 5 / 256) + 2.5)
Next i
Call FFT
End Sub
'Процедура для кнопки «Выбрать порт»
Private Sub Command4_Click()
On Error GoTo 10
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
port = InputBox("номер порта")
MSComm1.CommPort = CByte(port)
MSComm1.PortOpen = True
Shape1.FillColor = &HC000&
MsgBox ("Port number " & MSComm1.CommPort & " opened correctly")
Text4.Text = MSComm1.CommPort
Text1.Text = MSComm1.InBufferCount
Text2.Text = MSComm1.InBufferSize
Label3.Caption = "On"
Exit Sub
10
MsgBox ("Bad port " & port)
Text4.Text = "Bad port: " & port
Shape1.FillColor = &HFF
Text1.Text = "-"
Text2.Text = "-"
Label3.Caption = "Off"
End Sub
'Процедура загрузки основного окна
Private Sub Form_Load()
Picture1.Scale (0, 5.5)-(13.19, -5.5)
Picture2.Scale (0, 1)-(4807.5, -20)
Command1.Enabled = False
On Error GoTo 15
port = InputBox("номер порта")
MSComm1.CommPort = CByte(port)
MSComm1.PortOpen = True
Text1.Text = MSComm1.InBufferCount
Text2.Text = MSComm1.InBufferSize
Text4.Text = MSComm1.CommPort
Label3.Caption = "On"
Shape1.FillColor = &HC000&
MsgBox ("Port number " & MSComm1.CommPort & " opened correctly")
Exit Sub
15
MsgBox ("Bad port or NULL:" & port)
Text4.Text = "Bad port: " & port
Shape1.FillColor = &HFF
Text1.Text = "-"
Text2.Text = "-"
End Sub
'Процедура закрытия основного окна
Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
Unload Me
End Sub
'Процедура обработки ошибок и событий элемента MS Comm Control
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
' Ошибки
Case comEventBreak
Case comEventCDTO
Case comEventCTSTO
Case comEventDSRTO
Case comEventFrame
Case comEventOverrun
Case comEventRxOver
Case comEventRxParity
Case comEventTxFull
Case comEventDCB
' События
Case comEvCD
Case comEvCTS
Case comEvDSR
Case comEvRing
Case comEvReceive
Text1.Text = MSComm1.InBufferCount
Text2.Text = MSComm1.InBufferSize
Command1.Enabled = True
Case comEvSend
Case comEvEOF
End Select
End Sub
'Процедура получения координаты курсора в области осциллограммы
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text5.Text = X
Text6.Text = Y
End Sub
'Процедура рисования координатных осей для области осциллограммы
Public Sub Makelines()
Dim i As Double
Picture1.DrawWidth = 1
Picture1.ForeColor = &H0
Picture1.DrawStyle = 0
'по оси Y
For i = -5 To 5
Picture1.Line (0, i)-(13.19, i)
Next i
'по оси Х
For i = 1 To 13.19
Picture1.Line (i, 5.5)-(i, -5.5)
Next i
Picture1.DrawStyle = 2
For i = 0.5 To 13.19
Picture1.Line (i, 5.5)-(i, -5.5)
Next i
For i = -4.5 To 4.5
Picture1.Line (0, i)-(13.19, i)
Next i
End Sub
'Процедура анализа входного сигнала методом БПФ
Public Sub FFT()
Dim l1 As Byte
Dim l2 As Byte
Dim l3 As Byte
Dim lp As Double
Dim lp2 As Double
Dim darg As Double
Dim arg As Double
Dim IW As Byte
Dim WR As Double
Dim WI As Double
Dim c As Double
Dim s As Double
Dim z(128) As Double
Const m = 7
Const N = 128
For i = 1 To 128
Y(i) = 0
butX(i) = butX(i) - 128
Next i
For l1 = 1 To m
lp = 2 ^ l1
lp2 = lp / 2
darg = -3.141592636 / lp2
arg = 0
For l2 = 1 To lp2
c = Cos(arg)
s = Sin(arg)
arg = arg + darg
For l3 = l2 To N Step lp
IW = l3 + lp2
WR = butX(IW) * c - Y(IW) * s
WI = butX(IW) * s + Y(IW) * c
butX(IW) = butX(l3) - WR
Y(IW) = Y(l3) - WI
butX(l3) = butX(l3) + WR
Y(l3) = Y(l3) + WI
Next l3
Next l2
Next l1
For i = 1 To N
butX(i) = butX(i) / N
Y(i) = Y(i) / N
Next i
Picture2.DrawWidth = 3
Picture2.ForeColor = &HFF0000
Picture2.Scale (0, 1)-(4807.5, -20)
'постоянная составляющая
z(0) = Sqr(Abs((butX(0) * butX(0)) + (Y(0) * Y(0))))
'спектр мощностей
For i = 1 To 127
Picture2.PSet (i * 4807.5 / 64, -20)
z(i) = Sqr(Abs((butX(i) * butX(i)) + (Y(i) * Y(i))))
z(i) = 10 * Log(z(i) / z(0)) / Log(10)
Picture2.Line -(i * 4807.5 / 64, z(i))
Next i
Picture2.DrawWidth = 1
Picture2.ForeColor = &H0
Picture2.DrawStyle = 2
For i = 0 To -20 Step -5
Picture2.Line (0, i)-(4807.5, i)
Next i
For i = 1 To 127
Picture2.Line (i * 4807.5 / 64, 1)-(i * 4807.5 / 64, -20)
Next i
Picture2.DrawStyle = 0
Picture2.Line (0, 0)-(4807.5, 0)
End Sub
'Процедура получения координаты курсора в области спектр анализатора
Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text7.Text = X
Text8.Text = Y
End Sub
Размещено на Allbest.ru
Подобные документы
Схема, технические параметры и принцип работы шестиканального цифрового вольтметра. Прототипы схем измерения и отображения информации, подключения клавиатуры, сбора и накопления данных. Обработка аналоговых сигналов в микроконтроллере, его инициализация.
курсовая работа [3,4 M], добавлен 12.03.2013Быстрое преобразование Фурье и особенности его применения в OFDM для формирования сигнала с множеством ортогональных несущих частот. Функции Виленкина-Крестенсона. Спектральный анализ в базисе ВКФ. Выигрыш в объеме вычислений, расчет его значений.
отчет по практике [863,8 K], добавлен 24.01.2012Структурная схема устройства. Общая характеристика микропроцессора Z80, его особенности. Описание выводов. Схемотехника и принцип работы блоков. Схема микропроцессорного блока и памяти. Программное обеспечение микроконтроллера. Расчёт блока питания.
контрольная работа [355,3 K], добавлен 07.01.2013Понятия о проводной передаче данных. Принцип работы интерфейса стандарта RS-485. Согласование линии с передатчиком и приемником. Адресация данных в протоколе Modbus RTU. Структурная организация микроконтроллера MCS-51. Вывод управляющих сигналов.
курсовая работа [952,0 K], добавлен 15.06.2013Разработка системы считывания данных с пяти четырехбитных датчиков. Проектирование структурной схемы микроконтроллера, схемы электрической принципиальной, блок-схемы работы программного обеспечения устройства. Разработка алгоритма основной программы.
контрольная работа [275,4 K], добавлен 08.01.2014Описание алгоритма работы игры и применяемых в ней функций. Составление программы работы системы управления с использованием языка С. Основные характеристики микроконтроллера, его функциональные группы. Принципиальная схема микропроцессорного модуля.
курсовая работа [756,1 K], добавлен 14.01.2013Микроконтроллер - компьютер на одной микросхеме, его предназначение для управления электронными устройствами в соответствии с заложенной программой. Среды программирования микроконтроллера, схема его подключения. Реализация программы на микроконтроллере.
курсовая работа [2,1 M], добавлен 21.02.2011Использование спектра в представлении звуков, радио и телевещании, в физике света, в обработке любых сигналов независимо от физической природы их возникновения. Спектральный анализ, основанный на классических рядах Фурье. Примеры периодических сигналов.
курсовая работа [385,8 K], добавлен 10.01.2017Обоснование выбора принципов построения. Структурная схема и ее описание. Расчет основных показателей и их характеристика. Описание функциональной и принципиальной схем. Сущность программного обеспечения и его характеристика. Анализ исходных данных.
курсовая работа [164,9 K], добавлен 05.03.2009Метод мониторинга давления с фиксированной и скользящей установкой. Дифференциальный метод сведения баланса расходов. Корреляционый метод поиска утечки жидкости из трубопровода. Спектральный анализ сигналов в системе LABVIEW. Быстрое преобразование Фурье.
курсовая работа [5,7 M], добавлен 10.12.2015