Close
0%
0%

Read Rope / Electronic Nerve

This is an open-source hardware project for a device that outputs a certain voltage depending on where the rope/wire is bent.

Public Chat
Similar projects worth following
This is an open-source hardware project for a device that outputs a certain voltage depending on where the rope/wire is bent.


This project addresses the challenge of making a modular control interface for differently disabled people. With this concept, very small bends in lightweight wire caused by movement of fingers, arms, or legs can be turned into useful information for an electronic device to use.

Applications for this circuit include VR/AR/XR/MR device and control device for differently disabled people.


Check out the github repository for more content such as simulation, firmware, and C++ library. https://github.com/adct-the-experimenter/read-rope

How It Works:

A resistive flex sensor is in parallel with a limiter resistor.

The resistive flex sensor increases in resistance when bent, which increases the voltage at the output.

The limiter resistor in parallel to the resistive flex sensor scales the increase in resistance, which also scales the increase in voltage at the output.

There is a series chain of flexible sections, each containing a parallel combination of a resistive flex sensor and limiter resistor.

Different values for a limiter resistor in each section make for several equivalent resistors in series with each other that contribute different increases in output voltage when bent depending on the limiter resistor value.

If individual limiter resistors resistance value in each section of the chain were set to make the limiter resistor value dependent on the distance from the output node,

then, the increase in output voltage would depend on the distance of a flexible section from the output node thus making output voltage depend on the location of the bend of a flex resistor due to the limiter resistor's value depending on location of the bend.

See the diagram/schematic/figure for read rope circuit and the sample results.

read-rope-sample-result-3-sections.png

Portable Network Graphics (PNG) - 80.98 kB - 01/07/2020 at 15:41

Preview

read-rope-prototype-1p3.png

Portable Network Graphics (PNG) - 4.31 kB - 01/07/2020 at 15:41

Preview

read-rope-3-section-diagram.png

Portable Network Graphics (PNG) - 4.04 kB - 01/07/2020 at 15:41

Preview

README.md

markdown - 3.38 kB - 12/28/2019 at 19:23

Download

Read-Rope-Applications.pdf

Adobe Portable Document Format - 523.60 kB - 07/23/2019 at 03:31

Preview

View all 6 files

  • 7 × Wire
  • 4 × Resistor Any resistor. At least 2 for 1 bend. Amount of resistors is number of bends plus 1 for project.
  • 3 × SpectraSymbol Resistive Flex Sensor https://www.adafruit.com/product/1070

  • The Future, Electronic Skin

    Pablo Antonio Camacho Jr.06/21/2020 at 16:08 0 comments


    Electronic skin is being developed now and will be the better solution for tracking movement in the future once it gets affordable and convenient.

    https://www.sciencenewsforstudents.org/article/electronic-skin

  • C++ Library for Interpreting Read Rope Device

    Pablo Antonio Camacho Jr.04/19/2020 at 21:00 0 comments

    I decided to move the function of interpreting read rope device output from the microcontroller to the computer.

    The microcontroller now only has the function of interfacing the read rope analog circuit with the computer which includes sub functions of conberting the analog voltage output of read rope circuit to a digital value and relaying the digital value to the computer.

    The tool that allows the computer to interpret the digital value coming from the microcontroller is the C++ library found here.

    https://github.com/adct-the-experimenter/read-rope/tree/master/read_rope_shared_library

    The library uses the FTDI chip on microcontrollers and FTDI drivers to get a digital value from the microcontroller through simple UART serial communication.

    For now the baud rate is set at 9600 bps.

    The library also includes functionality to allow the application programmer to get the digital value from the read rope device and calibrate the system for reading the device output using default or custom methods.

    The library is still a work in progress.

  • Device Driver

    Pablo Antonio Camacho Jr.04/06/2020 at 02:50 0 comments

    The next step for this analog device is to make a digital interface for it to use to communicate with a computer.

    An ADC (Analog to Digital Converter) will be needed to convert the analog voltage into digital information. The digital information from the ADC will be sent via USB to the computer and a device driver will be used to tell the operating system how to communicate with the device.

    This digital interface will be very helpful for the device to be used an in input device for VR, AR, XR programs or even a mouse for a computer.

    Hopefully, OpenXR will be further developed soon to have device plugin interface support.

    I will be working on calibrating this device in parallel with making a digital interface for it.

    Edit:

    04/12 After some consideration and help from others, I decided on using the FTDI chip and its available drivers to communicate with read rope as a serial device.

  • Calibration Program Initial Results

    Pablo Antonio Camacho Jr.01/25/2020 at 19:40 0 comments

    I made a calibration program using Arduino that uses serial to make the arduino choose to do calibration or read values.

    Code:

    https://github.com/adct-the-experimenter/read-rope/blob/master/adc_code/arduino/read-rope-ADC/read-rope-ADC.ino

    The calibration fixed problems caused by error between actual output voltage and expected output voltage.

    Calibration is a step in the right direction.

    However, improvements need to be made to the calibration program to fix sensing multiple bends.

    The assumption that only 3 individual sections need to be calibrated since multiple bends are just a linear combination of the values of 3 individual sections is not working very well.

    The program needs to spend more time finding the max value output when a complete bend is made.

  • Next Steps After Success of Prototype v1.3

    Pablo Antonio Camacho Jr.01/05/2020 at 02:08 0 comments

    I recently made a prototype version 1.3 of read rope.

    Results


    It was very successful!

    - The equivalent resistance at output, load, increased based on the location of bends.

    - The flex sensors worked very well.

    - The output voltage increased based on location of bends and made it easy to tell where bends occurred.

    - The output of read rope was connected to the ADC of Arduino Uno and the arduino program verified that the bends were giving expected output voltage dependent on combination of bends.

    There were 2%-6% errors on expected values vs experimental values which could be due to tolerances of resistors, tolerance of flex sensor, flex sensor being a bit bent instead of flat.


    Considerations for next prototype

    1. Use flexible wire that can be bent over several times.

    2. Find tubing material that can enclose the wires and flex sensors.

    3. Make a sample microcontroller arduino program that can calibrate the flex sensor to determine which values signify a bend. Done to work with error.


  • The Ideal Relationship is Linear and Logarithmic

    Pablo Antonio Camacho Jr.12/26/2019 at 18:43 0 comments

    In an earlier log, it was stated the linear was the ideal relationship between output voltage and location of bends in read rope. This was partially correct.

    Actually, a linear and logarithmic relationship between output voltage and the location of bend is the most ideal and desired relationship. Otherwise piecewise.

    An individual linear increase in voltage is desired so that the increase in voltage at output is predictable, easy to read, and able to be set for different combinations of bends.

    However, overall, the individual increases should be logarithmic to each other so that it is easy to distinguish increase in voltage due to bends in certain locations. 


    For example, a bend at point A produces a large increase in voltage at output and a bend at point B produces a small increase in output voltage. If a large increase in output voltage is observed, then, the bend can be assumed to have been done at point A.

  • Use of Resistive Flex Sensor

    Pablo Antonio Camacho Jr.12/24/2019 at 05:35 0 comments

    Spectra Symbol is selling a resistive flex sensor which increases resistance by 2x when bent at a 90 degree angle.

    Product Page:

    https://www.spectrasymbol.com/product/flex-sensors/

    https://www.adafruit.com/product/1070

    I have considered using this product for read rope conceptually and done some quick simulation tests to see if it logically worked.

    It works very well.

    The resistive flex sensor can replace the switches conceptually and it would work out the same way.

    There is a minimum voltage for when there is no bend, and depending on where the bend is made, the voltage will increase by a certain amount.

    The output voltage will be unique to certain combinations of bends which is how we will know where the bends are made.

    A python script with ngspice simulation results will be made to create plots to show how the bends determine output voltage and the relationship between bend location and output voltage.

  • Considerations on Strain Gauge Use

    Pablo Antonio Camacho Jr.12/21/2019 at 20:04 0 comments

    I thought about how strain gauges may be incorporated in the project.

    In theory, they could replace the switches and the design can be changed to achieve the desired result of a voltage indicating where a bend was made.

    However, practically it does not work well for the following reasons:

    - Current strain gauges are as durable as a mechanical switch. No advantage gained.

    - Mechanical strain gauges are expensive.

    - They generally have low strain to resistance yields.

    -Can break if stretched/strained too much.

    There is some promise for a more flexible and more sensitive strain gauge.

    https://arxiv.org/abs/1708.09829

    I will keep searching for alternatives to a mechanical switch.

  • Prototype Version 1.2

    Pablo Antonio Camacho Jr.11/10/2019 at 18:29 0 comments

    I decided to change the resistors used so that the device can work with microcontroller ADCs. The ADC of the atmega328p of Arduino Uno microcontroller was considered.

    A large simulation 100 Mega ohmload resistor was added at the output to simulate the input resistance of the ADC of the atmega328p.

    Resistances of the resistors connected in series to path to circuit ground from output were changed to 1k,3k,7k,9k and track resistor was changed to 20k. These resistances were changed in order to have the output impedance of the circuit be 10k ohms at the resistor combination that gives max voltage. The output impedance needs to be 10k or less since the ADC of the atmega328p is optimized for signals that have an impedance of 10k or less.

    The total cost of making 5 pcb prototypes would be TBD not including shipping cost and not including tubing to contain pcb prototype and push button when bent.

    Parts List + Total Cost

    • 5x FlexPCB ,
    • 10x RMCF1206FT20K0 20k SMT Resistor,
    • 5x RC1206FR-079K09L 9k SMT Resistor,
    • 5x RC1206FR-077K15L 7k SMT Resistor,
    • 5x RMCF1206FT3K00 3k SMT Resistor
    • 5x CRCW12061K00FKEAC 1k SMT Resistor
    • 20x KSR221GNCLFS SPST-NC Tactile Switch, $12.80

    Most Expensive to Least Expensive Items

    1. FlexPCB
    2. SPST-NC Tactile Switches
    3. 20k, 9k, 7k, 4k, 3k, 1k SMT Resistors

    URL for Parts

  • Read Rope Prototype Version 1.1

    Pablo Antonio Camacho Jr.09/25/2019 at 05:01 0 comments

    I decided to change the resistors used.

    A large load resistor was added at the output so that output voltage is not affected by a small resistance at the load.

    Resistances of the resistors connected in series to path to circuit ground from output were changed because resistances of 1k,10k,50k,100k in parallel with a 1Meg ohm resistor at output gave a more linear relationship between output voltage and resistance at output.

    The total cost of making 5 pcb prototypes would be TBD not including shipping cost and not including tubing to contain pcb prototype and push button when bent.

    Parts List + Total Cost

    • 5x FlexPCB from PCBCart,
    • 5x KTR18EZPF1003 100k SMT Resistor,
    • 5x KTR18EZPF5232 50k SMT Resistor,
    • 5x KTR18EZPJ103 10k SMT Resistor
    • 5x KTR18EZPF100 1k SMT Resistor
    • 5x KTR18EZPF1004 1Meg SMT Resistor, $1.00
    • 20x KSR221GNCLFS SPST-NC Tactile Switch, $12.80

    Most Expensive to Least Expensive Items

    1. FlexPCB
    2. SPST-NC Tactile Switches
    3. 1Meg, 100k, 50k, 10k, 1k SMT Resistors

    URL for Parts

View all 18 project logs

  • 1
    Gather All Materials

    - 3x Resistive Flex Sensor by Spectra Symbol.

    - 2x 56k ohm resistor

    - 1x 10k ohm resistor

    - 1x 24k ohm resistor

    - Perfboard to cut into small pieces.

    - Solid Wire, 24 AWG

  • 2
    Make output section

    a. Cut a small piece of 6 hole x 6 hole perfboard that is big enough to contain a resistor, and 5 wires.

    b. Place 56k resistor into perfboard.

    c. Decide which holes will be used for output node, vcc node, and ground node.

    d. Connect vcc node to one end of 56k resistor and output node to other end of resistor.

    e. Add wire for external connection for vcc node, output node, and ground node.

    f. Solder connections if you are sure of your decision for the connections.

  • 3
    Make Flex sections

    a. Cut a small piece of 5 hole x 2 hole perfboard that is big enough to contain a resistor, flex sensor, and 2 wires.

    b. Place resistor into perfboard.(10k for section 0, 24k for section 1, 56k for section 3)

    c. Place flex sensor into board.

    d. Connect resistor and flex sensor in parallel.

    e. Connect one end of resistor to previous section with wire.

    f.  Connect next end of resistor to next section with wire.

    If at the last flex section, then connect next end of resistor to ground node of output section with wire.

    g. Solder connections if you are sure of your decision for the connections.

View all 3 instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates