viernes, 12 de abril de 2013

POST#3: Generador de Funciones DDS AD9850 de bajo costo Digital con LCD 16x2, PIC y comunicación mediante el protocolo USB-CDC

Objetivo: 

Diseño y construcción de un Generador de Señales mediante el uso de un microcontrolador PIC ejecutando algoritmos en lenguaje C de control y comunicación con la PC mediante protocolo CDC por USBpara así poder controlarlo ya sea manualmente con los pulsadores o por una aplicación desarrollada a la medida para el dispositivo en lenguaje C# de .NET.

El Generador se basa en el modulo DDS AD9850 que se puede comprar a un bajo costo en ebay, este modulo posee 20 pines para un fácil manejo y configuración del dispositivo. El cuenta con dos salidas cuadradas y dos salidas senoidal configurables ya sea desde la entrada de datos en forma paralelo o en su entrada serial de datos, con ello logrando setear la frecuencia de las salidas que es compartida entre la dos ondas, también posee un potenciomentro analógico para variar el valor del ciclo de trabajo de la onda cuadrada de 0% a 100%, mientras que el ciclo de trabajo de la señal senoidal esta fija al 50% del ciclo de trabajo.

El control del modulo DDS se realiza de manera serial usando un PIC18F2550, ademas dicho PIC controla el potenciomentro DS1869 de 64 pasos mediante secuencias de pulsos digitales con el que se varia el contraste del LCD, también se controla un potenciomentro MCP41010 de 256 pasos que se comunica mediante SPI y varia el ciclo de trabajo del modulo DDS al este mismo ser usado en reemplazo del potenciomentro analógico que posee de fabrica y así variar el ciclo de trabajo de la onda cuadrada y ademas la luz de fondo del LCD 16x2 se gradúa con el uso de la salida PWM del PIC variando su ciclo de trabajo y frecuencia hasta obtener un control de la luz que sea suave desde apagado hasta máxima intensidad.

Cuenta con una sección de carga y regulación de voltaje de entrada usando un regulador Step-Down (LM2576T-5.0P+), para así lograr una larga duración de la batería superior al tener estos modelos de reguladores un bajo nivel de disipación de energía en calor y una alta eficiencia. Ademas la etapa de entrada de corriente externa es regulada con un LM317 en modo regulador de corriente y así lograr la cantidad de mA justa para una carga lenta del 10% de la corriente máxima de la batería, logrando con esto una carga correcta, dándole una gran autonomía de horas sin la necesidad de ser recargado a menudo, como también una larga duración de la vida útil de la batería al no sufrir ya que se carga con un método lento pero que no la degenera.

Gracias al PIC18F2550 se puede tener una conexión USB detectada por interrupciones  para ello se realizo el desarrollo de una aplicación en lenguaje C# que se comunique por el protocolo CDC bajo la interfaz de USB. Obteniendo así gran velocidad de transmisión de datos entre la PC y el generador de señales. Con todo esto se obtuvo una aplicación muy simple pero potente que permite la configuración tiempo real todas las salidas del modulo DDS así como también el contraste, luz de fondo entre otras opciones.

Por ultimo tenemos que el generador fue dotado con pulsadores con los cuales se puede configurar de manera fácil y rápida todas las opciones que permite el dispositivo ya sea salidas o configuraciones de valores internos. Todos estos valores al conectar el cable USB son enviados a la aplicación desarrollada para esta auto configurarse con los datos cargados y estar sincronizados todo el tiempo en todos los aspectos como frecuencia, ciclo de trabajo, luz de fondo, contraste y demás opciones.


Materiales principales utilizados:
  • 1 x PIC18F2550. (Muestra gratis obtenida gracias a Microchip)
  • 1 x DS1869 10K - Potenciómetro digital de 64 pasos para contraste del LCD.
    (Muestra gratis obtenida gracias a Maxim)
  • 1 x DS MCP41010 10K - Potenciómetro digital de 256 pasos para control del ciclo de trabajo(Duty)  de la señal cuadrada. (Muestra Gratis obtenida gracias a Microchip)
  • 1 x LM317 - (Regulando corriente para limitarla al momento de la carga de la batería).
  • 1 x LM2576T-5.0P+ (Step-Down Regulador de Voltaje 5v).
  • 1 x Batería Li-ion 9v de 550 mAh.
  • 1 x Lamina de acrílico transparente para la base y tapa superior.
  • 1 x 74HC4066 - Para seleccionar cual salida es la activa ya sea cuadrada o senoidal..
  • 1 x 74HC04 - Para generar una onda cuadrada de mejor forma y evitar ruido.
  • 3 x Pulsadores - Para control manual del modulo DDS Generador de señales.
  • 1 x Baquelita para el montaje.
  • Protector de goma amarilla usado en multimetros antiguos.
  • 1 x LCD 16x2 - Para visualización del menú, estado del dispositivo y configuraciones. 
  • Conector BNC de chasis - Para la salida de la señal.
  • Separadores metálicos.
  • Puente rectificador - Para la entrada de la fuente de carga.
  • 1 x 74HC164 - Para controlar el LCD mediante 3 pines del microcontrolador
  • 1 x DDS Modulo Generador de Señales de 0-40 MHz - Para equipos de pruebas. 
    • 2 Salidas de onda Seno.
    • 2 Salidas de onda Cuadrada.
    • Onda cuadrada de 0-1 MHz.
    • Filtro pasa-bajos con 70 MHz para obtener una mejor forma de onda.
    • Entrada de configuración paralela o serial seleccionada por hardware.
    • Comparador de referencia con entrada de voltaje generada por una resistencia variable, esta resistencia ajusta el ciclo de trabajo(Duty) de la onda cuadrada.
    • AD9850 con cristal oscilador de 125 MHz.
Modulo DDS AD9850 Potenciómetro Digital 10k MCP41010
Quad bilateral switch 74HC4066. PIC 18F2550.
Potenciómetro Digital 10k DS1869-010

Esquemas de Conexión de algunas partes del Generador de Funciones DDS:

DS1869-010. PIC 18F2550.
74HC4066. PMCP41010.

Librerías y algunas rutinas del código fuente desarrolladas para el generador:

////////////////////////////////////////////////////////////////////
// Pantalla contraste
////////////////////////////////////////////////////////////////////
void pantalla_contraste(void)
{
   if(BANDERA_batt_low == false)
      if(BANDERA_CONTRAST_UP==TRUE && BANDERA_USB_CONECTADO==TRUE)
      {
         output_low(LCD_CONTRAST_UP);
         delay_ms(50);
         output_high(LCD_CONTRAST_UP);
         BANDERA_CONTRAST_UP = FALSE;
      }
      else
      if(BANDERA_CONTRAST_DOWN==TRUE && BANDERA_USB_CONECTADO==TRUE)
      {
         output_low(LCD_CONTRAST_DOWN);
         delay_ms(50);
         output_high(LCD_CONTRAST_DOWN);
         BANDERA_CONTRAST_DOWN = FALSE;
      }
}

Construcción del Generador de Funciones DDS:

PCB principal. PCB principal con algunos
componentes soldados.
PCB principal terminada vista
desde la parte inferior con protector
contra corrosión.
Prueba del generador DDS.

PCB principal terminada vista
desde la parte superior con
conector de batería.

Pruebas de la selección de la salida
de onda con el la compuerta
74HC4066 en el protoboard.
PCB de la sección de control manual
y salida y selección de la onda.
PCB y sus componentes antes de ser
soldados y fijados.
PCB antes de soldar la salida conector
BNC  para chasis.
PCB logica completa con
seccion de carga y LCD.
PCB de lógica y de control con el
dispositivo funcionando.
PCB de Control Finalizada. Modulo DDS con modificación del
potenciomentro análogo por uno
con conexión digital.
Modulo DDS con potenciomentro
análogo.
Acrílico Frontal ya perforado.
Distintas Partes desensambladas. Generador de señales finalizado pero
desensamblado.

Generador de señales finalizado
con acrílico frontal.

Generador de señales finalizado
con estuche protector y cable
USB retráctil.
Generador de señales finalizado.
Imágenes de la Aplicación de PC:

Aplicación desactivada. Menú de ayuda e información.
Menú de control de activación, reinicio
y salida de la aplicación.
Acerca de la aplicación.
Ayuda del sistema.

Imágenes del Generador DDS AD9850 en funcionamiento:

Prueba onda Cuadrada con control
mediante aplicación de PC y valores
por defecto establecidos.
Prueba onda Seno con control
mediante aplicación de PC y valores
por defecto establecidos.
Configuración de la aplicación
para la onda anterior cuadrada.
Configuración de la aplicación
para la onda anterior seno.
Lectura de la salida con el osciloscopio
mostrando los datos de la señal
onda con forma cuadrada.
Lectura de la salida con el osciloscopio
mostrando los datos de la señal
onda con forma senoidal.

Imágenes del Generador DDS AD9850 finalizado:

Foto lado izquierdo. Foto lado derecho.
Foto frontal con protector
de goma
Bibliografia, Web y Datasheet:

14 comentarios:

  1. Hey! mola tu generador, buen trabajo! y gracias por referenciarme!

    ResponderEliminar
    Respuestas
    1. Gracias colega, tu trabajo con el modulo me fue de gran ayuda

      Eliminar
  2. Fantastico trabajo colega, un diez.
    73 ea5gu-Paco

    ResponderEliminar
  3. Sera que se puede conseguir el PCB para imprimir?? Saludos.

    ResponderEliminar
    Respuestas
    1. Buenas amigo el PCB de este prototipo no está para descargar, ya que a mi parecer le falta opciones fundamentales como el control de amplitud de la señal sinusoidal, cualquier duda me escribes por aca

      Eliminar
  4. Hola, puedes pasar el codigo para controlar el modulo generador de señales?
    saludos!

    ResponderEliminar
    Respuestas
    1. Buenas amigo, en la sección de Web acá arriba esta un link que te puede ser de ayuda para controlar el modulo y la libreria ccs, luego que lo veas si tienes dudas al respecto me escribes por este medio para resolverlas

      Eliminar
    2. Hola, no me fije que la libreria estaba en otra blog, solo un favor, no pones esquematico de tu generador de funciones, habra forma de que lo puedas poner, para ver +- como va esto?, saludos

      Eliminar
  5. Buen trabajo, recién veo tu blog, haces trabajos excelentes!

    Saludos desde México!

    ResponderEliminar
  6. como eliminno el offset del oscilador ?

    ResponderEliminar
    Respuestas
    1. Buenas amigo el modulo genera las señales con el uso de su cristal y el integrado de ad9850 el cual ya esta calibrado para que en su salida tener unas señales dc donde el offset lo elimina el mismo integrado, en otro post mas adelante subiré algunas mejoras con respecto al uso de este modulo en el cual ya se puede controlar de manera digital el offset de la señal así como también su amplitud

      Eliminar
  7. Y cual sería el coste total de este generador?

    ResponderEliminar
    Respuestas
    1. Buenas amigo no le sabría decir hay que ver los costos de los componentes en ebay y otras tiendas pero de igual forma todavía le hace falta un poco mas de trabajo para que sea útil realmente como herramienta ya que como esta es limitado en funciones importantes

      Eliminar

POST#20: UPS AC-DC 5V a 4 Amp con cargador de batería de ácido plomo sellada

Objetivo:  Debido a los constantes bajones y cortos programados de la energía eléctrica en mi país Venezuela, he determinado hac...