Рефераты. Устройство цифровой фильтрации на основе микроконтроллера фирмы AVR ATmega16

·                                           Режим циклического преобразования;

 - Режим преобразования по автопереключению;

 - Прерывание – на завершение преобразования;

 - Режим сохранения энергии для обеспечения понижения шумов.

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


Рис. 1.5 – Блок-схема АЦП


Данного АЦП вполне достаточно для преобразования входного аналогового сигнала в цифровой. Т.к. верхняя граница частотного диапазона, в котором изменяется сигнала, поступающий с выхода аналогового фильтра, составляет 50 Гц. При этом частота дискретизации должна быть не меньше 2fв, а АЦП может обрабатывать сигнал с fт до 200 кГц. При максимальной тактовой частоте АЦП мы получаем высокую точность обработки сигнала, которая достаточна для данных целей.

Точность АЦП оценивается относительной погрешностью δАЦП

где N- число двоичных разрядов

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


Где  это максимально е значение сигнала на аналоговом входе , а  - шкала АЦП.


1.4.2 ФНЧ с частотой среза 100 Гц

На входе АЦП необходимо поставить низкочастотный фильтр для устранений эффекта наложения спектра шумов от цифровой аппаратуры на аналоговый сигнал. ФНЧ пропускает заданный диапазон низких частот (0 до 100 Гц) и подавляет все остальные, которые не входят в этот диапазон.

В качестве ФНЧ используем фильтр Баттерворта 2-го порядка, который обеспечивает затухание вне полосы пропускания равное -40 дБ/дек. Передаточная характеристика определяется следующим выражением:


,


где  - коэффициент усиления каскада на нулевой частоте,

- частота среза ,

 - относительная частота.

Ниже приведена принципиальная схема ФНЧ, которая реализована на операционном усилителе LF_147.

Рис. 1.6 – Схема электрическая принципиальная ФНЧ


Так как нет необходимости в усиление входного сигнала, то коэффициент усиления α = 1. Частота среза равна . Зададимся значениями резистора R1 из диапазона (10-100) kОм. Рассчитаем значения остальных элементов фильтра:

 

R2 = R1 = 100 кОм,

                                    

1.4.3 ЦАП

АП выбран фирмы MAXIM. Это микросхема МАХ504, которая представляет собой последовательный 10-разряднай ЦАП напряжения. Он имеет следующее характеристики:

- Униполярное питание +5В;

- Буферизованные выходы напряжения;

- Встроенный источник опорного напряжения 2.048 В;

- Относительная погрешность ±0.5 LSB (макс)

- Гарантированная погрешность в диапазоне рабочих температур

- Гибкий диапазон вывода: 0 … Uп;

- Инициализация при подаче питания;

- Время преобразования 25мкс;

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

Функциональная схема MAX504 приведена на рис 1.8.


Рис 1.8 – Функциональная схема ЦАП MAX504

1.4.4 ФНЧ с частотой среза 75 Гц

На выходе ЦАП необходимо поставить низкочастотный фильтр для устранений эффекта наложения спектра шумов от цифровой аппаратуры на аналоговый сигнал. ФНЧ пропускает заданный диапазон низких частот 0 до 75 Гц.

Расчет данного фильтра аналогичен предыдущему фильтру ФНЧ. Передаточная характеристика определяется следующим выражением:


,


Ниже приведена принципиальная схема ФНЧ, которая реализована на операционном усилителе LF_147.

Рис. 1.6 – Схема электрическая принципиальная ФНЧ


Так как нет необходимости в усиление входного сигнала, то коэффициент усиления α = 1. Частота среза равна . Зададимся значениями резистора R1 из диапазона (10-100) kОм. Рассчитаем значения остальных элементов фильтра:


R2 = R1 = 100 кОм,

     

2. ПРОЕКТИРОВАНИЕ ПРИНЦИПИАЛЬНОЙ СХЕМЫ

УСТРОЙСТВА

2.1 Схема включения микроконтроллера


В микроконтроллере AT mega16 используется напряжение 5 В, подаваемое на вход VCC. Для питания АЦП используются вход AVCC, подключаемый к напряжению питания через фильтр низких частот. Вход AREF используется для подключения внешнего фильтрующего конденсатора для повышения помехозащищенности.

Рис.2.1 - Схема подключения питания микроконтроллера

2.2 Формирование тактовых импульсов


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

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

Внутренний RC-генератора микроконтроллеров семейства мега может работать на нескольких фиксированных частотах.

Частота работы внутреннего RC-генератора определяется значениями битов CKSEL3-0 согласно табл.1.


Табл.2 Режимы работы внутреннего RC-генератора.


В разрабатываемом устройстве высокая частота, а соответственно и высокая скорость работы не нужна, поэтому вполне достаточно будет выбрать частоту тактирования равную 2.0 МГц. Снижение частоты приведёт к уменьшению количества бессмысленных циклов обработки сигналов, а соответственно и к уменьшению энергопотребления.

2.3 Организация сброса


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

Для предотвращения сбоев работы контролера и выполнения программы при скачке напряжения, используем встроенную схему сброса при снижении питания BOD, которая отслеживает напряжение питания. Если работа этой схемы разрешена, то при снижении питания ниже некоторого уровня она переводит контроллер в состояние сброса. Когда напряжение вновь увеличится до порогового значения, запускается таймер задержки сброса. После формирования задержки tTOUT внутренний сигнал сброса снимается и происходит запуск микроконтроллера. Временные диаграммы соответствующие сбросу от схемы BOD, показаны на рис.7.


Рис.2.2 - Временные диаграммы формирования сброса

по снижению питания


Включением/выключением схемы BOD управляет конфигурационная ячейка BODEN. Для разрешения работы схемы эта ячейка должна быть запрограммирована в «0». Порог срабатывания VBOT определяется состоянием конфигурационной ячейки BODLEVEL, при «1» порог срабатывания 2.7 В, при «0» порог 4 В.

Для уменьшения вероятности ложных срабатываний порог напряжения переключения схемы имеет гистерезис, равный 50 мВ. Кроме того, срабатывание схемы BOD происходит только в том случае, если период провала больше 2 мкс.

Задание длительности задержки сброса tTOUT определяется значением конфигурационных ячеек, и включает в себя две составляющих: ts – выход на рабочий режим и стабилизация частоты тактового генератора, tr – для установки напряжения питания. При использовании встроенного RC-генератора с внутренней RC-цепочкой при включённой схеме BOD, биты конфигурации SUT1-0 установлены в значение «00», при этом ts= 6 тактов, tr –соответственно не используется.

2.4 Схемы входных и выходных устройств


На вход МК подается аналоговый сигнал с ФНЧ. Сигнал подается на один из выводов порта А, так как АЦП подключен к этим выводам. Для подключения аналогового фильтра будем использовать вывод PA1.

Данные с микроконтроллера подаются на ЦАП. Для выходных данных будем использовать выводы порта В и С. Младшие разряды обработанных данных подаются через порт В, а старшие – через порт С на ЦАП. Сигналы управления для ЦАП будут подаваться через порт D.

3. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ

3.1 Разработка алгоритма программы

Рис.3.1 – Алгоритм работы устройства

3.2 Проектирования модуля инициализации портов ввода-вывода


Порт настроим на ввод информации. Порты В и С на вывод. Мы будем использовать только младшую тетраду порта D, то инициализируем только ее на ввод информации.


void GlobalInitialize(void)

{

DDRA = 0x00; //Port A pins as output

PORTA = 0x01; //Turn ON PullUP for PortA pin

DDRB = DDR_SPI; //Port B pins as output

PORTB = 0xff; //Send 0xFF to PortB output pins

DDRC = 0x01; //Port C pins as output

PORTC = 0x01; //Send 0x03 to PortC output pins

}

3.3 Инициализация АЦП


За настройку работы АЦП отвечают три регистра:

·                    ADCSRA – регистр управления и состояния,

·                    ADMUX – регистр управления мультиплексором,

·                    SFIOR – регистр специальных функций.

Форматы регистров управления работой АЦП приведены на рис.6.


Рис.3.2 Формат регистров ADCSRA, ADMUX, SFIOR

Инициализация регистра ADCSRA:

Бит 7 ADEN =”1” включение АЦП.

Бит 6 ADSC =”1” запуск первого преобразования в режиме непрерывного преобразования.

Бит 5 ADATE позволяет выбрать режим работы АЦП

Бит 4 ADIF флаг прерывания, устанавливается при завершении преобразования

Бит 3 ADIE=”1” разрешение прерывания по завершению преобразования

Биты 2…0 ADPS2..0=”010” выбран делитель частоты на 16, тогда при тактовой частоте контроллера 2 МГц, частота тактов АЦП будет составлять 125 кГц, использование такой частоты позволяет увеличить точность преобразования.

Инициализация регистра ADMUX:

Биты 7,6 REFS1:REFS0= “11” при этом в качестве опорного напряжения используется внутренний источник с Uоп = 2,56 В.

Бит 5 ADLAR результат преобразования выравнивается по левой границе 16-ти разрядного слова

Биты 4..0 MUX4..0 управляют входным мультиплексором, а так как у нас используются входы ADC1, то эти разряды могут принимать значение “00001” .

Инициализация регистра SFIOR:

Биты 7..5 ADTS2..0=”000” определяют режим непрерывного преобразования. В процессе выполнения которого есть возможность изменять содержимое разрядов MUX2..0, что позволяет осуществлять последовательное преобразование сигналов нескольких каналов.

Бит 4 ADHSM=”0” при “1” увеличивает скорость работы АЦП, однако в этом мы не нуждаемся.

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


ADC=1024*Vin/Vref

void Init_ADC(void)

3.4 Проектирование процедуры чтения данных с АЦП


Сигнал со входа АЦП преобразовывается по установке бита ADSC в 1. Затем ожидается выставления флага конца преобразования ADIF в 1. После того, как ADIF = 1 данные сохраняются во временной переменной.

unsigned int ReadADC()

CLRBIT(ADCSRA,ADEN); //выключить АЦП

3.5 Проектирование процедуры работы интегратора


unsigned int Integrator(unsigned int in)

{

static unsigned int KH=8;

static unsigned int KL=10; //K=0.8 for economy memory pri uveli4enii to4nosti

static unsigned int x_in, x1, x2[2], x3[2], x4, y_out;

x_in=0;

x2[0]=0; x2[1]=0; //init old state

x3[0]=0; x3[1]=0; //init old state

y_out=0;

//your start variable here

x_in=in;

x1=x_in;

x2[1]=x1+x3[0];

x3[1]=x1+x2[0];

x4=x2[1]*KH/KL;

//save old state

x3[0]=x3[1];

x2[0]=x2[1];

//==============

return x4;

}

3.6 Процедура передачи данных ЦАП


Так как ЦАП имеет последовательный вход, то данные необходимо передавать посылками. Для этого используется интерфейс SPI (Serial Peripheral Interface) - полнодуплексный скоростной синхронный трёхпроводной интерфейс.


Рис.3.2- Конфигурация SPI


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

За работу интерфейса отвечают 3 регистра:

·        Регистр SPCR - регистр управления


SPIE  SPE   DORD        MSTR        CPOL         CPHA         SPR1 SPR0


SPIE - разрешение прерывания по окончанию передачи.

SPE - SPI включен. Если установлен этот бит, то выводы #SS, MISO, MOSI и SCK работают как выводы SPI, иначе - как простые выводы порта.

DORD - направление передачи данных. Если установлен, то передача идёт с младшего бита, если сброшен - со старшего.

MSTR - если установлен, контроллер работает как Master, если сброшен - как Slave. Управляется также выводом #SS, если он настроен на ввод - при подаче "0" на #SS бит MSTR сбрасывается.

CPOL - определяет уровень на выходе SCK в режиме ожидания - SCK = CPOL

CPHA - если установлен, передача и приём бита производится по обратному фронту, если сброшен - по прямому.

SPR1, SPR0 - делитель тактовой частоты (F - частота генератора контроллера).


SPR1 SPR0 Частота

0        0        F/4   

0        1        F/16  

1        0        F/64  

1        1        F/128


·        Регистр SPSR - регистр состояния

·        Регистр SPDR - регистр данных

void Init_SPI(void)

void SendSPI(unsigned int x)

{

SPDR = x; // SPI

while(!SendDataReady); // ֏

SendDataReady = FALSE; //è â 0

}

interrupt [SPI_STC] void SPI_interrupt(void)

{

SendDataReady = TRUE;

}

3.7 Процедура main( )


void main(void)

{

unsigned int ADC_conv;

unsigned int y_out;

PORTC = 0x01;

GlobalInitialize();

Init_ADC();

Init_SPI();

while(1)

{

PORTC = 0x00;

ADC_conv=ReadADC();

y_out=Integrator(ADC_conv);

SendSPI(y_out); //ïåðåäà÷à äàííûõ ÀÖÏ

delay_us(6); //for ADC

}

}

Заключение


В курсовой работе разработано устройство цифровой фильтрации на основе микроконтроллера фирмы AVR ATmega16. Разработанный фильтр пропускает сигнал в диапазоне от 0 до 200 Гц. Данное устройство обладает высокой точностью преобразования. Также имеет малые габариты, вес, и обладает низким энергопотреблением.

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


Страницы: 1, 2



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.