Моделирование фильтра


1. Постановка задачи

Смоделировать работу фильтра (Рис.1) с использованием микроконтроллера ATMEGA 8535 в среде CodeVision AVR.

Рис.1.

2. Математическая часть

фильтр микроконтроллер уравнение

2.1 Составление интегро-дифференциальных уравнений фильтра относительно переменных

Составим уравнения, описывающие работу фильтра изображённого на Рис.1. Интегро-дифференциальные уравнения составляются по законам Кирхгофа.

Т. к. известно, что для системы из n неизвестных достаточно n уравнений, то оставляем только 3 уравнения: 2 интегро-дифференциальных уравнения, а именно первое и третье, составленных по обходу контура, и последнее уравнение, составленное по узлу.

2.2 Определение независимых и зависимых начальных условий

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

Определим зависимые начальные условия:

2.3 Преобразование системы уравнений к нормальному виду (к системе линейных неоднородных дифференциальных уравнения с постоянными коэффициентами)

Дифференцируя левые и правые части составленных интегрально-дифференциальных уравнений, получим систему линейных неоднородных дифференциальных уравнений с постоянными коэффициентами

Введя дополнительные переменные, получим нормальную систему неоднородных дифференциальных уравнений с постоянными коэффициентами.

Произведём замену и получим:

2.4 Решение системы уравнений средствами пакета MathCad. Построение графика i1(t),i2(t),i3(t) решений системы

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

Для решения используется функция пакета Odesolve.

Графики решений системы уравнений (t — переменная интегрирования) получены при следующих условиях: шаг Дt (d1t) равен 0,0252 секунды, число шагов (steps) равно 100, время интегрирования (T1=d1t*steps) равно 2,52 секунды, e_(t) это единичное входное воздействие.

Графики представлены на Рис.2.

Импульс

Решение

Рис.2. Результаты интегрирования.

2.5 Построение амплитудно-частотной и фазо-частотной характеристики (АЧХ и ФЧХ) передаточной функции фильтра средствами пакета MathCad

Комплексные значения сопротивлений ветвей фильтра, зависящие от частоты, вычисляются по следующим формулам:

Рис.3. Передаточная функция фильтра

Амплитудно-частотная и фазо-частотная характеристики передаточной функции для заданного варианта значений сопротивлений, емкостей и индуктивностей, построенные средствами пакета MathCad, представлены на Рис.4.

Рис.4. Амплитудно-частотная и фазо-частотная характеристики.

3. Реализация

3.1 Получение системы разностных уравнений из системы дифференциальных уравнений

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

Разностные уравнения оформлены средствами пакета MathCad в виде процедуры

Mysolve:

3.2 Построение графиков решений системы разностных уравнений i1,i2,i3 средствами пакета MathCad (при заданном числе шагов интегрирования steps и временном интервале Дt)

Графики решений системы разностных уравнений с использованием процедуры mysolve представлены на Рис.5. Графики получены при следующих условиях: шаг Дt (d1t) равен 0,0252 секунды, число шагов (steps) равно 100, время интегрирования равно 2,52 секунды, e(t) — единичное входное воздействие.

Рис.5. Результаты интегрирования. Процедура mysolve.

3.3 Сравнение полученных решений

Сравним результаты решений системы процедурами Odesolve и mysolve путем наложения графиков решений, полученных этими процедурами. Предполагая, что стандартная процедура Odesolve дает более точное решение, чем процедура mysolve, с помощью рисунка можно оценить точность интегрирования по схеме Эйлера.

4. Описание микроконтроллера ATmega 8535

ATmega8535/L является КМОП 8- битным микроконтроллером, построенным на расширенной AVR RISC архитектуре. Используя команды, исполняемые за один машинный такт, контроллер достигает производительности в 1 MIPS на рабочей частоте 1 МГц, что позволяет разработчику эффективно оптимизировать потребление энергии за счёт выбора оптимальной производительности.

AVR ядро сочетает расширенный набор команд с 32 рабочими регистрами общего назначения. Все 32 регистра соединены с АЛУ, что обеспечивает доступ к двум независимым регистрам на время исполнения команды за один машинный такт. Благодаря выбранной архитектуре достигнута наивысшая скорость кода и соответственно высокая производительность в 10 раз превосходящая скорость соответствующего CISC микроконтроллера. ATmega8535/L содержит: 8К байт внутрисистемной программируемой FLASH памяти программ с возможностью чтения в процессе записи, 512 байтов EEPROM, 512 байтов SRAM, 32 входа-выхода общего назначения, 32 рабочих регистра, три гибких таймера/счётчика с режимом сравнения, внешние и внутренние прерывания, последовательный программируемый USART, байт ориентированный последовательный двухпроводный интерфейс, 8-канальный, 10-битный АЦП с дополнительным программируемым дифференциальным усилителем (для TQFP корпуса), программируемый Watchdog таймер с внутренним генератором, последовательный SPI порт, и шесть, выбираемых программно, режимов сбережения энергии.

В режиме Idle ЦПУ не функционирует, в то время как функционируют SRAM, таймеры/счётчики, SPI порт и система прерываний. В ATmega8535 существует специальный режим подавления шума АЦП, при этом в целом в спящем режиме функционирует только АЦП и асинхронный таймер для исключения цифровых шумов в процессе преобразования АЦП. В режиме Выкл. процессор сохраняет содержимое всех регистров, замораживает генератор тактовых сигналов, приостанавливает все другие функции кристалла до прихода внешнего прерывания или поступления внешней команды Reset. В режиме ожидания работает генератор тактовых частот, в то время как остальные блоки находятся в спящем режиме. Быстрый переход в нормальный режим работы обеспечивает малое потребление энергии. В расширенном режиме ожидания в рабочем состоянии находятся основной генератор и асинхронный таймер.

Микросхемы выпускаются при использовании Atmel технологии энергонезависимой памяти высокой плотности. Встроенная ISP FLASH позволяет перепрограммировать память программ внутрисистемно через последовательный SPI интерфейс стандартным программатором энергонезависимой памяти, или встроенной загрузочной программой работающей в ядре ЦПУ. Загрузочная программа может использовать любой интерфейс для экспорта рабочей программы во FLASH память.

Комбинация расширенной 8- и битной RISC архитектуры ЦПУ и твёрдотельной FLASH памяти обеспечивают ATmega8535 высокую гибкость и экономическую эффективность во встраиваемых системах управления.

Характеристики микроконтроллера ATmega 8535:

Архитектура микроконтроллера ATmega8535 включает в себя:

· 130 команд процессора (большинство команд — однотактные);

· 32 8-разрядных регистра общего назначения;

· максимальная производительность 16 Mips (миллионов операций в секунду);

· встроенный 2-тактный перемножитель;

· 8 кбай встроенной электрически перепрограммируемой FLASH памяти (с возможностью перепрограммирования), число циклов стирания-записи памяти не менее 10000;

· 512 байт энергозависимой памяти EEPROM;

· 512 байт внутреннего ОЗУ (SRAM);

· возможность защиты от чтения и модификации памяти программ и данных;

· возможность программирования непосредственного в системе через последовательный интерфейс SPI.

Периферия:

· 2 8-разрядных независимых таймера-счетчика;

· 1 16-битный таймер-счетчик;

· счетчик реального времени с отдельным тактовым генератором;

· 4 канал ШИМ;

· 8 каналов 10-битного АЦП;

· 2-проводный последовательный интерфейс;

· интерфейс USART;

· последовательный интерфейс SPI;

· встроенный сторожевой таймер;

· 4 порта ввода-вывода, включающие 32 линии;

Технические характеристики:

· 40(44) — выводной корпус;

· напряжение питания 4,5…5,5 В;

· тактовая частота 0 … 16 МГц.

Рис.7. Структурная схема микроконтроллера ATmega 8535:

5. Программирование в среде CodeVision AVR

5.1 Решение системы по разностной схеме

Программа (для среды CodeVision AVR), соответствующая системе разностных уравнений, написанная на языке С++, представлена ниже.

Интервал между прерываниями соответствует шагу интегрирования Дt равному 0,0252 секунды.

#include <mega8535.h>

#define ADC_VREF_TYPE 0x60

float Y1;

float EE_n, EE_n_1,EE_n_2,

X1_n, X1_n_1,X1_n_2,

X2_n, X2_n_1,X2_n_2,

X3_n, X3_n_1,X3_n_2,

X11_n, X11_n_1,X11_n_2,

X22_n, X22_n_1,X22_n_2,

X33_n, X33_n_1,X33_n_2,

R1=0.5, C1=0.2,

R2=0.2,C2=0.6,

L3=0.4,Rn=0.1,

cnt=0,dt=0.0252;

unsigned char adc_input=0;

unsigned char adc_data;

// Настройка прерываний таймера T0

interrupt [TIM0_OVF] void timer0_ovf_isr(void)

{

TCNT0=255-197; //установить частоту дискретизации

ADMUX=adc_input|ADC_VREF_TYPE;

ADCSRA|=0x40; // запуск АЦП

}

interrupt [ADC_INT] void adc_isr(void)

{

if(cnt>100){cnt=100;}

adc_data=ADCH;

Y1=ADCH;//чтение данных

Y1=Y1/51;//масштабирование

//ввод начальных условий

PORTA.1=1;PORTA.1=0;

// задание начальных условий для решения диф. ур.

// начальные условия в момент времени 0

if (cnt==0){

EE_n_2=Y1;

X1_n_2=Y1/(R1+R2);

X2_n_2=Y1/(R1+R2);

X3_n_2=0;

X22_n_2=(R2/L3)*(Y1/(R1+R2));

X33_n_2=0;

//обнуление переменных, используемых на следующих шагах

X1_n_1=0; X2_n_1=0; X3_n_1=0;

X11_n_1=0; X22_n_1=0; X33_n_1=0;

X1_n=0; X2_n=0; X3_n=0;

X11_n=0; X22_n=0; X33_n=0;

} //бит индикации начальных условий

// начальные условия в момент времени 1

if (cnt==1){

EE_n_1=Y1;

X1_n_1=X1_n_2+X11_n_2*dt;

X2_n_1=X2_n_2+X22_n_2*dt;

X3_n_1=X3_n_2+X33_n_2*dt;

//первый шаг решения диф. ур.

X11_n_1=(1/R1)*((EE_n_1-EE_n_2)/dt)-(1/(R1*C1))*X1_n_2-(R2/R1)*X22_n_2-(1/(R1*C2))*X2_n_2;

X33_n_1=X33_n_2+(R2/L3)*X22_n_2*dt+(1/(C2*L3))*X2_n_2*dt-Rn/L3*X33_n_2*dt;

X22_n_1=X11_n_1-X33_n_1;

//обнуление переменных, используемых на следующих шагах

X1_n=0; X2_n=0; X3_n=0;

X11_n=0; X22_n=0; X33_n=0;

}

// решение диф. ур. методом Эйлера

if (1<cnt<100){

EE_n=Y1;

//решение задачи

X1_n=X1_n_1+X11_n_1*dt;

X2_n=X2_n_1+X22_n_1*dt;

X3_n=X3_n_1+X33_n_1*dt;

X11_n=(1/R1)*((EE_n-EE_n_1)/dt)-(1/(R1*C1))*X1_n_1-(R2/R1)*X22_n_1-(1/(R1*C2))*X2_n_1;

X33_n=X33_n_1+(R2/L3)*X22_n_1*dt+(1/(C2*L3))*X2_n_1*dt-Rn/L3*X33_n_1*dt;

X22_n=X11_n-X33_n;

//рекурсия (присваивание старым значениям новые, чтобы их использовать на след. шаге)

EE_n_2=EE_n_1; EE_n_1=EE_n;

X3_n_2=X3_n_1; X3_n_1=X3_n;

X2_n_2=X2_n_1; X2_n_1=X2_n;

X1_n_2=X1_n_1; X1_n_1=X1_n;

X33_n_2=X33_n_1; X33_n_1=X33_n;

X22_n_2=X22_n_1; X22_n_1=X22_n;

X11_n_2=X11_n_1; X11_n_1=X11_n;

}

PORTC=X3_n*60+255/2; //вывод тока I3

PORTD=X2_n*60+255/2; //вывод тока I2

PORTB=X1_n*60+255/2; //вывод тока I1

// контроль времени интегрирования

cnt=cnt+1;

//контроль cnt от переполнения

if(cnt>100){cnt=0;}

}

void main(void)

{

// инициализация микроконтроллера

// конфигурирование порта A на ввод

PORTA=0x00;

DDRA=0xfe;

// конфигурирование порта B на вывод

PORTB=0x00;

DDRB=0xff;

// конфигурирование порта C на вывод

PORTC=0x00;

DDRC=0xff;

// конфигурирование порта D на вывод

PORTD=0x00;

DDRD=0xff;

// инициализация таймера временных интервалов

TCCR0=0x05; // установка режима таймера

TCNT0=0x00; // установка начальных значений

OCR0=0x00;

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

MCUCR=0x00;

MCUCSR=0x00;

// разрешение прерываний о т таймера

TIMSK=0x01; // установка режима таймера T0

// инициализация АЦП

// установка разрядности АЦП

// установка опорного напряжения АЦП

// установка способа запуска АЦП

ADMUX=ADC_VREF_TYPE;

ADCSRA=0x8D;

SFIOR&=0xEF;

// глобальное разрешение прерываний

#asm(«sei»)

while (1)

{ // холостой цикл };

}

}

5.2 Результаты моделирования

Решения разностных уравнений, смоделированные посредством среды VM Lab, и импортированные в MathCad представлены на рис.8 (импортированные данные были отмасштабированы) :

Рис.8. График решений, разностных уравнений посредством VM Lab

5.3 Сравнение результатов

Сравним полученные ранее результаты, с результатами моделирования в среде VM lab (красным цветом показаны результаты моделирования в VM lab, синим — результаты полученные интегрированием mysolve):

Рис.9 Сравнение результатов решений

Вывод

В результате работы для фильтра с заданными параметрами была создана модель в среде VMlab, работоспособность которой была проверена с помощью решения дифференциальных уравнений функцией odesolve, а также с помощью решения конечно-разностных уравнений функцией mysolve в среде MathCad.

Результаты моделирования фильтра в среде VMlab во время переходных процессов не соответствуют результатам, полученным функцией odesolve в виду неточности моделирования.

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

Список литературы

1. Учебное пособие. Цифровая обработка сигналов средствами микроконтроллеров семейства AVR. Е. В. Коротицкий, Ю. Е. Коротицкая

2. Конспект лекций по дисциплине: Микропроцессорная техника.

Если вы думаете скопировать часть этой работы в свою, то имейте ввиду, что этим вы только снизите уникальность своей работы! Если вы хотите получить уникальную курсовую работу, то вам нужно либо написать её своими словами, либо заказать её написание опытному автору:
УЗНАТЬ СТОИМОСТЬ ИЛИ ЗАКАЗАТЬ »