Detecting Small Induced Currents in a Demonstration Solenoid?

Greetings,

I am an educator, and I am trying to create a project that will provide a digital display that shows (relatively, with more or less indicator LEDs) how much current I am inducing in my large demonstration model solenoid (picture a PVC tube with lots of wire wrapped around it) when a student brings a magnet near.

My problem in beginning this project is that so far, given my solenoid and magnet options, I am only reading an induced current of 1-2 mA, which wouldn't be a whole lot to work with.

Would this be enough current to register and give me a viable output voltage with something like the ACS712 Low Current Sensor? Or could I use something else like an op amp or a signal transistor to amplify the current?

My ultimate goal is to have more and more LEDs light up the more current is induced, to give young children (4th grade) a visual sense of creating current, without getting into theory or units of measurement.

Thanks!

  1. You only induce current when the magnet moves. Proximity does nothing, speed does lots.

  2. You will also induce a voltage. You could put a load (say a low value resistor) across the solenoid and measure that directly with an analogue input of the Arduino.

  3. If that isn't sensitive enough, you could then amplify that with either some transistors or an op amp.

Thanks ChilliTronix!

I tried your first suggestion, and my setup did indeed create a small signal - up to about 50mV. So I did get as far as a functioning prototype for my project. However, to get the full 50mV, you really have to move the magnet fast! And, since kids are going to be using this device, I'm concerned that fast = broken.

I would really love to be able to amplify the voltage somewhat, around 10x. I have a 741 Op Amp chip I tried hooking up according to this schematic , with a 9V battery as voltage supply and with Rf = 10k and R1 = 5k, but I kept getting a reading of 0V at my output. Can anyone recommend a reasonable setup of resistors and power supply to make a functioning voltage amplifier? Or is there something obvious I'm doing wrong?

Thanks for the help!

The circuit is fine the op amp is not. That is a very old op amp and will struggle to work at 9V. Get a modern op amp.

At 2mA you have enough current to drive a modern LED directly anyway.

The 741 is a very old Op Amp and it really isn't a good single supply Op Amp. IE, it doesn't work well with the inputs at the negative rail. You didn't give us a complete schematic, and only mentioned one 9V battery, but I'm assuming from that, that you have connected V- and Gnd together.

BTW, bad idea using 9V on an Op Amp feeding directly into an Arduino. You can easily end up putting more than 5V at a low impedance into it.

An LM358 can work on a single supply, run from 5V. The output can only go up to Vcc-1.5V, so 3.5V, but that's more than enough.

Keep in mind, however, than the output of the solenoid coil is going to go both positive and negative. Better if you use a Rail to Rail Input/Output (RRIO) Op Amp, and bias it to 1/2 of Vcc. Then the Arduino can calibrate to the center reading without any magnet movement, and accurately report on anything above or below that point.

I don't have time to sketch something up. So here is something close to what I'm thinking of, put your solenoid coil in place of the thermocouple, replace R4 with 220k and add a 220k resistor from 5V to the junction of R4 and R3:

That is only a gain of 10. So you might want to use 4.7k in place of the 10k resistors, and 220k in place of the 100k. That'll get you a gain of greater than 40, more than enough.

BTW, when you just say "solenoid", many people here may think you mean a linear actuator like this:

Rather than what you mean, a solenoid form factor inductor:

I'm saying this more for their benefit than yours.

Using analogRead() on a 50mV input will give an integer reading of about 10. You don't have more than 10 LEDs? If the noise is low enough, I would just run this straight into the Arduino with no amplification.

You can try that, but he said he had to get the magnet moving pretty fast to get that, and is worried that the kids will damage something trying to get a meaningful reading.

And you'll still only get one direction to respond.

That low, I'd expect a fair amount of noise. Usual precautions, put a bypass capacitor from AREF to ground, use averaging of a stream of samples in the code.

Actually, if you set the reference voltage to the internal reference and it is an Arduino with 1.1V reference, 50mV is a count of about 46. And you could still apply the offset I talked about.

Get a modern op amp.

LT1215

Thanks all for your input! I will try incorporating a more modern op amp into the circuit and update once I see how that works.

Latest Update: I tried the circuit posted by polymorph with 220k and 4.7k resistors, a LM358, and using Vcc (5V) and GND straight from the Arduino. It worked beautifully. All is well.

Thank you all for your help!

Thank you for letting us know!

Glad I could help.