Low current from Digital Ports

Hello I am trying to wire my Arduino Uno to 2 solid state relay that require a minimum 7 mA input to operate. However I am only getting about 1.0-2.4 mA out of any one digital port. Not sure what the issue is, I know the max current is 40 mA out of I/O ports.

Please post a schematic of how everything is connected, plus specs for the relays.

Have you set the pinMode to OUTPUT?

Please provide you code as well as the schematic.

The relay is a Crydom D2425 Solid State Relay manual here( Crydom D2425-10 Solid State Electronic Load Relay, Panel Mount D2425-10 Data Sheet - Page 1 of 5 | Manualsbrain.com)

Picture of the connections and my code are attached:

const int numReadings = 10;

int readings[numReadings];      // the readings from the analog input
int Array[numReadings];
int total = 0;                  // the running total
int average;                // the average

void setup() {
  // put your setup code here, to run once:

  pinMode(4, OUTPUT); //make sure you have set your pins as inputs or outputs
  pinMode(7, OUTPUT);
  pinMode(A0, INPUT);

  analogReference(INTERNAL); //Sets voltage from (0- 1.1V)
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);

}
void loop() {

 int total = 0;
 
  for (int i=0; i < numReadings; i++){
    Array[i] = analogRead(A0);
    delay(500);
  }
  for (int i=0; i < numReadings; i++){
  total = total + Array[i];
}

  // calculate the average:
  average = total / numReadings;
  Serial.print(" Average A0: ");
  Serial.println(average);
  
 // Convert the average analog reading (which goes from 0 - 1023) to a voltage (0 - 1.1V):
    float voltage = average * (2.075 * 1000 * 1.1 / 1023.0);
   // Print out the value you read; 
  Serial.print("V1(mV): "); //Displays voltage in mV
  Serial.println(voltage);
    delay(10000);
  
  if (average < 80 ){ //if the analog value of A0 is greater than 37 = ~0.180V then
    
    digitalWrite(4, HIGH);
    delay(10000);
    digitalWrite(4, LOW);
    delay(2500);
    digitalWrite(7, HIGH);
    delay(10000);
    digitalWrite(7, LOW);
    
  }
  else { //if the analog value of A0 is less than 37, make pins 2 and 7 low
    digitalWrite(4, LOW);
    digitalWrite(7, LOW);
  }
  // delay 10000 milliseconds before next reading

  delay(20000);
}

Your picture seems to show wires from the SSR going to a ground pin on the Arduino instead of a 5 volt pin. Thy?

How are you measuring this? Are the ssr's switching on the AC outputs side or not?

Pins 4 and 7 are the output pins and then the other poles on the relay are to connect the ground to complete the circuit if I didnt wire the ground then I wouldn't read a voltage. I used a multimeter to measure the current. The ssr's will switch on the AC output side . I wired a pump to the output side but the pump was not starting and I figured out that there was too little current flowing through the relay.

Your multimeter has a resistor in series with the load, the current is measured via this voltage drop, how much is it? Also you only have about 4.5V because of the protection on the Arduino. I use my scope's current probe to make those type of measurements. You could power it with an external power supply via Vin and measure the current that flows there. You can set it from 8-12V to cover the overhead of your meter. To simply test the relays connect the wire that goes to the port pin to +5 and measure your current and see if it turns on. If you can borrow a second meter or even one measure the voltage at the terminals of the SS relay. I have used lots of these and have never had a problem.

This is not a correct assumption. I would think that a commercial ssr would have an optically isolated input and whatever happens on the primary side does not effect what happens on the secondary.

If the secondary is conducting then there is likely an issue with the pump. Have you tried with a light bulb on the secondary?

Remember, you are turning on a LED in the SSR. An easy test is use a red LED in series with a 220 Ohm resistor in place of your SSR connections and see if the LED lights brightly.

The pump is working fine as I wired a toggle box to it to manually switch it on as a failsafe. I am getting a voltage of 4.5V when the program executes properly across both pins. Connecting the multimeter to pole +3 on the first relay and pole +4 on the second. I also simultaneously measured measured the current across these inputs and I am only getting 1.0-2.5 mA max. I also measured the resistance as well to make sure it went to zero. However, on the output side I am getting no values for current and voltage and a high resistance( as expected) even when there is a voltage reading on the input side. I am thinking to check the wiring of the relays when the pump is connected by using a 9 volt battery on the input side of the SSR to see if it activates the pump.

Is your ground a + voltage? That is why the SSR case has a + sign near that screw.

I have the output voltage from both ports the Arduino wired to +3 on both relays. So the voltage coming from the arduinos goes into the right side of the SSR and the left side (4) is the what the ground is wired to. I have a sketch below.

How are the pump and the ac line supply wired on the secondary side of the ssr? Your last drawing doesn't quite make sense to me.

The way the pump normally works it is a two stroke pump so to complete a full cycle it has to touch the green wire to ground first then the white wire to ground second. With this in mind I wired it to the relay so that the first relay would be triggered first then the second would be triggered. Digital pin 4 outputs first to the first relay where the green wire is connected, then digital pin 7 next with the white wire to complete a full cycle of the pump. I wired it the way I have it in the drawing initially and it didnt work so I switched the output wires to position 1 on the SSR and the ground to position 2 and still no dice.

Can you provide a link for the pump specifications.

FMI Fluid Metering Lab Dispensing Pump QC 216
This is all that's available but on the side of the pump the specs are: 116 VAC, 60 Hz

Green wires on AC equipment in the U.S. are usually protective ground. Black is hot, white is neutral.

We tested it when we stripped the wires to wire the toggle box. You have to touch green to black first and then white to black to complete one full cycle. I am just unsure why the current from the arduino is so low.

From the reference document

b )A mode switch in the up or dispense position. This switch permits
only one dispense or aspirate per
squeeze of the hand/foot switch. The
pump will make a complete uninterrupted dispense cycle once hand/
foot switch is squeezed and held and
will reset itself when released.
The
down or pump position permits the
unit to operate continuously as a
pump. The hand/foot switch is inoperable in this mode.

Are you trying to run this pump in dispense mode for a single cycle with the Arduino replacing the air switch?

Have you tried to run in the pump mode with the normal switching of the black lead through one of the ssrs?