Download SETA43

Document related concepts
no text concepts found
Transcript
4/7/2015
SETA43: Arduino AD9850 DDS(Direct Digital Synthesizer) Generador señal desde 1Hz a 40MHz
Ce site utilise des cookies permettant de fournir les services. En utilisant ce site, vous acceptez l'utilisation des cookies.
En savoir plus
OK !
SETA43
dom ingo, 17 de m arzo de 2013
Arduino AD9850 DDS(Direct Digital Synthesizer)
Generador señal desde 1Hz a 40MHz
Arduino
AD9850 DDS(Direct Digital Synthesizer)
Generador señal desde 1Hz a 40MHz
Farnell.comÉlectroniques
Laissez notre catalogue
interactif vous offrir un
contrôle complet
[email protected]
Versión 2. 23/09/2014
Después de 1 año del montaje me mandaron algunos correos de que no les funcionaba
el circuito.
Les pregunte que placa de arduino utilizaban, y me dijeron que era la placa leonardo,
algunos me mandaron imagenes de sus montajes.
Después de que comprara la placa y montara el circuito, efectivamente no
funcionaba.
Buscando el motivo por el cual funcionaba perfectamente en Arduino_Diecimila y no
funcionaba en Arduino_Leonardo encontré el motivo.
Para utilizar los pin A0 y A1 como entradas digitales se hacía referencia a los pin 14 y
15, pero ahora con las nuevas versiones del compilador se deben utilizar A0 y A1.
Por lo que he cambiado lo siguiente:
//Arduino_Diecimila
//#define e1Pin 14
//#define e2Pin 15
por
//Arduino_Leonardo
#define e1Pin A0
#define e2Pin A1
y ya funciona perfectamente.
Translat e
Sélectionner une langue
Fourni par
Traduction
Seguidores
Participar en este sitio
Google Friend Connect
Miembros (10)
¿Ya eres miembro? Iniciar sesión
Archivo del blog
► 2015 (13)
► 2014 (23)
▼ 2013 (25)
► diciembre (1)
► noviembre (3)
Programa Arduino modificado.
► octubre (3)
► septiembre (1)
Navegando por la red encontré un generador de señal senoidal de entre 1Hz y
40MHz.
Estaba realizado en torno al circuito integrado DDS (Direct Digital Synthesizer)
AD9850, y su costo rondaba los 5€.
La tentación de poder tener un generador de señal por ese precio era simplemente
irresistible.
Para controlar el AD9850 he utilizado un arduino, representando la frecuencia de
señal en un LCD.
He utilizado dos pulsadores y un potenciómetro para poder modificar la frecuencia
generada.
La señal de salida es de 1V pico a pico, reduciendo su amplitud a frecuencias altas.
► agosto (2)
► julio (1)
► junio (2)
► mayo (1)
► abril (1)
▼ marzo (5)
Arduino AD9850 DDS(Direct
Digital Synthesizer) Gen...
Arduino-Reduciendo consumoParte 2
Reduciendo consumo. Parte 1
Reloj - DS1302
Arduino - Reloj mediante DS1302
Radio-Reloj-Despertador con
TEA5767 y Arduino.
► febrero (3)
► enero (2)
► 2012 (26)
http://seta43.blogspot.com.es/2013/03/arduino-ad9850-ddsdirect-digital.html
1/6
4/7/2015
SETA43: Arduino AD9850 DDS(Direct Digital Synthesizer) Generador señal desde 1Hz a 40MHz
Dat os personales
seta43
Ver todo mi perfil
Módulo DDS con el AD9850
El programa de arduino dispone de una serie de menús para cambiar la frecuencia.
En el primer menú, que es por defecto, se puede cambiar todos los dígitos de la
frecuencia, desde 1Hz a 40MHz. Pulsando el botón1 se recorren todas las cifras, desde
millones a unidades, y con el boton2 se cambia el valor de la cifra en cuestión.
A continuación existen varios menús, +500, +5K, +50K, +500K, que desplazan la
frecuencia prefijada mediante un potenciómetro.
Esquema del circuito.
http://seta43.blogspot.com.es/2013/03/arduino-ad9850-ddsdirect-digital.html
2/6
4/7/2015
SETA43: Arduino AD9850 DDS(Direct Digital Synthesizer) Generador señal desde 1Hz a 40MHz
Circuito generando una frecuencia de 1000Hz
Lectura de la frecuencia en mi frecuencímetro
Onda mostrada en el osciloscopio
Para manejar el AD9850 desde arduino, existen dos posibilidades, utilizar una librería
que existe específicamente para ello, o utilizar varias funciones que se pueden insertar
en tu propio código. Me he decidido por insertar las funciones en mi propio código
debido a que son bastante simple y no aumentan mucho el tamaño del código fuente.
Las funciones las he sacado de:
http://seta43.blogspot.com.es/2013/03/arduino-ad9850-ddsdirect-digital.html
3/6
4/7/2015
SETA43: Arduino AD9850 DDS(Direct Digital Synthesizer) Generador señal desde 1Hz a 40MHz
http://webshed.org/wiki/AD9850_Arduino#Wiring_up_.26_example_code_downl
oad
son funciones muy sencillas, como se pueden ver en el siguiente código:
//AD9850 DDS test
#define DDS_CLOCK 125000000
#define
#define
#define
#define
CLOCK 8 //pin connections for DDS
LOAD 9
DATA 10
RESET 11
void setup()
{
pinMode (DATA, OUTPUT);
pinMode (CLOCK, OUTPUT);
pinMode (LOAD, OUTPUT);
pinMode (RESET, OUTPUT);
AD9850_init();
AD9850_reset();
SetFrequency(10000000);
}
void loop()
{
}
void SetFrequency(unsigned long frequency)
{
unsigned long tuning_word = (frequency * pow(2, 32)) /
DDS_CLOCK;
digitalWrite (LOAD, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, tuning_word);
shiftOut(DATA, CLOCK, LSBFIRST, tuning_word >> 8);
shiftOut(DATA, CLOCK, LSBFIRST, tuning_word >> 16);
shiftOut(DATA, CLOCK, LSBFIRST, tuning_word >> 24);
shiftOut(DATA, CLOCK, LSBFIRST, 0x0);
digitalWrite (LOAD, HIGH);
}
void AD9850_init()
{
digitalWrite(RESET, LOW);
digitalWrite(CLOCK, LOW);
digitalWrite(LOAD, LOW);
digitalWrite(DATA, LOW);
}
void AD9850_reset()
{
//reset sequence is:
// CLOCK & LOAD = LOW
// Pulse RESET high for a few uS (use 5 uS here)
// Pulse CLOCK high for a few uS (use 5 uS here)
// Set DATA to ZERO and pulse LOAD for a few uS (use 5 uS
here)
// data sheet diagrams show only RESET and CLOCK being used
to reset the device, but I see no output unless I also
// toggle the LOAD line here.
digitalWrite(CLOCK, LOW);
http://seta43.blogspot.com.es/2013/03/arduino-ad9850-ddsdirect-digital.html
4/6
4/7/2015
SETA43: Arduino AD9850 DDS(Direct Digital Synthesizer) Generador señal desde 1Hz a 40MHz
digitalWrite(LOAD, LOW);
digitalWrite(RESET, LOW);
delay(5);
digitalWrite(RESET, HIGH); //pulse RESET
delay(5);
digitalWrite(RESET, LOW);
delay(5);
digitalWrite(CLOCK, LOW);
delay(5);
digitalWrite(CLOCK, HIGH); //pulse CLOCK
delay(5);
digitalWrite(CLOCK, LOW);
delay(5);
digitalWrite(DATA, LOW);
//make sure DATA pin is LOW
digitalWrite(LOAD, LOW);
delay(5);
digitalWrite(LOAD, HIGH); //pulse LOAD
delay(5);
digitalWrite(LOAD, LOW);
// Chip is RESET now
}
A este código he añadido los menús, y el controlador de LCD.
Programa arduino.
Saludos.
JUAN GALAZ
Bibliografía:
http://danirebollo.blogspot.com.es/2012/06/ad9850-cmos-125-mhz-completedds.html
http://webshed.org/wiki/AD9850_Arduino
http://alhin.de/arduino/index.php?n=70
http://www.elecfreaks.com/2110.html
http://www.analog.com/en/rfif-components/direct-digital-synthesisdds/ad9850/products/product.html
http://www.scienceprog.com/
Public ado por seta43 en 9:48
Recomendar esto en Google
Etiquetas: ad985 0 , arduino, dds
No hay comentarios:
Publicar un comentario en la entrada
Introduce tu comentario...
Comentar como:
Publicar
Cuenta de Google
Vista previa
http://seta43.blogspot.com.es/2013/03/arduino-ad9850-ddsdirect-digital.html
5/6
4/7/2015
SETA43: Arduino AD9850 DDS(Direct Digital Synthesizer) Generador señal desde 1Hz a 40MHz
Actus Opcalia
Formation en Alternance ?
155 000 Entreprises Partenaires ! Découvrez
Toutes les Formations
Entrada más reciente
Página principal
Entrada antigua
Suscribirse a: Enviar comentarios (Atom)
Suscribirse a
Entradas
Comentarios
Juan Galaz. Plantilla Simple. Imágenes de plantillas de luoman. Con la tecnología de Blogger.
http://seta43.blogspot.com.es/2013/03/arduino-ad9850-ddsdirect-digital.html
6/6