Latching Solenoid valve

Hello there,

I am working on a project which require a latching solenoid valve.
I have built an H-bridge circuit using TIP122 and TIP127 and operating it using Arduino Nano.
The specification of the latching solenoid valve are 6V DC, coil resistance 17.5 Ohms, minimum current 228 mA and pulse width of >=30ms.

When I operate latching solenoid valve from a 6V lead acid battery directly it makes loud latching sound means the valve is open and when I operate it using H-bridge with Arduino Nano it latches but does not make any latching sound.

Is there anything which I missed in the circuit?
The code and circuit are attached. In circuit I have attached the L1 inductor instead of latching solenoid valve for representation only.

int out1 = 12, out2 = 11, out3 = 10, out4 = 9;


void setup() 
{
  Serial.begin(9600);
  
  pinMode(out1, OUTPUT);
  pinMode(out2, OUTPUT);
  pinMode(out3, OUTPUT);
  pinMode(out4, OUTPUT);

  digitalWrite(out1, HIGH);
  digitalWrite(out2, LOW);
  digitalWrite(out3, HIGH);
  digitalWrite(out4, LOW);
}

void loop() 
{
  Serial.println("SV OPEN");          ////Forward direction
  
  digitalWrite(out1, LOW);            ////Q1 LOW
  digitalWrite(out4, HIGH);           ////Q4 HIGH
  digitalWrite(out2, LOW);            ////Q2 LOW
  digitalWrite(out3, HIGH);           ////Q3 HIGH
  delay(35);

  Serial.println("OFF");              ////No switching of transistor  
  digitalWrite(out4, LOW);
  digitalWrite(out2, LOW);
  digitalWrite(out3, HIGH);
  delay(2000);
  
  Serial.println("SV CLOSE");         ////Reverse direction
  
  digitalWrite(out1, HIGH);           ////Q1 HIGH
  digitalWrite(out4, LOW);            ////Q4 LOW
  digitalWrite(out2, HIGH);           ////Q2 HIGH
  digitalWrite(out3, LOW);            ////Q3 LOW
  delay(35);

  Serial.println("OFF");              ////No switching of transistor
  digitalWrite(out1, HIGH);
  digitalWrite(out4, LOW);
  digitalWrite(out2, LOW);
  digitalWrite(out3, HIGH);
  delay(2000);
}

Hello there,

I am working on a project which require a latching solenoid valve.
I have built an H-bridge circuit using TIP122 and TIP127 and operating it using Arduino Nano.
The specification of the latching solenoid valve are 6V DC, coil resistance 17.5 Ohms, minimum current 228 mA and pulse width of >=30ms.

When I operate latching solenoid valve from a 6V lead acid battery directly it makes loud latching sound means the valve is open and when I operate it using H-bridge with Arduino Nano it latches but does not make any latching sound.

Is there anything which I missed in the circuit?
The code and circuit are attached. In circuit I have attached the L1 inductor instead of latching solenoid valve for representation only.

int out1 = 12, out2 = 11, out3 = 10, out4 = 9;


void setup()
{
  Serial.begin(9600);
 
  pinMode(out1, OUTPUT);
  pinMode(out2, OUTPUT);
  pinMode(out3, OUTPUT);
  pinMode(out4, OUTPUT);

  digitalWrite(out1, HIGH);
  digitalWrite(out2, LOW);
  digitalWrite(out3, HIGH);
  digitalWrite(out4, LOW);
}

void loop()
{
  Serial.println("SV OPEN");          ////Forward direction
 
  digitalWrite(out1, LOW);            ////Q1 LOW
  digitalWrite(out4, HIGH);           ////Q4 HIGH
  digitalWrite(out2, LOW);            ////Q2 LOW
  digitalWrite(out3, HIGH);           ////Q3 HIGH
  delay(35);

  Serial.println("OFF");              ////No switching of transistor 
  digitalWrite(out4, LOW);
  digitalWrite(out2, LOW);
  digitalWrite(out3, HIGH);
  delay(2000);
 
  Serial.println("SV CLOSE");         ////Reverse direction
 
  digitalWrite(out1, HIGH);           ////Q1 HIGH
  digitalWrite(out4, LOW);            ////Q4 LOW
  digitalWrite(out2, HIGH);           ////Q2 HIGH
  digitalWrite(out3, LOW);            ////Q3 LOW
  delay(35);

  Serial.println("OFF");              ////No switching of transistor
  digitalWrite(out1, HIGH);
  digitalWrite(out4, LOW);
  digitalWrite(out2, LOW);
  digitalWrite(out3, HIGH);
  delay(2000);
}

Looking at that circuit one problem might be that the TIP127s on the top of your H-bridge are not turning off. With only 5V available at the GPIO of the Arduino you've got more than a diode-drop difference in potential between the emitter and the base of each transistor.

Assuming low switching speeds (or static, DC operating conditions) you might consider adding an NPN-stage between the GPIOs and the top-side transistors:

  • tie the base to the GPIO with a series resistor
  • tie the collector to the TIP127 with a series resistor and add a pull-up to 6V
  • tie the emitter to GND

You'll need to invert the sense of the pins driving as the NPN will act as an inverter.

@krpst

Your topic was Moved to it's current location / section as it is more suitable.

Could you also take a few moments to Learn How To Use The Forum.

Other general help and troubleshooting advice can be found here.
It will help you get the best out of the forum in the future.

Look at Vce(sat) of the TIP122 and TIP127 - they are terrible, you are dropping all your source voltage across the transistors, leaving little for the coil.
Look into using P-channel MOSFETs and N-channel MOSFETs instead.
NDP6020, and AOD514
http://aosmd.com/res/data_sheets/AOD514.pdf
which has an Rds (on-resistance) of just .0085 ohm with 4.5V on the Gate, at up to 20A.

IRL520 would be good choice for N-channel if you thru hole

Perhaps you could compensate for the high VCE voltage drop for each transistor. Probably the overall voltage drop would be around 3V-4V with both transistors on. This leaves only 2-3V to drive the solenoid.Maybe a 9VDC supply would work. Check the datasheet for your solenoid valves ... the max supply voltage might be 150% of nominal.

The 30ms pulse might be minimum timing, the max could be 100-200ms or might be specified as 10% duty cycle (on-time/off-time) and xx operations per minute. Therefore, maybe 50ms pulse would be more reliable.

In your loop, you're missing "digitalWrite(out1, HIGH);" for "No switching of transistor" that follows the forward direction.

krpst:
Is there anything which I missed in the circuit?

Yes.

You are using obsolete (Darlington) transistors. Each of them drops at least a Volt in conduction, so from your 5 V supply, you are only providing 3 V at he very most to the solenoid.

If you can actually provide 5 V to the solenoid, its 17.5 Ohm coil will draw 286 mA. An AO4606 is a dual logic level FET available on eBay or Aliexpress which if you use two for your H-bridge, will only lose 25 mV and leave 4.975 V to operate your solenoid.