Monday, June 24, 2024

Phase Angle Control Of SCR Using AT89C51

Silicon-controlled rectifiers (SCR) are solidstate semiconductor devices that are usually used in power switching circuits. SCR controls the output signal by switching it ‘on’ or ‘off,’ thereby controlling the power to the load in context. The two primary modes of SCR control are phase-angle fired—where a partial waveform is passed every half cycle—and zerocrossing fired—where a portion of the complete waveforms is passed to regulate the power. In the phase angle controller, the firing pulse is delayed to turn on the SCR in the middle of every half cycle. This means that every time a part of an AC cycle is cut, the power to the load also gets cut. To deliver more or less power to the load, the phase angle is increased or decreased, thereby controlling the throughput power.

There are several ways to control the firing angle of SCR. This article describes a microcontroller AT89C51-based phase angle controller. A microcontroller can be programmed to fire SCR over the full range of half cycles—from 0 to 180°—to get a good linear relationship between the phase angle and the delivered output power.

Some of the features of this microcontroller-based phase angle controller for SCR are:

  1. Utilises the zero-crossing detector circuit
  2. Controls the phase angle from 0–162°
  3. Displays the phase angle on an LCD panel
  4. LED indicators are used for displaying the status of SCR
  5. Increases or decreases the phase angle with intervals of 18°

Basically, the zero-crossing detector circuit interrupts the microcontroller after every 10 ms. This interrupt commands the microcontroller to generate some delay (in the range of 1ms to 9 ms). The user can increase or decrease the delay in intervals of 1 ms using switches. the SCR is then fired through the opto-coupler. This repeats after every 10 ms.

Phase angle controller circuit

The complete circuit is divided into two sections:

- Advertisement -
  1. The zero-cross detector section
  2. The control section
Fig.1: Power supply and zero-crossing detector circuits
Fig.1: Power supply and zero-crossing detector circuits

The zero-cross detector section

Fig.1 shows the circuit diagram of the zero-crossing detector and the power supply. The main sections of the circuit are a rectifier, regulated power supply and zero-crossing detector. The 230V AC mains is stepped down by transformer X1 to deliver the secondary output of 9V, 500 mA. The transformer output is rectified by a full-wave bridge rectifier comprising diodes D1 through D4 and then regulated by IC 7805 (IC3). Capacitors C2 and C3 are used for bypassing the ripples present in the regulated 5V power supply. A capacitor above 10μF is connected across the output of the regulator IC, while diode D6 protects the regulator IC in case their input is short to ground. LED5 acts as the power-on indicator and resistor R5 limits the current through LED5.

This regulated 5V is also used as biasing voltage for both transistors (T1 and T2) and the control section. A pulsating DC voltage is applied to the base of transistor T1 through diode D5 and resistors R1 and R2. When the pulsating voltage goes to zero, the collector of transistor T1 goes high. This is used for detecting the pulse when the voltage is zero. Finally, the detected pulse from ‘C’ is fed to the microcontroller of the control section.

Fig.2: Circuit diagram of phase angle control of SCR using AT89C51
Fig.2: Circuit diagram of phase angle controller of SCR using AT89C51


- Advertisement -

The control section

Fig.2 shows the circuit diagram of the control section for the phase angle controller of SCR. It comprises a microcontroller AT89C51, opto-coupler MCT2E, LCD module and a few discrete components. Port 0 (P0.0 through P0.7) of AT89C51 is used for interfacing data input pins D0 through D7 of the LCD module.Port pins P2.6, P2.5 and P2.7 of the microcontroller control the registers select (RS), read/write and enable (E) input pin of the LCD module, respectively. Preset VR1 is used for controlling the contrast of the LCD module. Push-to-on switches S1, S2 and S3 are connected with the pins P1.0, P1.1 and P1.2 through diodes D9, D10 and D11, respectively. External interrupt pin (P3.2) of the microcontroller is connected to S1, S2 and S3 through D12, D13 and D14, respectively. The role of different switches is shown in Table I.

The output of the zero-crossing detector from ‘C’ is fed to the external interrupt pin (P3.3) of the microcontroller.


Port pin P2.0 is connected with pin 2 of the opto-coupler (MCT2E). The output pin 5 of MCT2E is used for triggering the gate of SCR TYN604. The anode of SCR is connected to the load (bulb) with the 230V AC supply.

A 12MHz crystal along with capacitors C5 and C4 are connected to the microcontroller pins 18 and 19 to provide the basic clock to the microcontroller. Power on reset is derived by using capacitor C6 and resistor R6. Switch S4 is used for a manual reset.

Circuit operation

Fig.3: Waveforms observed at various points in
Fig.3: Waveforms observed at various points in Fig.1 and Fig.2 and SCR output waveforms

The complete operation can be well understood with the help of waveforms in Fig.3.

  1. The waveform at point ‘A’ is a fully rectified wave that is fed to the base of T1.
  2. When the base voltage falls below 0.7V, transistor T1 is switched off, pulling the output higher. This
    results in a very short positive pulse, which is available at the collector, (at point ‘B’) as shown in the second waveform.
  3. As this positive pulse is inverted by transistor T2, it produces one negative pulse of the same width
    at ‘C.’ This is shown as the third waveform.
  4. This negative pulse is fed to the interrupt pin of the microcontroller, which acts as an interrupt for the microcontroller. The microcontroller then generates a positive pulse on P2.0 (at point ‘D’) after some delay. This turns ‘off’ the internal LED of the opto-coupler (MCT2E) and a positive pulse is produced at output ‘E’. This is used for triggering (fire) SCR1.
  5. Depending on the time delay in between the interrupt and the pulse on port pin P2.0 of the microcontroller, the SCR is fired in the middle of the half wave cycle.
  6. Two different waveforms—one for 4 ms delay and the other for 8 ms delay—are shown in Fig.3. In the case of 4ms delay, the output positive cycle of the AC wave is 60 per cent of the input. Therefore, nearly 60 per cent of the power is delivered to the load (the dotted line shows part of waveform that has been cut). In the second case of 8 ms delay, the output cycle is 20 per cent of the input cycle, so only 20 per cent of the power is delivered to the load.

This change in delay is done using switches S1 and S2. Different LEDs are used for indicating different functions as shown in Table II.


The diodes D12 through D14 are connected in such a manner that whenever any of the three push-to-on switches are pressed, it generates an external interrupt .

When switch S1 is pressed for the first time, it enables external interrupt and displays the message ‘SCR on.’ So after every 10 ms, external interrupt is generated which starts the entire operation. Pressing switch S1 again disables external interrupt 0 and the message ‘SCR off’ is displayed. the complete SCR operation gets shut off.

On pressing S2, the delay increases by 1 ms (firing angle will shift by 18°) and firing of SCR is delayed by 1 ms. The power delivered to the load is also decreased by 10 per cent. The maximum delay that can be applied is 9 ms which will delay firing by an angle of 162°. When the limit is reached, it is indicated by LED3 and a message ‘Max. phase angle’ is displayed on the LCD. The glowing of the bulb goes off.

Similarly, when S3 is pressed, the delay is decreased by 1 ms and the load current increases by 10 per cent. The minimum delay is 0 ms, which means a full positive cycle is applied. However, when the limit is reached, it is indicated by LED4 and a message ‘Min. phase angle’ is displayed.

A single side PCB for phase angle controller using SCR is shown in Fig.4(View as PDF) and its component layout in Fig.5(View as PDF).

Download PCB and component layout PDFs (Fig. 4, 5): click here

Software program

The software code for this phase angle controller is written in ‘C’ programming language and compiled using the Keil μVision3 compiler. After compilation, the final.hex code is downloaded to the microcontroller using a suitable programmer. The source program is well commented and easy to understand.

The main function initialises the timer, ports and LCD. Finally, after enabling the external interrupt 0, it enters into a continuous loop.

Int0 function is an interrupt function and is automatically called when any of the three switches S1 through S3 is pressed.

  1. If switch S1 is pressed, it checks if it is pressed for an even/odd number of times. Accordingly, it either switches ‘on’ or switches ‘off’ the SCR. Basically, it enables/disables external interrupt 1. The state of the SCR is displayed by a message on the LCD and an indication comes on LED1 and LED2 also.
  2. If switch S2 is pressed, the delay is increased by 1 ms and the angle is increased by 8°. the light intensity of the bulb also increases. If the limit is reached, the message is displayed on the LCD.
  3. For switch S3, the operation remains the same as with S2, but the delay is decreased by 1 ms and the angle is decreased by 18°.

Int1 function is also an interrupt function and is automatically called when the zero-crossing detector gives the pulse after every 10 ms. It feeds one pulse to the gate of the SCR after the desired delay (set by switch S2 and S3). The pulse applied is indicated on LED1.

write cmd function sends the command byte to the LCD. It takes one argument byte and sends it to port P1

write data function sends data bytes to be displayed on the LCD. It also takes one argument byte and sends it to port P1.

writ estr function writes a whole string (message) on the LCD. It takes the pointer as an argument that points the address of the first character of the string. Then through the pointer, it sends all the characters, one by one, to port P0.

busy function checks the status of the busy flag of the LCD. If the flag is set, it means the LCD is not ready and the programs remain within the loop. When the flag is reset, it means the LCD is ready and the program comes out of the loop.

keydly function, used for key debouncing, is the fix delay by approximately 100 ms.

delay function is a variable delay generated by timer 0. The basic delay is of 1 ms, which is rotated in the loop from 1 to 9 times to generate a minimum of 1 ms and a maximum of 9 ms delay.

display function separates each digit of the angle and converts them into an equivalent ASCII number, before sending it to the LCD, one by one, for display.

Download the source code: click here

The article was published in February 2012 and has been updated recently.

Feel interested in this phase angle controller? Check out other electronics projects.




Unique DIY Projects

Electronics News

Truly Innovative Tech

MOst Popular Videos

Electronics Components