Система сбора данных на микроконтроллере ATtiny13A

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

Система сбора данных на микроконтроллере ATtiny13A














КУРСОВАЯ РАБОТА

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

Компьютер (обычно IBM-совместимый, настольный или портативный) как центральный орган системы сбора данных выполняет, прежде всего, функции интерфейса «человек-объект измерения». Экран любого монитора даёт гораздо больше возможностей для индикации, чем экран осциллографа, и, разумеется, экран монитора значительно больше, чем дисплей мультиметра. Клавиатура и особенно мышь удобнее в работе, чем кнопки, а принтер - даже простейший - предоставляет неоценимые возможности для выводов результатов на бумагу. Кроме того, любой ПК, пусть даже очень «древний» обладает достаточной вычислительной мощностью, необходимой для применения различных видов обработки результатов измерений: нормирование (приведение шкалы), линеаризацию, временную привязку, вычисление статистических показателей и т.д. Наконец, дисковый накопитель будет очень удобен для накопления больших объёмов данных с целью их последующей обработки, архивирования или передачи по линиям связи [4].

.2 Роль интерфейсных устройств

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

Первый вариант гарантирует максимальную простоту и дешевизну, а при использовании второго можно получить отличные характеристики, но только за счёт сложности и высокой цены [4].

При выборе платы сбора данных необходимо обращать внимание на динамические параметры аналого-цифрового канала (АЦК). Если взять АЦП с великолепными характеристиками, такими как разрядность, дифференциальная нелинейность, время преобразования, то на самом деле это совершенно не означает, что весь измерительный тракт будет иметь такие же характеристики. Для получения максимальных параметров, близких к заявленным производителем АЦП в реальных условиях работы с реальными сигналами, необходимо согласовать входные цепи АЦК измерительной платы с выходными каскадами измеряемого объекта. Основными задачами схемотехнического решения такой платы будут [15]:

приведение уровня сигнала от источника к динамическому диапазону АЦП;

согласование входного сопротивления;

обеспечение минимального уровня наводок;

по возможности избавиться от паразитных составляющих сигнала.

Поэтому необходимо применять специальные меры для получения максимально точных результатов измерений, такие как [15]:

экранирование АЦК;

максимальная стабилизация питания измерительного тракта;

гальваническая развязка АЦК от цифровой части устройства.

На базе одной платы сбора данных, содержащей аналого-цифровой преобразователь, можно реализовать несколько приборов, так как плата АЦП является универсальным устройством ввода аналоговой информации в компьютер. Функции различных приборов реализуются программным обеспечением [14].

.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 Принцип работы

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

В качестве компромисса между скоростью и точностью выступают АЦП последовательного приближения. АЦП данного типа содержит устройство выборки-хранения (УВХ), компаратор, вспомогательный ЦАП и регистр последовательного приближения (Рис. 1).

Рисунок 1. АЦП последовательного приближения

АЦП преобразует аналоговый сигнал в цифровой за N шагов, где N - разрядность АЦП. На каждом шаге определяется по одному биту искомого цифрового значения, начиная от MSB (most significant bit - старший значащий бит) и заканчивая LSB (less significant bit - младший значащий бит). Последовательность действий по определению очередного бита заключается в следующем. На вспомогательном ЦАП выставляется аналоговое значение, образованное из битов, уже определённых на предыдущих шагах; бит, который должен быть определён на этом шаге, выставляется в 1, более младшие биты установлены в 0. Полученное на вспомогательном ЦАП значение сравнивается с входным аналоговым значением. Если значение входного сигнала больше значения на вспомогательном ЦАП, то определяемый бит получает значение 1, в противном случае 0 [1].

В качестве источника опорного напряжения (ИОН) для АЦП может использоваться внутренний (+2,56В) или внешний источник, напряжение питания микроконтроллера (+5В), или вывод AREF может быть программным образом подключён к выводу GND внутри ИМС (интегральной микросхемы).

Модуль АЦП может работать в двух режимах [6]:

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

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

Глава 3. Спектральный анализ сигналов

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


Быстрое преобразование Фурье - это алгоритм вычисления, который успешно использует свойства периодичности тригонометрических функций для того, чтобы избежать ненужных вычислений в дискретном преобразовании Фурье (ДПФ), за счёт чего быстрее осуществляется поиск коэффициентов в разложении Фурье. Основное отличие от дискретного преобразования заключается лишь в методе вычисления числовых значений (алгоритме), а не в самой обработке сигнала. И в случае БПФ, и в случае ДПФ результат вычислений один и тот же [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].

.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 Метод сортировки

Как следствие предыдущих двух пунктов, одной из главных ступеней алгоритма БПФ является метод вычисления «бабочкой». Ещё один важный момент заключается в последовательных разбиениях ряда значений сигнала на две группы и перестановке значений сигнала таким образом, чтобы в последующем прийти к методу вычислений «бабочкой».

Данная процедура называется двоично-инверсной перестановкой. Эта техника сортировки позволяет выполнить перенумерацию отсчетов, переписав номер отсчета в двоичной системе в обратном направлении (Рис.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;

кнопки управления.

Дублированные PORTD и PORTB, аналоговые входы АЦП и разъём приёмопередатчика выполнены в виде PLS штыревых вилок.

Рисунок 6. Принципиальная схема ПСД

Входной сигнал поступает на канал АЦП ADC0. Управляющая программа микроконтроллера предусматривает работу устройства в режиме ручного запуска, осуществляемого с помощью кнопки PD2. Входной сигнал после одной выборки-преобразования представляет собой 1 байт информации, помещаемый в SRAM. По заполнению 128 ячеек (128 выборок), массив данных из оперативной памяти микроконтроллера передаётся на персональный компьютер через приёмопередатчик USART по интерфейсу RS-232. Настройка приёмопередатчика: 9600 бод, 8 бит данных, без проверки на чётность, 1 стоповый бит.

Рисунок 7. Алгоритм работы управляющей программы для микроконтроллера

Листинг управляющей программы для контроллера ПСД.

.include "m8def.inc"

.def temp1 = r16

.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: .byte Nexp

.cseg

.org 0:

rjmp start

.org 0x0EADCIRQ

.org 0x0013:

;инициализация стекаtemp1, low(RAMEND)spl, temp1temp1, high(RAMEND)sph, temp1

;настройка USARTtemp1, SpeedUBRRL, temp1

;получить адрес для буфера АЦПzl, low(CaptBuf)zh, high(CaptBuf)count, 0

;настройка ацп(опорное=питание, выравнивание по левому краю, канал 0)temp1, 0b01100000 ADMUX, temp1temp1, 0b11101110ADCSR, temp1:temp1, 0 ;PORTD на выводddrd, temp1temp1, 0xffportd, temp1

;читать PD2temp1, pindtemp1, 2main1

;задержкаtemp1, 3: rcall waittemp1wt;включить глобальные прерывания:

;сравнить счётчик с 128count, 128main;приостановить глобальные прерывания

;выключение АЦПtemp1, 0b01101110ADCSR, temp1

;двоично-инверсная перестановка

;используется X регистр адрес передатчика, Y регистр адрес приёмникаcount, 0adrptr, 0xl, low(CaptBuf)xh, high(Captbuf):adrptr, 0temp2, x+

;вычисление указателя адреса переставленного элемента во втором буфереadrptr, countcount, 6adrptr, 0count, 5adrptr, 1count, 4adrptr, 2count, 2adrptr, 4count, 1adrptr, 5

bst count, 0adrptr, 6yl, low(Bfly)

ldi yh, high(Bfly)yl, adrptryh, zeroy, temp2countcount, 128binv

;Включение USART на передачу: UDRIEE = 1, TxEN = 1temp1, 0x28 UCSRB, temp1count, 0zl, low(CaptBuf)zh, high(CaptBuf)

;передача 256 ячеек данных по готовности буфера передатчика:temp1, Z+:UCSRA, UDREt1UDR, temp1count, 255outtxcounttransmit:

;выключение USARTtemp1, 0UCSRB, temp1

;обнуление параметровcount , 0zl, low(CaptBuf)zh, high(CaptBuf)

;включить АЦПtemp1, 0b11101110ADCSR, temp1temp1, 0 ;PORTD на выводddrd, temp1temp1, 0xffportd, temp1

;читать PD2:temp1, pindtemp1, 2main2

;задержкаtemp1, 15: rcall waittemp1wt0main1

;подпрограмма для обработки прерывания АЦП (используется 8 разрядов):

;читаются только старшие 8 бит 10-и разрядного словаtemp2, ADCH Z+, temp2count

;подпрограмма задержки:loop2, 256: dec loop2wt3loop1, 256: loop1wt2wt1:

Особенностью использования АЦП в моей программе является то, что результатом преобразования является двоичное 8 разрядное число. Использование неполной разрядности АЦП обусловлено неидеальным источником опорного напряжения и погрешностью, заявленной производителем: ± 2 LSB (less significant bit - младший значащий бит). Как следствие, последние два разряда содержат ошибку измерения и в дальнейших расчётах не участвуют [6, 10-12].

.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.

.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 с.

Евстифеев А.В. Микроконтроллеры 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

Листинг управляющей программы персонального компьютера.

'Объявление глобальных переменныхclearX(128) As Integer'входные данные из буфераX(128) As Integer'массив действительной части коэффициентов ФурьеY(128) As Integer'массив мнимой части коэффициентов ФурьеbutX(129) As Double'массив данных после двоично-инверсной перестановкиInBuff As Variant'переменная возвращает байты из буфера портаport As String'переменная указатель буфера порта

'Процедура для нажатия кнопки «Читать буфер»Sub Command1_Click()i As Integer.Enabled = False.Text = ""MSComm1.InBufferCount = 0 Then.Text = "empty"SubIfi = 0 To 127(i) = 0(i)=0(i)=0(i)=0i= MSComm1.Inputi = 0 To 127(i) = CInt(InBuff(i)) - 128.Text = Text3.Text & clearX(i) & " "i.Text = Text3.Text & Chr(13) & Chr(10).Text = Text3.Text & "------------------------------" & Chr(13) & Chr(10)i = 0 To 127(i) = CInt(InBuff(i + 128)) - 128.Text = Text3.Text & butX(i) & " "i.Text = Text3.Text & Chr(13) & Chr(10).Text = Text3.Text & "------------------------------" & Chr(13) & Chr(10)

Text1.Text = MSComm1.InBufferCount.Cls

Picture1.Scale (0, 5.5)-(13.19, -5.5).ClsMakelines.DrawWidth = 2.DrawStyle = 0.ForeColor = &HFF&.PSet (0, (clearX(0) * 5 / 256) + 2.5)i = 1 To 127.Line -(i * 13.19 / 127, (clearX(i) * 5 / 256) + 2.5)iFFTSub

'Процедура для кнопки «Выбрать порт»Sub Command4_Click()Error GoTo 10MSComm1.PortOpen = True Then.PortOpen = FalseIf= InputBox("номер порта").CommPort = CByte(port).PortOpen = True.FillColor = &HC000&("Port number " & MSComm1.CommPort & " opened correctly").Text = MSComm1.CommPort.Text = MSComm1.InBufferCount.Text = MSComm1.InBufferSize.Caption = "On"Sub

("Bad port " & port).Text = "Bad port: " & port.FillColor = &HFF.Text = "-".Text = "-".Caption = "Off"Sub

'Процедура загрузки основного окнаSub Form_Load().Scale (0, 5.5)-(13.19, -5.5).Scale (0, 1)-(4807.5, -20).Enabled = FalseError GoTo 15= InputBox("номер порта").CommPort = CByte(port).PortOpen = True.Text = MSComm1.InBufferCount .Text = MSComm1.InBufferSize .Text = MSComm1.CommPort.Caption = "On".FillColor = &HC000&("Port number " & MSComm1.CommPort & " opened correctly")Sub

("Bad port or NULL:" & port).Text = "Bad port: " & port.FillColor = &HFF.Text = "-".Text = "-"Sub

'Процедура закрытия основного окнаSub Form_Unload(Cancel As Integer)MSComm1.PortOpen = True Then.PortOpen = FalseIfMeSub

'Процедура обработки ошибок и событий элемента MS Comm ControlSub MSComm1_OnComm()

Select Case MSComm1.CommEvent

' ОшибкиcomEventBreakcomEventCDTOcomEventCTSTOcomEventDSRTOcomEventFramecomEventOverruncomEventRxOvercomEventRxParitycomEventTxFullcomEventDCB

' СобытияcomEvCDcomEvCTS comEvDSRcomEvRingcomEvReceive.Text = MSComm1.InBufferCount.Text = MSComm1.InBufferSize.Enabled = TruecomEvSendcomEvEOFSelect

End Sub

'Процедура получения координаты курсора в области осциллограммыSub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single).Text = X.Text = YSub

'Процедура рисования координатных осей для области осциллограммыSub Makelines()i As Double.DrawWidth = 1.ForeColor = &H0.DrawStyle = 0

'по оси Yi = -5 To 5.Line (0, i)-(13.19, i)i

'по оси Хi = 1 To 13.19.Line (i, 5.5)-(i, -5.5)i

Picture1.DrawStyle = 2i = 0.5 To 13.19

Picture1.Line (i, 5.5)-(i, -5.5)ii = -4.5 To 4.5.Line (0, i)-(13.19, i)iSub

'Процедура анализа входного сигнала методом БПФSub FFT()l1 As Bytel2 As Bytel3 As Bytelp As Doublelp2 As Doubledarg As Doublearg As DoubleIW As ByteWR As DoubleWI As Doublec As Doubles As Doublez(128) As Doublem = 7N = 128i = 1 To 128(i) = 0(i) = butX(i) - 128il1 = 1 To m= 2 ^ l1= lp / 2= -3.141592636 / lp2= 0l2 = 1 To lp2= Cos(arg)= Sin(arg)= arg + dargl3 = l2 To N Step lp= l3 + lp2= butX(IW) * c - Y(IW) * s= butX(IW) * s + Y(IW) * c(IW) = butX(l3) - WR(IW) = Y(l3) - WI(l3) = butX(l3) + WR(l3) = Y(l3) + WIl3l2l1i = 1 To N(i) = butX(i) / N(i) = Y(i) / Ni.DrawWidth = 3.ForeColor = &HFF0000.Scale (0, 1)-(4807.5, -20)

'постоянная составляющая(0) = Sqr(Abs((butX(0) * butX(0)) + (Y(0) * Y(0))))

'спектр мощностейi = 1 To 127.PSet (i * 4807.5 / 64, -20)(i) = Sqr(Abs((butX(i) * butX(i)) + (Y(i) * Y(i))))(i) = 10 * Log(z(i) / z(0)) / Log(10).Line -(i * 4807.5 / 64, z(i))i.DrawWidth = 1.ForeColor = &H0.DrawStyle = 2i = 0 To -20 Step -5.Line (0, i)-(4807.5, i)ii = 1 To 127.Line (i * 4807.5 / 64, 1)-(i * 4807.5 / 64, -20)i.DrawStyle = 0.Line (0, 0)-(4807.5, 0)Sub

'Процедура получения координаты курсора в области спектр анализатораSub Picture2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single).Text = X.Text = YSub

Похожие работы на - Система сбора данных на микроконтроллере ATtiny13A

 

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