# Finding frequency of a three-phase generator from phase voltages

I'm trying to find frequency (i.e.; rotations per second) of a balanced three phase generator. Output peak voltage of the generator goes up to 150V.

One solution I found is to attenuate rectified and filtered versions of this AC by voltage divider resistor network (Ra, Rb, Rc and Rd), so that the rectified one swings over the filtered one, and then input them to a comparator to find the frequency data.

I would like to know if there is a better way of doing this.

Note: There is already a bridge rectifier in my circuit for other purposes, and the GND is taken from it as it is seen in the image below. I can't afford changing GND position at this design level.

As the generator gives balanced 3-phase, you can use three large same resistors witch give you the neutral point and then find the frequency from neutral point and one of phases.

simulate this circuit – Schematic created using CircuitLab

In the previous schematic we divided the $100M\Omega$ resistor into $3M\Omega$ and $97M\Omega$ to reduce the output voltage. By the generator's peak voltage ($150V$) the output on $3M\Omega$ voltage will have less than $5V$ peak and can be determined easily by an Op-Amp.

Another way:

Of course it is possible to find out frequency of generator from voltage of one line to another. For example from $R$ to $S$.

The waveform of $R-S$ voltage is like this:

This is the plot of $f = Sin(x)-Sin(x-2 \pi / 3)$ (Plotted by Fooplot). The period of f witch can be found by finding the $f(x)=f(x + T)$ is same as $Sin(x)$. So The frequency of generator is also can be determined by $l-l$ voltage. And a simple zero crossing detector can help to find the frequency.

• how does this idea allow the OP to have a clean signal representative of the power AC waveform referenced to the negative side of his bridge rectifier? I think you also need to point out that there is a safety issue with this method because there is no inherent isolation of the signal and this could be dangerous. Nov 14 '13 at 23:40
• @Andyaka: Thanks. I added the waveform of L-L and safety to my answer. Nov 15 '13 at 4:46

Why don't you just attenuate the voltage on one pair of wires and feed it into an opto-isolator like this: -

This picture was taken from here and the major benefit of using an opto isolator/coupler is that you don't have to have your electronics directly connected to potentially lethal AC voltages. This makes them safe to work on and easier to get working as a prototype.

And if you really want to do it via a bridge rectifier here is a site that has a schematic: -

• @Passerby - the edits you approved were not needed and I have removed them Nov 14 '13 at 23:14
• @Rev1.0 - the edits you approved were not needed and I have removed them. Nov 14 '13 at 23:15

I first decided to directly compare voltage levels of any two different phases with the simple circuit above. In order to see what would happen, I simulated the scenario to see the voltage levels.

Red: Waveform of R with respect to GND.
Magenta: Waveform of S with respect to GND.

It looks OK. But there is a moment at which both the phase voltages become zero with respect to the GND. It is not clear what would happen at this moment; any noise at opamp input may count as dozens of generator frequency. I gave it a second though and decided to compare one of the phases with average of other two.

Note: C1 and C2 are for noise prevention, because of high resistor values.

In this case, the waveforms of $V_R$ and $\dfrac{V_S + V_T}{2}$ are as seen in the plotting below.

Now there is no indefinite region or moment when comparing signal levels. I am going to implement my circuit like this. I hope it works OK.

(Note: Dimensions of the images of the plottings are big enough; just open them in a new tab to see the details and read the texts on them.)

MATLAB code for generating these plottings:

V_PEAK          = 200.0;
FREQ            = 100;
PERIOD          = 1 / FREQ;
TMIN            = 0.0;
TMAX            = 3 * PERIOD;
VMIN            = -V_PEAK - 10.0;
VMAX            = +V_PEAK * sqrt(3) + 10.0;
POINTS_PER      = 100000;
POINTS          = (TMAX - TMIN) * POINTS_PER;
PHASE_000       =   0 * pi / 180;
PHASE_120       = 120 * pi / 180;
PHASE_240       = 240 * pi / 180;

t               = linspace(TMIN, TMAX, POINTS);
V000            = zeros(1, POINTS);
V120            = zeros(1, POINTS);
V240            = zeros(1, POINTS);
VDC             = zeros(1, POINTS);
VLINE000        = zeros(1, POINTS);
VLINE120        = zeros(1, POINTS);
VLINE240        = zeros(1, POINTS);

for i = 1 : 1 : POINTS
V000(i) = V_PEAK * sin(2*pi*FREQ*t(i) - PHASE_000);
V120(i) = V_PEAK * sin(2*pi*FREQ*t(i) - PHASE_120);
V240(i) = V_PEAK * sin(2*pi*FREQ*t(i) - PHASE_240);
if      ((V000(i) > V120(i)) && (V000(i) > V240(i)))
Vmax = V000(i);
elseif  ((V120(i) > V000(i)) && (V120(i) > V240(i)))
Vmax = V120(i);
else
Vmax = V240(i);
end;
if      ((V000(i) < V120(i)) && (V000(i) < V240(i)))
Vmin = V000(i);
elseif  ((V120(i) < V000(i)) && (V120(i) < V240(i)))
Vmin = V120(i);
else
Vmin = V240(i);
end;
VDC(i)      = Vmax - Vmin;
VLINE000(i) = V000(i) - Vmin;
VLINE120(i) = V120(i) - Vmin;
VLINE240(i) = V240(i) - Vmin;
end;

close all;
hFig = figure;
hold on;
set(hFig, 'Position', [1200 50 700 950]);
plot(t, V000, 'Color', [0, 0, 1]);
plot(t, V120, 'Color', [0, 1, 0]);
plot(t, V240, 'Color', [0, 1, 1]);
plot(t, VDC,  'Color', [0, 0, 0]);
plot(t, VLINE000, 'Color', [1, 0, 0]);
plot(t, (VLINE120 + VLINE240) ./ 2, 'Color', [1, 0, 1]);
xlim([TMIN, TMAX]);
ylim([VMIN, VMAX]);

• Would you mind explain why did you compare the R and S? Nov 16 '13 at 12:28
• I didn't compare R and S. I copared R and (S+T)/2 (not exactly but close to their average). Because, this method seemed to be a good solution to me. Did you check the plottings? In your method, the neutral point is obtained by very high resistor values; sensing voltage from high impedance source gave me some worries. Nov 16 '13 at 12:39