In this instructable I will show you how to work with 5-DOF robotic arm from DFRobot. Robotic arm can be bought at https://www.dfrobot.com/product-227.html
If you have any questions or problems you can contact me on my mail:[email protected].
Visit my channel on Youtube: https://www.youtube.com/channel/UCuS39O01OyPeChjfZm1tnQA
So let's begin.
We will use:
-potenciometer
For powering servos I had used:
-adjustable power supply (0 - 30 V). Servos need about 7 V for normal operating.
About 5 DOF Robotic Arm.
Robotic arm has been covered a variety of fields, including manufacturing industry, medical treatment, security control and other application. It plays as an assistant, an operator or even a work partner, like “Jarvis”!DFLG6DOF is a bionic robotic arm, it consists of six servo motors, corresponding to the arm, elbow, wrist (2 degrees of freedom), five joints and one rotating base in all.
Each joint can move in a certain range, and the base can be rotated about 180 degrees. With 24 channel veyron servo controller, all action can be controlled via PC software, supporting online debug and wireless control. In a word, this is a high cost performance, easy to use robot arm. It is real a good robot demonstration teaching platform and DIY robotic arm.
SPECIFICATION
Operating Voltage: 4.8 ~ 7.2V
Maximum load: 500 g
Operating Current: 3A @ 5V (max)
Interface type: XH2.54-3P interface
Length (Assembled): 280 mm
Height (Assembled): 340 mm
Weight: 1096 g
Joystick Module V2
Module consist of 2 analog outputs for x,y axis and 1 digital output for z axis. It comes with really nice connector cables, with which it can be easily connected to IO Expansion Shield For Arduino(V5).
Specification
Supply Voltage: 3.3V to 5V
Interface: Analog x2
Digital x1
PH2.0 Interface
Size:35x39mm
Weight:15g
PIN LAYOUT:
Pin X: S——Analog OUT
Pin Y: S——Analog OUT
Pin Z: DATA——Digital OUT
IO Expansion Shield for Arduino V7.1
IO Expansion shield is one of the market favourites. Fast robotics prototyping made affordable and simple thanks to this design. Soldering and wiring often become a problem when a bridged connection happens and components break. Increasing time and cost for projects. Often, without this solution and a soldering station, wire cripping tools or soldering station, robot prototyping or electronics DIY becomes a very long term project.
FEATURES
Compatible with the new Arduino Due
3.3V/5V operating voltage select
Switch for wireless communication & programme
More Easily recognitive interfaces
Colorful header for illustrating digital or analog pins
Immersion gold surface
SPECIFICATION
Input Voltage 7-12 V
4.8 - 6 V, SERVO_PWR, depending on your servo
Compatible module voltage: 5V/3.3V
Support interface: I2C, SPI, Xbee (Xbee pro), Bluetooth, APC220.
I have designed holder for two joysticks and one push button. Design is similar to PS or XBOX controller.
On each side is mounted one of joysticks, so you can control it with your thumb. Also there is mounted red push button for "emergency stop".
This three modules are fixed to holder with mounting kit from DFRobot. More can be seen on pictures.
All the wiring is done on IO Expansion Shield For Arduino(V5). On the right side of expansion shield there are pins which are used for controlling servos (Vcc, GND, data). With this module you can power up to 14 different servos.
Servo connection:
Servo1 to digital pin 9
Servo2 to digital pin 8
Servo3 to digital pin 7
Servo4 to digital pin 2
Servo5 to digital pin 5
Servo6 to digital pin 4
Connection terminal SERVO_PWR is connected directly to adjustable power supply. This terminal is used for powering servos. If you dont provide high enough voltage, servos wont work properly.
Joystick modules
X and Y axis connectors from joystick modules are connected to analog inputs from 0 - 3.
1st module: is used for moving robotic arm up and down
x axis - analog input 0
y axis - analog input 1
2nd module: used for claw control (rotation, open and close).
x axis - analog input 2
y axis - analog input 3
z axis - digital input 10
Potentiometer
Potentiometer is used to control roboto arm rotation. It can be rotated for 180°.
Its connected to analog input 4.
I have designed two different codes.
Purpose of first code is that, when you move servo to new position with joystick, it stays in that position as long as you are holding joystick in same position. When you release joystick, servo will go back to the position in which it was before you moved joystick. In this program you can choose random home position.
Second code is a bit different, because its purpose is quite opposite as first code. When you move servo to new position, it will stay in that position. So we could say that this code is position maintaining mode. You can choose between fine and quick positioning.
What does fine and quick positiong means? It means that you can choose for how much, will you move servo motor. Servo can be moved for 5° or 15° at once, it depends on how much you push joystick.
Program consist of 6 sub programs:
Rotation() - we are using map function to convert values from 0 - 1032 to 0 - 180° (used for rotating robotic arm). Value from map function is then writen into variable potencio.
DSSDown() - used to control first servo (above rotating platform)
DSSMiddle() - used to control second servo.
DSSUp() - used to control third servo which moves claw up and down.
ClawRotation() - used to control claw rotation.
PushButton() - used to control claw state (opened or closed).