Generador de Formas de Onda Arbitrarias con Arduino Due: Potente, Multifrecuencia, Compatible Linux/Windows
Componentes y materiales
| Componente | Cantidad |
|---|---|
| Arduino Due | 1 |
Sobre el proyecto
Descripción general
Este proyecto ahora funciona tanto en Linux como en Windows.
- Frecuencia máxima onda analógica: 100 kHz
- Frecuencia máxima onda cuadrada: 42 MHz
- Ciclo de trabajo ajustable desde virtualmente 0% hasta 100%
- Muy fácil de construir - ver Instalación abajo.
Este es un proyecto de dos partes: la placa Arduino Due en sí, y una interfaz gráfica de control (GUI) para usar en tu PC, aunque la placa Arduino también puede usarse de forma independiente usando potenciómetros, interruptores y LEDs.
No se necesita circuito adicional, aunque se ofrece un circuito opcional de protección de salida que debería proteger la placa Arduino de conexiones accidentales de las salidas a voltajes de hasta ±30V aproximadamente (quizás más).
Usando la GUI de control en tu PC, se pueden dibujar, editar, guardar, abrir y subir formas de onda arbitrarias al Arduino Due, conectado automáticamente vía USB. Se incluye un archivo de ayuda completo.
Una función de "onda escalonada" permite producir fácilmente cualquier número de escalones agudos (una muestra) en la onda si se desea. Además, la salida puede cambiarse a onda sinusoidal, triangular o diente de sierra.
También se produce simultáneamente una onda cuadrada que puede ser sincronizada o completamente independiente. Las ondas pueden controlarse por frecuencia o período. El ciclo de trabajo puede ajustarse desde virtualmente 0% hasta 100%. O el ancho de pulso puede mantenerse constante (dentro de los límites del período, por supuesto).
Los nuevos ajustes pueden escribirse directamente mediante el teclado del PC o el teclado numérico del programa. O, presionando "MODO" permite un ajuste deslizante.
Un Modo Exacto está disponible para la onda analógica, que evita los "pasos de frecuencia" normalmente asociados con los generadores de formas de onda por síntesis digital directa (DDS). Esto hace posible una frecuencia más precisa al permitir acceso a frecuencias entre esos "pasos de frecuencia" porque la salida no es una división de la frecuencia del reloj del Arduino cuando el Modo Exacto está activado.
Se incluye una función de barrido de frecuencia (logarítmico) para una o ambas ondas, y también hay un temporizador con salida positiva o negativa del Arduino.
Especificaciones
Onda Analógica:
- Resolución: 12 bits con hasta 4096 puntos de referencia.
- Rango de frecuencia: 0.05 mHz (20,000 seg) a 100 kHz.
- Tasa de muestreo (arriba de 1 kHz usando DMA): Hasta 1.6 MHz.
- Tasa de muestreo (hasta 1 kHz): 400 kHz.
- Tasa de muestreo en Modo Exacto (cualquier frecuencia): 400 kHz.
- Ancho de pulso mínimo (medio ciclo de onda):
- En ciclo de trabajo 0%: 350 nanosegundos (aprox.) a cualquier frecuencia.
- En ciclo de trabajo 0.01%: Hasta 2.5 - 25 microsegundos (aprox.) - si la frecuencia es superior a 1 kHz Y Modo Exacto o Sincronización está activado; de lo contrario 350 nanosegundos.
Onda Cuadrada:
- Rango de frecuencia: 0.05 mHz (20,000 seg) a 42 MHz.
- Ancho de pulso mínimo:
- Sincronizada: [Frecuencia: 0.05 mHz a 100 kHz] - En 0% ciclo de trabajo: 48 nanosegundos a cualquier frecuencia. En 0.01%: 2.5 - 25 microsegundos (aprox.)
- No sincronizada: [0.093 mHz (10,737 seg) a 42 MHz] - 12 ns desde 1.3 kHz a 42 MHz (usando PWM). 24 ns desde 650 Hz a 1.29999 kHz. 48 ns desde 325 Hz a 649.99999 Hz. 96 ns desde 163 Hz a 324.99999 Hz. Debajo de 163 Hz (usando interrupción): En 0% ciclo de trabajo: 96 nanosegundos. En 0.01% ciclo de trabajo: 5 microsegundos.
Instalación
Programa GUI para tu PC
El programa es "portable", no necesita instalación.
Usuarios de Windows: Simplemente extrae el archivo .zip en una carpeta de tu elección y crea un acceso directo al archivo .exe. Nota: El archivo "DueAWGController-Win64.zip" es para sistemas de 64 bits, pero el archivo de 32 bits a menudo funciona de forma más fiable ya que incluye Java embebido.
Usuarios de Linux: Extrae el archivo DueAWGController-LinuxXX.zip en una carpeta, luego haz doble clic en el archivo DueAWGControllerLinux o agrégalo al menú del sistema.
- Puede que necesites instalar OpenJDK 8 (Java 8) para Debian, Ubuntu, etc: En la terminal escribe:
sudo apt-get install openjdk-8-jre(Versiones más nuevas podrían no funcionar). - También puede que necesites permisos para acceder al USB antes de poder conectar con el Arduino. Escribe:
sudo usermod -a -G dialout $USER - Se incluyen también dos archivos "arm" para Raspberry Pi, pero no han sido probados. Por favor avisa si funcionan.
Sketch de Arduino
No necesita librerías especiales, solo necesitas el Arduino IDE normal instalado en tu PC para subir el sketch al Due. Siempre que tu PC haya reconocido el Arduino Due (lo cual debe haber hecho si se subió el sketch), el programa GUI debería encontrar y conectar automáticamente con el Arduino al iniciarse, así que no hay necesidad de configurar el puerto COM. Sin embargo, la selección manual de puerto COM está habilitada si la automática falla.
Hay algunos archivos de onda de ejemplo en la carpeta "Arbitrary Waves" (solo por diversión) para ayudarte a empezar. Además del programa GUI, el generador de formas de onda de Arduino también puede controlarse mediante el monitor serie de Arduino a 115200 baudios. Escribe ? para ayuda.
O si prefieres usar potenciómetros, interruptores y LEDs para el control, el inicio del sketch de Arduino lista las conexiones de pines.
Conexiones de pines de salida de onda también están listadas ahí, o simplemente conecta los pines 3 y 7 del Arduino juntos con un puente, o si eres ultra cauteloso usa una resistencia de bajo valor (47-100 ohmios). Toma la salida de onda cuadrada del pin 7 y la salida analógica de DAC0.
Código
IMPORTANTE: No hagas clic en el botón "Download as zip".
Para descargar los archivos haz clic en "Read More" abajo. NOTA: Hacer clic en "Download as zip" solo descargará un archivo readme.
Repositorio: GitHub - Arduino Due Arbitrary Waveform Generator And Controller
Esquemáticos
Este circuito puede omitirse completamente, pero si se usa debería proteger el Arduino contra conexiones accidentales de las salidas a voltajes de al menos ±25V sin aumentar significativamente los tiempos de subida y bajada. D2 y D3 deben ser diodos de alta corriente y recuperación rápida - encontré que los diodos Schottky eran demasiado lentos. Los fusibles (F1 y F2) pueden ser polifusibles.
Proceso de manufactura
- Construye un Spybot controlado por Bluetooth con Arduino
- FlickMote: Mando IR por gestos para Smart Home
- TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Construye un Tres en Raya (Tic-Tac-Toe) Táctil en Arduino Due
- Generador de Ondas JX – Oscilador DDS Compatible con Arduino con Pantalla OLED
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
- Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
- Construye un volante joystick personalizado con Arduino para gaming