top of page
Writer's pictureSanskruti Ashtikar

Controlling a DC Motor Using TinkerCAD and Arduino

Introduction


DC motors are essential components in various electronic projects, ranging from simple toys to complex robotics. They offer precise control of rotational speed and direction, making them ideal for applications that require movement. In this tutorial, we'll demonstrate how to control a DC motor using an Arduino in TinkerCAD. You’ll learn how to manage motor speed and direction with a simple circuit and code.





Materials Needed


To build this project in TinkerCAD, you will need the following components:

  • Arduino Uno

  • Breadboard

  • DC Motor

  • L298N Motor Driver Module

  • Potentiometer (10kΩ)

  • Push Button (optional, for direction control)

  • Jumper Wires


Step 1: Setting Up the Components


  1. Arduino and Breadboard: Open TinkerCAD and create a new circuit project. Drag and drop an Arduino Uno and a breadboard onto the workspace.

  2. DC Motor: Connect the motor to the L298N motor driver module. The motor driver has the following pins:

    • Motor A: Connect the DC motor terminals to the output pins of the L298N module (OUT1 and OUT2).

    • VCC: Connect to the 5V pin on the Arduino.

    • GND: Connect to GND on the Arduino.

    • IN1: Connect to digital pin 9 on Arduino.

    • IN2: Connect to digital pin 10 on Arduino.

    • ENA: Connect to digital pin 11 on Arduino for speed control via PWM.

  3. Potentiometer: Used to adjust the motor speed.

    • Left Pin: Connect to the 5V pin on the Arduino.

    • Middle Pin: Connect to analog pin A0 on the Arduino.

    • Right Pin: Connect to GND on the Arduino.

  4. Push Button (optional): Used for changing motor direction.

    • One Pin: Connect to digital pin 2 on Arduino.

    • Other Pin: Connect to GND on Arduino.


Step 2: Wiring Diagram


Ensure your wiring looks like this:

  • L298N Motor Driver:

    • VCC → 5V on Arduino

    • GND → GND on Arduino

    • IN1 → Digital Pin 9 on Arduino

    • IN2 → Digital Pin 10 on Arduino

    • ENA → Digital Pin 11 on Arduino (PWM for speed control)

    • OUT1 → Motor Terminal 1

    • OUT2 → Motor Terminal 2

  • Potentiometer:

    • Left Pin → 5V on Arduino

    • Middle Pin → A0 on Arduino

    • Right Pin → GND on Arduino

  • Push Button (optional):

    • One Pin → Digital Pin 2 on Arduino

    • Other Pin → GND on Arduino





Step 3: Writing the Code


With the components connected, let’s write the Arduino code to control the DC motor's speed and direction.


const int motorPin1 = 9;    // Motor driver input 1
const int motorPin2 = 10;   // Motor driver input 2
const int speedPin = 11;    // Motor driver enable pin (PWM)
const int potPin = A0;      // Potentiometer pin
const int buttonPin = 2;   // Push button pin (optional)
int motorSpeed = 0;        // Variable to store motor speed
bool direction = true;     // Variable to store motor direction
void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(speedPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP); // Enable internal pull-up resistor
  
  Serial.begin(9600);  // Initialize serial communication for debugging
}
void loop() {
  // Read the potentiometer value and map it to motor speed (0-255)
  motorSpeed = analogRead(potPin) / 4;
  
  // Read the button state to toggle direction
  if (digitalRead(buttonPin) == LOW) {
    direction = !direction;
    delay(500); // Debounce delay
  }
  
  // Control motor direction
  if (direction) {
    digitalWrite(motorPin1, HIGH);
    digitalWrite(motorPin2, LOW);
  } else {
    digitalWrite(motorPin1, LOW);
    digitalWrite(motorPin2, HIGH);
  }


  
  // Control motor speed
  analogWrite(speedPin, motorSpeed);
  
  // Debugging information
  Serial.print("Motor Speed: ");
  Serial.print(motorSpeed);
  Serial.print(" Direction: ");
  Serial.println(direction ? "Forward" : "Backward");
  
  delay(100); // Update every 100 milliseconds
}

Step 4: Simulating the Circuit


  1. After entering the code, click the "Start Simulation" button in TinkerCAD.

  2. Adjust the potentiometer slider to change the motor speed. The motor should rotate faster or slower depending on the potentiometer setting.

  3. If you use the push button, pressing it should toggle the direction of the motor rotation. If you don’t use a button, you can set the direction in the code.

  4. Monitor the Serial Monitor to see the current motor speed and direction.


Step 5: Understanding the Code


  • PWM Control: The analogWrite() function sends a PWM signal to the ENA pin, which controls the speed of the motor by varying the duty cycle.

  • Direction Control: The digitalWrite() function sets the IN1 and IN2 pins to control the motor direction. The direction is toggled by pressing the push button (if included).

  • Potentiometer Reading: The analogRead() function reads the potentiometer value, which is then mapped to a speed range (0-255) suitable for PWM.


Step 6: Enhancing the System


This basic DC motor control system can be expanded with additional features:

  • Speed Feedback: Use an encoder to provide feedback on the actual speed of the motor and adjust control accordingly.

  • Advanced Control: Implement PID control for more precise speed and position control.

  • Wireless Control: Integrate a wireless module (like RF or Bluetooth) to control the motor remotely.





Conclusion


You have successfully created a DC Motor Control system using TinkerCAD and Arduino. This project demonstrates how to manage motor speed and direction with a simple circuit and code, providing a foundation for more complex motor control applications.

By following this guide, you’ve gained valuable experience in controlling DC motors, which is essential for building robots, automated systems, and other electronic projects.


Want us to guide you through your project or make the project for you ?






Create Various Projects

Check out our Free Arduino Projects Playlist - Arduino Projects 

Check out our Free Raspberry Pi Projects Playlist - Raspberry Pi Projects 

Check out our Free TinkerCAD Projects Playlist - TinkerCAD Projects 

Check out our Free IoT Projects Playlist - IoT Projects 

Check out our Free Home Automation Projects Playlist - Home Automation Projects 

Check out our Free NodeMCu Projects Playlist - NodeMCu Projects 



13 views0 comments

Related Posts

See All

Comments