LICOR 2420 Light Sensor Amplifier mV not being picked p by Analog Pins

Hi Guys/Gals,

Fairly new to Arduino, however I can't find any reason online why my setup shouldn't be working:

We have a light sensor amplifier outputting between 0 and 10mV DC that changes according to the PAR sensor signal connected to it. We know this because we can check the signal with a multimeter. Is the ADC on the analog pins not capable of picking up this signal, say 5mV for example? We're just getting 0. Any help would be greatly appreciated :slight_smile:

Other sensors work on this pin. Three wires from amp: 1) Voltage in from arduino 5v, (2)Signal to A0, (3) Ground to Analog ground.

Heres the code we're using. You can pretty much ignore the multiplier and gain part of the function as the issue is we're not getting any signal in from analogRead(). Just 0.

#include <SPI.h>    // serial peripheral interface.


const int UTA_PIN=A0; // reads the LiCOR through the UTA using analog pin 0


// constants for converting the raw signal to a PAR value
const float REFERENCE_VOLTS = 5; // create variable (floating number) for the max 
                                   // voltage on the Arduino's analog-to-digital (ADC) 
                                   // converter.

// PAR Calibration to apply after signal in
const float LICOR_CAL_MULTIPLIER = 148.27;
const float UTA_GAIN_FACTOR = 0.350;

// variables for sampling data: 
float measuredPAR;             // create variable (floating number) that holds the PAR
                               // measurement.



void setup(void)
{
  //start serial connection
  Serial.begin(115200);
}

void loop()
{

      measuredPAR = acquirePAR();          // calls function that reads voltage on Analog 
                                           // pin 0 and converts it to PAR level.
      Serial.println(measuredPAR);
      delay(3000);
    } 



float acquirePAR(void)  // this function captures data from the LI-COR Sensor.
{
  int val = analogRead(UTA_PIN);  // read the value from the sensor
                                  // should be int between 0 and 1023
                                  // (2^10 is a 10 bit ADC)
  float volts = val * REFERENCE_VOLTS / 1023;  // order of operations is important here,
                                               // otherwise integer division takes place.
  float PAR_Level = volts * LICOR_CAL_MULTIPLIER / UTA_GAIN_FACTOR;  // calculate PAR 
                                                                     // umol s^-1 m^-2
  return PAR_Level;               // sends the measured PAR level back to the part of
                                  // the main program that called this function.
}                                 // end bracket for the acquirePAR function.

2420 DataSheet

What is the output impedence of your amplifier , can you post a circuit.

DMM has an input impedence of 10 M Ohms normally.

Arduino is far lower.

You should measure the voltage with your DMM while the circuit is connected to the arduino and programme running.

Boardburner2:
What is the output impedence of your amplifier , can you post a circuit.

DMM has an input impedence of 10 M Ohms normally.

Arduino is far lower.

You should measure the voltage with your DMM while the circuit is connected to the arduino and programme running.

No schematic. Have this though:


Says 10k.

Edit: Sorry tried editing faster but the forum didn't let me (5 minute wait)

Ok cool we'll try measuring with it connected.

After measuring again with it connected we're still getting between 0 and 12 mV DC on the DMM. I feel like I'm getting something wrong in the code...

I notice the output is from -2.5 to +5V

How have you connected that to a 0 - 5V ardiono input.

Boardburner2:
I notice the output is from -2.5 to +5V

How have you connected that to a 0 - 5V ardiono input.

You mean to the 0-5V analog pin? I'm sorry I don't understand, it's connected directly in. The signal coming out isn't negative.

The spec you linked to shows amp output between -2.5 and 5 v. not 0 to 5.

With ADC of 1024bits thats approx 5 mv per bit change using a reference of 5 V.

So at 10 mv only 0ne or two LSB bits are able to change.

I would normally expect to see one bit change with 10 mV input but the circuit layout may prevent this.

If you use a lower reference voltage you should get a better span.

The default reference voltage is 5V or 3.3V depending on arduino used.

This can be changed using analogReference().

Using internal ref should give approx 1 mV per bit change.

Boardburner2:
The spec you linked to shows amp output between -2.5 and 5 v. not 0 to 5.

With ADC of 1024bits thats approx 5 mv per bit change using a reference of 5 V.

So at 10 mv only 0ne or two LSB bits are able to change.

I would normally expect to see one bit change with 10 mV input but the circuit layout may prevent this.

If you use a lower reference voltage you should get a better span.

The default reference voltage is 5V or 3.3V depending on arduino used.

This can be changed using analogReference().

Using internal ref should give approx 1 mV per bit change.

Ah great, thank you for the explanation (quite new to electronics). We've tried analogReference(INTERNAL1V1) as we're using the arduino ATmega2560 with no joy. I just realised the mega recommended input voltage is 7-12 volts. We're just powering it with a raspberry pi (5v). Could this be an issue?

JoeFitz:
We're just powering it with a raspberry pi (5v). Could this be an issue?

It most certainly is.

Although the mega runs on 5 V the voltage input passes through a voltage regulator from the power input jack.

This drops volts so your Mega will not get the correct supply voltage.

JoeFitz:
Hi Guys/Gals,

Other sensors work on this pin.

What voltage are they.

This would indicate your code is working, although i have not checked it.

What you are trying to do (read millivolts) requires some care in the design of the hardware.

Boardburner2:
What voltage are they.

This would indicate your code is working, although i have not checked it.

What you are trying to do (read millivolts) requires some care in the design of the hardware.

We're also measuring pH which seems to be outputting again between 0-10mV while connected. That is separate code though. We just want to get this working on its own first. Just mentioned other sensors to prove the pins works.

Still getting zero even with a 12v power source and analog reference 1.1v.

These guys have done something similar although I don't expect you to go through it all :slight_smile:

JoeFitz:
That is separate code though. Just mentioned other sensors to prove the pins works.

Ah that would indicate a code problem then.

  int val = analogRead(UTA_PIN);  // read the value from the sensor
                                  // should be int between 0 and 1023
                                  // (2^10 is a 10 bit ADC)

That would seem to indicate that this code is designed for an amplified input signal of at least a volt.

Boardburner2:
Ah that would indicate a code problem then.

Yes, however the code is super simple:

int val = analogRead(UTA_PIN);

Should give me something. But it just gives me 0.

I think the amplifier is outputting far too low. Followed the manual to the tee though.

*Edit

Correct.
I followed the link.
The amplifier they are using has a selectable output of 1,2,5 or 10 volts.

I would expect to see some change in signal but if this is on a breadboard possibly not.

Can you post a Photo of the amp you are using,

JoeFitz:
Is the ADC on the analog pins not capable of picking up this signal, say 5mV for example?

It depends very much on your circuit layout and design.
You are measuring a tiny signal relative to the ADC input.

I would expect personally to get an on off reading from the sensor.
Trying to read a value is pretty much hopless though without an amplifier.

The readings you give 10 mV, and the spec of the amp you posted make me think its broken or not correctly configured.

Boardburner2:
Correct.
I followed the link.
The amplifier they are using has a selectable output of 1,2,5 or 10 volts.

I would expect to see some change in signal but if this is on a breadboard possibly not.

Can you post a Photo of the amp you are using,

Ye however, they only used the .2 gain factor and we only need to use the .350 or .375 gain factor depending on whether we use the arduino 5v to power it or an external 6v. Theres an equation you fill in according to your PAR sensor calibration to know what gain to use.

But ye the amp is definitely not doing what its supposed to be if we're only getting microvolts, despite going directly from the amp to the analog in. We'll get in touch with support for it, see if they can help out.

Thanks the help Boardburner!

Edit: 2420 Amp.

Excuse messy wires, we were troubleshooting the wires.

Bottom right goes to sensor. We were getting a negative voltage first and it was suggested to swap + and - to get positive voltage. I think thats the issue. The amp doesn't account for the swap we have made.

One further thought, if its the same amplifier, there are jumpers inside which have to be set to set gain.

If they are absent it will probably not work at all.

Boardburner2:
One further thought, if its the same amplifier, there are jumpers inside which have to be set to set gain.

If they are absent it will probably not work at all.

2420 Amp.

Excuse messy wires, we were troubleshooting the wires.

Bottom right goes to sensor. We were getting a negative voltage first and it was suggested to swap + and - to get positive voltage. Its a bad picture but the jumpers are all up which is .375 which is closest to what the equation provided in the manual for both sensor and amp when using an external 6v power source Separate to the adruino). That however is certainly not being outputted...

From your photograph the switches all appear to be on or off

I suspect that is wrong one of them needs to be operated.

You need to consult the manual for the amp you have.

Edit
On is normally away from the numbers.

Boardburner2:
From your photograph the switches all appear to be on or off

I suspect that is wrong one of them needs to be operated.

You need to consult the manual for the amp you have.

Correct they're all off to get .375 which is what we got when we did the below equation with our constant and our 6v.

Equation
Gain table

I'm stumped :slight_smile: Will contact LICOR for help.

I am puzzled why there are 3 wires going to the sensor, these things are normally 2 , a coax cable.

Its just a diode.