Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

3 phase full wave thyristor rectifier

Status
Not open for further replies.

ordinaryus67

Newbie level 4
Joined
Jan 1, 2015
Messages
5
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
24
Hello

I designed a 3 phase full wave thyristor rectifier in proteus but it does not work properly.

I wrote the code on C compiler and it should have acted like this:


Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
if(input(v2)&&input(v1)) cnt=1;
if(input(v2)&&input(v3)) cnt=2;
if(input(v3)&&input(v1)) cnt=3;
 
//then
 
if(cnt==1)
{
output_high(t1);
output_high(t4);
delay_ms(6);
output_low(t1);
output_low(t4);
}
 
if(cnt==2)
{
output_high(t2);
output_high(t5);
delay_ms(6);
output_low(t2);
output_low(t5);
}
 
if(cnt==3)
{
output_high(t3);
output_high(t6);
delay_ms(6);
output_low(t3);
output_low(t6);

Second and third line works perfectly but I have a problem at the first line. When voltage goes through v2 and v1 it does not give me cnt=1. That's why the circuit does not rectify the voltage :(

Could you tell me what the wrong point is ? Is using optocoupler the problem?
 

Attachments

  • yeni.rar
    17.2 KB · Views: 52
Last edited by a moderator:

I guess that you are trying to make cntX true if THIS phase is true and the next one is true. i.e. the overlap. So the very first term for consistency should be v1 not v2. So the next term in line 1 should then be v2 not v1. Seems that your C is dealing with the order of the terms differently. Err, I think its called non commutative, i.e 2-3 does not equal 3-2, but 2 X 3 = 3 X 2 (commutative).
Frank
 

Hey there

Thank your for the answer. You are right, I fixed it but i does not change anything. Let me write the all code:

Code:
#include <main.h>
#define alpha 40000
#define v1 52
#define v2 53
#define v3 54
#define t1 64
#define t2 65
#define t3 66
#define t4 67
#define t5 68
#define t6 69

int cnt;
#int_TIMER1
void timerrupt(void)
{
if(cnt==1)
{
output_high(t1);
output_high(t4);
delay_ms(6);
output_low(t1);
output_low(t4);
}

if(cnt==2)
{
output_high(t2);
output_high(t5);
delay_ms(6);
output_low(t2);
output_low(t5);
}

if(cnt==3)
{
output_high(t3);
output_high(t6);
delay_ms(6);
output_low(t3);
output_low(t6);
break;
cnt=0;
}
}



#int_RB
void  RBrupt(void)
{
if(input(v1)&&input(v2)) cnt=1;
if(input(v2)&&input(v3)) cnt=2;
if(input(v3)&&input(v1)) cnt=3;
set_timer1(62203);
}



void main()
{
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(INT_RB);
   enable_interrupts(GLOBAL);
set_timer1(62203);
   while(TRUE)
   {
      //TODO: User Code
   }

}

- - - Updated - - -

I suppose the problem stems from the circuit.
 

I believe, both circuit and code are faulty.

It's quite obvious for the circuit which would immediately burn if implemented in real hardware.
- connecting AC input voltage directly to processor pins
- driving input of opto triacs without current limiting resistors
- wrongly corrected opto triacs
- missing current limiting resistors and series diodes at SCR gates
 
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top