I want to know if I can hook-up a resistor to one part of a Magnet Snap (carried by SparkFun), then another magnet snap to analog-pin on Arduino and still be able to read resistance value? Is this possible with these Magnetic Snaps? Can anyone recommend other alternatives?
Is this a bad idea? How much would the magnets interfere with resistor value/resistance?
I understand that Neodymium magnets are coated in nickel, which is highly conductive, so this could be an alternative.
Best Answer
You're using the Arduino to measure a resistor (call it
R1
) that is in series with the contact resistance of the magnet snap (call itR2
). Because they are connected in series, the Arduino can only measure the series combinationR1+R2
. I assume you also have a DMM (Digital Multi-Meter), pretty much a required tool for any serious electronics work.The magnets themselves won't have any noticeable effect on the circuit, since they are permanent magnets (so there is no changing magnetic flux and therefore no voltage will be induced) and magnetism is a very weak effect (1/distance cubed). However, contact resistance seems to be an issue with this particular component -- seems like a magnetic snap meant for clothing, that is being "hacked" to serve as electrical contact... because it is metallic... Sparkfun has comments attached to this part, indicating other people have had problems using it. Although they are apparently nickel-plated, the Sparkfun comments seem to indicate there may be some kind of clear, non-conductive coating over the metal.
Since your project is an e-textile prototype, the magnetic snap contact resistance includes not only the outward facing surfaces of the magnet snap, but also the connection between the magnet snap and your wires. I don't have much experience with this relatively new field, you'll need to make some measurements yourself. Best if you can use a DVM (digital voltmeter) instead of the Arduino, you'll get better accuracy.
If your DVM resistance measurements show high contact resistance (like more than 10 ohms), there may be some clear coating of plastic or varnish, that you will have to remove. Sandpaper may work.
If you can determine that the contact resistance
R2
(without includingR1
) is consistent, reliable, and repeatable, then you can subtract your averageR2
value from the totalR1+R2
measurements, to getR1
by itself.Side note about the Arduino:
I'm assuming that you really do mean your Arduino is somehow measuring resistance; because normally an A/D converter measures voltage. To measure resistance, an A/D converter would need a current source to drive the resistor. So I'm treating Arduino as a black box, you could replace it with a DVM and get the same results.
You also need to consider how much measurement range your Arduino circuit has, and whether minimum/maximum
R1
value plus averageR2
contact resistance could go out of the useful measurement range. Brief web search leads to arduino.cc forum, they suggest using a resistor divider with 10k vs unknown... This isn't a great way to do it, since the input impedance will vary quite a lot, and the range is very limited. But it may be good enough for simple projects.So to summarize: