Programming DDS9850 dan Bentuk Sinyal Output

IMG_20131001_100900
Dengan menggunakan arduino kita dapat mengatur frekuensi output dari DDS9850. Berikut adalah program yang dapat digunakan.
Output yang dihasilkan.
50 khz
100 khz sine 1 dan sine 2
Video
http://www.youtube.com/watch?v=2a-foHAUs-A
http://www.youtube.com/watch?v=vmiBJCSpq-A
[sourcecode]
/*
* A simple single freq AD9850 Arduino test script
* Original AD9851 DDS sketch by Andrew Smallbone at www.rocketnumbernine.com
* Modified for testing the inexpensive AD9850 ebay DDS modules
* Pictures and pinouts at nr8o.dhlpilotcentral.com
* 9850 datasheet at http://www.analog.com/static/imported-files/data_sheets/AD9850.pdf
* Use freely
*/
#define W_CLK 8       // Pin 8 – connect to AD9850 module word load clock pin (CLK)
#define FQ_UD 9       // Pin 9 – connect to freq update pin (FQ)
#define DATA 10       // Pin 10 – connect to serial data load pin (DATA)
#define RESET 11      // Pin 11 – connect to reset pin (RST).
#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
// transfers a byte, a bit at a time, LSB first to the 9850 via serial DATA line
void tfr_byte(byte data)
{
for (int i=0; i<8; i++, data>>=1) {
digitalWrite(DATA, data & 0x01);
pulseHigh(W_CLK);   //after each bit sent, CLK is pulsed high
}
}
// frequency calc from datasheet page 8 = <sys clock> * <frequency tuning word>/2^32
void sendFrequency(double frequency) {
int32_t freq = frequency * 4294967295/125000000;  // note 125 MHz clock on 9850
for (int b=0; b<4; b++, freq>>=8) {
tfr_byte(freq & 0xFF);
}
tfr_byte(0x000);   // Final control byte, all 0 for 9850 chip
pulseHigh(FQ_UD);  // Done!  Should see output
}
void setup() {
// configure arduino data pins for output
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(RESET, OUTPUT);
pulseHigh(RESET);
pulseHigh(W_CLK);
pulseHigh(FQ_UD);  // this pulse enables serial mode – Datasheet page 12 figure 10
}
void loop() {
sendFrequency(10.e6);  // freq
while(1);
}
[/sourcecode]
Demikian, semoga bermanfaat.
Reference:
Testing an eBay AD9850 DDS module with Arduino Uno

You may also like...

2 Responses

  1. January 15, 2014

    […] Selanjutnya: Programming DDS9850 dan Bentuk Sinyal Output. […]

  2. May 17, 2015

    […] Selanjutnya: Programming DDS9850 dan Bentuk Sinyal Output. […]

Leave a Reply

Your email address will not be published. Required fields are marked *