You are on page 1of 5

Zero-Crossing Detectors Circuits and Applications

1 de 5

Web Master Homepage

http://www.bristolwatch.com/ele2/zero_crossing.htm

Hobby Electronics

Bristol Tri-Cities

Fig. 1

Zero-Crossing Detectors Circuits and


Applications
by Lewis Loflin
A zero-crossing detector is used to generate a sync pulse related to the AC voltage
phase angle often used in power control circuits. Fig. 1 shows the relationship of a
zero-crossing pulse to a sine wave. The pulse occurs at 0, 180, and 360 degrees.

01/08/2016 02:21 a.m.

Zero-Crossing Detectors Circuits and Applications

2 de 5

http://www.bristolwatch.com/ele2/zero_crossing.htm

Fig. 2
Fig. 2 shows how to use a H11AA1 opto-coupler to generate a TTL level pulse.
During most of the time the photo transistor output is LOW except when the voltage
is near zero when the collector goes HIGH. The dual LED emitters of the H11AA1
assures both half-cycles are utilized.

Fig. 3
Fig shows a more common opto-coupler such as a 4N25, but to use both half-cycles
will require a diode bridge input.

01/08/2016 02:21 a.m.

Zero-Crossing Detectors Circuits and Applications

3 de 5

http://www.bristolwatch.com/ele2/zero_crossing.htm

Fig. 4
Fig. 4 shows a direct application of a zero-crossing detector using an Arduino microcontroller to control the power output to a lamp. This variation still uses the H11AA1
but can be directly connected to 120VAC. The sketch is shown below.
The output of the H11AA1 is connected to Arduino DP2 to use its internal interrupt
INTR0. When the switch on DP4 is closed a LOW is detected and the program
connects interrupt 0 turning on a interrupt service routine acon.
The ISR reads the value of the potentiometer on AN0, divides by 4, then calculates a
delay based on that value. The longer the delay (between 200uSec. and 8.3mSec.)
the less power delivered to the load. The circuit will act as a lamp dimmer.

When the switch is opened the interrupt is detached and the lamp goes off. See the
following related pages:
Hardware Interrupts Tutorial for Arduino
Basic Triacs and SCRs
Solid State AC Relays with Triacs
Light Activated Silicon Controlled Rectifier (LASCR)
Arduino AC Power Control Using Interrupts
In Depth Look at AC Power Control with Arduino

/*
Purpose: to detect zero crossing pulse at INT0 digital pin 2,
which after delay switches on a triac.
Power activate by external switch
01/08/2016 02:21 a.m.

Zero-Crossing Detectors Circuits and Applications

4 de 5

http://www.bristolwatch.com/ele2/zero_crossing.htm

*/
#define triacPulse 5
#define SW 4
#define aconLed 13
int val;
void setup() {
pinMode(2, INPUT);
digitalWrite(2, HIGH); // pull up
pinMode(triacPulse, OUTPUT);
pinMode(SW, INPUT);
digitalWrite(SW, HIGH);
pinMode(aconLed, OUTPUT);
digitalWrite(aconLed, LOW);
}
void loop() {
// check for SW closed
if (!digitalRead(SW)) {
// enable power
attachInterrupt(0, acon, FALLING);
// HV indicator on
digitalWrite(aconLed, HIGH);
} // end if
else if (digitalRead(SW)) {
detachInterrupt(0); // disable power
// HV indicator off
digitalWrite(aconLed, LOW);
} // else
} // end loop

// begin ac int routine


// delay() will not work!
void acon()
{
delayMicroseconds((analogRead(0) * 7) + 200); // read AD1
digitalWrite(triacPulse, HIGH);
delayMicroseconds(50);
// delay 50 uSec on output pulse to turn on triac
digitalWrite(triacPulse, LOW);
}
TA8050P H-Bridge Motor Control
Optical Isolation of H-Bridge Motor Controls YouTube
Optical Isolation of H-Bridge Motor Controls
Opto-Couplers Theory and Circuits YouTube

01/08/2016 02:21 a.m.

Zero-Crossing Detectors Circuits and Applications

5 de 5

http://www.bristolwatch.com/ele2/zero_crossing.htm

Opto-Isolated Transistor Drivers for Micro-Controllers


All NPN Transistor H-Bridge Motor Control YouTube
All NPN Transistor H-Bridge Motor Control
Pulse-Width Modulation Tutorial YouTube
Pulse-Width Modulation Tutorial
PIC12F683 Microcontroller and Circuits YouTube
PIC12F683 Microcontroller and Circuits
Quick navigation main page:
Arduino Microcontroller Projects
General Electronics Learning and Projects
Raspberry Pi and Linux
Connecting a PC Printer Port to Electronics with Python
Microchip PIC 18F2550
PICAXE Microcontroller
Gen. Electronics
My YouTube Channel
Raspberry Pi & Linux
Arduino Projects
PIC18F2550 in C++
PIC16F628A in Assembly
PICAXE Projects
Web Master
Bristol VA/TN
E-Mail
Environmentalism
US Constitution
Religious Themes 1
Religious Themes 2
website hits counter

Copyright 2016 Lewis Loflin

01/08/2016 02:21 a.m.