Go Down

Topic: Ajuda com Energy monitor (resolvido) (Read 1 time) previous topic - next topic

Mar 25, 2013, 03:18 pm Last Edit: Mar 28, 2013, 12:43 pm by igorayres Reason: 1
Fala galera, tudo tranquilo?

Seguinte, estou utilizando a biblioteca Emon.lib (http://openenergymonitor.org/emon/), para mediar a corrente em um fio, e preciso de alguém com experiencia para me ajudar, na verdade a minha dúvida é bem simples.

O meu projeto contém alguns medidores de corrente (10), e para mensurar tais valores, estou utilizando o exemplo que acompanha a  biblioteca, algo muito simples:

Code: [Select]
// EmonLibrary examples openenergymonitor.org, Licence GNU GPL V3

#include "EmonLib.h"                   // Include Emon Library
EnergyMonitor emon1;                   // Create an instance

void setup()

  Serial.begin(9600);
 
  emon1.current(1, 111.1);             // Current: input pin, calibration.
}

void loop()
{
  double Irms = emon1.calcIrms(1480);  // Calculate Irms only
 
  Serial.print(Irms*230.0);        // Apparent power
  Serial.print(" ");
  Serial.println(Irms);        // Irms
}



Neste exemplo, o pino de referencia (input pin calibration) é o pino 1.

O que eu preciso, é criar um laco para os pinos analógicos, que no meu caso serão 10 (isso é tranquilo), e fazer com que ele print a corrent do pino específico, vamos supor se eu enviar 2, ele printa a corrente do pino 2, se eu enviar 7, do pino 7, e assin sucessivamente.  No exemplo ele simplesmente printa a variavél "Irms", que foi previamente relacionada ao pino1, eu não quero isso, quero printar a corrente do pino de referencia.

Será que eu devo criar uma instancia diferente para cada pino de leitura, ou simplesmente criando um laço eu consigo o resultado desejado?

Outra dúvida, é como eu complemento uma variável? Vamos supor que eu tenha uma variavél X do tipo int, cujo valor é 10, o arduino compreende se eu passar desta forma:

Serial.println(Irms(X));

Alguém pode me ajudar?

Ok...

Se não me engano essa biblioteca é para enviar dados pela Internet para o emoncms, não?

Outra coisa, que placa estás a usar para teres 10 ADs?

O CalcIrms precisa do número de amostras que vais usar... tens a certeza acerca das 1480?

Porque não crias diferentes instâncias do emon?

Code: [Select]


#include "EmonLib.h"                   // Include Emon Library
EnergyMonitor emon[10];                   // Create an instance
const int pinos[10] = {1,2,3,4,5,6,7,8,9,10};  //configurar pinos do AD.

void setup()

  Serial.begin(9600);
  for (int i = 0; i <10; i++ {
     emon[i].current(pinos[i], 111.1);             // Current: input pin, calibration.  /
  }

void loop()
{
  for (int j = 0; j <10; j++) {
     double Irms = emon[j].calcIrms(1480);  // Calculate Irms only
     Serial.print("Sensor ");
     Serial.println(j);
     Serial.print(Irms*230.0);        // Apparent power
     Serial.print(" ");
     Serial.println(Irms);        // Irms
  }
}

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).


Ok...

Se não me engano essa biblioteca é para enviar dados pela Internet para o emoncms, não?

Outra coisa, que placa estás a usar para teres 10 ADs?

O CalcIrms precisa do número de amostras que vais usar... tens a certeza acerca das 1480?

Porque não crias diferentes instâncias do emon?

Code: [Select]


#include "EmonLib.h"                   // Include Emon Library
EnergyMonitor emon[10];                   // Create an instance
const int pinos[10] = {1,2,3,4,5,6,7,8,9,10};  //configurar pinos do AD.

void setup()

  Serial.begin(9600);
  for (int i = 0; i <10; i++ {
     emon[i].current(pinos[i], 111.1);             // Current: input pin, calibration.  /
  }

void loop()
{
  for (int j = 0; j <10; j++) {
     double Irms = emon[j].calcIrms(1480);  // Calculate Irms only
     Serial.print("Sensor ");
     Serial.println(j);
     Serial.print(Irms*230.0);        // Apparent power
     Serial.print(" ");
     Serial.println(Irms);        // Irms
  }
}




Babulindo, ótima ideia de criar laços para iniciar as instnacias! vou testar (o meu pouquissimo conhecimento que tenho sobre programação adquiri nos útimos meses, com este projeto).

O medior em questão, no caso, é este daqui:

http://dx.com/p/ac-ta12-100-current-sensor-module-for-arduino-white-red-161183

Está biblioteca, até eu sei, é para mensurar, corrente, tensão e voltagem de um projeto.

No scketh que você me mandou, onde eu defino qual o pino de referencia? gostaria de enviar um "7" para a entrada serial, e ele printar os dados da porta 7, e pelo que eu percebi, esse Irms, irá printar a tensão de todos os pinos  não é isso?

Obrigado

Tens de configurar isso aqui:

Code: [Select]
const int pinos[10] = {1,2,3,4,5,6,7,8,9,10};  //configurar pinos do AD.

Em vez de 1,2,3,4... metes os pinos do AD. Por exemplo:

Code: [Select]
const int pinos[10] = {A0,A1,A2,A3,A4,A5,A6,A7,A8,A9};  //configurar pinos do AD.
Estes estão visíveis na placa.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Muito obrigado babulindo!!

Resolveu!!

Go Up