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
- 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
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.
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 |
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.
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.
The repository includes project and reference PDFs:
Finall_Robotic_Project_Report.pdf— project reportRS006L-E (1).pdf— reference document or component datasheet
These files provide additional background about the design, hardware, and implementation.
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
Mohammad Barabadi
GitHub: @mohammadbrd
Linkedin: @mohammadbrd
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.