코드 검색

Controlling DC Motor Rotation Direction with Two Relays and an Arduino

Controlling DC Motor Rotation Direction with Two Relays and an Arduino

This code controls the direction of rotation of a DC motor with two relays. The basic code provides simple control, while the advanced code allows for the use of either low-level trigger relays or high-level trigger relays. This code controls the motor's direction of rotation with low-level trigger relays or high-level trigger relays easily. Please watch the video for details.
234-Basic code to control the direction of rotation of a motor with two relays
언어: C++
/*
 * Arduino code to change the direction of rotation 
 * of a DC motor with 2 relays.
 * 
 * This is basic code. I have advanced code that can be used in both 
 * for low-level trigger and high-level trigger relays with clean code.
 * 
 * Written by Ahmad Shamshiri for Robojax.com on 
 * Sunday, August 18, 2019 
 * at 20:22 in Ajax, Ontario, Canada
 * Watch video instructions for this code: https://youtu.be/JMBgGO07YLM
 * 
 * 
 * 
 Get this code and other Arduino codes from Robojax.com.
 Learn Arduino step by step in a structured course with all materials, wiring diagrams, and libraries
 all in one place. Purchase my course on Udemy.com: http://robojax.com/L/?id=62

If you found this tutorial helpful, please support me so I can continue creating 
content like this. You can support me on Patreon: http://robojax.com/L/?id=63

or make a donation using PayPal: http://robojax.com/L/?id=64
* 
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */


int relay1 = 2;
int relay2 = 3;


void setup() {

    pinMode(relay1, OUTPUT);// set pin as output for relay 1
    pinMode(relay2, OUTPUT);// set pin as output for relay 2


    // keep the motor off by keeping both HIGH
    digitalWrite(relay1, HIGH); 
    digitalWrite(relay2, HIGH); 

 
  
  Serial.begin(9600);// initialize serial monitor with 9600 baud
  Serial.println("Robojax Motor Direction of Rotation");
  Serial.println("Using 2 Relays");  
  delay(2000);
}

void loop() {

 // Rotate in CCW direction
  digitalWrite(relay1, LOW);// turn relay 1 ON
  digitalWrite(relay2, HIGH);// turn relay 2 OFF  
  Serial.println("Rotating in CCW");  
  delay(3000);// wait for 3 seconds

 // stop the motor
  digitalWrite(relay1, HIGH);// turn relay 1 OFF
  digitalWrite(relay2, HIGH);// turn relay 2 OFF
  Serial.println("Stopped");  
  delay(2000);// stop for 2 seconds
  
 // Rotate in CW direction
  digitalWrite(relay1, HIGH);// turn relay 1 OFF
  digitalWrite(relay2, LOW);// turn relay 2 ON 
  Serial.println("Rotating in CW");  
  delay(3000);// wait for 3 seconds

 // stop the motor
  digitalWrite(relay1, HIGH);// turn relay 1 OFF
  digitalWrite(relay2, HIGH);// turn relay 2 OFF
  Serial.println("Stopped");  
  delay(2000);// stop for 2 seconds 
  
 Serial.println("===============");

          
}// loop end
235-Advanced code to control a motor using two relays and an Arduino
언어: C++
/*
 * Arduino code (Advanced) change the direction of rotation 
 * of a DC motor with 2 relays.
 * This code can be used with High-Level Trigger relays and
 * Low-Level Trigger relays. Watch the video for instructions.

 * 
 * Written by Ahmad Shamshiri for Robojax.com on 
 * Sunday, August 18, 2019 
 * at 20:22 in Ajax, Ontario, Canada
 * Watch video instructions for this code: https://youtu.be/JMBgGO07YLM
 * 
 Get this code and other Arduino codes from Robojax.com.
 Learn Arduino step by step in a structured course with all materials, wiring diagrams and libraries
 all in one place. 

If you found this tutorial helpful, please support me so I can continue creating 
content like this. 

or make a donation using PayPal http://robojax.com/L/?id=64
* 
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */


int relay1 = 2;
int relay2 = 3;

const int triggerType = LOW;// your relay type

int relayOFF, relayON;// relay ON and OFF values for LOW and HIGH Trigger relays



void setup() {

    pinMode(relay1, OUTPUT);// set pin as output for relay 1
    pinMode(relay2, OUTPUT);// set pin as output for relay 2


    if(triggerType ==LOW){
      relayON = LOW;
      relayOFF = HIGH;
      digitalWrite(relay1, relayOFF);//keep both relay OFF so motor is stopped
      digitalWrite(relay2, relayOFF);//keep both relay OFF so motor is stopped
    }else{
      relayON = HIGH;
      relayOFF = LOW; 
      digitalWrite(relay1, relayOFF);//keep both relay OFF so motor is stopped
      digitalWrite(relay2, relayOFF);//keep both relay OFF so motor is stopped
    }
 
  
  Serial.begin(9600);// initialize serial monitor with 9600 baud
  Serial.println("Robojax Motor Direction of Rotation");
  Serial.println("Using 2 Relays");  
  delay(2000);
}

void loop() {

 // Rotate in CCW direction
  motorCCW(); 
  delay(3000);// wait for 3 seconds

  motorStop();
  delay(2000);
  
 // Rotate in CW direction
  motorCW();
  delay(3000);// wait for 3 seconds

 motorStop();
 delay(2000);
  
 Serial.println("===============");
          
}// loop end

/*
 * motorCCW() 
 * controls the relay so the motor rotates in CCW
 */
void motorCCW()
{
  digitalWrite(relay1, relayON);// turn relay 1 ON
  digitalWrite(relay2, relayOFF);// turn relay 2 OFF  
  Serial.println("Rotating in CCW");    
}// motorCCW()


/*
 * motorCW() 
 * controls the relay so the motor rotates in CW
 */
void motorCW()
{
  digitalWrite(relay1, relayOFF);// turn relay 1 OFF
  digitalWrite(relay2, relayON);// turn relay 2 ON 
  Serial.println("Rotating in CW");  
}//motorCW()


/*
 * motorStop()
 * controls the relay so the motor is stopped
 */
void motorStop()
{
  digitalWrite(relay1, relayOFF);// turn relay 1 OFF
  digitalWrite(relay2, relayOFF);// turn relay 2 OFF 
  Serial.println("Stopped");    
}

자원 및 참고자료

아직 자원이 없습니다.

파일📁

파일이 없습니다.