element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Sensors
  • Technologies
  • More
Sensors
Sensor Forum Detecting very small (absolute) but reasonably large (relative) resistance changes with an Arduino, but without starting fires
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Sensors to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 2 replies
  • Subscribers 317 subscribers
  • Views 568 views
  • Users 0 members are here
Related

Detecting very small (absolute) but reasonably large (relative) resistance changes with an Arduino, but without starting fires

Former Member
Former Member over 12 years ago

I'm currently working on an Arduino-based alarm clock which can detect whether I'm out of bed via a velostat / piezoresistive material pressure sensor mattress underlay.

 

I'm running into a bit of an issue with the hardware (I'm much more of a software guy, haven't done much electronics in many years) and was hoping someone here might be able to steer me in the right direction.

 

Basically, the problem I'm running into is that because of the low resistance of the pressure sensor, I'm having a hell of a time getting the resolution I need without having such low resistance over the circuit that I'm pretty much just shorting it.

 

The circuit is pretty standard. I run the 5V power from the Arduino to my pressure sensor, which is copper mesh sandwiching the velostat. This then splits, and goes into an input pin on the Arduino on one side, and into another resistor and then to ground on the other.

 

The voltage the input pin on the Arduino will receive will be based on the ratio of the resistance of the pressure sensor to the resistance of the resistor that leads to ground. (Vout ~= Vin * Rsensor / (Rsensor + Rground)) So, to get maximum resolution out of pressure changes over the sensor, I want the resistance of the resistor which leads to ground to be right in the middle of the expected range of resistances I get out of the pressure sensor. (Right?)

 

Therein lies the problem. Because the pressure sensor is beneath my mattress (since I have an aversion to sleeping on electrified copper mesh), the resistance of the pressure sensor is always very low. (Also, Velostat is very conductive and it's rather expensive, so the sheet is pretty thin.) The resistance ranges from about 2 Ohm when I'm out of bed to 1.5 Ohm when I'm in bed. While this is detectable if the to-ground resistor has very low resistance, since it's a reasonably large proportional change in resistance, it means that the overall resistance of the circuit is extremely low, and I end up drawing a *ton* of current. But if I increase the resistance of the circuit by adding larger/more resistors, then I lose the resolution I need to detect whether I'm in bed, and I'm not sure what to do about it. Am I just screwed, or is there some clever trick I can pull off to salvage this sensor?

 

I have a fallback plan involving load sensors stolen from electronic bathroom scales, but the velostat sheet is mechanically simpler, not to mention less lumpy.

 

Thanks.

  • Sign in to reply
  • Cancel
  • DAB
    0 DAB over 12 years ago

    I would set up a resistor bridge arrangement.  That way you can adjust the values to zero out the environment and then use a differential amplifier to detect small changes in the resistance.

    This approach is how most of your sensitive instruments are set up.  They reuse the design, because it works, is very predictable and well behaved once you balance the devices.

     

    Just a thought,

    DAB

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • michaelkellett
    0 michaelkellett over 12 years ago

    Suppose you use an excitation current of 5mA - the voltage across your sensor will vary by 2.5mV which is easily measureable.

     

    A bridge may not be ideal here because the change you are looking for is very large and the resistance of your sensor is so low - you can't do the obvious and ballance it against a 1.5 ohm resistor and apply 5V !

     

    Drive the current though the sensor with a 1k resistor from the Arduino's 5V supply which I think is also the reference voltage for its ADC. Connect the resistor to 5V and the sensor, connect the other end of the sensor to ground.

     

    You will need to amplify the roughly 7.5mV signal across the sensor by about 100x to get  asignal you can easily measure with the Arduino.

     

    You will need an amplifier with rail to rail output and input common mode range including ground with low offset compared with 7.5mV. The LMP2021 would be good but it may be hard to get in a DIL package. The LTC1049 would do as well and Farnell sell it in a DIP package.

     

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube