2 Численное решение
Для получения точного решения системы (3), (4) была написана программа на языке высокого уровня С#. Код программы представлен в приложении А. После того, как пользователь ввёл значения сопротивлений и напряжения , либо рассчитал схему с уже данными значениями, программа выдаст промежуточные результаты: эквивалентное сопротивление Rэ и напряжение холостого хода Uxx, затем искомое значения тока I3. Интерфейс изображен на рисунке 7.
Рисунок 7 - Интерфейс программы
На выходе программа выдает следующее значение тока:
I3=111,587 мкА.
3 Моделирование
Проверка решения схемы, изображенной на рисунке 1, проведена с помощью ППП моделирования аналоговых схем МСАР с оценкой погрешности. Исходная схема моделирования на рисунке 8.
Рисунок 8 – Схема для моделирования в Мicro-Cap
На рисунке 9 представлена схема с результатами после моделирования в Мicro-Cap:
Рисунок 9 – Схема после моделирования
На этой схеме видно значение тока I3:
I3=111.587 мкА;
Далее рассчитываем погрешность по формуле (20):
. (20)
Результат вычисления погрешности приведён в таблице 1.
Таблица 1 – Вычисление погрешности
-
Ток
Результат вычисления
Результат моделирования
Погрешность
I3
111.59 мкА
111.587 мкА
0,003 %
Заключение
В процессе работы провели аналитический расчёт тока на участке цепи методом эквивалентного генератора напряжения, численный расчёт на высокоуровневом языке программирования С#, что облегчило решение поставленной задачи, затем проверили решение с помощью ППП моделирования аналоговых схем МСАР с оценкой погрешности. Численный расчет совпадает с проверкой. Погрешность оказалась достаточно малой, что означает правильность вывода формул в аналитическом расчёте.
Список использованных источников
1 Бакалов В.П., Игнатов А.Н., Крук Б.И. Основы теории электрических цепей и электроники. – М.: Радио и связь, 1989. – 528 с.
2 Разевиг В.Д. Система схемотехнического моделирования Micro-CAP V. – М.: ТОО ”СОЛОН”, 1997. – 273 c.
3 Никонов А.В. Электротехника и электроника. – Омск: Изд-во ОмГТУ, 2005. – 84 с.
Приложение а
(Обязательное)
Листинг программы
Исходный код программы приведён ниже.
namespace РГР
{
public partial class Form1 : Form
{
double R1, R2, R3, R4, R5, R6, U1, Rэ, I3, Uxx; //объявление переменных
double A, B, C, Ik2, Ik1;
double R25, R26, R56, R426, R156, R426156;
public Form1()
{
InitializeComponent();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();//выход из программы
}
//сообщения о заданных значениях, об авторе и о программе
private void заполнитьДаннымиЗначениямиToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("R1=560k, R2=100k, R3=1,1M, R4=3,3M, R5=240k, R6=9,1M, U1=240B");
}
private void обАвтореToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Расчитать ток в сопротивлении R3 методом эквивалентного генератора напряжений. Даданные значения хранятся в пункте <Опции> -> <Данные значения>");
}
private void обАвтореToolStripMenuItem1_Click(object sender, EventArgs e)
{
MessageBox.Show("Выполнила: Николаева Жанна Владимировна, студентка ОмГТУ, АСОИУ, гр.ИВТ-240");
}
//сброс значений
private void очиститьЗначенияToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox5.Text = "";
textBox6.Text = "";
textBox7.Text = "";
textBox8.Text = "";
textBox9.Text = "";
textBox10.Text = "";
}
//расчёт с заранее заданными параметрами
private void расчитатьСДаннымиЗначениямиToolStripMenuItem_Click(object sender, EventArgs e)
{
double r1 = 560000, r2=100000, r3=1100000, r4=3300000, r5=240000, r6=9100000, u1=240;
R1 = r1;
R2 = r2;
R3 = r3;
R4 = r4;
R5 = r5;
R6 = r6;
U1 = u1;
A = R1 + R2 + R4 + R5;//значение коэфициентов А,В и С при токах
B = R2 + R5;
C = R2 + R5 + R6;
Ik2 = U1 / (B - C * A / B);
Ik1 = C * Ik2 / B;
Uxx = -Ik1 * R4 -Ik1 * R2 + Ik2 * R2;//формула для расчёт Uxx после последовательных преобразований
textBox8.Text = Uxx.ToString();//вывод Uxx
R25 = R2 * R5 / (R2 + R5 + R6);
R26 = R2 * R6 / (R2 + R5 + R6);
R56 = R6 * R5 / (R2 + R5 + R6);
R426 = R4 + R26;
R156 = R1 + R56;
R426156 = R426 * R156 / (R426 + R156);
Rэ = R426156 + R25; //расчёт Rэ после упрощения цепи
textBox9.Text = Rэ.ToString();//вывод Rэ
I3 = Uxx / (R3 + Rэ); //получение искомого тока
textBox10.Text = I3.ToString();//вывод на экран искомого значения
}
private void button1_Click(object sender, EventArgs e)
{
//тот же расчёт что и в методе "расчитатьСДаннымиЗначениями" путём ввода данных с клавиатуры
try //проверка коректности ввода данных
{
R1 = Convert.ToDouble(textBox1.Text); //cчитываем значения R и U
R2 = Convert.ToDouble(textBox2.Text);
R3 = Convert.ToDouble(textBox3.Text);
R4 = Convert.ToDouble(textBox4.Text);
R5 = Convert.ToDouble(textBox5.Text);
R6 = Convert.ToDouble(textBox6.Text);
U1 = Convert.ToDouble(textBox7.Text);
}
catch
{
MessageBox.Show("Ошибка ввода");
f = false;
}
if (f)
{
A = R1 + R2 + R4 + R5;
B = R2 + R5;
C = R2 + R5 + R6;
Ik2 = U1 / (B - C * A / B);
Ik1 = C * Ik2 / B;
Uxx = -Ik1 * R4 - Ik1 * R2 + Ik2 * R2;
textBox8.Text = Uxx.ToString();
R25 = R2 * R5 / (R2 + R5 + R6);
R26 = R2 * R6 / (R2 + R5 + R6);
R56 = R6 * R5 / (R2 + R5 + R6);
R426 = R4 + R26;
R156 = R1 + R56;
R426156 = R426 * R156 / (R426 + R156);
Rэ = R426156 + R25;
textBox9.Text = Rэ.ToString();
I3 = Uxx / (R3 + Rэ);
textBox10.Text = I3.ToString();
}}}}