View previous topic :: View next topic |
Author |
Message |
neil
Joined: 08 Sep 2003 Posts: 128
|
OT-Noise immune zero crossing (phase angle firing) |
Posted: Wed Nov 23, 2005 5:44 am |
|
|
Hi, I think this is one I should be asking Mark really, but anone else with ideas would be gratefully received!
I am "re-visiting" an old project from a couple of years ago which Mark and Ttelmah most notable advised on. It is a thyristor triggering phase controller, based on a PIC.
Initially, I used the AN534? method, feeding the mains voltage into the B0 pin through a 10M resistor to get a zero crossing signal. This was a really cheap and nasty way of doing it!
Since them I have built an improved circuit using transistors, to give a pulse centered around the Z/C point and driving an optisolator to the B0 pin.
Now I want to go a step further into noise immunity and use a PLL to clean up the mains signal. I have played with a 4046, trying either comparator and it seems that the 90° comparator works the best for my application. (I am using a long tc loop filter to ignore glitches on the input.)
So now I need to shift the mains signal another 90° before the PLL (adding filtering at the same time) to give an overall 180° phase shift. 180 is acceptable as the zero crossings are in the same place.
I'm pretty sure I'm on the right track here, but the practicality of using an RC to get 90° doesn't look promising. Once I have gone from a 340Vpeak sinewave (UK mains) down to a low enough voltage to stretch the vector to 90° and drive a zero crossing circuit, then feed the PLL, I have lost the steep rise time which gives an accurate crossing point!
Mark, especially, can you explain what you do here?
Regards,
Neil. |
|
![](templates/subSilver/images/spacer.gif) |
asmallri
Joined: 12 Aug 2004 Posts: 1634 Location: Perth, Australia
|
|
Posted: Wed Nov 23, 2005 6:26 am |
|
|
I am not sure I understand the problem. If you have a clean 90% reference point then just time off this. The variation in phase between adjacent cycles is insignifiant and can be ignored. _________________ Regards, Andrew
http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!! |
|
![](templates/subSilver/images/spacer.gif) |
neil
Joined: 08 Sep 2003 Posts: 128
|
|
Posted: Wed Nov 23, 2005 7:07 am |
|
|
I can't just assume where the zero crossings are, just because I know where the 90° points are. This would mean timing from there by a set amount and would be an "open loop" way of doing it! (If that is what you meant). I really want a 'rock solid' hardware solution to feed the PIC with and only use the PIC for the communications and triggering.
Regards,
Neil. |
|
![](templates/subSilver/images/spacer.gif) |
asmallri
Joined: 12 Aug 2004 Posts: 1634 Location: Perth, Australia
|
|
Posted: Wed Nov 23, 2005 7:15 am |
|
|
neil wrote: | I can't just assume where the zero crossings are, just because I know where the 90° points are. This would mean timing from there by a set amount and would be an "open loop" way of doing it! (If that is what you meant). I really want a 'rock solid' hardware solution to feed the PIC with and only use the PIC for the communications and triggering.
Regards,
Neil. |
If we are talking about standard power distribution where power is derived from massive turbines then, given the 90 deg points, you definitely can assume the zero crossing point as these turbines "cunna breek the laws of physics Captain"
It is not open loop. Cycle by cycle you know the 90 degree point _________________ Regards, Andrew
http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!! |
|
![](templates/subSilver/images/spacer.gif) |
foothill Guest
|
Zero crossings |
Posted: Wed Nov 23, 2005 7:32 am |
|
|
You can get a hardware-derived quadrature signal by feeding
the output of your first PLL into an XOR-type PLL (for instance,
the "other" phase detector of a 4046); it will lock at 90 degrees
to the input phase. The output of the first PLL will be clean enough
to drive it reliably. You'll have to limit the XOR's frequency range
to prevent lockup on harmonics, but that's simple and dealt with
in the 4046 data sheets.
Cheers!
Brian |
|
![](templates/subSilver/images/spacer.gif) |
asmallri
Joined: 12 Aug 2004 Posts: 1634 Location: Perth, Australia
|
|
Posted: Wed Nov 23, 2005 7:53 am |
|
|
I recon my approach will be more accurate and stable than PLL off a PLL. _________________ Regards, Andrew
http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!! |
|
![](templates/subSilver/images/spacer.gif) |
Humberto
Joined: 08 Sep 2003 Posts: 1215 Location: Buenos Aires, La Reina del Plata
|
|
Posted: Wed Nov 23, 2005 8:47 am |
|
|
Quote: |
Initially, I used the AN534? method
|
AN534 is regarding " Saving and Restoring Status on Interrupt " not applicable in your problem.
I guess you are talking of the AN521 "Interfacing to AC Power Lines"
Regarding your problem Iīm agree with @asmallri that using a PLL here would not
warranty noise inmunity. Instead I would use an optocoupled circuit, or a comparator
keeping the undesirable phase delay as minimum as possible combined with the
fact that with the PIC you can get a good an accurate delay of 20ms synchronized
with the mains 50 Hz.
Using both, the PIC generating a "time window" every 20ms to validate the expecting
pulse coming from the Zero crossing detector will be enough to get a clean and
glitch-free zero-crossing reference for further TRIACīs triggering.
At least you donīt need an atomic clock to fire TRIAC.
Best wishes,
Humberto |
|
![](templates/subSilver/images/spacer.gif) |
neil
Joined: 08 Sep 2003 Posts: 128
|
|
Posted: Wed Nov 23, 2005 10:01 am |
|
|
Quote: | Initially, I used the AN534? method | Yes, I meant 521, hence the "?" in the above. It was 2 years ago and didn't bother looking it up again, just to make my post completely accurate! Sorry!
I have tried several ways of zero crossing detection, and have indeed used optoisolators, but this does not stop noise on the mains line from triggering multiple zero crossing interrupts. My thyristor pair is driving a 6KW transformer with a 4Volt 1800Amp transmitting valve heater on the secondary. If I get noise on the line (of which there is a *lot* where I work!!) and the thyristors fire for half a cycle, what happens to the load???? DC into a big inductor, that's what! Blown fuses, blown thyristors, magnetised transformer core, sparks, etc!
This is why I want to be absolutely sure this thing will sail through any noisy conditions without going heywire! |
|
![](templates/subSilver/images/spacer.gif) |
Humberto
Joined: 08 Sep 2003 Posts: 1215 Location: Buenos Aires, La Reina del Plata
|
|
Posted: Wed Nov 23, 2005 4:19 pm |
|
|
Quote: |
My thyristor pair is driving a 6KW transformer with a 4Volt 1800Amp
|
Well, there are considerable power to control, now I know why you are looking for
a reliable zero-crossing detector.
Neil, you didnīt mention nothing about the phase relationship between current and
voltage. With such high current flowing in the thyristors, you must be aware that
with a small displacement of a few degrees in the phase angle between V and I,
you will get a ton of amperes still flowing while/after the voltage is near or crossing
zero -depending of the load nature- and this would be the real (and worst) problem
to fight with.
Humberto |
|
![](templates/subSilver/images/spacer.gif) |
neil
Joined: 08 Sep 2003 Posts: 128
|
Some more background |
Posted: Thu Nov 24, 2005 5:00 am |
|
|
The primary is controlled at 240V and the whole assembly draws about 30A. The valve filament is never disconnected from the secondary, so the drive electronics see almost a purely resistive load. This is because the filament is resistive. The only inductive component in the circuit is the magnetizing inductance of the transformer.
If I was to switch the transformer on full, this step change would draw a very high current (and also damage the cold valve) so I ramp the voltage up very slowly, starting with tiny little peaks just before the zero crossing. This means that the magnetization current drawn by the transformer is very small and never gets the chance to build up significantly. |
|
![](templates/subSilver/images/spacer.gif) |
SherpaDoug
Joined: 07 Sep 2003 Posts: 1640 Location: Cape Cod Mass USA
|
|
Posted: Thu Nov 24, 2005 1:30 pm |
|
|
For such a high reliability system I would consider putting a RC 90 degree phase shift network inside the phase feedback loop of the PLL. The RC values are on the order of 0.1uF and 30k, not too bad. I would probably use three 30 degree sections. _________________ The search for better is endless. Instead simply find very good and get the job done. |
|
![](templates/subSilver/images/spacer.gif) |
SherpaDoug
Joined: 07 Sep 2003 Posts: 1640 Location: Cape Cod Mass USA
|
A more digital solution |
Posted: Thu Nov 24, 2005 2:34 pm |
|
|
After some though I have a more "digital" solution:
Run the PLL oscillator at 4x the line frequency. Use a Johnson Ring type of divider to divide by 4 to feedback into the PLL phase detector. A Johnson Ring will give you all four phases as seperate outputs so you can use one output for the detector and another for firing the thyristors. You will be guaranteed an exact 90 degree phase relationship with no open loop analog components involved.. _________________ The search for better is endless. Instead simply find very good and get the job done. |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah Guest
|
|
Posted: Thu Nov 24, 2005 3:40 pm |
|
|
As a completely 'disconnected' circuit, which implements a rather nice zero crossing detector, which works well, look at the ADE7757. This is a supply supervisory circuit, normally used for power metering, but contains a good zero crossing system. It implements a fairly high frequency PLL, and may provide some ideas that could be adapted.
In the past, I have been impressed by how accurate it is.
Best Wishes |
|
![](templates/subSilver/images/spacer.gif) |
neil
Joined: 08 Sep 2003 Posts: 128
|
Thanks everyone! |
Posted: Fri Nov 25, 2005 10:14 am |
|
|
Thanks everyone for some great ideas! SherpaDoug, your first idea is pretty much what I have been experimenting with already, although my 90° Phase network is outside the loop, on the signal input. Correct me if I'm wrong, but being a phase locked loop, any phase shift in the loop filter is irrelevant because the loop is locking onto the input phase? I have a very long TC in the loop filter to allow the VCO to ride through any hash which *still* manages to get to the input. The VCO output is always in phase (or 90° out) depending on which phase comparator I use, so the phase shift in the loop filter appears irrelevant.
The second suggestion (and foothill's idea) sound good. I don't know why I didn't think of a Johnson counter! This would give a very usable quadrature output, so I can pick whatever phase I want to use!! Great!
I have had a look at the ADE7757 as well and it seems that the zero crossing function is done inside the DSP block after being digitised by a fast Σ-Δ ADC. I guess this is the flashy new approach to this sort of design now, but my programming knowledge is far less than my electronics knowledge and I prefer the hardware approach for things like this!
Having said that, it looks like an excellent device for another (home) project I have in mind, involving going 'off-grid'. I'll say no more!!
Thanks everybody for your ideas.
Neil. |
|
![](templates/subSilver/images/spacer.gif) |
libor
Joined: 14 Dec 2004 Posts: 288 Location: Hungary
|
|
Posted: Sat Nov 26, 2005 6:08 am |
|
|
I had a similar problem: noise immune filtered zero-cross timing.
I ended up with a software-only (kind of averaging PLL) solution. I run an internal timer with a cycle timing syncronized to the mains phase using a very slow reaction-time fine-tuning method.
I measure the mismatch time between my internal timer and the actual zero-cross signal and continuously tune the timer it in the needed direction in small steps (by adding or subtracting a small number (1) to the timer's counter) This way I can effectively eliminate the effects of any noise causing a false zero-cross condition, this allows me to fine tune my filter's averaging parameters in software. |
|
![](templates/subSilver/images/spacer.gif) |
|