Controller for AD9850 DDS Modules Andy Talbot G4JNT 2012-12-06



Similar documents
Web Streamed SDR s in Service at GB2RHQ Hack Green Bunker

DDS VFO CONSTRUCTION MANUAL. DDS VFO Construction Manual Issue 1 Page 1

The Programming Interface

How To Program A Microcontroller Board (Eb064) With A Psp Microcontroller (B064-74) With An Ios 2.5V (Power) And A Ppt (Power Control) (Power Supply) (

PROGRAMMABLE LOGIC CONTROLLERS Unit code: A/601/1625 QCF level: 4 Credit value: 15 TUTORIAL OUTCOME 2 Part 1

Data Acquisition Module with I2C interface «I2C-FLEXEL» User s Guide

[F/T] [5] [KHz] [AMP] [3] [V] 4 ) To set DC offset to -2.5V press the following keys [OFS] [+/-] [2] [.] [5] [V]

PCAN-MicroMod Universal I/O Module with CAN Interface. User Manual. Document version ( )

ADS9850 Signal Generator Module


AD9852 Direct Digital Synthesiser module and driver software

POCKET SCOPE 2. The idea 2. Design criteria 3

2 : BISTABLES. In this Chapter, you will find out about bistables which are the fundamental building blocks of electronic counting circuits.

AN-812 APPLICATION NOTE

Designing VM2 Application Boards

Electronic Rotary Table Divider V2.1 Construction

ETEC Digital Controls PIC Lab 10 Pulse Width Modulation

Hello and welcome to this training module for the STM32L4 Liquid Crystal Display (LCD) controller. This controller can be used in a wide range of

Lab Experiment 1: The LPC 2148 Education Board

Chapter 13. PIC Family Microcontroller

MODULE BOUSSOLE ÉLECTRONIQUE CMPS03 Référence :

SKP16C62P Tutorial 1 Software Development Process using HEW. Renesas Technology America Inc.

CHAPTER 11: Flip Flops

Web Site: Forums: forums.parallax.com Sales: Technical:

Neonixie 6 Digit Nixie Clock Controller Introduction and Assembly

7 OUT1 8 OUT2 9 OUT3 10 OUT4 11 OUT5 12 OUT6 13 OUT7 14 OUT8 15 OUT9 16 OUT10 17 OUT11 18 OUT12 19 OUT13 20 OUT14 21 OUT15 22 OUT16 OUT17 23 OUT18

Pmod peripheral modules are powered by the host via the interface s power and ground pins.

71M6521 Energy Meter IC. Real Time Clock Compensation. The Challenge. The RTC in the 71M6521D/F. Theory of Operation APPLICATION NOTE

Table 1 below is a complete list of MPTH commands with descriptions. Table 1 : MPTH Commands. Command Name Code Setting Value Description

ABB Drives. User s Manual HTL Encoder Interface FEN-31

Implementing a Digital Answering Machine with a High-Speed 8-Bit Microcontroller

C8051F020 Utilization in an Embedded Digital Design Project Course. Daren R. Wilcox Southern Polytechnic State University Marietta, Georgia

8051 MICROCONTROLLER COURSE

DS1307ZN. 64 x 8 Serial Real-Time Clock

E-Blocks Easy RFID Bundle

3-Digit Counter and Display

Microcontroller Based Low Cost Portable PC Mouse and Keyboard Tester

Joule Thief 3.0 Kit. June 2012, Rev Joule Thief 3.0

css Custom Silicon Solutions, Inc.

DS1621 Digital Thermometer and Thermostat

Wireless Temperature

Accurate Measurement of the Mains Electricity Frequency

Lab 11 Digital Dice. Figure Digital Dice Circuit on NI ELVIS II Workstation

1. Learn about the 555 timer integrated circuit and applications 2. Apply the 555 timer to build an infrared (IR) transmitter and receiver

2011, The McGraw-Hill Companies, Inc. Chapter 3

LAB4: Audio Synthesizer

NHD-0420D3Z-FL-GBW-V3

ABB Drives. User s Manual. Pulse Encoder Interface Module RTAC-01

AXE033 SERIAL/I2C LCD

A simple RF/Microwave frequency counter

8-Bit Flash Microcontroller for Smart Cards. AT89SCXXXXA Summary. Features. Description. Complete datasheet available under NDA

DS1621 Digital Thermometer and Thermostat

Switch board datasheet EB

3.2 inch QVGA TFT Color LCD User s Guide Version 1 & 2

MIDECO 64-outputs MIDI note decoder USER MANUAL. Roman Sowa 2012

c0003 A Simple PIC Application CHAPTER 3

ECIO40P ECIO28P ECRM40. Page 1. USB programmable microcontrollers. 0.6 DIP footprint. Supplied with a free version of Flowcode. E-blocks compatible

PLL Frequency Synthesizer Evaluation Kit. PE3293-EK User s Manual

ic-mq EVAL MQ1D EVALUATION BOARD DESCRIPTION

EXERCISE 3: String Variables and ASCII Code

PICAXE RF CONNECT KIT (AXE213)

PLL frequency synthesizer

Ground Resistance Clamp On Tester

Programming PIC Microcontrollers in PicBasic Pro Lesson 1 Cornerstone Electronics Technology and Robotics II

SFP-TX 1000BASE-T SFP Transceiver 10/100/1000M SFP Transceiver

Real Time Clock USB Evaluation Board V3.0

Advanced LED Controller (LED Chaser)

MAX5417L Evaluation Kit/Evaluation System

Ultrasound Distance Measurement

AN3265 Application note

SPROG DCC Decoder Programmer

M68EVB908QL4 Development Board for Motorola MC68HC908QL4

HD44780U (LCD-II) (Dot Matrix Liquid Crystal Display Controller/Driver)

Real-Time Clock. * Real-Time Computing, edited by Duncan A. Mellichamp, Van Nostrand Reinhold

A Digital Timer Implementation using 7 Segment Displays

EEL 4924 Electrical Engineering Design (Senior Design) Final Report. 19 April Name: Brandon Kalarovich

Atmel Norway XMEGA Introduction

Technical Manual. FAN COIL CONTROLLER COOLING or HEATING ANALOG or PWM Art A

Machine Architecture and Number Systems. Major Computer Components. Schematic Diagram of a Computer. The CPU. The Bus. Main Memory.

Serial port interface for microcontroller embedded into integrated power meter

Wireless Security Camera

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Electronic Circuits Spring 2007

DKWF121 WF121-A B/G/N MODULE EVALUATION BOARD

2.0 Command and Data Handling Subsystem

ET-BASE AVR ATmega64/128

Data Sheet. Adaptive Design ltd. Arduino Dual L6470 Stepper Motor Shield V th November L6470 Stepper Motor Shield

Description of High Accuracy Digital Pressure Gauge Design

isppac-powr1220at8 I 2 C Hardware Verification Utility User s Guide

Preliminary Draft May 19th Video Subsystem

Decimal Number (base 10) Binary Number (base 2)

Tutorial for MPLAB Starter Kit for PIC18F

An Arduino Controlled GPS Corrected VFO

3. Identification of water pumps through RFID technology. 4. Wireless control of remote water pump using RF technology.

Fig.1. A basic inductance and capacitance. (CR) oscillator.

THE BASICS OF PLL FREQUENCY SYNTHESIS

Controlling a Dot Matrix LED Display with a Microcontroller

Using the HCS12 Serial Monitor on Wytec Dragon-12 boards. Using Motorola s HCS12 Serial Monitor on Wytec s Dragon-12 boards

User Manual. Humidity-Temperature Chart Recorder. Model RH520

RS - SPM. Serial parallel translator module

Develop a Dallas 1-Wire Master Using the Z8F1680 Series of MCUs

Transcription:

Controller for AD9850 DDS Modules Andy Talbot G4JNT 2012-12-06 Latest Comments. Construction notes and feedback from builders at the end The low cost ( 3) Chinese made modules available via Ebay contain an AD9850 DDS chip, 125MHz clock oscillator but no controller for setting the chip via its three wire SPI interface. The modules run from a 5V supply and consume about 120mA. This unit provides an easy means to set the frequency to any value up to 42MHz by use of a rotary encoder, two pushbuttons and LCD. 16 non-volatile memories are provided allowing any of 16 prestored frequencies to be called up. Each frequency can be adjusted with the rotary encoder and stored back into that memory position if needed. The circuit diagram is shown below... Communication with the DDS module is by the three wire serial interface, going to the Data, FU-UD and WClk pins. 1 A fourth line also controls chip Reset. This latter is not essential, but has been included as it may be useful in the future to have a reset capability. A 5V regulator is provided on the controller. This is only rated at 100mA so shouldn t really be used to power the DDS chip. It does work, but you have been warned! The software in the PIC maintains a 32 bit frequency word that is incremented or decremented from the rotary encoder. This word represents the desired frequency in units of 0.01Hz, and is independent of the DDS clock. The value being converted to BCD and displayed on the LCD (inserting a decimal point at the appropriate place). The 32 bit word in units of 0.01Hz means the highest frequency that can be stored is about 42.94MHz which is just about the maximum possible this clock frequency. To generate the 32 bit code to send to the DDS chip, this 32 bit value is multiplied by a constant equal to Step size / Fclock * 2 64. Here, is it 0.01Hz / 125MHz * 2 64 = 1475739526, or in hex notation 0x57F5FF86. This is stored using 6 bytes to allow for lower clock frequencies and / or larger step size The highest 16 bits, or four bytes, of the result form the value sent to the DDS. The tuning step, corresponding to each pulse from the rotary encoder, can be cycled though each decimal digit from 100kHz steps down to 0.01Hz by pressing the S pushbutton repeatedly. The digit being changed is shown by the caret on the second line of the display. Holding the S button down for 2 seconds stores the displayed frequency in the current 1. This module is also used for control of Fractional-N synthesizers with appropriate PIC firmware. Ignore the part on the diagram referring to LMX2xxx connections.

memory. The 16 memories can be cycled through with the M button. At turn on, the first memory location, MemA is always loaded. Cycle through each location as desired, using the rotary control to move from this value. Holding S down for two seconds stores the new value in that location. A minimum step of 0.01 Hz may seem a bit pointless when the fundamental DDS resolution using the supplied clock is 125MHz / 2 32 = 0.029Hz, but it has been included for when the module is used with a lower clock frequency. For example, a 10MHz clock allows 0.0023Hz resolution. PCB A PCB layout for SOIC packaged 16F628A PIC devices is shown below. The 14 pin header plugs directly onto the LCD modules available from [1], with all other connections made via pads or headers. Construction should be self explanatory. The LED serves no useful purpose in this designs and can be left out. It is a hangover from an earlier project that used this PCB. (The odd pin connections for the serial interface to the DDS module are also a legacy of backwards compatibility) PIC Firmware Source code for programming into the PIC is contained in the file 9850_rot.asm which includes sufficient comments and notes if you need to modify it to change clock frequency, step size or

whatever. The 6 byte word forming the tuning constant, that needs to be changed for other clock frequencies, is stored in the six lowest EEPROM locations. Compiled code for programming direct into a 16F628A for use with the 125MHz clock oscillator can be found in 9850_rot.hex (The code is just about small enough to fit into a 16F627A device) The file SPI_ROT.pdf is a 1:1 mirror imaged monochrome plot of the PCB for direct laser printing to acetate or iron-on transfer for homebrew PCBs. All files can be found at www.g4jnt.com/ad9850-controller.zip LCD Modules and PCB availability Low cost suitable LCD modules at 5 (TBC) each can be obtained from Kevin G3AAF. Contact him at Kevin@avery03.fsnet.co.uk. The module is so simple that commercially made PCBs are an unnecessary expense. However, I may be able to supply home produced ones. Contact ac.talbot@btinternet.com if you are interested.

Notes, Feedback, Comments

PIC Type Although a 16F627 PIC is specified in the assembly source code, a 16F627A, 16F628 or 16F628A can be used without change. Most programmers even won t blink an eye at the wrongly specified device. If your particular programming software does whinge, just change the appropriate lines of code and reassemble. Rotary Encoder The circuit diagram implies an optical or otherwise powered encoder. A simple mechanical switch type works equally well, ignoring any connection to +5V. There is no need for pull-up resistors, the PIC already has them enabled. However, to avoid contact bounce, two capacitors across the switch contacts will probably be needed. Use a value in the region 10 100nF Two-Line LCD Many have asked if a 2-Line LCD module can be used insteadof the four line one shown. Those who have tried it reported it worked. The frequency and memory data is still shown. Only the hex register contents are missing. Startup MemA Issues (modification 2013/05/27) Several users reported incorrect recall of the Memory A value at switch on, resulting in a random frequency being loaded. This appeared to be particularly troublesome when mechanical encoders were used with debounce capacitors. The problem appears to be caused by the INTF interrupt being enabled too soon, and corrupting the values loaded from memory. As a quick fix, both INTF and the global interrupt have been moved to the end of the Startup routine which appears to have 99.8% cured the problem. Now, there may be a spurious but minor change of just one digit under the cursor at startup.