Go Down

Topic: DDS-AD9850 + Open oscilloscope – Lxardoscope (Read 9739 times) previous topic - next topic

The DDS module is base on AD9850 which is provided by ADI Company and common used in many DDS module.The chip provide 0-40MHz measurement capability.  Here we will show you how to control AD9850 module by Arduino, and then show the output wave by Lxardoscope, which  is an Arduino based oscilloscope for Linux, using the Xforms library.  You can get more detailed how to use it from our other post Linux+Arduino open oscilloscope - Lxardoscope.

The DDS module of AD9850/AD9851 has two data transfer modes : Serial mode and  Parallel mode. You can select one of them by Label 1 as below figure.



More detailed about the DDS pin define from Wiki. Here I just show you how to quick control AD9850 and show wave on  Lxardoscope.





First of all, of course, you need one  Arduino boards and one DDS module,  and some of jumper wires and at least one of test hook.  If you don't have, you can get them in our store in a very low cost.

If you use a standard Arduino board, you'd better use the Arduino board's 3.3V pin?VDD3V3? to provide power.  Of course you can use 5V which the DDS module of AD9850 max support power supply.

The Serial mode of demo pins to Arduino as below:

GND-GND, VCC - 3.3V, BitData(D7)- D8, CLK - D9, FQUP - D10, REST - D11

Test Hook Red  -  Square Wave 1,   Test Hook Black  -  Sine Wave 1(with 70MHz Low-pass filter)




Download our library for DDS AD9850 Serial mode,  run the example demo of LXARDOSCOPE.  The demo code as below:

Code: [Select]
/*********************************************************************
**  Device: AD9850/9851                                             **
**  File:   EF_AD9850.cpp v1.2                  **
**                    **
**  Created by ElecFreaks Robi.W /28 Oct 2011                       **
**                                                                  **
**  Description:                                                    **
**  This file is a sample code for your reference.About AD9850/9851 **
**  module use on Arduino with serial mode. And then show the       **
**  square wave and sine wave by LXARDOSCOPE which is an free       **
**  Arduino based oscilloscope Linux, using the Xforms library.     **
**  Note:This library just Serial mode for AD9850                   **
**                                                                  **
**  This demo code is free software; you can redistribute it and/or **
**  modify it under the terms of the GNU Lesser General Public      **
**  License as published by the Free Software Foundation; either    **  
**  version 2.1 of the License, or (at your option)           **
**  any later version.                **
**                                                                  **
**  Copyright (C) 2011 ElecFreaks Corp.                           **
**                                                                  **
**  http://www.elecfreaks.com                                       **
*********************************************************************/

#include <EF_AD9850.h>

//Define for LXARDOSCOPE
int sensorValue = 0;        // value read from the pot
byte lb;
byte hb;

//BitData - D8, CLK - D9, FQUP - D10, REST - D11
EF_AD9850 AD9850(9, 10, 11, 8);

void setup()
{
  AD9850.init();
  AD9850.reset();
  AD9850.wr_serial(0x00, 200); //200Hz
  // initialize serial communications at 115200 bps:
  Serial.begin(115200);
}

void loop(){
  // read A0:
  sensorValue = analogRead(A0);            
// shift sample by 3 bits, and select higher byte  
  hb=highByte(sensorValue<<3);
// set 3 most significant bits and send out
  Serial.print(hb|224,BYTE);
// select lower byte and clear 3 most significant bits
  lb=(lowByte(sensorValue))&31;
// set bits 5 and 6 and send out
  Serial.print(lb|96,BYTE);
// read A1
  sensorValue = analogRead(A1);            
// shift sample by 3 bits, and select higher byte
  hb=highByte(sensorValue<<3);
// set bits 5 and 6 and send out
  Serial.print(hb|96,BYTE);
// select lower byte and clear 3 most significant bits
  lb=(lowByte(sensorValue))&31;
// set bits 5 and 6 and send out
  Serial.print(lb|96,BYTE);
}


Then connect to you Linux's Lxardoscope, type ' lxardoscope /dev/ttyUSB0 '. There will show the square wave and sine wave on lxardoscope menu as before.
Note:
1. If you can't see square wave as figure, please change duty cycle adjustable at label 8 postion.


2. lxardoscope just support a 420 Hz sine wave and a 1471Hz square wave from a
sound card based generator are displayed.  So we demo set 200Hz for test.  If setting 600Hz will distortion as below:


3.   lxardoscope just for verify the DDS module is work well. The data just for you reference.


More information please reference original? http://www.elecfreaks.com/2110.html

Go Up