
The first milestone I set for myself in this project was to design a robot hand from scratch. I could’ve gone on to thingiverse or grabcad to obtain a design someone already made, but I wanted to challenge myself and design something unique and original. To actuate the fingers in a way that looked natural I needed a way to extend and contract each finger individually. To do this I decided to have a high tension, elastic fishing line that I tied on the upper part of each finger, terminating in the palm. This feature is shown below.

By feeding the string through the holes in each phalange and tightening it, I effectively create a natural extension mechanism. I would feed the string through and then knot it at the fingertip and at the hole that goes through the hand. I made the bigger through hole 1.75 mm in diameter so that I could knot the string, and then jam a piece of PLA filament through for added mechanical security. A video highlighting the extension mechanism is shown below.

The contraction of the finger is made possible by another through hole on the bottom side of the finger, which has a non-elastic fishing line through it which can be pulled on. In the video I am pulling on the fishing line myself, but I intended for it to be actuated by a motor, which I will highlight next.
​
Once I had a finger design, I copied it and adjusted the lengths so that they mimic the digit length of a normal human hand. I designed a palm for the hand that attached all the digits, including a modified connection angle for the thumb, and made sure there was space for the motors and encoder to fit.

For this project, the hardware I chose was largely dependent upon size constraints. With limited space to work with, I chose components that work well with an Arduino Uno board, is small enough to fit into the palm, and is highly configurable.
Components I decided on and why:
-
Arduino Uno board
-
This is just what I am familiar with for robotics projects, and it was easy for me to iterate solutions fast and conduct rapid prototyping easily.
-
-
DRV8833 Motor Controller
-
This is a circuit designed to be used with small DC motors.
-
Can control multiple motors independently
-
Compact size: small and lightweight, making it suitable for a small-scale project like this.
-
Operates at low voltages, making it suitable for a battery powered project like this. Efficiently drives motors while conserving power.
-
PWM control which allows me to control the speed of the DC motors.
-
The motor controller board doesn’t have a PWM pin directly, but instead, the DRV8833 uses a technique called "internal PWM" to control the speed of the motor. The DRV8833 has an internal oscillator that generates a PWM signal at a fixed frequency of around 300 kHz. By varying the duty cycle of the PWM signal, the average voltage applied to the motor can be controlled, which in turn controls the motor speed.
-
-
Has overcurrent protection, preventing any damage to the motor driver itself and by extension prevents the motors by shitting down if the current exceeds a specified limit.
-
Ease of use, and affordability.
-
-
Mini DC motor
-
Small size, can fit in the palm of the hand easily and the shaft lengths leaves enough space for an encoder to fit on each motor as well.
-
Can be powered by the Arduino board easily.
-
Has an all metal gearbox capable of 1lb max torque, which is more than enough force to actuate one finger.
-
-
Potentiometer
Below are some images showing the hardware installed into the hand.
.png)

Before writing any more sophisticated software, I wrote a short piece of code that just oscillates the motor back and forth at a certain speed. I attached a custom printed wire reel to the motor shaft and attached the fishing line to it. A video demonstrating the motor capability is shown below.

With the hand printed and assembled (minus the thumb), I wired up all the components and started doing some more in depth testing and coding. I wanted to design a way for the system to know its upper and lower limits for the actuation of the fingers. To accomplish this I used some potentiometers with output values 0-1024. Finding a way to convert this output value into a useful metric for the software was challenging. I eventually figured out how to turn the output into a number of rotations of the motor and set upper and lower bounds for the rotation.
​
I took on this project near the beginning of spring break and made all the progress discussed here within 1 week. I had to pause this project going back to school because I didn’t want to juggle school, personal life, and a project like this, but I fully intend on continuing it very soon. I am in a good place with the project and was proud of how much progress I made is such a short time. Although I am proud of my progress, there are many improvements I want to make to this project based on the work I’ve done so far.
I also want to give a special shout out to my cousin Chen. I stayed with him over spring break and he helped me with some aspects of this project like CAD tricks and ideation process. He let me use his workshop and 3D printers to bring this idea to life and I can't thank him enough.


V1
V2