Generating EM field

Hey all,

Although its been a few years since I’ve been active in FIRST I find myself coming back to ChiefDelphi whenever I have a particularly unique tech question that doesn’t come up in Google. I like it, its like “I got people” but for robots…


I need to create an EM field generator for a project that I’m working on. It needs to be small (say 3"x3x3 container) and give 1mA current to a coil at a specific frequency with a sine wave.

Whats the best solution for this? Is there a small IC that I can use, maybe configure with a few resistors to get my specified frequency and let it go? Or am I going to have to pull some software magic with a DAC?

Let me know what you guys think, or if you need more info.

I appreciate it!


Hi Mike,

A couple more details would be helpful. What frequency/range of frequencies do you need? Also, what’s the expected impedance (resistive and inductive) of the coil - or - what’s the max voltage at which you need to deliver your 1 mA? Is that 1 mA peak or RMS? What power source do you think you’ll use (batteries or X volt wall wart) and is that included in your 3x3x3 volume?

The reason I’m asking is that a single low frequency with a low voltage could be something as simple as a 555 timer with a filter and maybe an amplifier following it. Large ranges of frequency and or voltage will require something more elaborate.

  • Steve

How accurate (frequency and amplitude) do you need it to be? What frequency range? Does it have to be sinusoidal?

Here are a few options, listed in rough descending order in terms of “goodness” according to what I think you are trying to do.

  1. Bust out the Cypress First Touch board from the 2009 KoP. The analog front end of that will easily do a current mode* controlled sine wave up to several megahertz. Of the DIY solutions, this is by far your best bet for cost and accuracy. The programming isn’t too hard either, but expect to sink an afternoon or two into getting used to it - it is a funky combination of software and hardware.

  2. Use the headphone jack on your computer - You’ll need to calibrate the amplitude, but you can’t get much cheaper.

  3. Use a 555 timer - quick cheap simple, but it gives a square wave. You could filter it a bit…

  4. Get a function generator kit, like this from sparkfun :

3b) Get a digital function generator kit and a microprocessor to control it:

  1. Build up your own sine generator from a VCO (voltage controlled oscillator). This is solution is only good for higher frequencies - start here if you are above 40MHz.

  2. Buy an actual function generator.

For most of these, you’ll have to calibrate using an oscilloscope (you can use the cRIO’s analog module as a good 'scope with a 500kS/s sample rate).

Again, I advise the cypress route. It has the best uncalibrated accuracy of the cheap options (3b and 5 are likely to be more accurate). Also, Cypress has expressed a lot of interest in helping FIRST folk with using their parts.

EDIT: * Current mode means that it is directly pushing current, not voltage. This means you don’t have to worry about coil impedence. It also means that the internal DAC runs about 8 times faster than it does in voltage mode.

All good suggestions, Eric, but I have one clarification:

This statement is true as long as the circuit (coil) doesn’t exceed the available source voltage of the driver, which I think is 3V for the Cypress PSoc (or is it running straight off the 5V USB?). It probably won’t be a problem, but I’m just being cautious before learning the implementation details.

  • Steve

You are absolutely correct. In current mode, you are limited to the source voltage. There is no boost circuit (except for the one that is built in to the chip but isn’t in use…) active for this path.

I was assuming that your impedance would be significantly lower than 3V / 1mA = 3kOhms. 30AWG magnet wire is 100Ohms per 1000 feet, so 3kOhms of it would be a couple miles long, which likely wouldn’t fit in a 3" cube :slight_smile:

I don’t remember if it is 3.0 or 3.3V or 5.0V (but I’m leaning away from 5.0V).

Agreed, resistance would be futile (he said, waiting eagerly for negative responses…). I was thinking more along the lines of 1 milliHenry at 1 MHz giving 6 kOhms reactive.

If the frequency is low and one would want a nice sine wave, simply using a transformer with two windings would allow a nice and simple feedback generator. Open the core by taking out some laminations and you have a nice field generated. This is a technique used for bulk erasers for tape and other magnetic media.

Thanks for all the replies guys. I don’t have much time to reply right now but it is 1mA RMS at 33kHz sinusoidal. Power can be a wallwart.

33 kHz is high audio, and the 555 timer will happily do that all day. Without a power supply, I could do that in less than 1 cubic inch. About $2 at Radio Shack, add another $8 for resistors, capacitors and maybe a circuit board.

While not exactly a precision frequency system, a 555 can be held to reasonably close tolerances by managing temperature.