%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% El multímetro Amprobe 38XR-A se comunica con la compu a través de un %%% puerto serie (DB9). El multímetro devuelve una cadena de caracteres, %%% que es necesario procesar para interpretar información de medida, %%% unidades, signo, etc. Eso se hace dentro de la función Amprobe38XRA.m %%% %%% Lista de modificaciones: %%% 27/04/2018: 1) Ahora el script guarda los datos a medida que los %%% adquiere para evitar pérdida de datos si, por ejemplo, %%% se cuelga o se apaga la PC. %%% 2) El programa verifica se ya está abierta la conexión %%% antes de abrirla nuevamente para evitar inconvenientes %%% cuando se pierde la referencia a una conexión previa. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Define el nombre del archivo donde guardar los datos % Si el archivo ya existe, agrega los datos nuevos al final (-append) % El formato es texto plano en dos columnas: tiempo y valor medido fname = "NombreDeArchivo.txt"; % Esto evita conflictos cuando la comunicación queda abierta de una corrida anterior if (exist("s") == 0) s=serial('COM1','BaudRate',9600,'DataBits',8,'StopBits',1,'Parity','none'); set(s,'terminator','CR','InputBufferSize',15,'ReadAsyncMode','manual'); else if(s.Status == "open") fclose(s); end end % Ahora se abre la conexión a través del puerto COM1 fopen(s); %% Ejemplo de MEDICION SIMPLE verbose=1; % 1 = SI mostrar en la consola cada dato adquirido [Ylab , value, str, count] = Amprobe38XRA(s,verbose); fprintf('Valor: %g Unidades: %s str: %s count:%d\n',value,Ylab,str,count); %% Ejemplo de MEDICION EN FUNCION DEL TIEMPO figure(1);clf % figura donde graficar los datos verbose=0; % 0 = NO mostrar en la consola cada dato adquirido ndata=5000; % cantidad de puntos a adquirir medicion = nan(ndata,1); tiempo = medicion; tic for i = 1:ndata [ Ylab , value ,str, count] = Amprobe38XRA(s,verbose); texto=sprintf('Valor: %g\nUnidades: %s\nstr: %s\ncount:%d\ni: %d',value,Ylab,str,count,i); medicion(i)=value; tiempo(i)=toc; plot(tiempo,medicion,'.-') text(mean(xlim),mean(ylim),texto) ylabel(Ylab) xlabel('Tiempo [s]') drawnow fila = [tiempo(i), medicion(i)]; save(fname,"fila","-ascii","-append") end %% Cierre de la conexion fclose(s);