Tabla de contenido:

Generador de señales AD9833: 3 pasos
Generador de señales AD9833: 3 pasos

Video: Generador de señales AD9833: 3 pasos

Video: Generador de señales AD9833: 3 pasos
Video: Generador de Funciones DDS con AD9833 | LCD | Arduino | Sponsor PCBgogo 2024, Noviembre
Anonim
Generador de señales AD9833
Generador de señales AD9833
Generador de señales AD9833
Generador de señales AD9833

Un generador de señales es una pieza muy útil de equipo de prueba. Este usa un módulo AD9833 y un Arduino Nano, eso es todo, ni siquiera un PCB. Opcionalmente, puede agregar una pantalla OLED. El AD9833 puede generar ondas sinusoidales, triangulares y cuadradas de 0,1 Hz a 12,5 MHz; el software de este proyecto está limitado a 1 Hz a 100 kHz.

Ha habido otros Instructables usando un Arduino y un AD9833, aquí y aquí. Esto es más simple y se puede utilizar como generador de barrido. Los generadores de barrido ayudan a probar la respuesta de frecuencia de filtros, amplificadores, etc. A diferencia de los otros diseños de Instructables, este no incluye un amplificador o control de amplitud, pero puede agregarlos si lo desea.

Paso 1: generador de señales más simple

El generador de señales más simple
El generador de señales más simple
El generador de señales más simple
El generador de señales más simple
El generador de señales más simple
El generador de señales más simple
El generador de señales más simple
El generador de señales más simple

Para obtener el generador de señales más simple, simplemente suelde el módulo AD9833 en la parte posterior del Arduino Nano. No se necesita PCB.

El módulo AD9833 que elegí es similar a este. No digo que sea el mejor o el más barato proveedor, pero debes comprar uno que se parezca a esa foto (o la foto de arriba).

Las conexiones entre los módulos son:

  • tierras conectadas entre sí
  • D2 = FSync
  • D3 = Clk
  • D4 = Datos
  • D6 = Vcc de AD9833

El AD9833 se alimenta desde el pin de datos D6 del Arduino; el Arduino puede suministrar suficiente corriente. Agregué un capacitor de desacoplamiento de 100n porque pensé que "debería" hacerlo, pero no pude ver ninguna diferencia; ya hay un capacitor de desacoplamiento en la placa del módulo AD9833.

Si fueras elegante, es posible que te preocupes por la "tierra analógica" frente a la "tierra digital", pero si fueras elegante, estarías gastando más de £ 4.

El generador de señales más simple se controla y alimenta a través de un cable USB desde una PC. El USB emula un puerto serie que se ejecuta a 115200bps (8 bits, sin paridad). Los comandos son:

  • '0'.. '9': cambia el dígito a la matriz de frecuencia "mínima"
  • 'S': establece la frecuencia AD9833 y produce una onda sinusoidal
  • 'T': establece la frecuencia y produce una onda triangular
  • 'Q': establece la frecuencia y produce una onda cuadrada
  • 'R': reinicia el AD9833
  • 'M': copia la matriz de frecuencia "min" en la matriz "max"
  • 'G': barrido de "min" a "max" durante 1 segundo
  • 'H': barrido de "min" a "max" durante 5 segundos
  • 'I': barrido de "min" a "max" durante 20 segundos

El programa Arduino contiene dos matrices de 6 caracteres "min" y "max. Si transmite un dígito, se cambia a la matriz" min ". Si envía una 'S', los caracteres de la matriz" min "se convierten en un frecuencia de pulsación larga y se envía al AD9833. Así que enviando la cadena

002500S

establecerá la salida del AD9833 en una onda sinusoidal de 2500Hz. Siempre debe enviar los 6 dígitos. La frecuencia mínima es 000001 y la frecuencia máxima es 999999.

Si envía una 'M', la matriz "min" se copia en la matriz "max". Si envía una 'H', el AD9833 emite repetidamente una frecuencia que aumenta gradualmente durante 5 segundos. Comienza en la frecuencia "mínima" y 5 segundos después está en la frecuencia "máxima". Entonces

020000M000100SH

barre de 100Hz a 20kHz. El cambio de frecuencia es logarítmico, por lo que después de 1 segundo la frecuencia será 288Hz, después de 2 segundos 833Hz luego 2402, 6931 y 20000. La frecuencia se cambia cada milisegundo.

El bucle se detiene cuando Arduino recibe otro carácter, así que tenga cuidado de no enviar el comando seguido de retorno de carro o avance de línea. Ese carácter adicional terminaría el ciclo. Si está utilizando el Monitor en serie, hay un cuadro en la parte inferior derecha que podría decir, por ejemplo, "Ambos NL y CR" que (creo) envía caracteres después de su comando. Ajústelo en "Sin final de línea".

Puede descargar el programa Windows EXE a continuación, que enviará los comandos necesarios o puede escribir los suyos propios. El archivo INO de Arduino también está aquí.

Paso 2: agregue un OLED

Agregar un OLED
Agregar un OLED
Agregar un OLED
Agregar un OLED
Agregar un OLED
Agregar un OLED

Si agrega un OLED y dos botones, el generador de señal puede funcionar solo sin una PC.

Aquellos de ustedes que hayan leído mi osciloscopio Instructable reconocerán la similitud. El módulo AD9833 se puede agregar a mi osciloscopio para producir un "Osciloscopio y generador de señales en una caja de cerillas".

La pantalla es un OLED de 1.3 que funciona a 3.3V que está controlado por un chip SH1106 a través de un bus I2C.

Busca en eBay OLED de 1,3 ". No quiero recomendar a un vendedor en particular, ya que los enlaces quedan obsoletos rápidamente. Elige uno que se parezca a esa foto, diga" I2C "o" IIC "y que tenga cuatro pines etiquetados como VDD GND SCL SDA. (Algunas pantallas parecen tener los pines en un orden diferente. Compruébelos. El nombre correcto para el reloj de I2C es "SCL", pero en eBay los tableros se pueden etiquetar como "SCK" como el mío en la foto).

Una descripción más completa de la biblioteca OLED está en mi osciloscopio Instructable en el Paso 8. Debe descargar e instalar la biblioteca de controladores SimpleSH1106.zip que está en el Paso 8. (No quiero cargar otra copia aquí y tengo que mantener dos copias.)

El archivo INO se puede descargar a continuación. Los números de pin usados para el OLED se declaran alrededor de la línea 70. Si ha construido mi "Osciloscopio y generador de señal en una caja de cerillas" y desea probar este archivo INO con él, los números de pin alternativos están habilitados a través de un #define.

He mostrado un diseño de stripboard para el circuito. Hay dos stripboards: uno para el Nano y el AD9833 y otro para la pantalla. Deben formar un sándwich. Las placas se muestran desde el lado del componente. Alambres finos y flexibles unen las dos tablas. Coloque las tablas juntas con separadores soldados. En mi diagrama, el cobre de la placa se muestra en cian. Las líneas rojas son enlaces de cables en la placa de tira o cables flexibles que unen las placas. No he mostrado los cables de potencia y "señal".

El módulo AD9833 está soldado en el lado de cobre de la placa, en el lado opuesto del Nano. Suelde los pines en las tiras de cobre, luego coloque el AD9833 en ellos y suéldelo.

La pantalla muestra una sola frecuencia o las frecuencias "mínima" y "máxima".

Hay dos botones: un botón "Horizontal" para seleccionar un dígito de las frecuencias y un botón "Vertical" para cambiar ese dígito.

Enciendo el generador de señal desde el circuito que estoy desarrollando; siempre tengo 5 V disponibles en mi estación de trabajo.

Paso 3: Desarrollos futuros

Futuros desarrollos
Futuros desarrollos

¿Podría funcionar con pilas? Sí, solo agregue un 9V PP3 conectado al pin RAW del Nano. Por lo general, usa 20 mA.

¿Podría funcionar con una sola celda de litio? No veo por qué no. Debe conectar el OLED Vdd y su resistencia pull-up a la batería de 3.7V (dudo que la salida de 3.3V del Arduino funcione correctamente).

Un generador de barrido es más útil cuando se prueba la respuesta de frecuencia de un filtro si puede graficar la amplitud frente a la frecuencia. Medir la amplitud de una señal es complicado: debe compensar la caída de su detector de envolvente frente a la ondulación para las frecuencias bajas y el tiempo de respuesta para las frecuencias altas. Habiendo construido su detector de amplitud, podría alimentar su salida al ADC del Arduino del "Generador de señal más simple" y luego enviar el resultado, junto con la frecuencia actual a la PC.

Esta página es un punto de partida útil para buscar en Google "detector de sobre" o "detector de picos". En el circuito sugerido arriba, debe configurar la frecuencia de la señal, esperar a que se estabilice, configurar el pin Arduino A0 en salida digital baja, esperar a descargar C, configurar A0 en entrada, esperar, luego medir con el ADC. Déjame saber cómo te va.

Recomendado: