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.

Pesho77

Members
  • Joined

  • Last visited

  1. 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

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.