In this Blog I like to receive all info we need, to make a easie way to send all FingerTip sensor data to a Arduino.
Now it has to go to the Analog inputs from a Arduino.
I think it's better to use a Analog input ic and connect this via I2C to the Arduino.
This has two reasons.
One: it saves cables from the Hand to the Arduino
Two: The analog inputs from a Atmel is not the best way to get the correct data.
About the sensors, I have test this with a Linear Hall-Sensor and a small magnet.
See here a short video: https://copy.com/TBkp1WkvEbMLAWro
The results where good enough for me, to think about the next step.
For the InMoov I will see if I can design a flexible PCB for in the Hand.
At this flexible PCB I like to ad the Analog input IC to make all the connections easier to all sensors.
More info will come soon.
Thanks in advance.
Regards,
Marten
Hello Marten ! Nice Post
Hello Marten !
Nice Post :)
Here might be some relevant I2C + MyRobotLab links
I2C A/D & D/A converter
Something like this ?
PCF8591T
4 AD channels, 1 DA. On I2C bus. Cost less than 3$.
I have an idea to an alternate solution. It would require a circuit similar to the 4017, with a 3-state output, so that it could send high ( analog reference ) or nothing (disconnected, floating voltage ). Then you could address each input and use a single AD to read the value. I may have to make a picture to explain it better.
Thanks Grog, for your
Thanks Grog, for your info.
I will read this tomorrow and will come back if I need some more info.
If I2C isn't that stable by Arduino, is it better to use a Arduino Nano for each arm/hand ?
It's easy to design a Nano Servo_Shield including all servo output names for InMoov based Robots.
@ Mats,
Thanks for your reply.
This PCF8591T is a 8-bit AD converter and I think a 10-bit is the minimum what I will suggest to use for the InMoov.
There is a option to use a PPM Encoder and read the PPM valeu with a Arduino.
I think it's easier to use a two pin setup for this.
One pin to receive the PPM and one for the Reset function.
It's better to keep the circuit small as possible.
This is my PIC based PPM_Encoder:
I also hope to receive this PCB tomorrow.
At this PCB I can connect 8 potentiometers or the Hall-Sensors for the FingerTips :-)
This isn't using many parts so I can keep the InMoov PPM Encoder smaller and can use a SMD ic.
Reading PPM with Arduino
Nice circuit. What PIC are you using ?
It's a
It's a 16F1825:
http://www.microchip.com/wwwproducts/Devices.aspx?product=PIC16F1825
The program is very easy and basic.
Tonight I will explane more about the program.
I'm now at my work :-)
Here the way I've programmed
Here the way I've programmed the PPM_Encoder:
I've set the A/D converter sample time to 290 US
This is the time that the PPM puls needs to be LOW.
After reading the Analog input, the PPM puls is set to HIGH with a US lenght from the Analog input value + 688.
The PIC has a 10-Bit A/D converter so a servo middle pos is now 1200 US -> 688 + 512 = 1200
This all will contineu till channel 8 and channel 9 is set by Switch-1 at my PCB.
At the end I calculate all Servo lenghts together and recalculate the pulslenght for the reset-puls.
This is 21500 US - 2900 US - the total servo puls lenght
21500 US = the total PPM lenght (close to 50Hz)
2900 US = all Analog reading times together.
If all servo's are set to the max position, the total servo puls lenght = 9 * 1712 = 15408 US
2900 + 15408 = 18308
So the total Reset puls lenght is 21500 - 18308 = 3192 US
This isn't that long when I use the RC-network (R1 + C1 + D1)
So for 10 servo outputs, for sure we need a second output for the Reset function.
Was this something that was
Was this something that was released to the public? I could use a PPM encoder. Thanks!