ADVERTENCIA:

Los contenidos de este Blog manejan Voltajes, Altos Voltajes y Muy Altos Voltajes. Potencialmente Peligrosos e incluso Potencialmente Letales, Sí No estas Capacitado Técnicamente, No conoces la Normativa Técnica de cada Lugar o tienes la Más Mínima Duda, no sigas con el Contenido de este Sitio. TODOS LOS CONTENIDOS DEL BLOG SON A NIVEL INFORMATIVO, Al acceder a los Contenidos "Aceptas ser el Único Responsable de Tus Actos y Sus Consecuencias así de como Utilizas la Información".

jueves, 12 de enero de 2017

GENERADOR DE ONDAS - ARDUINO MEGA + AD9850

MULTI-GENERADOR DE ONDAS - ARDUINO MEGA + AD9850.

El diseño está basado en una placa de Arduino "Mega 2560", esta placa dispone de 10 veces mas de Memoria lo que se traduce en un mayor nº de instrucciones de programación y por lo tanto en opciones), también es mayor el nº de "Pines" de Entrad/Salida disponibles.

Para el Generador se va a utilizar una placa Arduino "Mega 2560" como Generador de Onda Cuadrada PWM hasta 30KHz con buena precisión y para gobernar un Generador de Ondas Senoidal y Cuadrada DDS de Precisión AD9850 hasta 2 MHZ de Onda Cuadrada y hasta 10 MHz de Onda Senoidal con la posibilidad de regulación con 2 decimales hasta los 99.999 Hz.










ESQUEMA GENERAL:



ESTRUCTURA DEL GENERADOR:

Con cualquier Placa de Arduino se pueden generar ondas de Pulsos de Onda Cuadrada con variación del Ancho de Pulso por "PWM" que se pueden dirigir a las Salidas de Pines Digitales, pero en la Práctica las Señales obtenidas con el Arduino "MEGA2560" son algo inexactas en cuanto al Valor de la"Frecuencia", el Arduino "NANO" es más exacto pero cuando sobrepasa los 30KHz tiene variaciones, por eso se ha combinado con el "AD9850" que es un Generador de Ondas "DDS".
La Placa Arduino independientemente de cual sea, se Programa para gobernar el "AD9850" y para generar pulsos "PWM" si se desea tener también esta Salida (opcional).
El Arduino "MEGA2560" tiene bastante mayor capacidad de Memoria Interna que el "NANO" por lo cual se pueden Programas muchas más opciones, que es el que se ha optado.
También lleva incorporado un Arduino "NANO" solamente para la generación de las Portadoras.
Una "LCD" de 4 lineas y 20 caracteres (LCD 20x4) que es activada por el Bus "I2C" con el fin de ahorrar cables de comunicación con el Arduino.


SALIDAS DEL GENERADOR:
- SALIDA DE ONDA SENOIDAL (AD9850) DE 1Vpp (hasta 10 MHz con señal aceptable).
- SALIDA DE ONDA CUADRADA (AD9850 o PWM-ARDUINO) DE 5Vp (hasta 2 Mhz con señal aceptable).
- FRECUENCIAS POR DEBAJO DE 1 Hz HASTA 25 SEGUNDOS.
- SALIDA DE PORTADORA SELECCIONABLE (50% Ancho de Pulso Fijo con el Arduino "NANO").
- DOBLE SALIDA DE ONDA CUADRADA ALTERNA INDEPENDIENTE CON MODULACIÓN DE PORTADORA (AD9850 o PWM-ARDUINO o ENTRADA EXTERNA).
- ENTRADA DE SEÑAL EXTERNA PARA MODULACIÓN DE PORTADORA.
- SALIDA PARA ELECTRODOS.
- VARIACIÓN DE ANCHO DE PULSO CON "P5" DE LA SALIDA DEL AD9850 DESDE EL 5% AL 95%.
- VARIACIÓN DE ANCHO DE PULSO CON "P3" DE LA SALIDA "PWM" DEL ARDUINO "NANO" DESDE 1% AL 99% CON OPCIÓN DE VARIOS SECUENCIAS DE BARRIDO DEL ANCHO DE PULSO).



ESTRUCTURA BÁSICA DE UN PROGRAMA:
Las primeras lineas de programación se utilizan para definir Variables, Matrices, Cargar librerías, etc..., después consta de un Procedimiento llamado "void setup ()" que es el procedimiento que primero se ejecuta y en el cual se abren puertos y se definen los parámetros de la LCD de visualización de Datos en pantalla, parámetros de componentes externos como el generador de Frecuencias "AD9850"; el siguiente Procedimiento que se ejecuta es el "void loop ()" en el cual todas las Instrucciones que correspondan se ejecutan Ciclicamente e Indefinidamente; tabién se pueden agregar por el programador otros Procedimientos que serán llamados cuando procedan y se definen como "void ........ ()".

En la Programación es importante el uso de las minúsculas y las Mayúsculas correspondientes en las instrucciones (sino dará fallos en la compilación del programa).
Cada Arduino lleva un nº determinado de "TIMERS" que son osciladores, salidas-entradas Analógicas y Digitales que son Programables.
Cuando se compila un Programa (el compilador chequea y convierte las instrucciones al código del microprocesador del arduino) debe de estar seleccionado el Tipo de Arduino a Utilizar.


ELEMENTOS NECESARIOS:

- UNA PLACA "ARDUINO".
- GENERADOR DE ONDAS "AD9850".
- LCD 16x2 (16 caracteres x 2 líneas) o 24x4 (24 caractgeres x 4 líneas).
- POTENCIOMETROS 10K (el nº según las opciones).
- FUENTE DE ALIMENTACIÓN FIJA DE 5Vcc o 9Vcc.
- UNA CAJA SI SE DESEA DEJARLO BONITO.
- SOFTWARE PARA EL ENTORNO DE PROGRAMACIÓN.
- LIBRERÍAS DE PROGRAMACIÓN.
- UN ORDENADOR PARA CARGAR EL PROGRAMA DE COMPILACIÓN DE INSTRUCCIONES Y DESPUÉS VOLCARLO SOBRE EL ARDUINO.


SOFTWARE:

COMPILADOR ARDUINO "IDE" (PROGRAMADOR + GRABADOR EN ARDUINO):
http://www.arduino.org/downloads

CONJUNTO DE PROGRAMAS Y LIBRERÍAS (incluido compilador "IDE") TODO EN UNO:
https://drive.google.com/open?id=0B4bwT8N01X-9S2JzQ1FFOUZ6bk0
extraer el comprimido en C:\
una vez extraído para abrir el programador "IDE" ejecutar el fichero "arduino.exe".



ARDUINO "MEGA 2560":








AD9850 (Generador de Señales):
posibilidades del Generador de Ondas:
- Onda Cuadrada: hasta 2 MHz - Salida de 5 Vp.
- Onda Senoidal: hasta 8 MHz - Salida  de 1 Vpp.

El potenciometro de 10K azul de la placa sirve para variar el Ancho de Pulso (Duty Cicle) de la Onda Cuadrada (ojo que el potenciometro sobre todo al principio de su recorrido y algo menos al final no actúa realmente sobre el ancho de pulso de la onda cuadrada, es decir impide que salga la Onda Cuadrada.

LCD 16x2 o 24x2:

el LCD puede ser conectado a los pines de salidas digitales del arduino (se utiliza muchos cables) o por el sistema  del BUS "I2C" (se necesita un modulo "I2C") que solo utiliza 4 cables dos para alimentación y 2 para transmisión de datos.

MODULO "I2C":

la mayoría de los "I2C" que he recibido no funcionan con la Pantalla "LCD", si es una de las que no funciona la "LCD" no presentará ningún carácter en la Pantalla (esto empleo tiempo en descubrirlo).

el modulo se suelda a la pantalla por la parte de atrás del LCD (aconsejo no soldar directamente al LCD, soldar una tira de pines hembra e introducir el modulo en ellos), el potenciometro azul sirve para regular el brillo de la pantalla LCD.
conector blanco de alimentación  del Ad9850 - LCD y transmisión de datos entre el "I2C" y el Shield del AD9850


ESQUEMA DE CONEXIONADO ENTRE COMPONENTES:



MEDICIONES DE VOLTAJE DE LA ONDA SENOIDAL DEL AD9850:





la señal Senoidal mantiene el nivel hasta los 9 MHz.


MEDICIONES DE LA ONDA CUADRADA DEL AD9850:


la señal de la Onda Cuadrada se mantiene estable hasta los 2 MHz.


MEDICIONES DE ONDA CUADRADA ENTRE LA SALIDA "PWM" Y LA SALIDA "DDS" DEL AD9850:

SALIDA "DDS" en Amarillo.
SALIDA "PWM" (PIN 11 del Arduino) en Azul.


La FRECUENCIA de la salida de Onda Cuadrada de "PWM" del Pin 9 del Arduino Mega se mantiene con buena tolerancia hasta los 30 KHz, después aumenta la tolerancia según si es múltiplo exacto de frecuencias inferiores, con la Salida "DDS" no pasa esto.

el Duty Cicle de la señal "DDS" solo se puede variar en el recorrido útil del potenciometro azul de la placa del AD9850.
el Duty Cicle de la señal "PWM" se puede varia con el potenciometro P0.




CÓDIGO ARDUINO:

CONECTAR EL CABLE MINI-USB ENTRE EL ARDUINO NANO Y UNA SALIDA USB DEL PC.
ABRIR EL PROGRAMA "IDE".
COPIAR Y PEGAR EL "CÓDIGO" EN EL PROGRAMA "IDE".
SELECCIONAR EN EL MENÚ "HERRAMIENTAS" - SUBMENÚ "PLACA: ARDUINO NANO".
SELECCIONAR EN EL MENÚ "PROGRAMA" - "VERIFICAR/COMPILAR" O PULSAR EL ICONO DE LA "FLECHA HACIA LA DERECHA".
CUANDO EL PROGRAMA NO DÉ ERROR, YA ESTÁ SUBIDO AL ARDUINO NANO.


// INICIO DEL CODIGO
     
                                                     CÓDIGO NO DISPONIBLE
OPCION: VER CODIGO EN: http://teslatronica.blogspot.com.es/2017/01/generador-de-ondas-arduino-nano-y-ad9850.html

// FIN DEL CODIGO






montaje previo para comprobar el funcionamiento:





Alimentación:

el aparato funciona con una Batería de 6Vcc recargable y con 9Vcc de un alimentador externo a través de la propia placa del Arduino "Mega 2560" que suministra los 5Vcc para todos los circuito y medidores.


PLACA MAESTRA:



FRECUENCIMETRO:








SHIELD (PLACA ADAPTADORA COMERCIAL DEL AD9850 AL ARDUINO "MEGA 2560":



CONSTRUCCIÓN DE UN SHIELD:


se ha recortado una placa de tiras de cobre a 19 pistas para adaptarlo a las dimensiones del Arduino "Mega 2560" donde irá acoplado encima sobre los propios pines hembra del "Mega" (también se puede hacer sobre una placa externa o protoboard):

A la placa de tiras de cobre se sueldan en los extremos de las pistas las tiras de pines macho necesarias que se introducirán en el arduino "Mega", sobre la placa se sueldan dos tiras adaptadoras de 10 pines hembra donde se introduce el "AD9850", se hacen con una broca fina y con mucho cuidado los cortes marcados en el esquema con el fin de que los pines que no se utilizan del "Mega" y del "AD9850" no se interfieran entre ellos (posibilidad de rotura de ambos), se sueldan los 3 puentes y por último se sueldan los cables de las diversas Salidas en los puntos marcados en el esquema.





shield para montar el Generador AD9850 sobre los pines hembra del Arduino "Mega":

placa de pistas de cobre con los cortes correspondientes.







se ha sustituido el potenciometro ajustable azul de la placa del AD9850 por uno externo, se han soldado unos pines en forma de "L" para su conexión:


como 2 arduinos no pueden a la vez mandar información a una sola pantalla "LCD", para poder ver en la pantalla el % aproximado de salida de Onda Cuadrada del modulo "AD9850", he puesto un doble potenciometro en el mismo eje de 10K, uno al arduino "MEGA2560" para ver el % (representado como> "/") en pantalla y el otro para actuar físicamente sobre el "AD9850":



Esquema con el Potenciometro de ajuste del  Ancho de Pulso de la Onda Cuadrada externo:





El Modulo AD9850 sólo da Señal de Onda Cuadrada en una parte del tramo del ajuste del potenciometro azul que viene en su placa (1/3 aproximadamente) que es el recorrido con el cual se puede ajustar el Ancho de Pulso de la Señal (Duty Cicle) por lo cual he añadido en el Shield dos potenciometros ajustables de 50K y 5K (ver esquema de abajo) con el fin de ajustar el inicio de la onda cuadrada desde el 5% aproximadamente y acabar en el 95% y así aprovechar todo el recorrido del potenciometro de Ancho de Pulso que se ha puesto externo:


esquema con los potenciometros multivuelta de 5Ky 50K:





montaje del Shield en la Placa:


circuito de generación de doble Pulso de la Onda Cuadrada Alterna Modulado con Portadora Seleccionable con "P4":

la doble salida del "TC4426" va a los Mosfet de Potencia




Salidas de las diversas Señales:





la composición y Distribución de los circuitos dentro de caja ha sido laboriosa y sobre todo Minuciosa para encajarlos dentro de la caja







señal de 1000 Hz (en azul) con Modulación de Portadora de 250.000 Hz (en amarillo):




OPCIÓN DE CONMUTACIÓN DE PORTADORA CADA 5 SEGUNDOS:

















MEDICIONES DE LA DOBLE SALIDA CON MODULACIÓN DE PORTADORA:

PORTADORA SELECCIONABLE AL 50% DE ANCHO DE PULSO FIJO.

Portadora de 250.00 Hz con Modulación de 1000 Hz  con ancho de Pulso del 10% (salida "PWM"):


Portadora de 250.00 Hz con Modulación de 1000 Hz  con ancho de Pulso del 50% (salida "PWM"):


Portadora de 250.00 Hz con Modulación de 1000 Hz  con ancho de Pulso del 90% (salida "PWM"):



salidas opuestas del 7400 para excitar cada uno de los Mosfets de Potencia:



DOBLE SALIDA PARA LOS TRANSISTORES MOSFETS DE POTENCIA:

en amarillo la señal Portadora de 250 KHz de una de las Salidas:
en azul las señal Moduladora de 1000 Hz de esa Salida (la otra Salida se vería igual):


diferentes anchos de pulso de las 2 Salidas de la Señal Moduladora (la Onda Portadora va dentro de las zonas coloreadas):




vemos como los Pulsos Cuadrados de la Portadora Seleccionada son inversos para cada Salida:

con lo cual en cada Semi-Ciclo de la Señal excita a uno de lo Transistores independientemente



Portadora de 250.000 Hz (250 KHz):


Portadora de 500.000 Hz (500 KHz):



PORTADORAS:

 como la Portadora la genera el Arduino "NANO" y la pantalla "LCD" sólo presenta la información que le envia el Arduino "MEGA2560" he puesto un doble potenciometro en el mismo eje de 10K , uno actúa sobre la selección de la Portadora en el Arduino "NANO" y el otro sobre la visualización en la pantalla del "LCD" actuando a la vez sobre la programación del Arduino "NANO" y del "MEGA2560":



SELECCIÓN DE PORTADORAS:


No hay comentarios:

Publicar un comentario

Gracias por Tu Comentario, Aporta Siempre lo Mejor de Ti.