Відображення схеми електричного кола з активним опором та ємністю
Міністерство освіти і науки України Український Державній Університет Водного господарства і природо користування Кафедра електротехніки і автоматики Курсова робота з дисципліни “Програмування і алгоритмічні мови” на тему: “Розробити програму для відображення схеми електричного кола з активним опором та ємністю, перехідного процесу зміни напруги на конденсаторі та аналізу впливу параметрів елементів кола на перехідний процес”.
Виконав: студент 1-го курсу ФПМ і КІС АУТП 13
Перевірив: Пастушенко Рівне 2002
Завдання Розробити програму для відображення схеми електричного кола з активним опором та індуктивністю, перехідного
Зміст Вступ.....................................................................................................................................3 Задача і опис схеми...........................................................................................4 Текст програми.......................................................................................................7 Приклад............................................................................................................................13 Висновок......................................................................................................................... 14 Література......................................................................................................................15 Вступ Для закріплення здобутих теоретичних знань, застосування їх при вирішенні питань виробничого характеру, а також з метою набуття навиків по створенню програмного забезпечення , виконується курсова робота з дисципліни “Програмування та алгоритмічні мови” . В курсовій роботі необхідно розробити програму на мові програмування C++, яка б графічно відображала схему електричного кола з активним опором та ємністю, перехідний процес зміни напруги на конденсаторі та аналіз впливу параметрів елементів кола на перехідний процес. Важливо також щоб програма мала системне меню, вводилися дані. Задача і опис схеми Перехідними процесами називаються явища , які мають місце в електричних колах при зміні їх режиму. Для виявлення початкових умов при перехідних процесах використовують два закони комутації електричних кіл . З першого закону комутації : сила струму , який проходить через індуктивність , не може змінюватись стрибкоподібно .Такого стрибка сила струму не допустить протидія безкінечно велика е.р.с. самоіндукції : В якості прикладу використання першого закону комутації розглянемо зміну активного опору кола , яке містить індуктивність (Рис.1) . Рис.1. Схема комутації опору в колі , яке містить індуктивність. В цьому колі в момент t=0 ключем К замикаємо опір r2 . Сила струму в колі після комутації знаходиться спільною дією е.р.с. E джерела електроенергії і е.р.с. самоіндукції : диференціальне рівняння кола : або де – сила струму , яка стане в колі після закінчення перехідного процесу . Про інтегрувавши це рівняння , отримаємо : , де lnA – стала інтегрування . Останнє рівняння запишемо у вигляді : , про інтегруємо : , (1) де – постійна часу після комутації. Щоб знайти А , звернемося до початкових умов процесу . В розглянутому колі мають місце не нулеві початкові умови , так як при t=0 сила струму . Підставляючи це значення в рівняння (1) , знайдемо : або . Рівняння перехідного струму буде мати вигляд : . (2) Згідно другому закону комутації напруга і заряд ємності не можуть змінюватися стрибкоподібно , так як це вимагало б нескінченно великого зарядного або розрядного струму ; зарядна сила струму : , але при кінцевій зміні напруги uc або пропорційному йому заряду q сила струму , що неможливо . В якості прикладу використання другого закону комутації розглянемо перехідний процес (Рис.2) . В момент t=0 замикається ключ К , яким паралельно ємності включається опір r2 , а це визве пониження напруги на ємності . Рис.2.Схема комутації опору в колі , яке містить ємність. Згідно другому закону Кірхгофа в розглянутому колі , а згідно першого закону Кірхгофа . Струм ic визивається за рахунок зменшення заряду ємності , тому , а струм в опорі r2 : . Отже , і .Розділимо змінні в останньому рівнянні : , позначимо ; Про інтегрувавши рівняння , отримаємо : де lnA – постійна інтегрування . Перепишемо останнє рівняння : і потенціюємо : . Щоб знайти A , звертаємось до початкових умов кола . До замикання ключа К ємність була заряджена до повного значення е.р.с. Е , а згідно другому закону комутації в перший момент після замикання ключа напруги на ємність повинно було зберігати своє початкове значення . , постійна , а рівняння напруги на конденсаторі буде мати вигляд : (3) де – стала часу процесу .
Рис.3.Крива зміни напруги на ємності . На Рис.3 показана крива uc=F(t) . В кінці перехідного процесу напруга на ємності знаходиться умовами кола постійного струму , утворене з’єднаними послідовно опорами r1 і r2 ,отже , напруга на окремих ділянках кола прямо пропорційна опорам цих ділянок . Текст програми #include #include #include #include #include #include #define CLIP_ON 1 #define FON_2 CYAN #define FON_1 7 #define COL_1 60 #define COL_2 57 #define COL_3 58 void Titul (void); void GRAF(float E, float C, float r1,float r2); void SHEMA(void); int main(void) clrscr(); Titul (); clrscr(); int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, "c:\\bcpp\\bgi"); errorcode = graphresult(); if (errorcode != grOk) printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); ///------------------------------ float E; float t; float C; float r1; float r2; E=100; C=1e-03; r1=3000; r2=1000; SHEMA(); GRAF(E, C, r1,r2); //.................................... char ch; while(ch!=27) restorecrtmode(); clrscr(); // //textbackground(YELLOW); textcolor(57); printf("\n\n\n\n\n\n\n\n"); cprintf(" ========================================================"); printf("\n"); cprintf(" |Для виходу з програми натиснiть: 'e' |"); cprintf(" | |"); cprintf(" |Для продовження програми з новими значеннями |"); cprintf(" | параметрiв схеми, натиснiть: 'n' |"); cprintf(" ========================================================"); printf("\n"); ch=getch(); switch(ch) case 'e': exit(1); break; case 'n': clrscr(); textcolor(GREEN); cprintf(" -------------------------------------------------------"); printf("\n"); cprintf(" | Для вдалого вiдображення процесiв необхiдно, щоб: |"); printf("\n"); cprintf(" -------------------------------------------------------"); printf("\n"); cprintf(" | E<=100 B |"); printf("\n"); cprintf(" | C=(0,5..3) мкФ |"); printf("\n"); cprintf(" | r1=(500..3000) Ом |"); printf("\n"); cprintf(" | r2=(500..3000) Ом |"); printf("\n"); cprintf(" -------------------------------------------------------"); printf("\n"); textcolor(WHITE); cprintf("\n\nВведiть новi значення E (B) = "); scanf("%f",&E); cprintf("\nВведiть новi значення C (мкФ) = "); scanf("%f",&C); cprintf("\nВведiть новi значення r1 (Ом) = "); scanf("%f",&r1); cprintf("\nВведiть новi значення r2 (Ом) = "); scanf("%f",&r2); setgraphmode(getgraphmode()); SHEMA(); GRAF(E, C*pow10(-3), r1,r2); break; default: clrscr(); //textbackground(7); textcolor(RED+BLINK); printf("\n\n\n\n\n\n\n\n\n\n\t\t"); cprintf("A Ви, таки, мабуть, iдiот: дивiться що натискаэте"); delay(4000);textcolor(WHITE);restorecrtmode();clrscr(); restorecrtmode(); ///------------------------------ getch(); closegraph(); clrscr(); return 0; //////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /////|||||||||||||||||||||||||||||| void SHEMA(void) ////------------------ пiдготовлюімо граф вiкно cleardevice(); int y0_port1,y1_port1; y0_port1=0; y1_port1=0.4*getmaxy(); setviewport(0,y0_port1,getmaxx(),y1_port1, CLIP_ON); setfillstyle(SOLID_FILL, FON_1); //заповнення кольором floodfill(5, 5, 13); // теж саме rectangle(0,0,getmaxx(),y1_port1-y0_port1); /////////------------------------------------------------- int x1=0.25*getmaxx(), x1a, y1=40, y1a=30; int x3=0.75*getmaxx(), y3=y1_port1-30, x3a=20, r=3, x3b; int x2=0.5*getmaxx(), y2=(y1+y3)/2; int R=15, l=8; //радiус джерела е.р.с. i довжина стрiлки int dC=4, lC=14; //товщина i ширина конденсатора int hr=8,lr=56; // ширина та довжина резистора x1a=(x2-x1-lr)/2; circle(x2,y1,2); circle(x2,y3,2); setfillstyle(SOLID_FILL,WHITE); floodfill(x2,y1-1,WHITE); floodfill(x2,y3-1,WHITE); line(x1,y1,x1+x1a,y1); setfillstyle(1, WHITE); bar(x1+x1a,y1-hr,x1+x1a+lr,y1+hr); line(x1+x1a+lr,y1,x3,y1); line(x3,y1,x3,y1+y1a); bar(x3-hr,y1+y1a,x3+hr,y1+y1a+lr); line(x3,y1+y1a,x3,y3); line(x3,y3,(x3+x2)/2+x3a+r,y3); circle((x3+x2)/2+x3a,y3,r); line(x1,y3,(x3+x2)/2-x3a-r,y3); circle((x3+x2)/2-x3a,y3,r); int lk=37; //ключ line((x3+x2)/2-x3a+r*0.87,y3-r*0.5,(x3+x2)/2-x3a+lk*0.87,y3-lk*0.5);//ключ circle(x1,y2,R); line(x1,y1,x1,y2-R); line(x1,y3,x1,y2+R); line(x1,y2+l,x1,y2-l); line(x1,y2-l,x1-2,y2-l+6); line(x1,y2-l,x1+2,y2-l+6); line(x2-lC,y2-dC,x2+lC,y2-dC); line(x2-lC,y2+dC,x2+lC,y2+dC); line(x2,y1,x2,y2-dC); line(x2,y3,x2,y2+dC); //пiдписуэмо елементи setcolor(GREEN); settextstyle(3, HORIZ_DIR, 1); outtextxy(x1+22,y2-14,"E"); outtextxy((x1+x2)/2-8,y1-32,"r1"); outtextxy(x2-32,y2-10,"C"); outtextxy(x3-30,y2-12,"r2"); outtextxy((x2+x3)/2,y3,"K"); //////-------------- void GRAF(float E, float C, float r1,float r2) ////------------------ пiдготовлюімо граф вiкно #2 //setbkcolor(7); setcolor(WHITE); settextstyle(0,0,1); float y0_port2,y1_port2; y0_port2=0.4*getmaxy(); y1_port2=getmaxy(); setviewport(0,y0_port2,getmaxx(),y1_port2, CLIP_ON); setfillstyle(SOLID_FILL, FON_2); //заповнення кольором floodfill(5, 5, 13); // теж саме rectangle(0,0,getmaxx(),y1_port2-y0_port2); ////--------------------------- float y0_g,x0_g; float kin=0.8*getmaxx(); //кiнець осi ординат y0_g=96+(y1_port2-y0_port2)/2; // printf(" y0_g=%i ",y0_g); x0_g=150; line(x0_g-120,y0_g,kin,y0_g); //вiсь ординат line(x0_g,10,x0_g,y1_port2-y0_port2-20); //вiсь абсцис line(x0_g,10,x0_g+2,10+5); //стрiлочка line(x0_g,10,x0_g-2,10+5); line(kin,y0_g,kin-5,y0_g-2); line(kin,y0_g,kin-5,y0_g+2); setcolor(CGA_CYAN); settextstyle(7,0,1); outtextxy(x0_g+6,4,"Uc, V"); // setcolor(WHITE); outtextxy(kin+6,y0_g-10,"t, ms"); ///////////............................. float Uck=E*r2/(r1+r2); float t,tau,y; float mU=2, mt=1.0e-2;; //масштаби по осях setcolor(COL_3); setlinestyle(8,1,1); line(x0_g-110,y0_g-E*mU,x0_g,y0_g-E*mU); moveto(x0_g,y0_g-mU*E); tau=r1*r2/(r1+r2)*C; //printf("tau=%.12f",tau); printf(" mt=%.12f",mt); for(int i=0; it=mt*i; y=mU*(E*r2/(r1+r2)+E*r1/(r1+r2)*exp(-t/tau)); lineto(x0_g+i,y0_g-y); setcolor(COL_1); setlinestyle(2,1,1); line(x0_g,y0_g-mU*Uck,kin-30,y0_g-mU*Uck); ////........................................... setcolor(COL_2); setlinestyle(0,1,1); settextstyle(0,0,0); int m=100; char *c; for(int j=0;j<=3;j++) line(x0_g+m*j,y0_g,x0_g+m*j,y0_g+3); sprintf(c, "%d",j); outtextxy(x0_g+4+m*j,y0_g+8,c); int n=mU*100/5; for(int k=0;k<=5;k++) line(x0_g,y0_g-n*k,x0_g-3,y0_g-n*k); sprintf(c, "%d",k*n/2); if(k) outtextxy(x0_g-24,y0_g-10-n*k,c); //printf(" t=%f",t);printf(" i=%d",i);printf(" t/tau=%f",t/tau); //.виведення значень параметрiв setcolor(5); settextstyle(0,0,1); sprintf(c,"E = %.1f B",E); outtextxy(getmaxx()-130,40,c); sprintf(c,"C = %.1f мкФ",C*pow10(3)); outtextxy(getmaxx()-130,70,c); sprintf(c,"r1= %.1f Ом",r1); outtextxy(getmaxx()-130,100,c); sprintf(c,"r2= %.1f Ом",r2); outtextxy(getmaxx()-130,130,c); getch(); /////====================================== void Titul (void) clrscr(); textmode(BW80); textcolor(59); cprintf(" Мiнiстерство освiти i науки Украµни"); printf("\n"); cprintf(" Рiвненський державний технiчний унiверситет"); printf("\n"); cprintf(" Кафедра електротехнiки i автоматики"); printf("\n\n\n\n\n"); textcolor(4 + BLINK); printf(" "); cprintf("КУРСОВА РОБОТА"); printf("\n"); textcolor(57); printf("\t\t"); cprintf("з курсу:\"Програмування i алгоритмiчнi мови\""); printf("\n"); textcolor(BLUE); printf("\t\t"); cprintf("на тему:\"Графiчне вiдображення схеми електричного кола з"); printf("\n"); printf("\t\t\t "); cprintf("активним опором та эмнiстю, перехiдного процесу"); printf("\n"); printf("\t\t\t "); cprintf("змiни напруги на конденсаторi та аналiзу впливу"); printf("\n"); printf("\t\t\t "); cprintf("парамтрiв кола на перехiдний процес\""); printf("\n"); printf("\n\n\n\n\n"); textcolor(2); printf("\t\t\t\t\t\t"); cprintf("Виконав студент першого курсу"); printf("\n"); printf("\t\t\t\t\t\t"); cprintf("ФПМiКIС групи АУТП-3"); printf("\n"); printf("\t\t\t\t\t\t"); cprintf("ПАНАСЮК"); printf("\n\n\n\n"); printf("\t\t\t\t "); textcolor(58); cprintf("РIВНЕ-2002"); textcolor(WHITE + BLINK); printf("\n\t\t\t"); cprintf(" натиснiть будь-яку клавiшу"); getch(); textcolor(WHITE);} Приклад Введемо: E=50 C=2 R1=670 R2=700 Отримаємо графік : Висновок Завдяки цій курсовій роботі я закріпив здобуті теоретичні знання з курсу “Програмування та алгоритмічні мови”, навчився застосувати їх при вирішенні питань виробничого характеру. Склав програму, яка графічно відображає схему електричного кола з активним опором та ємністю, перехідний процес зміни напруги на конденсаторі та аналіз впливу параметрів елементів кола на перехідний процес , програма працює з різним даними. Література 1. Касаткин. Электротехника, М., Энергия.. 2.Крис Паппас, Уїльям Мюррей, Програмирование на С и С++, “Ирина”, BHV,Киев,2000. Ця курсова робота люб'язно надана
Рефераты по информатикеМіністерство освіти і науки України Український Державній Університет Водного господарства і природо користування Кафедра електротехніки і автоматики
Оценок: 443 (Средняя 5 из 5)
Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.
Сотрудничая с нами, вы будете не клиентом, а нашим партнером. Благодаря этому мы будем развивать ваш бизнес как собственный. Мы так же как и вы заинтересованы в успехе проекта, поскольку ваша успешность будет нашей рекламой.