Система сбора данных на микроконтроллере 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

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

    курсовая работа [2,1 M], добавлен 21.02.2011

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

    курсовая работа [756,1 K], добавлен 14.01.2013

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

    курсовая работа [385,8 K], добавлен 10.01.2017

  • Обоснование выбора принципов построения. Структурная схема и ее описание. Расчет основных показателей и их характеристика. Описание функциональной и принципиальной схем. Сущность программного обеспечения и его характеристика. Анализ исходных данных.

    курсовая работа [164,9 K], добавлен 05.03.2009

  • Метод мониторинга давления с фиксированной и скользящей установкой. Дифференциальный метод сведения баланса расходов. Корреляционый метод поиска утечки жидкости из трубопровода. Спектральный анализ сигналов в системе LABVIEW. Быстрое преобразование Фурье.

    курсовая работа [5,7 M], добавлен 10.12.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.