DC Monitoring with Hall effect sensor

Hello , my name is Gerardo and I write from Italy , I would like to make a DC monitoring . I have a number of photovoltaic panels 15 , a Voc of about 600V , the Amps will be no more than about 12A . I would like to calculate only the passage of amps , excluding the voltage . Which sensor can I use? Kindly anyone can help me ?

I had thought this:

http://www.yhdc.com/en/product/366/

works with emonlib ?

Thanks for a kind reply

Robert Wall's picture

Re: DC Monitoring with Hall effect sensor

Your Hall effect sensor will not work with emonLib. You will need to write your own sketch to read the output, convert the scale and send the current reading to whatever device you have to record or display it.

Gerardo's picture

Re: DC Monitoring with Hall effect sensor

Anyone willing to help me ?
 

kosmonooit's picture

Re: DC Monitoring with Hall effect sensor

Its relatively straight forward with the ACS758

My code for Arduino (you have to measure the offset, ie reading with Zero current, that's the commented out lines in the loop ):

 

// DC Current Measurement
  float I1DC = 0.0;                              // Scaled DC 1 Current 0-100A
  float I1DCOs = 512;                            // Current DC 1 Offset reading  (0 Amps)
  float I1DCMax = 100.0;                         // Current DC 1 Maximum reading
 
  const int DC_Samples = 10;                     // Number of Samples per DC Reading to average
  const int DC_SampWait = 10;                    // Number of miliseconds to wait between each sample   

void Read_IDC()
 {
     // Read DC Current  value on analog input pin
     // Do V1DC_Samples and average total
     // wait V1DC_SampWait between each sample
 
      long int TempValue = 0 ; 
      int LoopCount = DC_Samples;

      float I1DC_SampleSum = 0;
      float I1DC2 = 0;
     
      while (LoopCount > 0)
       {
         
        TempValue = analogRead(I1DCInputPin);

        // Serial.print("Read:");
        // Serial.print(TempValue);
        // Serial.println();
       

      
        I1DC = (TempValue - I1DCOs) * ( I1DCMax / (1024 - I1DCOs)) ;

 
        if (I1DC < 1)
        {
      I1DC = 0.0;          // Ignore small readings
        }     

        I1DC_SampleSum = I1DC_SampleSum + I1DC;

        delay(DC_SampWait);  // Delay between each sample
    
        LoopCount-- ;
 
     }
    
    I1DC = I1DC_SampleSum / DC_Samples;
    
  return;
 }

 

 

 

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.