Skip to content

mohammadbrd/3DOF-Serial-Robot-Controller

Repository files navigation

🤖 3-DOF Serial Robotic Arm Controller

Arduino-based position control system for a custom 3-degree-of-freedom serial robotic arm

Platform Language CAD Control


📌 Overview

This project presents the design and control implementation of a 3-DOF serial robotic arm. The system combines a custom mechanical structure, Arduino-based motor control, potentiometer feedback, and position-control logic to move the robot joints toward desired angular setpoints.

The repository includes:

  • Arduino firmware for motor and servo control
  • Potentiometer-based joint position feedback
  • PI-style controller logic with PWM motor actuation
  • SolidWorks CAD models of the mechanical structure
  • STL files for fabrication or 3D printing
  • Project report and reference documentation

✨ Key Features

  • 3-degree-of-freedom serial robot architecture
  • Arduino-based embedded control
  • PWM motor speed control with direction control pins
  • Potentiometer feedback for joint angle measurement
  • Setpoint-based position control
  • PI controller structure for reducing position error
  • Servo motor support for one controlled joint or end-effector motion
  • Mechanical design files included in SolidWorks and STL formats
  • Project documentation included as PDF files

🧠 Project Concept

A serial robot consists of multiple links connected through joints. In this project, each joint contributes one degree of freedom, allowing the robot arm to reach different angular positions.

The control system follows this basic loop:

Desired Joint Angle
        ↓
Compare with Feedback
        ↓
Position Error
        ↓
PI Controller
        ↓
PWM + Direction Signals
        ↓
Motor Movement
        ↓
Potentiometer Feedback

The Arduino reads the joint feedback using analog inputs, maps the sensor values to angular positions, calculates the error between the desired and actual position, and drives the motors using PWM signals.


⚙️ Hardware Components

The project is designed around a small serial robotic arm platform. The main hardware elements include:

Component Purpose
Arduino board Main controller for reading feedback and driving actuators
DC motors Actuation of robot joints
Servo motor Additional joint or end-effector actuation
Potentiometers Joint position feedback sensors
Motor driver circuit Direction and PWM control for DC motors
Mechanical links and base Robot structure designed in SolidWorks
Power supply Provides required power for motors and controller

🕹️ Control Method

The controller calculates the joint error as:

error = setpoint - measured_angle;

The controller output is calculated using proportional and integral terms:

controllerOut = error * Kp + Ki * cumError;

The output is then limited to a safe PWM range and used to control motor direction:

  • Positive output → motor rotates in one direction
  • Negative output → motor rotates in the opposite direction
  • Small error range → motor stops

This allows the robot joint to move toward the target angle while reducing steady-state error using the integral term.


📐 Mechanical Design

The mechanical structure is available in the Final_Solid/ directory. It contains both editable SolidWorks files and STL files.

Main mechanical parts include:

  • Base components
  • Link 2
  • Link 3
  • Bearing surface component
  • Full assembly file
  • STL exports for fabrication

These files make it easier to inspect, modify, manufacture, or 3D print the robot components.


📚 Documentation

The repository includes project and reference PDFs:

  • Finall_Robotic_Project_Report.pdf — project report
  • RS006L-E (1).pdf — reference document or component datasheet

These files provide additional background about the design, hardware, and implementation.


🎯 Applications

This project is useful for learning and demonstrating:

  • Robotics fundamentals
  • Serial manipulator control
  • Embedded motor control
  • Feedback-based position control
  • Arduino programming
  • Mechanical design and prototyping
  • Mechatronics system integration

👤 Author

Mohammad Barabadi
GitHub: @mohammadbrd
Linkedin: @mohammadbrd


📄 License

No license file is currently included in this repository. If this project is intended to be open source, consider adding a license such as MIT, Apache-2.0, or GPL-3.0.


⭐ If you find this project useful, consider starring the repository!

About

Arduino-based control system for a custom 3-DOF serial robotic arm, including PI position control, potentiometer feedback, PWM motor driving, and SolidWorks/STL mechanical design files.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages