En esta nueva entrada diseñaremos un generador de funciones con amplitud variable. Nuestro generador de funciones generará 3 señales: senoidal, cuadrada y triangular.
Para hacerlo utilizaremos un 3 Waveform DAC (8bits) que trae el PSoC, estos pueden encontrarse en Analog/DAC del catálogo de componentes.
Cada WaveformDAC puede generar hasta dos señales diferentes dependiendo su entrada WS.
Para hacerlo simple utilizaremos solo 1 señal por WaveformDAC lo que nos obliga a utilizar un minimo de 3 WaveformDAC para generar estas 3 señales
A la salida del WaveformDAC utilizaremos un PGA para poder controlar la amplitud de la señal. Lo pueden encontrar en Analog/Amplifiers del catálogo de componentes.
Ahora si, Comencemos!!
Lo primero es colocar los 3 WaveformDAC conectados con un PGA a su salida. En la entrada ws de cada WaveformDAC podremos un pin digital y lo configuraremos con Drive mode en resistive pull down e Initial drive state en Low(0)
A la salida del PGA pondremos un pin analógico y en sus configuraciones del mismo pondremos Vref_input en External y conectamos al Vref un pin analógico más.
En este punto pueden renombrar sus componentes como mejor les parezca para hacerlos mas fácil de identificar.
Si conectaron todo correctamente debería de verse así:
ahora configuraremos los PGA Para una ganancia (gain) de 2, y configuraremos los WaveformDAC como sigue:
WaveformDAC_1:
Range selection: VDAC 0- 1.020V
Sample rate(Ksps): 100
Wave type: Sine
Amplitud (Vpp): 1.000
Offset (V): 0.510
Phase: 0
Samples: 100
WaveformDAC_2:
Range selection: VDAC 0- 1.020V
Sample rate(Ksps): 100
Wave type: Square
Amplitud (Vpp): 1.000
Offset (V): 0.510
Phase: 0
Samples: 100
WaveformDAC_1:
Range selection: VDAC 0- 1.020V
Sample rate(Ksps): 100
Wave type: Triangle
Amplitud (Vpp): 1.000
Offset (V): 0.510
Phase: 0
Samples: 100
Asignacion de Pines del PSoC:
En esta sección se asignan libremente los pines del PSoC que se utilizaran, para darles una idea el equipo encargado del blog asignó estos pines:
Código en C:
Para el código en C simplemente es inicializar el WaveformDAC y el PGA, aquí les facilitamos el código:
#include <project.h>
int main()
{
CyGlobalIntEnable; /* Enable global interrupts. */
/* Place your initialization/startup code here (e.g. MyInst_Start()) */
WaveDAC8_1_Start();
WaveDAC8_2_Start();
WaveDAC8_3_Start();
PGA_1_Start();
PGA_2_Start();
PGA_3_Start();
for(;;)
{
/* Place your application code here. */
}
}
/* [] END OF FILE */
Listo! dejemos el PC y vamos al protoboard!
En el protoboard simplemente es conectar el PSoC a este, de los pines a los que nombramos Salida1, Salida2 y Salida3 obtendremos nuestras señales senoidal, cuadrada y triangular respectivamente.
Pero todavia no podemos regular su amplitud, para esto tenemos que conectar un potenciometro (como resistencia variable) a nuestros pines del Vref convenientemente renombrados Pot1, Pot2 y Pot3 y a tierra.
Porque?
Al revisar el Datasheet, en la pag 2 podemos observar la formula para el Vout, la cual esta dada por:
Vout = Vref + (Vin + Vref) x Gain
esto quiere decir que si conectamos una resistencia variable a la referencia podremos variar el Vref manipulando así el Vout.
Es importante tener en cuenta las resistencia que utiliza el PGA para cada ganancia ya que de ellas depende el valor del potenciometro que usaremos. Para ello podemos consultar la tabla de la pag 3 del datasheet
tabla de ganancia y resistencia del PGA
Notar que para una ganancia de 2x tenemos dos resistencias de 40K por lo que si utilizamos un potenciometro de 5k casi no variará nuestra amplitud.
Resultados:
a continuación se muestra el armado del circuito y su funcionamiento.
No hay comentarios:
Publicar un comentario