3 Fingered Domestic Robotic Gripper (Uni Final year project) microcontroller

Hi all
I am working on my FYP a 3 fingered gripper which i am to design on proE and fabricate using 3d printing, source /design motor control circuits, source microprocessor to control the fingers and program the whole thing.

I am now at the stage of looking into microcontrollers and the motor control.
Each finger is to be run by two DC brush motors at a 0V-8V (this may be lower if needed) and up to 2A current draw.
Each motor will have two analogue sensors, 10 turn 10k pot for position and a current sensor to calculate the force that is being applied.
In total i will require 12 analogue pins for the sensors and additional pins for the motor control circuits hopefully 1 per motor, to control direction, although i expect however i will need 2 as i will need to control speed as well.

I have been looking at the arduino duo and ADK They seem to have an appropriate number of pins for what i think i require but i am really not sure.

I wish to get some advice on this matter as i am quite new to microcontrollers. :fearful:
I am familiar with C++ and windows application programming (part of my course) as well as matlab and altera programming methods. (i am concerned with how i will find programming arduino)

i suppose im asking what would be the best way to proceed, i only have a few weeks to complete this section or i may find myself not finishing my project.
If you require any more information please let me know and i will try to provide it.

Thanks for reading and hopefully for replying :slight_smile:

That is a general project discription. On what have you based your choises for the specific parts of your project? Are there parts of the project that are "must do" as part of the project? Have you researched via google and youtube for projects and components nsimilar to yours? What are the mechanical requirements of the gripper?

This project would be massively easier if you were able to use servo motors instead of controlling the DC motor positions yourself. You will need to use H-bridge driver circuits, and I suggest you look for external boards, rather than shields, to avoid pin conflicts. Some motor drivers also include current sensing capability which would remove the need for you to measure that directly, but of course you still need connections to the driver to receive that data so that doesn't change your solution substantially, but just reduces the external component count. Note that on slow moving or stationary motors current is not easily related to torque so you might want to consider using some form of force/pressure sensor instead.

On the software side you will presumably also need to provide some sort of closed loop control algorithm for each degree of freedom. PID may be overkill for that but would certainly do the job, and there's a PID library for the Arduino.

Zoomkat- unfortunately i am unable to be very specific with peramiters as my supervisor is not bothered by the mechanical components. The parts i am to use have been based on a general requirement of force and preferred values. I have researched using google however i have struggled to find allot of information. Perhaps i am searching for the wrong thing im not sure. ( i am aspergic and dyslexic)
Here are more detailed analysis of my requirements taken from my interim report

Design and Calculations- Drive system

Motor specification
The motor specification for this project requires the torque, rpm and desired current to be calculated or chosen.
In order to calculate the torque of the motor, the force that each finger must produce relative to its co-efficient of friction must be calculated. It has been assumed that a rubber like surface will be used and a value has been decided upon for the co-efficient of friction for rubber. Using the calculations below the desired torque is decided upon. Please remember that as stated earlier these calculations are rough and not accurate. To do so would require complex analysis of the system. They have been derived in order to calculate the maximum force that could possibly be applied.
F=µmg, assume mg=30 µ=0.3 (co-efficient of friction for plastic/rubber)
F=300.3=9 round up to 10
Take into account safety factor of 2
Required force for each finger to exert 20N
Torque at farthest point from motor is at the tip is used to calculate the required torque. This can be calculated by using the moment about the pivot between the two tendon holes
Torque=F
d= 200.01222=0.488Nm
Required torque 0.5Nm max with safety factor of 2
Gearbox and Ratio
This value would be ideal at 50:1 as it allows for back drive of the motor but a high enough torque such that the required torque is met with a relatively small motor. If the ratio was much larger it would require too much force to back drive the fingers of the gripper, if they needed to be opened or closed without the power on. It was originally decided upon to use a worm gearbox, this was so that the motor had a right-angled output (for design purposes). As such it was not sufficient as it would not allow back drive of the fingers which may be needed if a fault occurs, and was discarded. The output still required a 90degree turn in it so a right-angled gear box was used in place of the worm gearbox.

Desired RPM
From the design of the bobbin it is possible to estimate a reasonable value.
Taking into account the radius of 35mm and the total length of tendon to be shortened by 115mm the total number of turns is 3.3 (it is possible that this will increase) therefore multiply by 10 to give rpm at a reasonable speed. From this an estimate value of 35 RPM is decided upon. This is suitable as it allows a quick but smooth movement for the finger to open and close with.
Desired Current
This is limited by the equipment available. As such the maximum current the motors can have is 10A. In order to keep the temperature and power consumption down an ideal current would be at a maximum value of 3A. This has been decided upon as the hand may need to operate without mains supply and will most likely operate between 0.5A and 1.5A with the safety factors taken into account at this maximum current. If the hand were to be used with a battery the lower level of current would allow a longer usage time.
Motor Parameters
From the above it can be concluded that the motor is required with a gearbox of ratio 50:1 to produce 0.5Nm at a maximum current of 3A and an output RPM of 35 (after gearbox). A right angled gearbox is required to place the mechanical drive at a right angle to the motor.

Drive circuitry
This is yet to be discussed with supervisor and is still only in thought process. If the circuit was to be designed it would be done so using a voltage amplifier circuit preferably a H-Bridge to the motors. Each input would have a logical switch circuit to enable the drive voltage to be switched between positive and negative to drive the motors in the different directions. In order to get the different directions the control bit will be put through a logic gate system. The input of the control bit will have two outputs one that is inverted and one non-inverted to produce two outputs opposite to each other. These outputs would then be passed to the logic circuit that would depending on the input select a positive or negative voltage to be fed to the drive motors. The voltage selected would be the voltage connected to the amplification circuit such that the output of the amplifier could be negative. For instance if the positive rail +vcc were switched to the negative rail -vcc, if used in reference to ground, then the output will be inverted to the input of a small positive voltage determined by the program allowing control of the direction and speed of the motors. It would be possible to program the control circuit to do this but would be complicated.

Feedback circuitry
In order for the sensing to work correctly it would require a small additional circuit on the control circuit. In order to sample the current you would place a resistor on the input to the motor, using a predetermined resistor of value x and connect to ground. Using V=IR as the voltage will be known, the input voltage will be determined by the control circuit multiplied by the amplifier and the resistance will be known. Therefore the current can be calculated. From this the force can be calculated,
Mechanical power out/(angular velocity x length of tendon) or
Torque/length of tendon=force applied
These calculations can be done most simply in the programing but could be done as a circuit using logic gates. Although the values will vary in accordance to position, voltage and current applied to the motor.
In order to get the position a potentiometer will be used. As discussed earlier this was decided upon due to simplicity and cost. It will give a specific voltage for a specific position and it will be possible to calculate the voltage per degree. This can then be used to determine the exact position from the set home position. As such it will be possible to control each motor with a specific voltage by a possible 0.1 of a degree or less with the potentiometer ordered.
Design-Control system

Control circuitry
This is yet to be researched and will be based upon the desired format stated earlier. Three inputs and four outputs per finger. As such, in all the control circuit will require 21 pins for input and output. Due to the nature of the process the processor will not need to be very powerful, and a small memory chip as the program will most likely be less than 20 Megabytes. From this a basic idea of control circuitry may be had. Although unfamiliar territory such boards could be the raspberry pi, the arm7 boards or similar.

PeterH- This set up is a servo motor system as it uses a 10 turn 10k pot on the end of the shaft to determine position by a specific voltage, it just has a much higher range than a standard servo motor that yo umay see in a radio controlled model. I am expecting you use h bridge driver circuitry, as above i could design and build it myself on a single piece of veroboard but to save time i though i would look into sourcing some that could do the job for me.
Thanks for the sheilds thing, i was worried about that wasnt sure if what i wanted to do would have been possible using them.
to measure the current is quite simple put in a resistor to ground from input if i know the voltage and resistor i can calculate the current draw thus the power and thus the force being applied by the motor.

To both thankyou so far i appreciate it if you require more detail please specify and i will provide

The below project might be of interest.

http://arduino.cc/forum/index.php/topic,147373.0.html

I'm not clear how much of your previous post represents your design decisions, and which ones are part of the specification. The approach you're proposing using a DC motor, potentiometer, gearbox, right angle drive os clearly feasible (assuming you can source/make the hardware) but it would be massively easier to use a commercial servo instead. Cost might be a factor (you could easily spend twenty bucks on a sail winch servo) but I guess the rest of the hardware it'd replace would have some associated costs too. Doing it the hard way might get you extra credit and if that's the approach assumed by your supervisor then there's nothing wrong with that, but you might want to discuss the possibility of the much easier solution using standard servos - even if it's only so that you can present a justification/rationalisation for your chosen approach in your report.

zoomkat- thanks for that not exactly what im after but thankyou none the less quite interesting :slight_smile:

PeterH- It represents all my decisions perhaps not well but it does. The main reason for not using a standard servo was torque and range, most specifically range. I did originaly look into it but my suppervisor ment a dc motor and a multi turn potentiomiter (a servo position is done by a potentiomiter inside the casing but only has a very limited degree of rotation)

I may be ditching the right angled gear box makes it bigger overall than i thought it would.

Here is a [http://www.technobotsonline.com/re-540-1-metal-gearbox-50-1.html]link[/http://www.technobotsonline.com/re-540-1-metal-gearbox-50-1.html] to the motors i am using but may decide to get smaller ones i also realized i am intact using a safety factor of 4 not 2. daft really.

The problem was the specification was to pick up house hold objects about 3Kg... that was all the input i got. so i began to design on ProE to get the mechanical requirements determined by the design of the fingers.

The max torque required with saftey factor was 0.5Nm which is very high determined the other peramiters.

In order to monitor and control the specific position of each finger requires a motor position for each motor and force of each motor- allows me to program the robots gripping capabilities to be automatic

Fortunately costs arnt too much of an issue so long as i can justify why i chose the parts my supervisor seems to be ok with it- look him up if you would like Professor J.Smith of the university of liverpool electrical engineering and electronics.

I will hope to see him tomorrow but wanted a something more than i have a basic idea and get shot down and told to go do more research. Hard to know what he wants sometimes. Sorry im going off topic.

My point is in order to make the hand Automatic i require a micro controller with so many inputs outputs (16 min) all analogue for simplicity sake on the programming side.

I know im being a bit vague but unfortunately i have to be as this really is 3 projects in one if i was to make specific calculations and be so specific i would never have got past the first stage of the mechanical hand. Sorry. Again if you require more information on my project i will gladly provide it if you wish i can attach my interim report in full.

benjamin_m_obrien:
(a servo position is done by a potentiomiter inside the casing but only has a very limited degree of rotation)

This is why I mentioned sail winch servos - they are similar to conventional servos but with multi-turn capability. If you were aiming to choose the quickest, simplest and most reliable solution then a self-contained commercial servo would be a no-brainer compared to making up your own. Possible reasons not to use an existing servo are cost (of a servo with the required force/travel/speed) or that you specifically want to implement it from the ground up to prove you can.

If you end up making your own servo out of motors and gearboxes, and if the design of the transmission is up to you, then I suggest that you design the transmission so that the fingers can NOT be pushed back when the motors are off. The justification for that is IMO pretty tenuous, and it introduces a requirement for your drive motors to actively resist the forces being applied to the fingers instead of merely moving the finger to the right position and switching off. This will make the whole thing much harder to control as the various joints fight against each other, you'll need more power and better feedback control and it's just going to make the whole thing harder to get working.

Either the Due or Mega would have enough pins for what you want so I think you're thinking along the right lines there.

I'm pretty sure you could buy the arm / claw hardware if you wanted to, but perhaps you don't want to.

Have you thought about how you're going to control this contraption?

The problem was the specification was to pick up house hold objects about 3Kg... that was all the input i got. so i began to design on ProE to get the mechanical requirements determined by the design of the fingers.

So where did the requirement for "fingers" come from? There are lots of more simple robotic gripper designs that can pick up household objects without fingers.