Ajuda com sensor de tensão ZMPT101B

Boa tarde.

Pode me dar uma ajuda com relação ao uso do sensor ZMPT101B?

Declarei duas instâncias de medição:

#include <EmonLib.h>

EnergyMonitor emon1, emon2;

void setup() {

   lcd.begin(16, 2);
   emon1.voltage(2, volt_cal_entrada1, 1.7);
   emon2.voltage(3, volt_cal_entrada2, 1.7);

void loop() {

  supplyVoltage_entrada1 = medidor_tensao_entrada1();
  supplyVoltage_entrada2 = medidor_tensao_entrada2();


float medidor_tensao_entrada1(){
  
  emon1.calcVI(20,2000);     
    
  float supplyVoltage_entrada1 = emon1.Vrms;
  
  return supplyVoltage_entrada1;
  
}

float medidor_tensao_entrada2(){
  
  emon2.calcVI(20,2000);    
  
  float supplyVoltage_entrada2 = emon2.Vrms; 
 
  return supplyVoltage_entrada2;
  
}

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(supplyVoltage_entrada1, tensao_casa_dec);
  lcd.println("V");
  lcd.setCursor(5, 0);
  lcd.print(supplyVoltage_entrada2, tensao_casa_dec);
  lcd.println("V");

Ocorre que com a chamada da função "supplyVoltage_entrada2 = medidor_tensao_entrada2()" comentada o código funciona perfeito com a instância emon1 fazendo a medida certinho.

Quando descomento a instância emon2 as duas leituras são feitas mas o código fica dando umas travadas, como se tivesse com alguma função delay atravancando o processador.

Agradeço quem puder ajudar.

Leste a documentação acerca do método calcVI?

O 2000 que passas para dentro desse método são milisegundos e é o máximo tempo que o processador espera para ver a passagem por zero da tensão.

  //-------------------------------------------------------------------------------------------------------------------------
  // 1) Waits for the waveform to be close to 'zero' (mid-scale adc) part in sin curve.
  //-------------------------------------------------------------------------------------------------------------------------
  unsigned long start = millis();    //millis()-start makes sure it doesnt get stuck in the loop if there is an error.

  while(1)                                   //the while loop...
  {
    startV = analogRead(inPinV);                    //using the voltage waveform
    if ((startV < (ADC_COUNTS*0.55)) && (startV > (ADC_COUNTS*0.45))) break;  //check its within range
    if ((millis()-start)>timeout) break;
}

Que tens ligado nesse pino? é uma tensão AC?

É um valor de tensão ac vinda do sensor ZMPT101B.

Por que será que com uma instância apenas o código não trava?

Já experimentaste comentar a primeira instância em vez da segunda como disseste?