Skip to content
View in the app

A better way to browse. Learn more.

Power Forum - Renewable Energy Discussion

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Help with AV-L9CBE Auto valve

Featured Replies

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.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.