Skip to content

A 3DoF Robot Arm Manipulator programmed and controlled using a DE1-SoC's embedded NIOS II processor

Notifications You must be signed in to change notification settings

Aryan-G4/NIOS-RobotArm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 

Repository files navigation

NIOS-RobotArm

A 3DoF Robot Manipulator programmed and controlled using a DE1-SoC's embedded NIOS II processor. Fully designed in-house.

Funded by the University of Toronto

Sponsored by StepperOnline

Aryan Ghosh | David Xu

Project Demo:image

Introduction

The first of its kind, the NIOS-Robot arm is a robot completely designed in-house and controlled by an FPGA. It boasts a fully 3D-printed body, NEMA17 stepper motors, a breadboarded electrical system, and a low-level embedded software system. This project was created to gain experience designing dynamic mechanical systems, conduct dyanamic and force analysis and configure and drive motors.

image

Today, robot manipulators are used worldwide to weld, assemble, transport, package, pick, and place. Seeing the importance of these concepts, we decided to create a simplified, scaled-down, cost-effective version of these industrial robots.

image image

These graphics are for the previous Mk1

Key Features

  • Free Movement in XYZ space
  • Detachable and modular End-Effector
  • Zero Backlash 5:1 Geared stepper motors
  • Joint Rotation Limits in software
  • Switch-controlled tactile User interface
  • Solid Concrete Base

Mechanical Design

image image

The mechanical design of this system has been through several iterations, all developed in Solidworks. This was done because of Solidowork's Assembly environment, where it is extremely easy to create new parts within an assembly related to others.

The stepper motor that we chose for the project has an extremely high quality and precise .STEP file, and we used this to create an extremely low tolerance gap between the motors and the body. All three motors were securely fastened using M3 screws measured at the correct length to engage as many threads of the screw as possible for the most secure connection. image image

Transferring the output from the stepper motor shaft to a joint linkage was challenging. This was done by attaching an 8mm flange shaft coupler to the arm linkage. This was all held in place by four No.4 bolts and nuts. There was an issue with the nuts coming loose, and in the next revision, locknuts will be used. image

Upon completing the structural and dynamic analysis of the robot and evaluating the torque produced by each motor, the length of both arm linkages was established. This was after several iterations.

Due to the need for transportation between the workshop and the lab, the robot could not be bolted down to a table to be held in place. To save costs and negate any moment produced by the linkages and end effectors, We poured concrete into the base of the robot, making it so heavy that any movement or forces applied to or by the robot would not cause it to fall over.

image image

Embedded Software Design

The software takes the hardware provided to it (GPIO pins, Switches, and LEDs), and interprets the I/O to drive the motors. The software is designed to process only one instruction at a time. It works by polling all the switches waiting for any one to be switched. Once it detects that a switch has been flipped high, the program moves to a subroutine that detects which switch has been flipped, generates the appropriate GPIO pins to write to, and then generates a square wave to those pins. The program continues to generate this signal until the switch is flipped down. During this time, any other inputs and switch flips are completley ignored, allowing the user to focus on one joint at a time. image

Joint limits were implemented by creating variables that counted how many steps each motor took and calculating how many degrees the motor moved by. Assuming there are no missed steps, the software can detect when a motor has rotated 180 degrees, and it can prevent the square wave to the step pin from being generated.

All code can be found in main.c

Electrical Design

The electrical design handles two power rails: a 24V power line and a 5V logic line. Each nema17 stepper motor required approximately 12-24V of power at 2.2A to produce its advertised torque. This was all controlled through the A4988 Stepper motors. The A4988 offers 2 important logic pins, step and direction. Every time the step pin goes high (with a logic of 5V), the stepper motor rotates by 0.36 degrees. To allow for continuous rotation, we needed to generate a square wave to send to the driver, causing the motor to step so frequently, creating the illusion of seamless rotation. The rotation direction would depend on the direction pin, which causes the motor to rotate clockwise when low (~0V) and counterclockwise when high (~5V). The A4988 drivers had to be tuned to the right resistance, as too much current can fry the IC and too little current will not give us enough motor torque.

Shown below is the electrical system:

image

The GPIO pins from the FPGA are shown on the left. The wires are in groups of two (step and direction) and connect to the step/dir pins of the a4988 Stepper motor drivers shown on the breadboard.on the right there are 3 groups of 4 wires(red,blue, black, green) These groups are for each stepper motor as each motor requires 4 wires. Additionally on the right there is a grey and purple wire. These to wires are connected to the right side power raila nd provide 24V to the system.

All wires are colour coded as black and red are often known to be power/ground.

Iterations

Our Mk1 iteration was extremely durable, but both arms were far too heavy. Linkages were unnecessarily large, and the 3d printed infill density was far too high. This caused the elbow motor (located above the base) to miss steps because it image image

Old mk1 Here is a comparison between the old and new first linkage:

image

About

A 3DoF Robot Arm Manipulator programmed and controlled using a DE1-SoC's embedded NIOS II processor

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages