AD9850 run at 3.3V or 5.0V ?

Go To Last Post
7 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I am doing a DDS VFO using a Arduino UNO. I have had some problems where the DDS just stops dead. I initially thought it might be my code doing something silly, but after I cut out all the code except for the bare minimum.

I then had a look for a working AD9850 Arduino project and implemented that and the same thing happens. The DDS stops after a few minutes.

I did note that aftre it stops, it needs to be powered down for about 30 secs. before it starts up again. As such it would appear that it is a temperature related fault.
I have just reduced the DDS supply to 3.3 V which is on the UNO board and it is still running OK on either code.

The data sheet permits operation at either level.

Question. Anyone else play with these? What supply voltage do you run them at?
The AD9850 is an eBay special and I suppose they may be using out of spec AD devices! (?)

Charles Darwin, Lord Kelvin & Murphy are always lurking about!
Lee -.-
Riddle me this...How did the serpent move around before the fall?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi Lee. Good to see you again.

The problem you describe looks veru much like latch-up of the AD9850. Use resistors in the wires between Arduino and AD9850.

I think I used the 9850's in the past ... have to check that.

CUL8r

Edit: found evidence that I used those :)
See picture.

I didn't need resistors since my AD9850 is very close to the Duino.

Edit2: some more info. Corrected schematic f.i.

Attachment(s): 

A GIF is worth a thousend words   She is called Rosa, lives at Mint17.3 https://www.linuxmint.com/

Dragon broken ? http://aplomb.nl/TechStuff/Dragon/Dragon.html for how-to-fix tips

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

5V is what I used. No problems.

And where I mention in my first reply to put a resistor in the line: of course that applies to the signal lines; a divider is even better: 1k in series, 10k to ground.

cheers,

Nard

And a (very rudimentary) program listing (Bascom):

'#################### DDS_AD9850_r4a ##############################

Dim Rev As String * 2
Rev = "4a"

'Nard Awater, September 18, 2011

'Rev4: smarter circuit for DC comparator; R_dft of 10k can stay in
'Rev4a: same as 4 but continuous varying DC for the comparator

$baud = 38400
$crystal = 16000000
$regfile = "m88def.dat"

$hwstack = 40
$swstack = 10
$framesize = 10

'Uncomment next line when first programming a virgin AVR
'$prog &HFF , &HFF , &HD4 , &HF9


Wclk Alias Portb.5
Data_in Alias Portb.3
Fq_up Alias Portb.0
Ad9850_reset Alias Portb.1


'setup i/o
Ddrb = &B00101111
Ddrc = &B00111111
Ddrd = &B11111110

Config Spi = Hard , Interrupt = Off , Data Order = Lsb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16 , Noss = 1 , Spiin = 0
Spiinit

Const Clk_in = 125000000                                    'that's the DDS-clock
Const Braincells = &H100000000                              'wishfull thinking ??   &H100000000 = 2^32

Print "AD9850 on Freeduino rev " ; Rev
'The AD9850 needs to be reset since it's using the same interface as ISP programming
Print "Resetting AD9850 ... ";
Waitms 100
Set Ad9850_reset
Waitms 100
Reset Ad9850_reset
Print "done !"

'serial mode
'Freq0 first, freq31 last
'Send 4 bytes in SPI to push all bits of this Long out ....
Dim Freq_accu As Long
' ... followed by
Dim Phase_cntrl As Byte
'make sure that Phase_cntrl.1 and Phase_cntrl.0 are always 0 ; other combinations are for factory testing only
Phase_cntrl = 0
Power_down Alias Phase_cntrl.2
'Phase_cntrl.7 through Phase_cntrl.3 set the phase of the signal

'mode2  CTC OCR0A=top OC0A toggles on compare
Tccr0a = &B01000010
Ocr0a = 100

Tccr0b = &B00000001

Dim Rate As Byte


'###############################################################
'Some math:

'F_out = (Freq_accu x 125x10^6) / 2^32    'from the datasheet
' .... so
'Freq_accu = (F_out x 2^32) / 125 x 10^6
'###############################################################


Dim Freq_accu_f As Single
Dim F_out As Single

Input "Freq = " , F_out
Freq_accu_f = F_out * Braincells
Freq_accu_f = Freq_accu_f / Clk_in
Freq_accu = Freq_accu_f


Do

   Spiout Freq_accu , 4                                     '4 bytes, LS Bit first
   Spiout Phase_cntrl , 1

   Waitus 100                                               'no flag is checked so wait a while for SPI to finish

   'and effectuate
   Set Fq_up
   Reset Fq_up


   Rate = Rate + 5
   If Rate > 250 Then Rate = 5

   Ocr0a = Rate

   Waitms 40

Loop


End

A GIF is worth a thousend words   She is called Rosa, lives at Mint17.3 https://www.linuxmint.com/

Dragon broken ? http://aplomb.nl/TechStuff/Dragon/Dragon.html for how-to-fix tips

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks for suggestions Nard,
I probably do need some voltage dividers now that I run the DDS @ 3.3 V & the Arduino at 5 V. If I can solve the problem regarding the failure at +5V then I will revert back to 5V. My DDS is also very close to the CPU. It is soldered on top of a proto-shield which is stacked on the UNO similar to your photo. A LCD-key shield stacks on that. I suppose that the LCD/keypad shield may have introduced additional stray capacitance could be an issue, but at the time of failure there is no activity on any of the interface lines at all. Ie. the DDS just sits there doing it's thing and then it dies...suspiciously like a thermal problem. I will blow little warm air into the stack & see if I can bring it on earlier.
I note that you have a later version of the cheap DDS boards, it might be better. I might just have a dodgy one. I will try another one as I purchased several (pain in the arse unsoldering it though!)

I have had it running at 3.3 V for over 18 hours without a problem, but I would still like to solve the problem as an academic exercise.

PS. Are you generating AF or RF. I am interested in RF at 1.8, 3.6 & 7.1 Mhz. (I can try & run it at 1Khz @ 5 Volt to see how it goes).

Charles Darwin, Lord Kelvin & Murphy are always lurking about!
Lee -.-
Riddle me this...How did the serpent move around before the fall?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi lee,

It was just an exercise .... wanted to see how it works. It's in the "when I have nothing else to do"-drawer ;)
One day I will make a signal generator with it.

FWIW: I wonder how it holds up at the RF frequencies you are interested in. Phase errors get nasty at higher freq output.

Latch-up is what I experienced lately with a graphic LCD display: 15cm wire and it died. Needed a powercycle to recover from that situation.

A GIF is worth a thousend words   She is called Rosa, lives at Mint17.3 https://www.linuxmint.com/

Dragon broken ? http://aplomb.nl/TechStuff/Dragon/Dragon.html for how-to-fix tips

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi Nard,
I think I have got on top of the problem. I found one of the other ones and it works OK at 5 V. It appears that the one that plays up has a TXCO which is rated at 3.3V, whereas the one that I am using now is rated to run at 5V. Mmmm that is a bit of a trap when the module is supposed to work at 5V as well as 3.3 Hi Hi!

I have another one somewhere ( which is currently awol) & I will see what TXCO is on that & how that works.
The purpose for the VFO is to drive an old marine AM transceiver (which was initially xtal controlled) for 160,80 & 40 meters.
It is rock solid at the present time.
I will measure the phase noise at some time when I get access to some equipment which can measure it. Until then I will live in ignorance... Hi Hi!

Charles Darwin, Lord Kelvin & Murphy are always lurking about!
Lee -.-
Riddle me this...How did the serpent move around before the fall?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

For AM it may be OK. For FM it is not so good. To put it mildly ;)

How I found out? Ears :)
Mixed the signal with an analog oscillator and listened to the frequency difference.

OT: Isn't it a nuiscance that all our goodies tend to AWOL ?

Nard

A GIF is worth a thousend words   She is called Rosa, lives at Mint17.3 https://www.linuxmint.com/

Dragon broken ? http://aplomb.nl/TechStuff/Dragon/Dragon.html for how-to-fix tips