Построение цифрового фильтра

Автор работы: Пользователь скрыл имя, 29 Мая 2012 в 13:16, курсовая работа

Описание работы

Алгебраические и дифференциальные уравнения, описывающие работу фильтра, составляются на основе законов Ома Кирхгофа.
Составим уравнения фильтра по контурам и узлам, показанным на рис. 1. Интегро-дифференциальные уравнения, составленные по контурам 1), 2), 3), выглядят следующим образом

Содержание работы

1. Исходные данные 2
2. Частотные характеристики фильтра 3
3. Вывод системы дифференциальных уравнений 5
4. Решение системы средствами Odesolve 7
5. Система разностных уравнений 9
6. Решение системы разностных уравнений 10
7. Сравнение полученных решений 11
8. Разработка программы для микроконтроллера 12
9. Сравнение результатов 17
10. Выводы

Файлы: 1 файл

курсовик.docx

— 201.96 Кб (Скачать файл)

Содержание

1. Исходные данные 2

2. Частотные характеристики фильтра 3

3. Вывод системы дифференциальных уравнений 5

4. Решение системы средствами Odesolve 7

5. Система разностных уравнений 9

6. Решение системы разностных уравнений 10

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

8. Разработка программы для микроконтроллера 12

9. Сравнение результатов 17

10. Выводы 17

 

  1. Исходные  данные

 

 

 

Рис. 1 – Схема, элементы, начальные условия фильтра

 

  1. Частотные характеристики фильтра

 

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

 

 

 

Передаточная  функция по напряжению выглядит следующим  образом:

,  где

 

Отсюда получаем выражение для передаточной функции  по напряжению:

 

График передаточной функции фильтра, размещенный на комплексной плоскости, представлен  на рис. 2. АЧХ и ФЧХ передаточной функции представлены на рис. 3 и рис.4.

Графики, для  заданных вариантом задания значений сопротивлений, емкостей и индуктивностей построены средствами пакета MathCad.

Рис. 2 – График передаточной функции

Рис. 3 – АЧХ передаточной функции

 

 

Рис. 4 – ФЧХ передаточной функции

 

  1. Вывод системы  дифференциальных уравнений

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

Составим  уравнения фильтра по контурам и  узлам, показанным на рис. 1. Интегро-дифференциальные уравнения, составленные по контурам 1), 2), 3), выглядят следующим образом

 

Алгебраическое уравнение составленное по 1-му закону Кирхгофа выглядит следующим образом:

 

 

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

 
 

Зависимые начальные условия определяем из приведенной выше системы уравнений

 

 

 

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

 

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

 

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

 

 

  1. Решение системы средствами Odesolve

Для решения  полученной системы уравнений используем встроенную процедуру Odesolve.

На рис. 5 представлена процедура интегрирования полученных уравнений со следующими исходными данными:

    • R, C, L, Rn – значения величин элементов;
    • t - переменная интегрирования;
    • dlt ( ) - шаг интегрирования;
    • N - число шагов интегрирования;
    • T - время интегрирования;
    • e(t) - единичное входное воздействие.

Результат интегрирования полученных уравнений представлен на рис. 5.

Рис. 5 – Решение системы в  Mathcad

Рис. 6 – Результаты интегрирования системы. Odesolve

 

Преобразуем полученную систему уравнений в  систему разностных уравнений по методу Эйлера.

 

  1. Система разностных уравнений

 

Заменим производную в нормальной системе  дифференциальных уравнениях следующей  разностью 

,

и получим следующую  систему разностных уравнений 

 

 

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

 

  1. Решение системы  разностных уравнений

Процедура интегрирования разностных уравнений Mysolve представлена на рис.7. Результат интегрирования уравнений системы Mysolve представлена на рис. 8.

Рис.7 – Процедура интегрирования системы – MySolve

 

 

Рис. 8 – Результат интегрирования системы. MySolve

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

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

, на одной временной оси

Рис. 9 – Сравнение результатов  интегрирования системы

При заданной дискретизации по времени    погрешнось вычислений достаточно небольшая.

Для сравнения, если в качестве шага дискретизации  выбрать , то процесс интегрирования станет расходящимся (рис.10, а), что приведет к значительной погрешности вычислений (рис. 10, б).

Рис. 10 –  а) Расходящийся процесс интегрирования; б) Погрешность вычислений

  1. Разработка  программы для микроконтроллера

 

Реализуем задачу интегрирования средствами микроконтроллера.

 

#include <mega8535.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x60

#define R1      0.7

#define R2      0.3

#define Rn      0.1

#define C2      0.03

#define C3      0.2

#define L2     0.1

#define DT      0.005

 

typedef struct

{

float ee, i1, i2, i3, i22;

}Step;

Step s[2];

char init = 0;

float data;

 

// частота дискретизации

interrupt [TIM0_OVF] void timer0_ovf_isr(void)

{

    unsigned char adc_input=0;

    TCCR0=0x00; // остановить таймер

    TCNT0=255-77;//частота прерываний  1кГц

    TCCR0=0x04; // запуск таймера

    //PORTB = ~PORTB;    

    ADMUX=adc_input|ADC_VREF_TYPE;

    // старт аналого-цифрового преобразователя

    ADCSRA|=0x40;

}

 

interrupt [ADC_INT] void adc_isr(void)

{

    if( init == 0 )

    {

        //Начальная инициализация

        data = ADCH * 5.0 / 255.0;

        s[1].ee = data;

Информация о работе Построение цифрового фильтра