diff --git a/Arduino/ImpetomC_Arduino.ino b/Arduino/ImpetomC_Arduino.ino new file mode 100644 index 0000000000000000000000000000000000000000..a5612b83d1404e8e17fd76573beabfe16e36c1c8 --- /dev/null +++ b/Arduino/ImpetomC_Arduino.ino @@ -0,0 +1,102 @@ +/* + * LibrerÃas +*/ + +#include <CD74HC4067.h> // LibrerÃa de los mux utilizados + +#include <AD9833.h> // LibrerÃa del dds AD9833 + +/* + * Constantes y definiciones +*/ + +//DDS +#define minDDSfrecuency 29500 // 29,5kHz de frecuencia mÃnima para el DDS +#define maxDDSfrecuency 32000 // 32kHz de frecuencia máxima para el DDS +#define DDSFNCPin A2 //Pin digital para el seteo de la frecuencia del DDS +// Se utilizan el pin 11 y 13 para la comunicacion SPI del AD9833. El pin 11 corresponde al dat y el 13 al clk del integrado + +// Enable mux de tensión +#define enableTension A4 + +// Enable mux de corriente +#define enableCorriente A5 + +// Pin para medida de tensión +#define pinMedida A0 + +//cantidad de muestras para cada modo +#define cMuestrasColocacion 50 +#define cMuestrasReconstruccion 100 + +/* + * Variables Globales +*/ + +//Seteo los pines para el mux de tensión y corriente + // s0 s1 s2 s3 + // | | | | +CD74HC4067 muxTension(2, 3, 4, 5); // creo el objeto CD74HC4067 para el mux de tensión + + + // s0 s1 s2 s3 + // | | | | +CD74HC4067 muxCorriente(6, 7, 8, 9); // creo el objeto CD74HC4067 para el mux de corriente + +//DDS +AD9833 gen(DDSFNCPin);// Genero el objeto DDS + +//Variables para el control de cambio de modo de operación + +boolean modoColocacion=true;//Utilizado para saber en que modo estoy trabajando colocación o reconstrucción + +//Variable global para el seteo del a frecuencia del DDS +long int DDSfrecuencyRate = 30000; // Frecuencia de 30kHz + +/* + * Funcion setup +*/ + +void setup() { + //Inicializamos las funciones del DDS + inicializarDDS(); + + //seteo el enable de corriente y deshabilito mux corriente + pinMode(enableCorriente,OUTPUT); + deshabilitarMuxDeCorriente(); + + //seteo el enable de tension y deshabilito mux tensión + pinMode(enableTension,OUTPUT); + deshabilitarMuxDeTension(); + + //Comiezo de la comunicación Serial + inicializarComSerial(); + + //Identificación del dispositivo Impetom a través del canal serial + identificarDispositivoImpetom(); + +} + +/* + * Funcion loop +*/ + +void loop() { + + //Recibo por el canal serial el modo de operación en el cual trabajará el dispositivo Impetom + cambioDeModoDeOperacion(adquirirModoDeOperacion()); + + //Ajuste de la frecuencia de operación del DDS a través del canal serial + ajustarFrecuenciaDDS(adquirirFrecuenciaDDS());// + + //Adquisición de datos + if (modoColocacion){ + adquirirDatos(cMuestrasColocacion); + }else{//modo normal + adquirirDatos(cMuestrasReconstruccion); + } + + //EnvÃo el valor de frecuencia utilizada por el dds durante la última adquisición de datos a través del canal serial + enviarDatos(DDSfrecuencyRate); + +}