Pages: [1]   Go Down
Author Topic: Ajuda com Energy monitor (resolvido)  (Read 969 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
// 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?
« Last Edit: March 28, 2013, 06:43:39 am by igorayres » Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3263
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

#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
  }
}

Logged

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).

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

#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
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3263
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tens de configurar isso aqui:

Code:
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:
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.
Logged

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).

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muito obrigado babulindo!!

Resolveu!!
Logged

Pages: [1]   Go Up
Jump to: