Author Topic: Generating Complex Waveforms from Functions  (Read 1915 times)

0 Members and 1 Guest are viewing this topic.

Offline Poe

  • Regular Contributor
  • *
  • Posts: 229
Generating Complex Waveforms from Functions
« on: July 08, 2015, 05:30:08 pm »
I'm not proficient enough with op-amps to design circuits which can generate outputs faithful to a complex math functions.

Luckily I now have an opportunity to learn.  They haven't told me the application yet, but I've been tasked with designing a circuit to generate waveforms which adhere to one of several different functions.  e.g. x^5

Now I'm just looking for someone to point me toward books/papers on the subject or offer some design advice in regard to what method I should consider (op-amps, something else?).

It's still early in the design phase and I don't know much.  No word on cost/volume/etc.  This customer is typically low volume niche stuff.  All I know is that there's a slightly different function for each product and I can consider a completely different hardware circuit for each product if needed.  In their words "It doesn't have to be supper accurate or super cheap", but apparently we are trying to improve on an existing system that simulated each signal with two to upwards of six flat slopes... kind of like they do with cheap 'log' potentiometers.  The system will have "multiple voltage rails" and operate over a "large" temperature range.

 

Online tggzzz

  • Super Contributor
  • ***
  • Posts: 13461
  • Country: gb
    • Having fun doing more, with less
Re: Generating Complex Waveforms from Functions
« Reply #1 on: July 08, 2015, 05:44:19 pm »
Consider doing using only analogue components. Start with Analog Device's special function chips, have a look at their application notes and books written by their staffers, e.g. Walt Jung.

Consider doing the function in the digital domain: ADC -> function -> DAC.

Consider parameters such as speed, repeatability, stability, out-of-range operation.

Look at my .sig :(
There are lies, damned lies, statistics - and ADC/DAC specs.
Glider pilot's aphorism: "there is no substitute for span". Retort: "There is a substitute: skill+imagination. But you can buy span".
Having fun doing more, with less
 

Offline w2aew

  • Super Contributor
  • ***
  • Posts: 1753
  • Country: us
  • I usTa cuDnt speL enjinere, noW I aR wuN
    • My YouTube Channel
Re: Generating Complex Waveforms from Functions
« Reply #2 on: July 08, 2015, 06:20:29 pm »
Check out this book (it's almost cheating though...)

http://www.amazon.com/Nonlinear-Circuits-Handbook-Analog-Devices/dp/091655001X
YouTube channel: https://www.youtube.com/w2aew
FAE for Tektronix
Technical Coordinator for the ARRL Northern NJ Section
 

Offline plesa

  • Frequent Contributor
  • **
  • Posts: 965
  • Country: se
Re: Generating Complex Waveforms from Functions
« Reply #3 on: July 08, 2015, 06:49:02 pm »
It looks like interesting material!! Thanks
Slightly better link :-)
http://www.kelm.ftn.uns.ac.rs/literatura/mpi/pdf/Nonlinear%20Circuit%20Handbook.pdf
 

Offline Poe

  • Regular Contributor
  • *
  • Posts: 229
Re: Generating Complex Waveforms from Functions
« Reply #4 on: July 08, 2015, 08:07:08 pm »
Check out this book (it's almost cheating though...)

http://www.amazon.com/Nonlinear-Circuits-Handbook-Analog-Devices/dp/091655001X

Looks perfect.  Thank you all. 


 

Offline T3sl4co1l

  • Super Contributor
  • ***
  • Posts: 16941
  • Country: us
  • Expert, Analog Electronics, PCB Layout, EMC
    • Seven Transistor Labs
Re: Generating Complex Waveforms from Functions
« Reply #5 on: July 08, 2015, 10:56:02 pm »
Some general ideas:

Consider the function and the arithmetic that goes into it.  Many functions can be directly computed: addition and subtraction, multiplication by a constant.

Multiplying by a joint variable is harder, but usually done by taking advantage of logarithms and exponents.

The inverse of any one-to-one function can be computed by placing it in the feedback path of an amplifier; in effect, the amplifier solves for the input corresponding to the given output.

Time is very valuable.  Consider differential equations that might produce the desired function, and how to solve them over time.  Use resistors and capacitors to your advantage; integration and differentiation.

You might have quite a lot of trouble calculating sin(x) from first principles, but using an integrator to generate a ramp, a comparator to pick a point on that ramp, and a sampler to pick a point on a synchronized sine wave oscillator, you can easily find this value: given the limitations of time delay, sampling (rather than being a continuous-time function) and oscillator distortion, to name a few, of course.

You can sample points or generate events from these waveforms, which can have further combinational effects: the pulses can be multiplied by another value, to get pulse width multiplication effects.  You're limited only by your imagination!

The space of possibilities is much the same as used in the olden days of video games, for generating interesting patterns and movements (especially of animations and enemy positions): creatures might bob up and down or zig-zag across the screen, following simple differential equations that were easily computed (using conditionals, integrals and addition, avoiding expensive operations like multiplication, division or exponentiation).  In old games, often particles would only travel in straight (vertical or horizontal) directions; you could always tell the good ones, where they went to the effort to make funny angles, or tracking projectiles, and stuff like that.  Only a matter of coming up with the right solution, and packing it in within the required time frame.

Tim
Seven Transistor Labs, LLC
Electronic design, from concept to prototype.
Bringing a project to life?  Send me a message!
 

Offline f5r5e5d

  • Frequent Contributor
  • **
  • Posts: 349
Re: Generating Complex Waveforms from Functions
« Reply #6 on: July 08, 2015, 11:49:09 pm »
its really hard to find situations where ADC/DAC integrated with a uC won't be the answer below MHz, especially if different functions, large temp range are needed
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf