Related article (the introduction to this article): https://diystuff.nl/bio-medical
Some time ago Arie asked in a post on Facebook for students who would like to 3D print a new hand for him.
I have taken up the challenge to do so. Since that time Guus(mechanical) and John(electrical) have joined to add their expertise. Great to see that the project is gaining momentum.
Not only do we want to 3D print it, it needs to be a hand which is able to function on a daily basis for tasks most people encounter as normal. What does Arie want to do with his hand. Here is a summary of the main requirements (wishes);
– Move fingers independently ++
– Not with patterns, but with the real muscle control. +
– Play the guitar ++
Yes, Arie likes to play his guitar and this is already possible. His left hand can control the chords on the strings. His prosthetic hand can hold a plectrum but it is difficult to excite the correct strings in a properly timed fashion. The movement has to come from his whole arm and then it is difficult to make the micro movements needed to excite each string separately.
Arie would like to play the guitar more intuitive and wants to be able to strum. Arie sent me the following fragment of Robocop 2014:
John has stepped and is looking from an electronic background. He is looking at electric design/architecture, interfacing, motor control, battery charging, battery level control, battery safety (we cannot have a Samsung Galaxy Note experience) etc etc.
Sensors and signal fetching
We started reverse engineering the Myo. It is able to detect muscle activity. On the Myo there are 8 measurement segments which each have their own PCB.
Below is the calculated frequency response of the Myo. I first tried to plot a frequency response with LTSice, but in the second stage it gave me a reduction where I expected an an amplification so I put that tool on hold. Secondly I tried an online tool EasyEDA.com. The first processing step (the first two opamps U1G$3 and U1G$2) has a bandpass with -3dB cut-off points at 1.7Hz and 8.5kHz. The second stage (third opamp U1G$1) has an amplification of +61 dB where the -3dB cut-off points are at 1.7Hz and 395Hz. The third stage (fourth opamp U1G$4) adds an amplification of +5 dB compared to the second and has the -3 dB cut-off points at 44Hz and 477Hz.
We found out that each node has an amplifier circuit with a filter characteristic. This is similar to the Olimex EKG shield. Since the Olimex is released under open source license, we will focus on their design. However the Myo has a bluetooth interface to talk to the laptop/tablet/phone. The Myo will not be used in the eventual product, but will be used as a tool to do measurements and prototype. This enables rapid testing. When removing the resistor at the end of the amplifier circuit, the Myo can be used to capture data simultaneous on 8 input channels. We just see it as a 8 port ADC with a bluetooth connection.
When we want to measure separate finger movements, we need to make an inventory of the Myoelectrical activity on the arm. Wouldn’t it be nice to have a heat map of an area of skin and relate that to specific finger movements (gestures). The Myo does it because the electrodes are placed too far from each other. A higher density would be nice. For this we need massive amounts of ADC’s. The Myo is quite expensive, and it is not known yet if we can synchronize multiple armbands to one device and have them act lip-sync.
A solution could be to get multiple ADC’s and try to let them act as a synchronized array of ADC channels. We found an ADC already (LTC2495) with a low amount of external components. It has a PGA (Programmable Gain Amplifier) so it seemed perfect. But, it was only able to produce 15 samples per second. A small thing which was overlooked.
Further research revealed the ADS1158/ADS1258 which is able to sample with 23.7 kSPS per channel. It has the ability to externally amplify/filter the signal after it has been de-MUX-ed and then feed the filtered signal to the internal ADC component. The difference between the two preferred ADC is that the 1158 provides 16 bit resolution and the 1258 provides 24 bits resolution (however slightly more expensive):
|ADC Availability map||ADS1158 (16 bits)||ADS1258 (24 bits)|
|Farnell (2017-02-17)||12 euros||19 euros|
|RS-Online (2017-02-17)||not available anymore||17 euros|
Availability map preferred ADC
ADS1158/ADS1258 image courtesy of Texas Instruments.
When connecting 4 of them, we get 64 input single ended signals or 32 differential signals. We can create a matrix of 8 by 8 blunt needles which interface the skin to the single ended inputs. A challenge would be to connect everything from the needle matrix to the different ADC’s. We need a processor which can transfer all data from the ADC’s to the computer/tablet/phone. At a rate of 10 kHz we would get almost 10 MBit data streamed per second, assuming we want to see data in realtime. This data then needs to be analyzed to detect gestures. Wow! Let’s first start of with getting one ADC to work on a SPI capable device and then see how to scale up. Samples of the ADC are already ordered.
On the ADC control section there is a START input line which can start one burst of conversions of all 16 inputs (8 differential inputs) and the five internal registers (supply voltage, temperature, reference voltage, gain and offset data). This makes it perfect to synchronise the bank of ADC’s.
This paragraph will cover the techniques in order to move the fingers by motors of course. But in addition there is also a wish to ‘feel’ pressure and eventually the kind of surface roughness of an object. However even feedback can be done with motors too (which has been done before), we have some clever other ideas to get this done. But first we’ll discuss our most important motor requirements and design choices.
Although underestimated, one very important aspect is the weight constraint since this hand should feel as natural as possible. Immediately this weight design aspect comes with two compromises; volume and force limitations. Battery consequences related to these motors are deliberately not mentioned in the first place. This is since we can move such a battery pack easily to a belt-construction by some lightweight wires when necessarily.
Here is an image of a CD drive stepper motor which Guus has removed from a CD drive. It would be nice to have some more of them. At least 4 identical ones for the fingers. The thumb will probably need a different type of mechanical control. The thumb needs to be able to move along 2 different planes. A request for old CD drives has been placed on Marco’s Facebook page. The motor below came from a nameless cd drive which had a really sound mechanical design. Not the plastic fantastic of the other drive we dismantled.
The linear object movement which can be achieved with such worm/ tap-wire design, is desired to gain force rather than keeping speedy movements. Well, this statement is valid for as long as we don’t have to wait for a full second to open or close the hand. The other ultimate goal would be to have a pinch-force up to 35kg (female) and 45kg (male). This force is eventually divided over all fingers, except for the thumb which should be about as strong as all other fingers together. So the total strength is dependent on the motor, complete mechanical construction, all gearing and leverage construction. Therefore the motors are usually standardised by their speed and force, like in this video example of a similar DVD motor drive.
Since the force of these kind of motors is (very) limited, we also extended our research to other type of motors. In paralel to the the research of the motor above, John also looked into the use of servo motors due to their integrated strong gearboxes. Especially the metal gearboxes tend to be far more durable and stronger than teflon gearboxes. Another advantage of using a servo motor is the feedback of its current position. Servo motors can be moved to a desired position with about 120 degrees of freedom using a fixed frequency (let’s say 50Hz), while changing the duty cycle, i.e. on/ off period. The neutral position for a servo is usually ±1.5 milliseconds. For analogue control this can be useful when sweeping the frequency, but for digital controllers the frequency is divided from the main controllers crystal frequency. This results in a limited amount of positions:
Period time T=1/f=1/50Hz=20ms
Neutral position: 1,5ms/1/50Hz*100=7,5%
Max. position: 7,5%+5.1=12,6%
Independent steps in case of a controller with 0-255 range: 256*((12,6-2,4)/100)=±26
And in addition at least 2 steps should be made in some cases in order to move the new setting out of its so-called ‘dead-band’, which makes it even worse. Let me explain; the affordable servo’s usually contain potentiometers which can easily wear out and have limited accuracy due to its noisy analog potentiometer design. Ideally while in idle situation a servo motor shouldn’t use current due to its dead-band setting, when it has reached its integrated PID-like controller setpoint. But lowering the programmable dead-band setting increases its required accuracy dramatically.
However, a too small dead band setting can make the motor suffer from noise which can make the motors oscillate, vibrate, drain the battery or even overheat and burn the coils/ H-bridges. Yes, according to the facts described above this is not an unusual scenario for motors with this technology and such a low price-tag. Oh and since the original manufacturer stopped production of our favourite MG995 motor, the motors currently shipped are rip-offs with inconsistent part usage and badge quality. Therefore the idea was also raised to make our own motor driver with optical sensors, and or hall sensors. This even allows for using different kind of Commercial off-the-shelf available-, much smaller-, substantially cheaper-, and yet more powerful motors like these:
A small look-up learned that even multiple tastes of gearboxes are available upon request, with spec-tables what this means for force versus speed. There are even models without the M3/M4/M5 tap-wire, and strong/ slow enough allowing for a 90 degrees gear-wheel construction for directly rotating the fingers. The position of the finger is then being monitored itself, isolating additional setpoint error by control and gearing.
We have started looking at some starting points. The first one was the Inmoov robotic hand. Arie has already seen one at the Mini Maker Fair in 2016. He told me it was too fragile. Since I am very stubborn, I decided to still give it a go. My first 3D printing experience was printing the index finger using PLA filament.
A summary of advantages/disadvantages for (re)using the existing 3D Inmoov design:
|Nice to play with something which already works.||The dimension of the finger is quite slim. it is less tick than for instance my own finger. I need to make a new model which will fit Aries hand.|
|Their idea is to print each phalanx in two separate pieces. They need to be glued together. I might need to switch over to ABS which I can weld together with acetone.|
|This can be an advantage (stronger)||It can also be a disadvantage (less environmentally friendly, smelly during printing)|
Autodesk Inventor 2017.
Here you see 2 components merged to form one moving finger. I need to work on it a bit more to be able to show to full component. Both parts are made with Autodesk Inventor. I am a mechanical noob, but I could make the part without too much effort. One piece can be 3D Printed, and the other piece can be cut from RVS and then bent into the right shape.
I directly contacted Autodesk to get a license to use Inventor 2017 for this project, but they declined the request. The alternative is to use Fusion 360, but I did not find the needed features to get components to be rigged together so you can see the movement of them. At work I can use Solid Edge ST8 so I might give that a go as well. Maybe I need to investigate opensource alternatives for this project.
3D scanning the dimensions of the hand.
Wouldn’t it be great if the bionic hand has the exact size as Aries left hand? Yeah, that would be great! I need to measure his hand. After Aries interview @ the E52 event Eindhoven November 2016, there was a demo of a 3D scanner. The head of a person was scanned and after that it was printed with PLA.
Now that scanning method would be a great place to start. Nowadays scanning using phone apps is possible, but professional scanners deliver a vast majority in increased scan accuracy. However this professional scan technique is also expensive, and costs start at about 100 euros. We considered smarter and or cheaper solutions but we were also open for a sponsored scan.
Therefore we are happy to announce that a company called Lay3rs 3D Printing showed interest to support this project. Lay3rs is a great partner for 3D printing, 3D scanning, 3D software and 3D services. (and as a funny matter of fact, the founder of this company also knew Arie in person before this project even started)