-
Help with AV-L9CBE Auto valve
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
Pesho77
Members
-
Joined
-
Last visited