I'm using an arduino nano with 5 relay outputs and 3 analog inputs. The code is a sequencer that is initiated with a button input. If the analog inputs are disconnected, everything works fine, but if they are connected, then when the relays deactivate, the arduino resets.
I have attached a wiring diagram. I have separate power supplies for the Arduino and the relay boards.
I have also attached pictures of the wiring... kind of a mess right now because I have been trying to diagnose this issue.
Here are the components:
4 Channel Relay Board
Here is the code:
#define RELAY_ON LOW
#define RELAY_OFF HIGH
#define button_ON LOW
#define button_OFF HIGH
//Input Variables
const int buttonPin = 3;
const int pressureSensorPin = A5;
const int torqueSensorLeftPin = A1;
const int torqueSensorRightPin = A2;
//Output Variables
const int motorRelayLeftPin = 9;
const int motorRelayRightPin = 8;
const int actuatorPin = 7;
const int pumpPin = 5;
const int valvePin = 4;
int seqStep = 0;
void setup() {
pinMode (buttonPin, INPUT_PULLUP);
pinMode (motorRelayLeftPin, OUTPUT);
pinMode (motorRelayRightPin, OUTPUT);
pinMode (actuatorPin, OUTPUT);
pinMode (pumpPin, OUTPUT);
pinMode (valvePin, OUTPUT);
digitalWrite(pumpPin, RELAY_OFF);
digitalWrite(valvePin, RELAY_OFF);
digitalWrite(motorRelayLeftPin, RELAY_OFF);
digitalWrite(motorRelayRightPin, RELAY_OFF);
digitalWrite(actuatorPin, RELAY_OFF);
}
void loop() {
int seqTime = 2000;
int buttonState = digitalRead(buttonPin);
switch (seqStep)
{
case 0: //Start sequence on button push
if (buttonState == button_ON)
{
seqStep = 1;
}
break;
case 1:
digitalWrite(pumpPin, RELAY_OFF);
digitalWrite(valvePin, RELAY_OFF);
digitalWrite(motorRelayLeftPin, RELAY_ON);
digitalWrite(motorRelayRightPin, RELAY_OFF);
digitalWrite(actuatorPin, RELAY_OFF);
delay (seqTime);
seqStep = 2;
break;
case 2:
digitalWrite(pumpPin, RELAY_OFF);
digitalWrite(valvePin, RELAY_OFF);
digitalWrite(motorRelayLeftPin, RELAY_OFF);
digitalWrite(motorRelayRightPin, RELAY_ON);
digitalWrite(actuatorPin, RELAY_OFF);
delay (seqTime);
seqStep = 3;
break;
case 3:
digitalWrite(pumpPin, RELAY_OFF);
digitalWrite(valvePin, RELAY_OFF);
digitalWrite(motorRelayLeftPin, RELAY_OFF);
digitalWrite(motorRelayRightPin, RELAY_OFF);
digitalWrite(actuatorPin, RELAY_ON);
delay (seqTime);
seqStep = 4;
break;
case 4:
digitalWrite(pumpPin, RELAY_ON);
digitalWrite(valvePin, RELAY_OFF);
digitalWrite(motorRelayLeftPin, RELAY_OFF);
digitalWrite(motorRelayRightPin, RELAY_OFF);
digitalWrite(actuatorPin, RELAY_OFF);
delay (seqTime);
seqStep = 5;
break;
case 5:
digitalWrite(pumpPin, RELAY_OFF);
digitalWrite(motorRelayLeftPin, RELAY_OFF);
digitalWrite(motorRelayRightPin, RELAY_OFF);
digitalWrite(actuatorPin, RELAY_OFF);
digitalWrite(valvePin, RELAY_ON);
delay (seqTime);
seqStep = 6;
break;
case 6:
digitalWrite(pumpPin, RELAY_OFF);
digitalWrite(valvePin, RELAY_OFF);
digitalWrite(motorRelayLeftPin, RELAY_OFF);
digitalWrite(motorRelayRightPin, RELAY_OFF);
digitalWrite(actuatorPin, RELAY_OFF);
seqStep = 0;
break;
default:
//something went wrong
break;
}
}
I'm not an electrical engineer... I'm wondering if there is EMF causing interference? Things too close?