Driver to drive?

Jan Panteltje wrote:
On a sunny day (Sun, 03 Mar 2013 07:16:30 -0800) it happened Joerg
invalid@invalid.invalid> wrote in <aph7qmFj5hdU2@mid.individual.net>:

But it puts out a square wave which I really can't use here. Has to be
sine and the potential range is too wide to cover that with a lowpass.
Else I could use a LTC resistor-controlled oscillaator by itself and
call it a day.

Very long time a go I made a sine wave sweep generator for testing active audio filters
by using a 4046 VCO (linear f versus V), a 4040 counter, a 4k EPROM with a sine wave table,
and a 8 bit DAC.
Also had some opamp and integrator and 2 comparators, so it could sweep from f1 to f2.
That sort of thing can make a reasonable pure sinewave.
But you would need to be able to program an EPROM.
Not much that can go wrong with it, if you need more than 8 bits use 2 EPROMS.

Believe it or not, I don't even have an EPROM burner anymore. Could get
one though. The table would be generated with Excel. For UV-erasing I
could just place the EPROM on the roof, the sun is pretty intense here.

--
Regards, Joerg

http://www.analogconsultants.com/
 
langwadt@fonz.dk wrote:
On Mar 3, 4:30 pm, Joerg <inva...@invalid.invalid> wrote:
langw...@fonz.dk wrote:
On Mar 3, 6:45 am, Bill Sloman <bill.slo...@ieee.org> wrote:
On Sunday, 3 March 2013 12:27:51 UTC+13, Nico Coesel wrote:
Bill Sloman <bill.slo...@ieee.org> wrote:
On Mar 3, 11:35=A0am, n...@puntnl.niks (Nico Coesel) wrote:
Joerg <inva...@invalid.invalid> wrote:
Nico Coesel wrote:
Joerg <inva...@invalid.invalid> wrote:
snip
Joerg should be able to sweep his sine wave pretty smoothly by
incrementing/decrementing the last digit of his frequency-setting
number frequently. Whether he can do it frequently enough is another
question. He might have to program a PAL to do it for him.
That depends on whether the DDS is reset or not when the frequency
setting is updated. There has to be a reason the designers at
iteadstudio didn't implement the modulation. If it where simple they
would have implemented it.
Why do you think that?
The Analaog Devices DDS chips that I've looked at didn't seem to reset themselves when the frequency was changed.
The iteadstudio designers may have made life simpler for themselves in some way by chucking in an unnecessary reset command on top of every frequency change update, but that doesn't mean that just sending a frequency change command is going to be difficult.
a 16 bit SPI will only write 14bits of the frequency register, so
you'll need two writes unless you can do with just changing the MSB
part
the right way would to toggle between the two frequency registers, so
that would be 2*16bit, plus 16bit control register so 48bits per
update
but that is leaves ~30 cycles per bit to do the bit banging on the
16MHz MCU and get a ~10KHz update rate
You'd also have to calculate the new values for "xx Hertz up or down"
every time, xx depending on how much the output of the PID regulator
changed. I doubt those little uC would have enough ROM to store a large
LUT for that.

yeh those 8K wouldn't last long with a LUT, but is it needed ?

wouldn't it be something like; freq = basefreq + Vin*magic_constant
It would need a fairly fine granularity, several k vlaue sets for the
DDS. It's easy to get nasty artifacts if this isn't calculated on the fly.


I did a few tricks like that in the past because I do write a lot of
code architecture. Almost every time the guys came back and said "Hey,
good idea but we'd run out of MIPS" or "We are almost out of memory
space already". That's the beauty of analog, no such limits :)

but plenty of other limits, you can't get everything ..
Yes, but I know analog will work. It's just not very friendly in terms
of PC connectivity.


but with modern ARMs, you can get close to 200MHz with 1Mbyte flash
for 10$, that'll go a long way
If one can program them in a reasonaable time frame which I can't (yet).

--
Regards, Joerg

http://www.analogconsultants.com/
 
On Mar 3, 4:30 pm, Joerg <inva...@invalid.invalid> wrote:
langw...@fonz.dk wrote:
On Mar 3, 6:45 am, Bill Sloman <bill.slo...@ieee.org> wrote:
On Sunday, 3 March 2013 12:27:51 UTC+13, Nico Coesel  wrote:
Bill Sloman <bill.slo...@ieee.org> wrote:
On Mar 3, 11:35=A0am, n...@puntnl.niks (Nico Coesel) wrote:
Joerg <inva...@invalid.invalid> wrote:
Nico Coesel wrote:
Joerg <inva...@invalid.invalid> wrote:
snip

Joerg should be able to sweep his sine wave pretty smoothly by
incrementing/decrementing the last digit of his frequency-setting
number frequently. Whether he can do it frequently enough is another
question. He might have to program a PAL to do it for him.
That depends on whether the DDS is reset or not when the frequency
setting is updated. There has to be a reason the designers at
iteadstudio didn't implement the modulation. If it where simple they
would have implemented it.
Why do you think that?

The Analaog Devices DDS chips that I've looked at didn't seem to reset themselves when the frequency was changed.

The iteadstudio designers may have made life simpler for themselves in some way by chucking in an unnecessary reset command on top of every frequency change update, but that doesn't mean that just sending a frequency change command is going to be difficult.

a 16 bit SPI will only write 14bits of the frequency register, so
you'll need two writes unless you can do with just changing the MSB
part

the right way would to toggle between the two frequency registers, so
that would be 2*16bit, plus 16bit control register so 48bits per
update

but that is leaves ~30 cycles per bit to do the bit banging on the
16MHz MCU and get a ~10KHz update rate

You'd also have to calculate the new values for "xx Hertz up or down"
every time, xx depending on how much the output of the PID regulator
changed. I doubt those little uC would have enough ROM to store a large
LUT for that.
yeh those 8K wouldn't last long with a LUT, but is it needed ?

wouldn't it be something like; freq = basefreq + Vin*magic_constant

I did a few tricks like that in the past because I do write a lot of
code architecture. Almost every time the guys came back and said "Hey,
good idea but we'd run out of MIPS" or "We are almost out of memory
space already". That's the beauty of analog, no such limits :)
but plenty of other limits, you can't get everything ..

but with modern ARMs, you can get close to 200MHz with 1Mbyte flash
for 10$, that'll go a long way


-Lasse
 
On Sun, 03 Mar 2013 07:55:07 -0800, the renowned Joerg
<invalid@invalid.invalid> wrote:

Jan Panteltje wrote:
On a sunny day (Sun, 03 Mar 2013 07:16:30 -0800) it happened Joerg
invalid@invalid.invalid> wrote in <aph7qmFj5hdU2@mid.individual.net>:

But it puts out a square wave which I really can't use here. Has to be
sine and the potential range is too wide to cover that with a lowpass.
Else I could use a LTC resistor-controlled oscillaator by itself and
call it a day.

Very long time a go I made a sine wave sweep generator for testing active audio filters
by using a 4046 VCO (linear f versus V), a 4040 counter, a 4k EPROM with a sine wave table,
and a 8 bit DAC.
Also had some opamp and integrator and 2 comparators, so it could sweep from f1 to f2.
That sort of thing can make a reasonable pure sinewave.
But you would need to be able to program an EPROM.
Not much that can go wrong with it, if you need more than 8 bits use 2 EPROMS.


Believe it or not, I don't even have an EPROM burner anymore. Could get
one though. The table would be generated with Excel. For UV-erasing I
could just place the EPROM on the roof, the sun is pretty intense here.
Flash memory 70ns 256K x 16 is $1.10 one-off, but you wouldn't be able
to use even one cent worth of it.


Best regards,
Spehro Pefhany
--
"it's the network..." "The Journey is the reward"
speff@interlog.com Info for manufacturers: http://www.trexon.com
Embedded software/hardware/analog Info for designers: http://www.speff.com
 
Spehro Pefhany wrote:
On Sun, 03 Mar 2013 07:55:07 -0800, the renowned Joerg
invalid@invalid.invalid> wrote:

Jan Panteltje wrote:
On a sunny day (Sun, 03 Mar 2013 07:16:30 -0800) it happened Joerg
invalid@invalid.invalid> wrote in <aph7qmFj5hdU2@mid.individual.net>:

But it puts out a square wave which I really can't use here. Has to be
sine and the potential range is too wide to cover that with a lowpass.
Else I could use a LTC resistor-controlled oscillaator by itself and
call it a day.
Very long time a go I made a sine wave sweep generator for testing active audio filters
by using a 4046 VCO (linear f versus V), a 4040 counter, a 4k EPROM with a sine wave table,
and a 8 bit DAC.
Also had some opamp and integrator and 2 comparators, so it could sweep from f1 to f2.
That sort of thing can make a reasonable pure sinewave.
But you would need to be able to program an EPROM.
Not much that can go wrong with it, if you need more than 8 bits use 2 EPROMS.

Believe it or not, I don't even have an EPROM burner anymore. Could get
one though. The table would be generated with Excel. For UV-erasing I
could just place the EPROM on the roof, the sun is pretty intense here.

Flash memory 70ns 256K x 16 is $1.10 one-off, but you wouldn't be able
to use even one cent worth of it.
If I wanted to do that I'd probably just get a uC with ADC and a big fat
flash area, then use it just for this job. Its ADC reads my PID output,
points to the corresponding LUT address, shoves data to the DDS. That is
how I'd do the final system, or let it calculate (depending how easy it
is to avoid birdies and stuff).

--
Regards, Joerg

http://www.analogconsultants.com/
 
On Sun, 03 Mar 2013 09:48:31 -0800, the renowned Joerg
<invalid@invalid.invalid> wrote:

If I wanted to do that I'd probably just get a uC with ADC and a big fat
flash area, then use it just for this job. Its ADC reads my PID output,
points to the corresponding LUT address, shoves data to the DDS. That is
how I'd do the final system, or let it calculate (depending how easy it
is to avoid birdies and stuff).
Have you considered just buying something like my Rigol DG4062 and
using it for proof-of-concept? For $795 it might be worth it, and it's
generally useful afterward with the USB and Ethernet interfaces etc.


Best regards,
Spehro Pefhany
--
"it's the network..." "The Journey is the reward"
speff@interlog.com Info for manufacturers: http://www.trexon.com
Embedded software/hardware/analog Info for designers: http://www.speff.com
 
On Sun, 03 Mar 2013 09:48:31 -0800, Joerg <invalid@invalid.invalid> wrote:

Spehro Pefhany wrote:
On Sun, 03 Mar 2013 07:55:07 -0800, the renowned Joerg
invalid@invalid.invalid> wrote:

Jan Panteltje wrote:
On a sunny day (Sun, 03 Mar 2013 07:16:30 -0800) it happened Joerg
invalid@invalid.invalid> wrote in <aph7qmFj5hdU2@mid.individual.net>:

But it puts out a square wave which I really can't use here. Has to be
sine and the potential range is too wide to cover that with a lowpass.
Else I could use a LTC resistor-controlled oscillaator by itself and
call it a day.
Very long time a go I made a sine wave sweep generator for testing active audio filters
by using a 4046 VCO (linear f versus V), a 4040 counter, a 4k EPROM with a sine wave table,
and a 8 bit DAC.
Also had some opamp and integrator and 2 comparators, so it could sweep from f1 to f2.
That sort of thing can make a reasonable pure sinewave.
But you would need to be able to program an EPROM.
Not much that can go wrong with it, if you need more than 8 bits use 2 EPROMS.

Believe it or not, I don't even have an EPROM burner anymore. Could get
one though. The table would be generated with Excel. For UV-erasing I
could just place the EPROM on the roof, the sun is pretty intense here.

Flash memory 70ns 256K x 16 is $1.10 one-off, but you wouldn't be able
to use even one cent worth of it.


If I wanted to do that I'd probably just get a uC with ADC and a big fat
flash area, then use it just for this job. Its ADC reads my PID output,
points to the corresponding LUT address, shoves data to the DDS. That is
how I'd do the final system, or let it calculate (depending how easy it
is to avoid birdies and stuff).
Something like an LPC1754 would do all that for about $4. If you can find a C
programmer person who can code and flash the chip, I could write the pseudocode.
It would need some startup code (set up CPU junk, configure the ADC and DAC) and
an IRQ routine to read the ADC, do the DDS stuff, and load the DAC. The ADC
could cause the IRQ at a couple hundred KHz, and the IRQ code would be short and
sweet.

May as well include the PID loop. I have an LPC1754 app that does most of that
stuff; you could hack its code.


--

John Larkin Highland Technology Inc
www.highlandtechnology.com jlarkin at highlandtechnology dot com

Precision electronic instrumentation
Picosecond-resolution Digital Delay and Pulse generators
Custom timing and laser controllers
Photonics and fiberoptic TTL data links
VME analog, thermocouple, LVDT, synchro, tachometer
Multichannel arbitrary waveform generators
 
John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 03 Mar 2013 09:48:31 -0800, Joerg <invalid@invalid.invalid> wrote:

Spehro Pefhany wrote:
On Sun, 03 Mar 2013 07:55:07 -0800, the renowned Joerg
invalid@invalid.invalid> wrote:

Jan Panteltje wrote:
On a sunny day (Sun, 03 Mar 2013 07:16:30 -0800) it happened Joerg
invalid@invalid.invalid> wrote in <aph7qmFj5hdU2@mid.individual.net>:

But it puts out a square wave which I really can't use here. Has to be
sine and the potential range is too wide to cover that with a lowpass.
Else I could use a LTC resistor-controlled oscillaator by itself and
call it a day.
Very long time a go I made a sine wave sweep generator for testing active audio filters
by using a 4046 VCO (linear f versus V), a 4040 counter, a 4k EPROM with a sine wave table,
and a 8 bit DAC.
Also had some opamp and integrator and 2 comparators, so it could sweep from f1 to f2.
That sort of thing can make a reasonable pure sinewave.
But you would need to be able to program an EPROM.
Not much that can go wrong with it, if you need more than 8 bits use 2 EPROMS.

Believe it or not, I don't even have an EPROM burner anymore. Could get
one though. The table would be generated with Excel. For UV-erasing I
could just place the EPROM on the roof, the sun is pretty intense here.

Flash memory 70ns 256K x 16 is $1.10 one-off, but you wouldn't be able
to use even one cent worth of it.


If I wanted to do that I'd probably just get a uC with ADC and a big fat
flash area, then use it just for this job. Its ADC reads my PID output,
points to the corresponding LUT address, shoves data to the DDS. That is
how I'd do the final system, or let it calculate (depending how easy it
is to avoid birdies and stuff).

Something like an LPC1754 would do all that for about $4. If you can find a C
programmer person who can code and flash the chip, I could write the pseudocode.
It would need some startup code (set up CPU junk, configure the ADC and DAC) and
an IRQ routine to read the ADC, do the DDS stuff, and load the DAC. The ADC
could cause the IRQ at a couple hundred KHz, and the IRQ code would be short and
sweet.
I wouldn't be surprised you don't the DDS stuff at all. Just use
floating point. The chip is probably fast enough to emulate. After all
its one sin() and some additions to get the output. Some fast float to
integer conversion magic and its all done.

--
Failure does not prove something is impossible, failure simply
indicates you are not using the right tools...
nico@nctdevpuntnl (punt=.)
--------------------------------------------------------------
 
On Sun, 03 Mar 2013 18:49:31 GMT, the renowned nico@puntnl.niks (Nico
Coesel) wrote:

John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 03 Mar 2013 09:48:31 -0800, Joerg <invalid@invalid.invalid> wrote:

Spehro Pefhany wrote:
On Sun, 03 Mar 2013 07:55:07 -0800, the renowned Joerg
invalid@invalid.invalid> wrote:

Jan Panteltje wrote:
On a sunny day (Sun, 03 Mar 2013 07:16:30 -0800) it happened Joerg
invalid@invalid.invalid> wrote in <aph7qmFj5hdU2@mid.individual.net>:

But it puts out a square wave which I really can't use here. Has to be
sine and the potential range is too wide to cover that with a lowpass.
Else I could use a LTC resistor-controlled oscillaator by itself and
call it a day.
Very long time a go I made a sine wave sweep generator for testing active audio filters
by using a 4046 VCO (linear f versus V), a 4040 counter, a 4k EPROM with a sine wave table,
and a 8 bit DAC.
Also had some opamp and integrator and 2 comparators, so it could sweep from f1 to f2.
That sort of thing can make a reasonable pure sinewave.
But you would need to be able to program an EPROM.
Not much that can go wrong with it, if you need more than 8 bits use 2 EPROMS.

Believe it or not, I don't even have an EPROM burner anymore. Could get
one though. The table would be generated with Excel. For UV-erasing I
could just place the EPROM on the roof, the sun is pretty intense here.

Flash memory 70ns 256K x 16 is $1.10 one-off, but you wouldn't be able
to use even one cent worth of it.


If I wanted to do that I'd probably just get a uC with ADC and a big fat
flash area, then use it just for this job. Its ADC reads my PID output,
points to the corresponding LUT address, shoves data to the DDS. That is
how I'd do the final system, or let it calculate (depending how easy it
is to avoid birdies and stuff).

Something like an LPC1754 would do all that for about $4. If you can find a C
programmer person who can code and flash the chip, I could write the pseudocode.
It would need some startup code (set up CPU junk, configure the ADC and DAC) and
an IRQ routine to read the ADC, do the DDS stuff, and load the DAC. The ADC
could cause the IRQ at a couple hundred KHz, and the IRQ code would be short and
sweet.

I wouldn't be surprised you don't the DDS stuff at all. Just use
floating point. The chip is probably fast enough to emulate. After all
its one sin() and some additions to get the output. Some fast float to
integer conversion magic and its all done.
LPC43xx should be fast enough- it's got hardware floating point.

I think that spitting out floating-point transcendentals in < 10usec
on a Cortex M3 running at only 100MHz is asking too much of the
standard library functions.

Hey, if J. doesn't mind offshore stuff of dubious heritage and
"support", what about this?

http://www.ebay.com/itm/20MHz-DDS-Signal-Generator-with-Sweep-Function-with-English-Software-/230781295119


Best regards,
Spehro Pefhany
--
"it's the network..." "The Journey is the reward"
speff@interlog.com Info for manufacturers: http://www.trexon.com
Embedded software/hardware/analog Info for designers: http://www.speff.com
 
On Sun, 03 Mar 2013 07:19:26 -0800, Joerg wrote:

Tim Wescott wrote:
On Sat, 02 Mar 2013 12:37:10 -0800, Joerg wrote:

Hi Folks,

Long story short, none of the DDS modules I've found so far has the
ability to be sweeped or FM-modulated. This one has a signal input
terminal block "SIN" but I received a response from the manufacturer
that it connects to nowhere, it has no function:

http://imall.iteadstudio.com/tools-and-equipment/im120723003.html

What I need in my case is DC-100Hz of sweep or FM bandwidth. Operating
frequency under 10kHz and sweep range up to 2kHz. Of course I can whip
up an analog solution but it won't be as precise and most of all not
really programmable.

Is there anything better? Cost is not a big issue but should be
somewhat small and a display would be nice.

Soooooooo. Have you spent more time looking to date than it would have
taken to slap a DDS chip onto your board and make it work?

(I hate that question -- even when I'm asking it of myself).


No, with my code writing knowledge that would take a loooong time. We
could use a contract engineer for that part but it can become tough
because every time some loop behavior needs to change he or she has to
come again (because it must be tested on a fairly large setup). With
resistors and caps and diodes it's much easier.
Unless you specify that whoever writes the code makes it listen to an ADC
input and sweeps the frequency on command -- but that's getting pretty
involved.

If you're looking at less than 10kHz carrier and 2kHz FM bandwidth,
what's stopping you from an analog solution? The required precision?

Have you considered a crystal oscillator with an FM input beating against
a plain ol' signal generator (crystal derived, of course)? That should
give you a fairly steady carrier frequency that you can set from an
instrument, a nice sine wave, the FM that seems to be your primary need,
and it'll keep the custom circuitry all analog so you don't need to step
outside of your areas of expertise to get it done.

--
Tim Wescott
Control system and signal processing consulting
www.wescottdesign.com
 
Spehro Pefhany <speffSNIP@interlogDOTyou.knowwhat> wrote:

On Sun, 03 Mar 2013 18:49:31 GMT, the renowned nico@puntnl.niks (Nico
Coesel) wrote:

John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 03 Mar 2013 09:48:31 -0800, Joerg <invalid@invalid.invalid> wrote:

Spehro Pefhany wrote:
On Sun, 03 Mar 2013 07:55:07 -0800, the renowned Joerg
invalid@invalid.invalid> wrote:

Jan Panteltje wrote:
On a sunny day (Sun, 03 Mar 2013 07:16:30 -0800) it happened Joerg
invalid@invalid.invalid> wrote in <aph7qmFj5hdU2@mid.individual.net>:

But it puts out a square wave which I really can't use here. Has to be
sine and the potential range is too wide to cover that with a lowpass.
Else I could use a LTC resistor-controlled oscillaator by itself and
call it a day.
Very long time a go I made a sine wave sweep generator for testing active audio filters
by using a 4046 VCO (linear f versus V), a 4040 counter, a 4k EPROM with a sine wave table,
and a 8 bit DAC.
Also had some opamp and integrator and 2 comparators, so it could sweep from f1 to f2.
That sort of thing can make a reasonable pure sinewave.
But you would need to be able to program an EPROM.
Not much that can go wrong with it, if you need more than 8 bits use 2 EPROMS.

Believe it or not, I don't even have an EPROM burner anymore. Could get
one though. The table would be generated with Excel. For UV-erasing I
could just place the EPROM on the roof, the sun is pretty intense here.

Flash memory 70ns 256K x 16 is $1.10 one-off, but you wouldn't be able
to use even one cent worth of it.


If I wanted to do that I'd probably just get a uC with ADC and a big fat
flash area, then use it just for this job. Its ADC reads my PID output,
points to the corresponding LUT address, shoves data to the DDS. That is
how I'd do the final system, or let it calculate (depending how easy it
is to avoid birdies and stuff).

Something like an LPC1754 would do all that for about $4. If you can find a C
programmer person who can code and flash the chip, I could write the pseudocode.
It would need some startup code (set up CPU junk, configure the ADC and DAC) and
an IRQ routine to read the ADC, do the DDS stuff, and load the DAC. The ADC
could cause the IRQ at a couple hundred KHz, and the IRQ code would be short and
sweet.

I wouldn't be surprised you don't the DDS stuff at all. Just use
floating point. The chip is probably fast enough to emulate. After all
its one sin() and some additions to get the output. Some fast float to
integer conversion magic and its all done.

LPC43xx should be fast enough- it's got hardware floating point.

I think that spitting out floating-point transcendentals in < 10usec
on a Cortex M3 running at only 100MHz is asking too much of the
standard library functions.
Who said you'd need a sampling frequency of 100kHz? Or at least
calculate samples that fast...

--
Failure does not prove something is impossible, failure simply
indicates you are not using the right tools...
nico@nctdevpuntnl (punt=.)
--------------------------------------------------------------
 
On Sat, 02 Mar 2013 12:37:10 -0800, Joerg <invalid@invalid.invalid>
wrote:

Hi Folks,

Long story short, none of the DDS modules I've found so far has the
ability to be sweeped or FM-modulated. This one has a signal input
terminal block "SIN" but I received a response from the manufacturer
that it connects to nowhere, it has no function:

http://imall.iteadstudio.com/tools-and-equipment/im120723003.html

What I need in my case is DC-100Hz of sweep or FM bandwidth. Operating
frequency under 10kHz and sweep range up to 2kHz. Of course I can whip
up an analog solution but it won't be as precise and most of all not
really programmable.

Is there anything better? Cost is not a big issue but should be somewhat
small and a display would be nice.
If you have an FPGA in your project, stick it in there. DDS is easy to
implement in an FPGA.
 
Spehro Pefhany wrote:
On Sun, 03 Mar 2013 09:48:31 -0800, the renowned Joerg
invalid@invalid.invalid> wrote:

If I wanted to do that I'd probably just get a uC with ADC and a big fat
flash area, then use it just for this job. Its ADC reads my PID output,
points to the corresponding LUT address, shoves data to the DDS. That is
how I'd do the final system, or let it calculate (depending how easy it
is to avoid birdies and stuff).

Have you considered just buying something like my Rigol DG4062 and
using it for proof-of-concept? For $795 it might be worth it, and it's
generally useful afterward with the USB and Ethernet interfaces etc.
I have, and the price isn't so important. I've got a Mastech arb gen
that would work just fine and is under $400. But I need something that
isn't so large.

Probably the old XR2206 will work ok. I was just surprised that no
company seems to have pick up this chip after it went lalaland.

--
Regards, Joerg

http://www.analogconsultants.com/
 
Nico Coesel wrote:
Spehro Pefhany <speffSNIP@interlogDOTyou.knowwhat> wrote:

On Sun, 03 Mar 2013 18:49:31 GMT, the renowned nico@puntnl.niks (Nico
Coesel) wrote:

John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 03 Mar 2013 09:48:31 -0800, Joerg <invalid@invalid.invalid> wrote:

Spehro Pefhany wrote:
On Sun, 03 Mar 2013 07:55:07 -0800, the renowned Joerg
invalid@invalid.invalid> wrote:

Jan Panteltje wrote:
On a sunny day (Sun, 03 Mar 2013 07:16:30 -0800) it happened Joerg
invalid@invalid.invalid> wrote in <aph7qmFj5hdU2@mid.individual.net>:

But it puts out a square wave which I really can't use here. Has to be
sine and the potential range is too wide to cover that with a lowpass.
Else I could use a LTC resistor-controlled oscillaator by itself and
call it a day.
Very long time a go I made a sine wave sweep generator for testing active audio filters
by using a 4046 VCO (linear f versus V), a 4040 counter, a 4k EPROM with a sine wave table,
and a 8 bit DAC.
Also had some opamp and integrator and 2 comparators, so it could sweep from f1 to f2.
That sort of thing can make a reasonable pure sinewave.
But you would need to be able to program an EPROM.
Not much that can go wrong with it, if you need more than 8 bits use 2 EPROMS.
Believe it or not, I don't even have an EPROM burner anymore. Could get
one though. The table would be generated with Excel. For UV-erasing I
could just place the EPROM on the roof, the sun is pretty intense here.
Flash memory 70ns 256K x 16 is $1.10 one-off, but you wouldn't be able
to use even one cent worth of it.

If I wanted to do that I'd probably just get a uC with ADC and a big fat
flash area, then use it just for this job. Its ADC reads my PID output,
points to the corresponding LUT address, shoves data to the DDS. That is
how I'd do the final system, or let it calculate (depending how easy it
is to avoid birdies and stuff).
Something like an LPC1754 would do all that for about $4. If you can find a C
programmer person who can code and flash the chip, I could write the pseudocode.
It would need some startup code (set up CPU junk, configure the ADC and DAC) and
an IRQ routine to read the ADC, do the DDS stuff, and load the DAC. The ADC
could cause the IRQ at a couple hundred KHz, and the IRQ code would be short and
sweet.
I wouldn't be surprised you don't the DDS stuff at all. Just use
floating point. The chip is probably fast enough to emulate. After all
its one sin() and some additions to get the output. Some fast float to
integer conversion magic and its all done.
LPC43xx should be fast enough- it's got hardware floating point.

I think that spitting out floating-point transcendentals in < 10usec
on a Cortex M3 running at only 100MHz is asking too much of the
standard library functions.

Who said you'd need a sampling frequency of 100kHz? Or at least
calculate samples that fast...
A few kilohoitz would be plenty. The loop BW itself is going to be less
than 100Hz and then some granularity needs to be added in for larger swings.

Yes, a uC can clearly do this but since this is just one tiny sliver of
the whole project I was hoping for something like "Crack open the
package, solder in, sprinkle with inductors and caps, maybe some
cilantro, turn on, forget about it". Looks like those XR2206 modules
plus one counter module will be the ticket if nothing better comes up
off-the-shelf.

--
Regards, Joerg

http://www.analogconsultants.com/
 
Klaus Kragelund wrote:
On Sunday, March 3, 2013 8:53:36 PM UTC+1, Tim Wescott wrote:
On Sun, 03 Mar 2013 07:19:26 -0800, Joerg wrote:



Tim Wescott wrote:
On Sat, 02 Mar 2013 12:37:10 -0800, Joerg wrote:
Hi Folks, Long story short, none of the DDS modules I've
found so far has the ability to be sweeped or FM-modulated.
This one has a signal input terminal block "SIN" but I
received a response from the manufacturer that it connects to
nowhere, it has no function:
http://imall.iteadstudio.com/tools-and-equipment/im120723003.html
What I need in my case is DC-100Hz of sweep or FM bandwidth.
Operating frequency under 10kHz and sweep range up to 2kHz.
Of course I can whip up an analog solution but it won't be as
precise and most of all not really programmable. Is there
anything better? Cost is not a big issue but should be
somewhat small and a display would be nice.
Soooooooo. Have you spent more time looking to date than it
would have taken to slap a DDS chip onto your board and make it
work? (I hate that question -- even when I'm asking it of
myself).
No, with my code writing knowledge that would take a loooong
time. We could use a contract engineer for that part but it can
become tough because every time some loop behavior needs to
change he or she has to come again (because it must be tested on
a fairly large setup). With resistors and caps and diodes it's
much easier.


Unless you specify that whoever writes the code makes it listen to
an ADC

input and sweeps the frequency on command -- but that's getting
pretty

involved.



If you're looking at less than 10kHz carrier and 2kHz FM bandwidth,


what's stopping you from an analog solution? The required
precision?
Since it seems there ain't no DDS module where the FM modulator input
actually works, the analog solution is what I am going to do. Lower
precision is one downside, the other is lack of PC controllability. But
those are not absolutely required here.


Have you considered a crystal oscillator with an FM input beating
against

a plain ol' signal generator (crystal derived, of course)? That
should

give you a fairly steady carrier frequency that you can set from an


instrument, a nice sine wave, the FM that seems to be your primary
need,

and it'll keep the custom circuitry all analog so you don't need to
step

outside of your areas of expertise to get it done.
With two crystals in the 10MHz or higher range that wuold work. One
fixed, one pulled via varicap. However, the varicap pulling is anything
but linear, BTDT. I think the XR2206 is easier.

A STM32 F4 (with floating point unit):

http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419

14 USD. Extension board with display etc

In my lab I have a generic STM board in an enclosure. Instead of
doing analog test equipment each time I need it, I have done uC
designs targeted for the same board.

When finished I then have several hex files I can upload for a
desired functionality. That saves time for coming projects and avoid
bringing forward the solder iron.
I have something like that from Cypress, not nearly as powerful but
would likely do the trick. However, you are much more used to writing
code than I am, so this would take me a long time. I am not oppose to a
learning curve but there are too many projects on the plate right now.

--
Regards, Joerg

http://www.analogconsultants.com/
 
qrk wrote:
On Sat, 02 Mar 2013 12:37:10 -0800, Joerg <invalid@invalid.invalid
wrote:

Hi Folks,

Long story short, none of the DDS modules I've found so far has the
ability to be sweeped or FM-modulated. This one has a signal input
terminal block "SIN" but I received a response from the manufacturer
that it connects to nowhere, it has no function:

http://imall.iteadstudio.com/tools-and-equipment/im120723003.html

What I need in my case is DC-100Hz of sweep or FM bandwidth. Operating
frequency under 10kHz and sweep range up to 2kHz. Of course I can whip
up an analog solution but it won't be as precise and most of all not
really programmable.

Is there anything better? Cost is not a big issue but should be somewhat
small and a display would be nice.

If you have an FPGA in your project, stick it in there. DDS is easy to
implement in an FPGA.

Not FPGA, CPLD or any of that in this project. Plus I don't have much
programming experience with those.

--
Regards, Joerg

http://www.analogconsultants.com/
 
On Sunday, March 3, 2013 8:53:36 PM UTC+1, Tim Wescott wrote:
On Sun, 03 Mar 2013 07:19:26 -0800, Joerg wrote:



Tim Wescott wrote:

On Sat, 02 Mar 2013 12:37:10 -0800, Joerg wrote:



Hi Folks,



Long story short, none of the DDS modules I've found so far has the

ability to be sweeped or FM-modulated. This one has a signal input

terminal block "SIN" but I received a response from the manufacturer

that it connects to nowhere, it has no function:



http://imall.iteadstudio.com/tools-and-equipment/im120723003.html



What I need in my case is DC-100Hz of sweep or FM bandwidth. Operating

frequency under 10kHz and sweep range up to 2kHz. Of course I can whip

up an analog solution but it won't be as precise and most of all not

really programmable.



Is there anything better? Cost is not a big issue but should be

somewhat small and a display would be nice.



Soooooooo. Have you spent more time looking to date than it would have

taken to slap a DDS chip onto your board and make it work?



(I hate that question -- even when I'm asking it of myself).





No, with my code writing knowledge that would take a loooong time. We

could use a contract engineer for that part but it can become tough

because every time some loop behavior needs to change he or she has to

come again (because it must be tested on a fairly large setup). With

resistors and caps and diodes it's much easier.



Unless you specify that whoever writes the code makes it listen to an ADC

input and sweeps the frequency on command -- but that's getting pretty

involved.



If you're looking at less than 10kHz carrier and 2kHz FM bandwidth,

what's stopping you from an analog solution? The required precision?



Have you considered a crystal oscillator with an FM input beating against

a plain ol' signal generator (crystal derived, of course)? That should

give you a fairly steady carrier frequency that you can set from an

instrument, a nice sine wave, the FM that seems to be your primary need,

and it'll keep the custom circuitry all analog so you don't need to step

outside of your areas of expertise to get it done.
A STM32 F4 (with floating point unit):

http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419

14 USD. Extension board with display etc

In my lab I have a generic STM board in an enclosure. Instead of doing analog test equipment each time I need it, I have done uC designs targeted for the same board.

When finished I then have several hex files I can upload for a desired functionality. That saves time for coming projects and avoid bringing forward the solder iron.

Cheers

Klaus
 
On Sun, 03 Mar 2013 20:38:07 GMT, nico@puntnl.niks (Nico Coesel) wrote:

Spehro Pefhany <speffSNIP@interlogDOTyou.knowwhat> wrote:

On Sun, 03 Mar 2013 18:49:31 GMT, the renowned nico@puntnl.niks (Nico
Coesel) wrote:

John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 03 Mar 2013 09:48:31 -0800, Joerg <invalid@invalid.invalid> wrote:

Spehro Pefhany wrote:
On Sun, 03 Mar 2013 07:55:07 -0800, the renowned Joerg
invalid@invalid.invalid> wrote:

Jan Panteltje wrote:
On a sunny day (Sun, 03 Mar 2013 07:16:30 -0800) it happened Joerg
invalid@invalid.invalid> wrote in <aph7qmFj5hdU2@mid.individual.net>:

But it puts out a square wave which I really can't use here. Has to be
sine and the potential range is too wide to cover that with a lowpass.
Else I could use a LTC resistor-controlled oscillaator by itself and
call it a day.
Very long time a go I made a sine wave sweep generator for testing active audio filters
by using a 4046 VCO (linear f versus V), a 4040 counter, a 4k EPROM with a sine wave table,
and a 8 bit DAC.
Also had some opamp and integrator and 2 comparators, so it could sweep from f1 to f2.
That sort of thing can make a reasonable pure sinewave.
But you would need to be able to program an EPROM.
Not much that can go wrong with it, if you need more than 8 bits use 2 EPROMS.

Believe it or not, I don't even have an EPROM burner anymore. Could get
one though. The table would be generated with Excel. For UV-erasing I
could just place the EPROM on the roof, the sun is pretty intense here.

Flash memory 70ns 256K x 16 is $1.10 one-off, but you wouldn't be able
to use even one cent worth of it.


If I wanted to do that I'd probably just get a uC with ADC and a big fat
flash area, then use it just for this job. Its ADC reads my PID output,
points to the corresponding LUT address, shoves data to the DDS. That is
how I'd do the final system, or let it calculate (depending how easy it
is to avoid birdies and stuff).

Something like an LPC1754 would do all that for about $4. If you can find a C
programmer person who can code and flash the chip, I could write the pseudocode.
It would need some startup code (set up CPU junk, configure the ADC and DAC) and
an IRQ routine to read the ADC, do the DDS stuff, and load the DAC. The ADC
could cause the IRQ at a couple hundred KHz, and the IRQ code would be short and
sweet.

I wouldn't be surprised you don't the DDS stuff at all.
?????


Just use
floating point. The chip is probably fast enough to emulate. After all
its one sin() and some additions to get the output. Some fast float to
integer conversion magic and its all done.

LPC43xx should be fast enough- it's got hardware floating point.
Floats don't help implementing the DDS core; they actually make it harder.

I think that spitting out floating-point transcendentals in < 10usec
on a Cortex M3 running at only 100MHz is asking too much of the
standard library functions.
Sine is easily, and usually, done with a lookup table in DDS apps. That will
take a few tens of nanoseconds on a 100 MHz ARM.

Who said you'd need a sampling frequency of 100kHz? Or at least
calculate samples that fast...
100 or 200KHz IRQ rate (5 to 10x Nyquist) would be easy on an LPC1754. The
advantage of a higher rate is that you'd need a less demanding lowpass filter
after the DAC.


--

John Larkin Highland Technology Inc
www.highlandtechnology.com jlarkin at highlandtechnology dot com

Precision electronic instrumentation
Picosecond-resolution Digital Delay and Pulse generators
Custom timing and laser controllers
Photonics and fiberoptic TTL data links
VME analog, thermocouple, LVDT, synchro, tachometer
Multichannel arbitrary waveform generators
 
John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 03 Mar 2013 20:38:07 GMT, nico@puntnl.niks (Nico Coesel) wrote:

Spehro Pefhany <speffSNIP@interlogDOTyou.knowwhat> wrote:

On Sun, 03 Mar 2013 18:49:31 GMT, the renowned nico@puntnl.niks (Nico
Coesel) wrote:

John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 03 Mar 2013 09:48:31 -0800, Joerg <invalid@invalid.invalid> wrote:

Spehro Pefhany wrote:
On Sun, 03 Mar 2013 07:55:07 -0800, the renowned Joerg
invalid@invalid.invalid> wrote:

Jan Panteltje wrote:
On a sunny day (Sun, 03 Mar 2013 07:16:30 -0800) it happened Joerg
invalid@invalid.invalid> wrote in <aph7qmFj5hdU2@mid.individual.net>:

But it puts out a square wave which I really can't use here. Has to be
sine and the potential range is too wide to cover that with a lowpass.
Else I could use a LTC resistor-controlled oscillaator by itself and
call it a day.
Very long time a go I made a sine wave sweep generator for testing active audio filters
by using a 4046 VCO (linear f versus V), a 4040 counter, a 4k EPROM with a sine wave table,
and a 8 bit DAC.
Also had some opamp and integrator and 2 comparators, so it could sweep from f1 to f2.
That sort of thing can make a reasonable pure sinewave.
But you would need to be able to program an EPROM.
Not much that can go wrong with it, if you need more than 8 bits use 2 EPROMS.

Believe it or not, I don't even have an EPROM burner anymore. Could get
one though. The table would be generated with Excel. For UV-erasing I
could just place the EPROM on the roof, the sun is pretty intense here.

Flash memory 70ns 256K x 16 is $1.10 one-off, but you wouldn't be able
to use even one cent worth of it.


If I wanted to do that I'd probably just get a uC with ADC and a big fat
flash area, then use it just for this job. Its ADC reads my PID output,
points to the corresponding LUT address, shoves data to the DDS. That is
how I'd do the final system, or let it calculate (depending how easy it
is to avoid birdies and stuff).

Something like an LPC1754 would do all that for about $4. If you can find a C
programmer person who can code and flash the chip, I could write the pseudocode.
It would need some startup code (set up CPU junk, configure the ADC and DAC) and
an IRQ routine to read the ADC, do the DDS stuff, and load the DAC. The ADC
could cause the IRQ at a couple hundred KHz, and the IRQ code would be short and
sweet.

I wouldn't be surprised you don't the DDS stuff at all.

?????
need

Just use
floating point. The chip is probably fast enough to emulate. After all
its one sin() and some additions to get the output. Some fast float to
integer conversion magic and its all done.

LPC43xx should be fast enough- it's got hardware floating point.

Floats don't help implementing the DDS core; they actually make it harder.
How come? IMHO generating a sine wave is a matter of output=sin(angle)
* amplitude. Angle is incremented by a step which depends on the
sample rate and frequency. From memory: Say your samplerate is 10kHz
and your output frequency is 105.3Hz then the size of each increment
is (2pi / 10kHz) * 105.3Hz radians. That is very easy to program.
Ofcourse it will need some tweaks to make it fast but the basics are
simple.

I think that spitting out floating-point transcendentals in < 10usec
on a Cortex M3 running at only 100MHz is asking too much of the
standard library functions.

Sine is easily, and usually, done with a lookup table in DDS apps. That will
take a few tens of nanoseconds on a 100 MHz ARM.


Who said you'd need a sampling frequency of 100kHz? Or at least
calculate samples that fast...

100 or 200KHz IRQ rate (5 to 10x Nyquist) would be easy on an LPC1754. The
advantage of a higher rate is that you'd need a less demanding lowpass filter
after the DAC.
For that purpose you can upsample before sending the data to the DAC.
I often sample at unrealistic rates and then downsample before doing
the actual processing to avoid (too much) filtering. A 4th order fixed
point IIR filter is almost free when it comes to CPU cycles on an ARM.

--
Failure does not prove something is impossible, failure simply
indicates you are not using the right tools...
nico@nctdevpuntnl (punt=.)
--------------------------------------------------------------
 
Joerg wrote:

Spehro Pefhany wrote:

On Sun, 03 Mar 2013 09:48:31 -0800, the renowned Joerg
invalid@invalid.invalid> wrote:


If I wanted to do that I'd probably just get a uC with ADC and a big fat
flash area, then use it just for this job. Its ADC reads my PID output,
points to the corresponding LUT address, shoves data to the DDS. That is
how I'd do the final system, or let it calculate (depending how easy it
is to avoid birdies and stuff).

Have you considered just buying something like my Rigol DG4062 and
using it for proof-of-concept? For $795 it might be worth it, and it's
generally useful afterward with the USB and Ethernet interfaces etc.



I have, and the price isn't so important. I've got a Mastech arb gen
that would work just fine and is under $400. But I need something that
isn't so large.

Probably the old XR2206 will work ok. I was just surprised that no
company seems to have pick up this chip after it went lalaland.

Well lets see, I remember years ago a bunch of those chips got out there
and used for kits or what ever that actually didn't pass QC in the
sine wave shaper section. Guess some one found a market for them in any
case.

I see that TAYDA Electronics has them for $2.99 and Mouser has a couple
in stock for only $87.00 bucks, most likely those past QC, chump change.

Jamie
 

Welcome to EDABoard.com

Sponsor

Back
Top