# Dúvida sobre Monitor de Energia Trifásico

**URL:** <https://forum.fazedores.com/t/duvida-sobre-monitor-de-energia-trifasico/3934>\
**Category:** Arduino\
**Created:** [Fevereiro 10, 2017, 8:06pm UTC](https://forum.fazedores.com/t/duvida-sobre-monitor-de-energia-trifasico/3934 "2017-02-10T20:06:48Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![lgfmoura](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/lgfmoura/32/1683_2.png) [@lgfmoura](https://forum.fazedores.com/u/lgfmoura)\
**Post date:** [Fevereiro 10, 2017, 8:06pm UTC](https://forum.fazedores.com/t/duvida-sobre-monitor-de-energia-trifasico/3934/1 "2017-02-10T20:06:48Z")

</div>

Boa Tarde,

Estou tentando montar um monitor de energia para minha casa que mostre o consumo instantâneo em W e o acumulado em KWh e mostre o valor acumulado da conta de energia. testei o circuito em uma das fases ligando uma lâmpada e parece que está funcionando bem, porém na minha residência o sistema é trifásico, e ai vem a dúvida: eu posso passar as 3 fases por dentro de um mesmo sensor SCT-013 100a ou necessitaria de 3 sensores? como ficaria o código? abaixo segue o meu código atual e o esquema do circuito:

**//Carrega as bibliotecas**  
**#include \<EEPROM.h\>**  
**#include "EmonLib.h"**  
**#include \<LiquidCrystal.h\>**  
**#include \<avr/eeprom.h\>**

**#define eeprom\_read\_to(dst\_p, eeprom\_field, dst\_size) eeprom\_read\_block(dst\_p, (void _)offsetof(\_\_eeprom\_data, eeprom\_field), MIN(dst\_size, sizeof((\_\_eeprom\_data_)0)-\>eeprom\_field))**  
**#define eeprom\_read(dst, eeprom\_field) eeprom\_read\_to(&dst, eeprom\_field, sizeof(dst))**  
**#define eeprom\_write\_from(src\_p, eeprom\_field, src\_size) eeprom\_write\_block(src\_p, (void _)offsetof(\_\_eeprom\_data, eeprom\_field), MIN(src\_size, sizeof((\_\_eeprom\_data_)0)-\>eeprom\_field))**  
**#define eeprom\_write(src, eeprom\_field) { typeof(src) x = src; eeprom\_write\_from(&x, eeprom\_field, sizeof(x)); }**  
**#define MIN(x,y) ( x \> y ? y : x )**

**//Cria Instância**  
**EnergyMonitor emon1;**

**//Indica os pinos do display**  
**LiquidCrystal lcd(12, 11, 5, 4, 3, 2);**

**//Tensao da rede eletrica**  
**int rede = 115.0;**

**//Indica o pino do sensor SCT-010 000**  
**int pino\_sct = 0;**

**struct \_\_eeprom\_data {**  
**double flash\_kwhtotal;**  
**};**

**//Cria variaveis globais**  
**double kwhTotal;**  
**double kwhTotal\_Acc;**  
**double vlreais;**  
**double vlreais\_Acc;**  
**double realPower;**  
**unsigned long ltmillis, tmillis, timems, previousMillis, refresh;**  
**char charBuf[30];**

**void setup()**  
**{**  
**Serial.begin(9600);**  
**emon1.current(pino\_sct, 52); //Pino, calibracao**  
**eeprom\_read(kwhTotal, flash\_kwhtotal);**  
**previousMillis = millis();**  
**lcd.begin(16, 2);**  
**lcd.clear();**

**//Informacoes iniciais no display**  
**lcd.setCursor(0,0);**  
**lcd.print(“W:”);**

* * *

**lcd.setCursor(7,0);**  
**lcd.print(“KWh:”);**

* * *

**lcd.setCursor(0,1);**  
**lcd.print(“Valor (R$):”);**  
**}**

**void loop()**  
**{**  
**// Calcula quantidade de tempo desde a última measurment realpower.**  
**ltmillis = tmillis;**  
**tmillis = millis();**  
**timems = tmillis - ltmillis;**  
**double Irms = emon1.calcIrms(1480); // Calculate Irms**

**//Calcula e mostra o valor da potencia**  
**lcd.setCursor(2,0);**  
**lcd.print(" ");**  
**lcd.setCursor(2,0);**  
**lcd.print(Irms\*rede,0);**

**// Calcular o número de hoje de kWh consumido.**  
**kwhTotal = (((Irms\*115.0)/1000.0) \* 1.0/3600.0 \* (timems/1000.0));**  
**kwhTotal\_Acc = kwhTotal\_Acc + kwhTotal;**  
**vlreais = kwhTotal \* 0.75;**  
**vlreais\_Acc = vlreais\_Acc + vlreais;**

**Serial.print("kwhTotal\_Acc: ");**  
**Serial.println(kwhTotal\_Acc, 4);**

* * *

**Serial.print("vlreais\_Acc: ");**  
**Serial.println(vlreais\_Acc, 4);**

* * *

**Serial.print("");**

* * *

**lcd.setCursor(11,0);**  
**lcd.println(kwhTotal\_Acc, 4);**

* * *

**lcd.setCursor(11,1);**  
**lcd.println(vlreais\_Acc, 4);**

**lcd.print("");**

* * *

**//grava na memoria a cada 1 minuto**  
**if ((millis() - refresh)\>= 100)**  
**refresh = millis(); //actualiza a contagem.**  
**{**  
**[//Serial.println](https://Serial.println)(“Gravando na EEprom”);**  
**eeprom\_write(kwhTotal, flash\_kwhtotal);**  
**previousMillis=millis();**  
**}**  
**//Multiplica pelo valor kilowatt hora R$ 0.35 Reais**  
**//vlreais = kwhTotal \* 0.35;**  
**}**

**void printFloat(float value, int places) {**  
**// this is used to cast digits**  
**int digit;**  
**float tens = 0.1;**  
**int tenscount = 0;**  
**int i;**  
**float tempfloat = value;**

**// Se certificar de que arredondar corretamente. este poderia usar pow de \<math.h\>, mas não parece vale a importação**  
**// Se esta etapa arredondamento não está aqui, o valor 54,321 imprime como 54,3209**

**// calcular arredondamento prazo d: 0,5 / pow (10, lugares)**  
**float d = 0.5;**  
**if (value \< 0)**  
\*_d = -1.0;_  
**// dividir por dez para cada casa decimal**  
**for (i = 0; i \< places; i++)**  
**d/= 10.0;**  
**// este pequeno disso, combinado com truncamento vai arredondar os nossos valores corretamente**  
**tempfloat += d;**

**// Primeiro obter dezenas de valor para ser a grande potência de dez a menos do que o valor**  
**// Tenscount não é necessário, mas seria útil se você queria saber depois desta quantos caracteres o número tomará**

**if (value \< 0)**  
\*_tempfloat = -1.0;_  
**while ((tens \* 10.0) \<= tempfloat) {**  
\*_tens = 10.0;_  
**tenscount += 1;**  
**}**

**// escrever o negativo, se necessário**  
**if (value \< 0)**  
**Serial.print(’-’);**

**if (tenscount == 0)**  
**Serial.print(0, DEC);**

**for (i=0; i\< tenscount; i++) {**  
**digit = (int) (tempfloat/tens);**  
**Serial.print(digit, DEC);**  
**tempfloat = tempfloat - ((float)digit \* tens);**  
**tens /= 10.0;**  
**}**

**// se não há lugares após decimal, pare agora e retorno**  
**if (places \<= 0)**  
**return;**

**// caso contrário, escreva o ponto e continuar**  
**Serial.print(’.’);**

**// Agora, escrever cada casa decimal, deslocando um dígitos por uma, para o lugar queridos e escrever o valor truncado**  
**for (i = 0; i \< places; i++) {**  
\*_tempfloat = 10.0;_  
**digit = (int) tempfloat;**  
**Serial.print(digit,DEC);**  
**// uma vez escrito, subtrair fora esse dígito**  
**tempfloat = tempfloat - (float) digit;**  
**delay(1000);**  
**}**  
**}**

 ![](https://us1.discourse-cdn.com/flex016/uploads/fazedores/original/2X/c/c7d5774391da61c23a389fbdf92dc13da81ce348.jpg)

---

<div class="post-metadata">

**Author:** ![lucaswmsilva](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/lucaswmsilva/32/1113_2.png) [@lucaswmsilva](https://forum.fazedores.com/u/lucaswmsilva)\
**Post date:** [Fevereiro 14, 2017, 10:20am UTC](https://forum.fazedores.com/t/duvida-sobre-monitor-de-energia-trifasico/3934/2 "2017-02-14T10:20:53Z")

</div>

Olá @lgfmoura.

Você não pode usar três fases passando pelo mesmo sensor de corrente, pois o mesmo funciona com a leitura do campo magnético de cada fase, se vc colocar duas ou mais fases no sensor de corrente estes campos eletromagnéticos se anularam. No código, para inserir mais sensores basta criar a variável corrente, corrente1, corrente2, e a mesma coisa caso for também medir a tensão.  
Abraços.

---

<div class="post-metadata">

**Author:** ![lgfmoura](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/lgfmoura/32/1683_2.png) [@lgfmoura](https://forum.fazedores.com/u/lgfmoura)\
**Post date:** [Fevereiro 14, 2017, 9:25pm UTC](https://forum.fazedores.com/t/duvida-sobre-monitor-de-energia-trifasico/3934/3 "2017-02-14T21:25:03Z")

</div>

Ok, adquiri mais 2 sensores. Estou esperando chegar para testar e postar os resultados.

---

<div class="post-metadata">

**Author:** ![Anderson\_Oliveira](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/anderson_oliveira/32/3270_2.png) [@Anderson\_Oliveira](https://forum.fazedores.com/u/Anderson_Oliveira)\
**Post date:** [Março 12, 2020, 9:14pm UTC](https://forum.fazedores.com/t/duvida-sobre-monitor-de-energia-trifasico/3934/4 "2020-03-12T21:14:46Z")

</div>

amigo, boa tarde você atingiu os resultados esperados ? estou iniciando um projeto e gostaria de tirar algumas duvidas, vc pretende postar aqui ?

---

<div class="post-metadata">

**Author:** ![Anilson](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/anilson/32/3410_2.png) [@Anilson](https://forum.fazedores.com/u/Anilson)\
**Post date:** [Junho 30, 2020, 11:44pm UTC](https://forum.fazedores.com/t/duvida-sobre-monitor-de-energia-trifasico/3934/5 "2020-06-30T23:44:41Z")

</div>

Você precisa de 3 sensores TC ,um para cada fase .
