Como analisar 3 frequências simultaneamente e imprimir no LCD?

  Olá pessoal, 
 Estou querendo fazer um projeto para analisar a frequência da rede elétrica em suas 3 fases ''R,S,T''.
 Achei vários projetos na internet, só que vários usam a biblioteca ''FREQUENCY COUNTER'' esta biblioteca só lê uma entrada, e calcula a Freqüência por meio de registradores. 

  Depois de muita pesquisa encontrei um projeto simples que funciona.
  Ele é para uma porta apenas, mas eu adicionei mais uma, ficando assim com duas portas. O unico problema que quando ativo a segunda porta a analise das duas frequências se perdem, dando números  ''loucos''.  
  Vou colocar o código abaixo para vocês me darem uma luz :D 
  Obs: vou colocar o original ''uma frequência'' e o que editei ''duas frequências''
 
  Um canal: 

#include <LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 6, 7, 8, 9);

long freq, tempo;
long pulsos;
boolean pulso;
void setup() {
pulso=HIGH;
pinMode(12,INPUT);
lcd.begin(16, 2);
lcd.setCursor(1,0);
lcd.print("FREQUENCIMETRO");
}

void loop() {
tempo = millis();
if(digitalRead(12)==HIGH)
{
if(pulso==HIGH)
{
pulsos = pulsos + 1;
}

pulso=LOW;

}
else{
pulso=HIGH;
}

if(tempo%2000==0){
freq = pulsos/2;
lcd.setCursor(7,1);
lcd.print(freq);
lcd.print("Hz");
pulsos=0;
}
}

      2 canais:

#include <LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 6, 7, 8, 9);

float freq1;
float freq2;
long tempo;
float pulsos1;
float pulsos2;
boolean pulso1;
boolean pulso2;

void setup() {
pulso1=HIGH;
pulso2=HIGH;
pinMode(12,INPUT);
pinMode(11,INPUT);
lcd.begin(16, 2);
lcd.setCursor(1,0);
lcd.print("FREQUENCIMETRO");
freq1 =0;
pulsos1=0;
freq2 =0;
pulsos2=0;
}

void loop() {

Freq1();
Freq2();

}

void Freq1(void) {

tempo = millis();
if(digitalRead(12)==HIGH)
{
if(pulso1==HIGH)
{
pulsos1 = pulsos1 + 1;

}

pulso1=LOW;

}
else{
pulso1=HIGH;

}

if(tempo%1000==0){
freq1 = pulsos1;
lcd.setCursor(1,1);
lcd.print(freq1);
//lcd.print("Hz");
pulsos1=0;
}}

void Freq2(void) {

tempo = millis();
if(digitalRead(11)==HIGH)
{
if(pulso2==HIGH)
{
pulsos2 = pulsos2 + 1;
}

pulso2=LOW;

}
else{
pulso2=HIGH;
}

if(tempo%1000==0){
freq2 = pulsos2;
lcd.setCursor(8,1);
lcd.print(freq2);
//lcd.print("Hz");
pulsos2=0;
}

}

 

Exibições: 1494

Responder esta

Respostas a este tópico

isso é pqe o arduino só analisa uma entrada analógica de cada vez, então vc vai ter que usar um multiplex ou analisar uma de cada vez em código.

Certo, estou usando portas digitais, estou utilizando um opto acoplador para isolar um pulso único, até ai tudo bem com uma analise ele funciona com duas da erro conforme mencionado.

Mas você saberia me informar como posso fazer uma analise por vez? 

Obrigado 
 

Isso só funciona pra frequência bem baixas, mesmo assim corre o risco de perder pulsos.

Pra ser mais eficiente tem que usar interrupção externa ou timer com clock externo, boa sorte.

void loop() {

Freq1();
}

void Freq1(void) {

tempo = millis();
//freq1
if(digitalRead(12)==HIGH)
{
if(pulso1==HIGH)
{
pulsos1 = pulsos1 + 1;

}

pulso1=LOW;

}
else{
pulso1=HIGH;
//freq2
}
if(digitalRead(11)==HIGH)
{
if(pulso2==HIGH)
{
pulsos2 = pulsos2 + 1;
}

pulso2=LOW;

}
else{
pulso2=HIGH;
}

if(tempo%1000==0){
freq1 = pulsos1;
lcd.setCursor(1,1);
lcd.print(freq1);
//lcd.print("Hz");
pulsos1=0;
freq2 = pulsos2;
lcd.setCursor(8,1);
lcd.print(freq2);
//lcd.print("Hz");
pulsos2=0;
}}

Certo, obrigado pela ajuda, e como eu poderia aumentar as frequências? 

Só analisar  e ver onde você deve acrescentar  códigos, tente, se não conseguir poste aqui oque o fez, que ajudo na medida do possível.

Olá amigo, desculpe não responder mais cedo, estou voltando a trabalhar em cima deste projeto, você tem experiencia com analise de frequência?

boa tarde , como vc fez o hardware ?

Utilizei um transformador 220 para 5v e liguei um opto acoplador para fazer a curva senoidal virar pulsos 0 e 5v assim injetei no sistema para a leitura...

Boa noite Deives.

Para sua implementação, você não precisa calcular simultaneamente as 3 frequências. Pode calcular serialmente, ou seja,

calcula a f da fase R e guarda o resultado, calcula f da fase S e guarda resultado , calcula f da fase T e guarda resultado.

Porém, não vejo muito sentido em medir a frequência das 3 fases, já que as bobinas do gerador estão ligadas no mesmo eixo e portanto sempre terão a mesma frequência.

Sim teriam a mesma frequência, porém podem ter infiltrações que alteram a frequência da mesma, como armonicas, o que vc acha?   voce poderia me passar um exemplo?  obrigado pela sua atenção. 

Oi Deives.

A presença de harmônicas não alteram a frequência da fundamental, apenas vão distorcer a senoide, portanto as 3 frequências serão exatamente iguais e dependentes somente da velocidade de rotação do gerador. O angulo entre as tensões também será sempre o mesmo (120º).

Se você quer conhecer as frequências presentes na rede (fundamental + harmônicas), o caminho é totalmente diferente da medição de frequência. 

Além disso, as concessionárias de energia estão sujeitas a normas que exigem um limite máximo de harmônicas na tensão, portanto ao analisar o sinal de rede você vai encontrar valores de distorção muito baixos. Você pode encontra muitas harmônicas na corrente dependendo da carga, não na tensão. 

Espero ter ajudado / Abraços

   Oi Valter, primeiramente muito obrigado pela sua atenção e explicações, agora realmente entendi, mas como o senhor entende muito mais sobre elétrica, vou te importunar um pouco mais e perguntar-lhe:
  Como trabalho com som e luz, utilizo de main power para divisão e balanceamento das fases e monitoramento da mesma, bom se o senhor quiser ter mais uma ideia de como é e esta ficando este sistema pode entrar no meu facebook me add e trocamos uma ideia por lah.
  Bom, como enfrento muitos tipos de sistemas de fornecimento de energia, pensei em elaborar e construir algum tipo de mainpower, mais sofisticado que possa monitorar as 3 fases, sendo em corrente consumida, tensão fornecida e como esta se comportando as interferências, visei este sistema de monitoramaneto  de frequência, pois algumas vezes temos um gerador, que por picos de consumo devido ao pwm do dimmer e dos picos do subgrave, as vezes fibrila ´´samba´´ mas como não entendo muito a fundo de elétrica pessoa ajuda, uma dica sobre algo que posso colocar para este fim. 

Já tenho o sistema que monitora as tensões e a corrente e mede frequência 60hz.
  
meu face: Deives Bender GTK
Obrigado 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço