Расчёт линейных цепей. RC фильтр

Автор работы: Пользователь скрыл имя, 25 Апреля 2016 в 01:31, курсовая работа

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

Цель работы состоит в изучении гармонических процессов в линейных цепях, частотных характеристик четырехполюсников, освоении методов расчета и проектирования электрических цепей и современных средств вычислительной и экспериментальной техники. Также получить навык написания программ на языке С++ в интегрированной среде разработки Qt Creator, используя библиотеку Qt 5, при создании программы для построения векторных диаграмм.

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

Введение…………………………………………………………………………...3
1. Техническое задание…………………………………………………….4
2. Расчет токов и напряжений……………………………………………..4
3. Построение векторной диаграммы……………..………………………5
4.Моделирование…………………………………………………………...8
5. Частотные характеристики……………………………………………..10
5.1. Расчёт…………………………………………………………...10
5.2. Эксперимент……………………………………………………13
6. Исследовательская часть………………………………….…………....14
6.1. Постановка задачи. ……………………………………………14
6.2. Краткое описание Qt…………………….……………………..14
6.3. Описание программы «ВектоР»…………………………...….14
6.4. Исходный код программы……………………………………..15
Заключение………………………………………………………………..24

Файлы: 1 файл

Курсовая отц.docx

— 3.34 Мб (Скачать файл)

    connect(ui->zoom,SIGNAL(sliderMoved(int)),this,SLOT(pushBtn()));

    ui->zoom->setMaximum(1000);

    c = false;

    n=0;

}

 

Widget::~Widget()

{

    delete ui;

}

 

void Widget::paintEvent(QPaintEvent *) {

    QPainter p(this);

    p.setPen(QPen(Qt::black,1,Qt::SolidLine));

    p.drawLine(0,height()/2,width(),height()/2);

    QPainter a(this);

    a.setPen(QPen(Qt::black,1,Qt::SolidLine));

    a.drawLine(width()/2,0,width()/2,height());

    QPainter t1(this);

    QPainter v1(this);

    v1.setPen(QPen(Qt::blue,2,Qt::SolidLine));

    t1.setPen(QPen(Qt::blue));

    t1.setFont(QFont("Arial",12));

    for(int i=0; i<=14; i++)

    {

        V[i].setX(width()/2+x[i]*k);

        V[i].setY(height()/2-y[i]*k);

        t1.drawText(V[i],txt[i]);

        v1.drawLine(width()/2,height()/2,width()/2+x[i]*k,height()/2-y[i]*k);

        v1.drawEllipse(V[i],2,2);

    }

    QPainter v2(this);

    v2.setPen(QPen(Qt::gray,1,Qt::SolidLine));

    v2.setFont(QFont("Arial",12));

    Rez.setX(width()/2+(x2*k));

    Rez.setY(height()/2-(y2*k));

    for(int i=1; i<=n-1; i++)

    {

        v2.drawLine(N[i-1],N[i]);

        v2.drawEllipse(N[i],2,2);

    }

    v2.setPen(QPen(Qt::gray,2,Qt::SolidLine));

    v2.drawLine(width()/2,height()/2,width()/2+(x2*k),height()/2-(y2*k));

    v2.drawEllipse(Rez,2,2);

    v2.drawText(N[n-1],"rez");

}

void Widget::pushBtn(){

    k=ui->zoom->value()*0.01;

    x[0]=ui->real1->text().toDouble();

    y[0]=ui->um1->text().toDouble();

    x[1]=ui->real2->text().toDouble();

    y[1]=ui->um2->text().toDouble();

    x[2]=ui->real3->text().toDouble();

    y[2]=ui->um3->text().toDouble();

    x[3]=ui->real4->text().toDouble();

    y[3]=ui->um4->text().toDouble();

    x[4]=ui->real5->text().toDouble();

    y[4]=ui->um5->text().toDouble();

    x[5]=ui->real6->text().toDouble();

    y[5]=ui->um6->text().toDouble();

    x[6]=ui->real7->text().toDouble();

    y[6]=ui->um7->text().toDouble();

    x[7]=ui->real8->text().toDouble();

    y[7]=ui->um8->text().toDouble();

    x[8]=ui->real9->text().toDouble();

    y[8]=ui->um9->text().toDouble();

    x[9]=ui->real10->text().toDouble();

    y[9]=ui->um10->text().toDouble();

    x[10]=ui->real11->text().toDouble();

    y[10]=ui->um11->text().toDouble();

    x[11]=ui->real12->text().toDouble();

    y[11]=ui->um12->text().toDouble();

    x[12]=ui->real13->text().toDouble();

    y[12]=ui->um13->text().toDouble();

    x[13]=ui->real14->text().toDouble();

    y[13]=ui->um14->text().toDouble();

    x[14]=ui->real15->text().toDouble();

    y[14]=ui->um15->text().toDouble();

    tmp.setNum(ui->zoom->value());

    ui->label->setText(tmp);

    txt[0]=ui->name1->text();

    txt[1]=ui->name2->text();

    txt[2]=ui->name3->text();

    txt[3]=ui->name4->text();

    txt[4]=ui->name5->text();

    txt[5]=ui->name6->text();

    txt[6]=ui->name7->text();

    txt[7]=ui->name8->text();

    txt[8]=ui->name9->text();

    txt[9]=ui->name10->text();

    txt[10]=ui->name11->text();

    txt[11]=ui->name12->text();

    txt[12]=ui->name13->text();

    txt[13]=ui->name14->text();

    txt[14]=ui->name15->text();

    n=0;

    if(ui->vec1->checkState())

    {

        if(c)

        {

            x2+=ui->real1->text().toDouble();

            y2+=ui->um1->text().toDouble();

 

        }

        else

        {

            x1=ui->real1->text().toDouble();

            y1=ui->um1->text().toDouble();

            x2=ui->real1->text().toDouble();

            y2=ui->um1->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec2->checkState())

    {

        if(c)

        {

            x2+=ui->real2->text().toDouble();

            y2+=ui->um2->text().toDouble();

        }

        else

        {

            x1=ui->real2->text().toDouble();

            y1=ui->um2->text().toDouble();

            x2=ui->real2->text().toDouble();

            y2=ui->um2->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec3->checkState())

    {

        if(c)

        {

            x2+=ui->real3->text().toDouble();

            y2+=ui->um3->text().toDouble();

 

        }

        else

        {

            x1=ui->real3->text().toDouble();

            y1=ui->um3->text().toDouble();

            x2=ui->real3->text().toDouble();

            y2=ui->um3->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec4->checkState())

    {

        if(c)

        {

            x2+=ui->real4->text().toDouble();

            y2+=ui->um4->text().toDouble();

        }

        else

        {

            x1=ui->real4->text().toDouble();

            y1=ui->um4->text().toDouble();

            x2=ui->real4->text().toDouble();

            y2=ui->um4->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec5->checkState())

    {

        if(c)

        {

            x2+=ui->real5->text().toDouble();

            y2+=ui->um5->text().toDouble();

        }

        else

        {

            x1=ui->real5->text().toDouble();

            y1=ui->um5->text().toDouble();

            x2=ui->real5->text().toDouble();

            y2=ui->um5->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec6->checkState())

    {

        if(c)

        {

            x2+=ui->real6->text().toDouble();

            y2+=ui->um6->text().toDouble();

        }

        else

        {

            x1=ui->real6->text().toDouble();

            y1=ui->um6->text().toDouble();

            x2=ui->real6->text().toDouble();

            y2=ui->um6->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec7->checkState())

    {

        if(c)

        {

            x2+=ui->real7->text().toDouble();

            y2+=ui->um7->text().toDouble();

        }

        else

        {

            x1=ui->real7->text().toDouble();

            y1=ui->um7->text().toDouble();

            x2=ui->real7->text().toDouble();

            y2=ui->um7->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec8->checkState())

    {

        if(c)

        {

            x2+=ui->real8->text().toDouble();

            y2+=ui->um8->text().toDouble();

        }

        else

        {

            x1=ui->real8->text().toDouble();

            y1=ui->um8->text().toDouble();

            x2=ui->real8->text().toDouble();

            y2=ui->um8->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec9->checkState())

    {

        if(c)

        {

            x2+=ui->real9->text().toDouble();

            y2+=ui->um9->text().toDouble();

        }

        else

        {

            x1=ui->real9->text().toDouble();

            y1=ui->um9->text().toDouble();

            x2=ui->real9->text().toDouble();

            y2=ui->um9->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec10->checkState())

    {

        if(c)

        {

            x2+=ui->real10->text().toDouble();

            y2+=ui->um10->text().toDouble();

 

        }

        else

        {

            x1=ui->real10->text().toDouble();

            y1=ui->um10->text().toDouble();

            x2=ui->real10->text().toDouble();

            y2=ui->um10->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec11->checkState())

    {

        if(c)

        {

            x2+=ui->real11->text().toDouble();

            y2+=ui->um11->text().toDouble();

        }

        else

        {

            x1=ui->real11->text().toDouble();

            y1=ui->um11->text().toDouble();

            x2=ui->real11->text().toDouble();

            y2=ui->um11->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec12->checkState())

    {

        if(c)

        {

            x2+=ui->real12->text().toDouble();

            y2+=ui->um12->text().toDouble();

 

        }

        else

        {

            x1=ui->real12->text().toDouble();

            y1=ui->um12->text().toDouble();

            x2=ui->real12->text().toDouble();

            y2=ui->um12->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec13->checkState())

    {

        if(c)

        {

            x2+=ui->real13->text().toDouble();

            y2+=ui->um13->text().toDouble();

        }

        else

        {

            x1=ui->real13->text().toDouble();

            y1=ui->um13->text().toDouble();

            x2=ui->real13->text().toDouble();

            y2=ui->um13->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec14->checkState())

    {

        if(c)

        {

            x2+=ui->real14->text().toDouble();

            y2+=ui->um14->text().toDouble();

        }

        else

        {

            x1=ui->real14->text().toDouble();

            y1=ui->um14->text().toDouble();

            x2=ui->real14->text().toDouble();

            y2=ui->um14->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    if(ui->vec15->checkState())

    {

        if(c)

        {

            x2+=ui->real15->text().toDouble();

            y2+=ui->um15->text().toDouble();

        }

        else

        {

            x1=ui->real15->text().toDouble();

            y1=ui->um15->text().toDouble();

            x2=ui->real15->text().toDouble();

            y2=ui->um15->text().toDouble();

            c=true;

        }

        N[n].setX(width()/2+(x2*k));

        N[n].setY(height()/2-(y2*k));

        n++;

    }

    repaint();

    c=false;

    x2=0; y2=0;

}

 

 

Заключение

В курсовой работе был произведён расчёт, моделирование частотного RC-фильтра. Результаты проверены в ходе проведённого опыта. Были рассчитаны частотные характеристики: найдены аналитические выражения для АЧХ и ФЧХ исследуемой цепи.

Получили опыт работы с пакетами MathCAD, MicroCAP, Qt. Улучшили навык написания программ на языке С++.

 

Приложение А.

 

Листинг 1.

 

 

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

1) В.П. Литвиненко ОСНОВЫ  ЭЛЕКТРОТЕХНИКИ (Часть 1). Цепи постоянного  тока. Линейные цепи при гармонических  воздействиях.

2) В.П. Литвиненко Ю.В. Литвиненко  РАСЧЁТ ЛИНЕЙНЫХ ЭЛЕКТРИЧЕСКИХ  ЦЕПЕЙ.

3) http://doc.crossplatform.ru/  Всё о кроссплатформенном программировании.

4)  http://qtdocs.narod.ru/ Данный сайт посвящен русскоязычному переводу документации по инструментарию Qt 4.x.

 

 


Информация о работе Расчёт линейных цепей. RC фильтр