September 17, 20223 yr I recently bought an auto valve and I can't work out how to wire it up, I have several auto valves of a different type used to automate a home brew kit, but this one has me stumped. The valve came from www.actuation.co.uk The drawing on the side of the autovalve is like this DC + - Signal Off | | -------| | Signal ON CLOSE | | -| | OFF | | COM | OPEN | | | | | | | | 1 3 4 5 6 7 8 9 G | | | | | | | | | Drive M I hope that makes sense, so what I'm seeing here is that I attach + to 1 then - to 3 and the drive opens the valve then if I attach 4 the drive closes, if I then remove 4 the drive opens, so I'm trying to control 4 with an SSR via an arduino when I use an SSR the valve opens then stays open ( or closed ) until I turn off the power and re start the valve then it operates as normal again until its fully open or closed then it stays open / closed again until the power is removed again, I know I've wired some thing wrong I cant work out what. The arduino scetch is a simple open delay close delay const int HLTFillMotor1Pin = 8; const int HLTFillMotor2Pin = 9; const int HLTFillEnablePin = 10; const int MLTFillMotor1Pin = 25; const int MLTFillMotor2Pin = 26; const int MLTFillEnablePin = 27; const int RPPumpRequired = 28; // signal from bsc const int RPValveMotor1Pin = 29; // Rim's Pump control valve const int RPValveMotor2Pin = 30; const int RPValveEnablePin = 31; const int BKFillMotor1Pin = 32; // Boil kettle const int BKFillMotor2Pin = 33; const int BKFillEnablePin = 34; const int BKEmptyMotor1Pin = 35; // from boil kettle to chiller (and pump) const int BKEmptyMotor2Pin = 36; const int BKEmptyEnablePin = 37; const int FVFillMotor1Pin = 38; // From BK to fermentation vessle Fill Valve const int FVFillMotor2Pin = 39; const int FVFillEnablePin = 40; const int CWMotor1Pin = 41; // ChillerWater Valve const int CWMotor2Pin = 42; const int CWEnablePin = 43; void setup() { pinMode (MLTFillMotor1Pin, OUTPUT); pinMode (MLTFillMotor2Pin, OUTPUT); pinMode (MLTFillEnablePin, OUTPUT); pinMode (HLTFillMotor1Pin, OUTPUT); pinMode (HLTFillMotor2Pin, OUTPUT); pinMode (HLTFillEnablePin, OUTPUT); pinMode (RPValveMotor1Pin, OUTPUT); pinMode (RPValveMotor2Pin, OUTPUT); pinMode (RPValveEnablePin, OUTPUT); pinMode (BKFillMotor1Pin, OUTPUT); pinMode (BKFillMotor2Pin, OUTPUT); pinMode (BKFillEnablePin, OUTPUT); pinMode (BKEmptyMotor1Pin, OUTPUT); pinMode (BKEmptyMotor2Pin, OUTPUT); pinMode (BKEmptyEnablePin, OUTPUT); pinMode (FVFillMotor1Pin, OUTPUT); pinMode (FVFillMotor2Pin, OUTPUT); pinMode (FVFillEnablePin, OUTPUT); pinMode (CWMotor1Pin, OUTPUT); pinMode (CWMotor2Pin, OUTPUT); pinMode (CWEnablePin, OUTPUT); digitalWrite (HLTFillEnablePin, HIGH); // Turn On ball HLT Fill valve digitalWrite (HLTFillMotor1Pin, HIGH); // Close HLT Fill valve digitalWrite (HLTFillMotor2Pin, LOW); digitalWrite (MLTFillEnablePin, HIGH); // Turn on HLTFill valve digitalWrite (MLTFillMotor1Pin, HIGH); // Close HLT Fill valve digitalWrite (MLTFillMotor2Pin, LOW); digitalWrite (RPValveEnablePin, HIGH); // Turn on RPvalve digitalWrite (RPValveMotor1Pin, HIGH); // Close RPValve digitalWrite (RPValveMotor2Pin, LOW); } void loop() { closeHLTFillValve(); delay(1000); closeMLTFillValve(); delay(1000); closeRPValve(); delay(1000); closeBKFillValve(); delay(1000); closeBKEmptyValve(); delay(1000); closeCWValve(); delay(1000); closeFVFillValve(); delay(10000); openHLTFillValve(); delay(1000); openMLTFillValve(); delay(1000); openRPValve(); delay(1000); openBKFillValve(); delay(1000); openBKEmptyValve(); delay(1000); openCWValve(); delay(1000); openFVFillValve(); delay(10000); } void openHLTFillValve(){ digitalWrite(HLTFillEnablePin, HIGH); digitalWrite(HLTFillMotor1Pin, LOW); digitalWrite(HLTFillMotor2Pin, HIGH); } void closeHLTFillValve(){ digitalWrite(HLTFillEnablePin, HIGH); digitalWrite(HLTFillMotor1Pin, HIGH); digitalWrite(HLTFillMotor2Pin, LOW); } void openMLTFillValve(){ digitalWrite(MLTFillEnablePin, HIGH); digitalWrite(MLTFillMotor1Pin, LOW); digitalWrite(MLTFillMotor2Pin, HIGH); } void closeMLTFillValve(){ digitalWrite(MLTFillEnablePin, HIGH); digitalWrite(MLTFillMotor1Pin, HIGH); digitalWrite(MLTFillMotor2Pin, LOW); } void MLTFillValveOpenControl(){ // MLTFill Open valve control for sparge long interval = 1000; long shortInterval = 50; unsigned long currentMillis = millis(); long previousMillis = 0; unsigned long SIcurrentMillis = millis(); long SIpreviousMillis = 0; if(currentMillis - previousMillis > interval) { digitalWrite(MLTFillEnablePin, HIGH); digitalWrite(MLTFillMotor1Pin, LOW); digitalWrite(MLTFillMotor2Pin, HIGH); previousMillis = currentMillis; } if(SIcurrentMillis - SIpreviousMillis > shortInterval) { digitalWrite(MLTFillEnablePin, HIGH); digitalWrite(MLTFillMotor1Pin, LOW); digitalWrite(MLTFillMotor2Pin, LOW); SIpreviousMillis = SIcurrentMillis; } } void MLTFillValveCloseControl(){ // MLTFill Close valve control for sparge long interval = 1000; long shortInterval = 50; unsigned long currentMillis = millis(); long previousMillis = 0; unsigned long SIcurrentMillis = millis(); long SIpreviousMillis = 0; if(currentMillis - previousMillis > interval) { digitalWrite(MLTFillEnablePin, HIGH); digitalWrite(MLTFillMotor1Pin, HIGH); digitalWrite(MLTFillMotor2Pin, LOW); previousMillis = currentMillis; } if(SIcurrentMillis - SIpreviousMillis > shortInterval) { digitalWrite(MLTFillEnablePin, HIGH); digitalWrite(MLTFillMotor1Pin, LOW); digitalWrite(MLTFillMotor2Pin, LOW); SIpreviousMillis = SIcurrentMillis; } } void openBKFillValve(){ digitalWrite(BKFillEnablePin, HIGH); digitalWrite(BKFillMotor1Pin, LOW); digitalWrite(BKFillMotor2Pin, HIGH); } void closeBKFillValve(){ digitalWrite(BKFillEnablePin, HIGH); digitalWrite(BKFillMotor1Pin, HIGH); digitalWrite(BKFillMotor2Pin, LOW); } void BKFillValveOpenControl(){ // BKFill Open valve control for sparge long BKFillInterval = 1000; long BKFillShortInterval = 50; unsigned long BKFillCurrentMillis = millis(); long BKFillPreviousMillis = 0; unsigned long BKFillSICurrentMillis = millis(); long BKFillSIPreviousMillis = 0; if(BKFillCurrentMillis - BKFillPreviousMillis > BKFillInterval) { digitalWrite(BKFillEnablePin, HIGH); digitalWrite(BKFillMotor1Pin, LOW); digitalWrite(BKFillMotor2Pin, HIGH); BKFillPreviousMillis = BKFillCurrentMillis; } if(BKFillSICurrentMillis - BKFillSIPreviousMillis > BKFillShortInterval) { digitalWrite(BKFillEnablePin, HIGH); digitalWrite(BKFillMotor1Pin, LOW); digitalWrite(BKFillMotor2Pin, LOW); BKFillSIPreviousMillis = BKFillSICurrentMillis; } } void BKFillValveCloseControl(){ // BKFill Close valve control for sparge long BKFillInterval = 1000; long BKFillShortInterval = 50; unsigned long BKFillCurrentMillis = millis(); long BKFillPreviousMillis = 0; unsigned long BKFillSICurrentMillis = millis(); long BKFillSIPreviousMillis = 0; if(BKFillCurrentMillis - BKFillPreviousMillis > BKFillInterval) { digitalWrite(BKFillEnablePin, HIGH); digitalWrite(BKFillMotor1Pin, HIGH); digitalWrite(BKFillMotor2Pin, LOW); BKFillPreviousMillis = BKFillCurrentMillis; } if(BKFillSICurrentMillis - BKFillSIPreviousMillis > BKFillShortInterval) { digitalWrite(BKFillEnablePin, HIGH); digitalWrite(BKFillMotor1Pin, LOW); digitalWrite(BKFillMotor2Pin, LOW); BKFillSIPreviousMillis = BKFillSICurrentMillis; } } void openRPValve(){ digitalWrite (RPValveEnablePin, HIGH); // Turn on RPvalve digitalWrite (RPValveMotor1Pin, HIGH); // open RPValve digitalWrite (RPValveMotor2Pin, LOW); } void closeRPValve(){ digitalWrite (RPValveEnablePin, HIGH); // Turn on RPvalve digitalWrite (RPValveMotor1Pin, LOW); // Close RPValve digitalWrite (RPValveMotor2Pin, HIGH); } void RIMSFlowOpenControl(){ long interval = 1000; long shortInterval = 100; unsigned long currentMillis = millis(); long previousMillis = 0; unsigned long SIcurrentMillis = millis(); long SIpreviousMillis = 0; if(currentMillis - previousMillis > interval) { digitalWrite(RPValveEnablePin, HIGH); digitalWrite(RPValveMotor1Pin, HIGH); digitalWrite(RPValveMotor2Pin, LOW); previousMillis = currentMillis; } if(SIcurrentMillis - SIpreviousMillis > shortInterval) { digitalWrite(RPValveEnablePin, HIGH); digitalWrite(RPValveMotor1Pin, LOW); digitalWrite(RPValveMotor2Pin, LOW); SIpreviousMillis = SIcurrentMillis; } } void RIMSFlowCloseControl(){ long interval = 1000; long shortInterval = 100; unsigned long currentMillis = millis(); long previousMillis = 0; unsigned long SIcurrentMillis = millis(); long SIpreviousMillis = 0; if(currentMillis - previousMillis > interval) { digitalWrite(RPValveEnablePin, HIGH); digitalWrite(RPValveMotor1Pin, LOW); digitalWrite(RPValveMotor2Pin, HIGH); previousMillis = currentMillis; } if(SIcurrentMillis - SIpreviousMillis > shortInterval) { digitalWrite(RPValveEnablePin, HIGH); digitalWrite(RPValveMotor1Pin, LOW); digitalWrite(RPValveMotor2Pin, LOW); SIpreviousMillis = SIcurrentMillis; } } void openBKEmptyValve(){ digitalWrite(BKEmptyEnablePin, HIGH); digitalWrite(BKEmptyMotor1Pin, LOW); digitalWrite(BKEmptyMotor2Pin, HIGH); } void closeBKEmptyValve(){ digitalWrite(BKEmptyEnablePin, HIGH); digitalWrite(BKEmptyMotor1Pin, HIGH); digitalWrite(BKEmptyMotor2Pin, LOW); } void openCWValve(){ digitalWrite(CWEnablePin, HIGH); digitalWrite(CWMotor1Pin, LOW); digitalWrite(CWMotor2Pin, HIGH); } void closeFVFillValve(){ digitalWrite(FVFillEnablePin, HIGH); digitalWrite(FVFillMotor1Pin, HIGH); digitalWrite(FVFillMotor2Pin, LOW); } void openFVFillValve(){ digitalWrite(FVFillEnablePin, HIGH); digitalWrite(FVFillMotor1Pin, LOW); digitalWrite(FVFillMotor2Pin, HIGH); } void closeCWValve(){ digitalWrite(CWEnablePin, HIGH); digitalWrite(CWMotor1Pin, HIGH); digitalWrite(CWMotor2Pin, LOW); } Any help / advice would be gratefully accepted Thanks in advance Pesh
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.