% A leitura de corrente e baseada na duraçao do impulso apresentado na
% tensao do potenciometro logo apos a descida do PWM. Quanto maior e o
% binario exercido pelo motor, maior e a duraçao deste impulso...
%
% Figura 1 - Analise estatica da largura de impulso: Media de 20 med/posiçao:
% Aqui efectuaram-se 20 mediçoes para cada posiçao e calculou-se a sua
% media. Pode-se observar, a crescente semelhança com uma funçao seno a
% medida que a carga aumenta. Tal faz sentido dado o mesmo comportamento
% do binario associado.
%
% Figura 2 e 3 - Analise estatica da largura de impulso: 10 mediçoes/posiçao:
% Nesta figura registaram-se 10 valores para cada posiçao angular e observou-se
% a sua distribuiçao entre extremos numericos. Embora ocorra alguma variaçao,
% a sua gama e insignificante quando comparada com o valor maximo. A
% evoluçao segundo um seno continua a verificar-se para cargas elevadas.
%
% Figura 4 e 5 - Comparaçao entre a corrente media e a largura de impulso:
% Estas figuras relacionam a corrente media consumida pelo servo (medida
% atraves de uma resistencia de 0.5ohm) com as larguras de impulso medias
% registadas na figura 1. Pode-se constatar uma relaçao bastante obvia,
% confirmando a ideia de que o impulso de tensao presente no potenciometro
% esta associado a corrente.
%
% Um pormenor a salientar e a ausencia de simetria dos graficos para
% posiçoes angulares simetricas. Tal advem do facto de nao começar a medir
% o impulso logo apos o seu inicio: a mediçao apenas se inicia a partir do
% instante de descida do PWM correspondente ao maximo duty-cycle - tal e
% necessario no uso de tres servos - mas, no entanto, o impulso de corrente
% começa antes - logo apos a descida de PWM. Desta forma temos valores
% superiores para PWM's de duty-cycle maximo (-90º), e inferiores para
% PWM's de duty-cycle minimo (+90º). No entanto, tal nao deve ser
% preocupante pois nao nos interessa um valor exacto da corrente!

close all

help corrente

title1='Analise estatica da Largura de Impulso: Media de 20 mediçoes para cada posiçao';
files1=['Medição de corrente pelo pot (sem res)_media_M1#pos_vpot_posEff_impTime.txt  ';
        'Medição de corrente pelo pot (sem res)_media_M2#pos_vpot_posEff_impTime.txt  ';
        'Medição de corrente pelo pot (sem res)_media_M4#pos_vpot_posEff_impTime.txt  ';
        'Medição de corrente pelo pot (sem res)_media_M42#pos_vpot_posEff_impTime.txt ';
        'Medição de corrente pelo pot (sem res)_media_M421#pos_vpot_posEff_impTime.txt'];
label1=['Massa M1 = 258g     ';
        'Massa M2 = 463g     ';
        'Massa M4 = 675g     ';
        'Massa M4+M2=1138g   ';
        'Massa M4+M2+M1=1396g'];
legend1=['Subida ';
         'Descida'];
ylabel1=['Largura de impulso (*100us)'];

title2= 'Analise estatica da Largura de Impulso em subida (-90º=>+90º): 10 mediçoes para cada posiçao';
files2=['Medição de corrente pelo pot (sem res)_M0_up#pos_vpot_posEff_impTime.txt ',
        'Medição de corrente pelo pot (sem res)_M1_up#pos_vpot_posEff_impTime.txt ',
        'Medição de corrente pelo pot (sem res)_M2_up#pos_vpot_posEff_impTime.txt ',
        'Medição de corrente pelo pot (sem res)_M4_up#pos_vpot_posEff_impTime.txt ',
        'Medição de corrente pelo pot (sem res)_M41_up#pos_vpot_posEff_impTime.txt'];
label2=['Massa nula (M0) ',
        'Massa M1 = 258g ',
        'Massa M2 = 463g ',
        'Massa M4 = 675g ',
        'Massa M4+M1=933g'];
legend2=[''];
ylabel2=['Largura de impulso (*100us)'];


title3= 'Analise estatica da Largura de Impulso em descida (+90º=>-90º): 10 mediçoes para cada posiçao';
files3=['Medição de corrente pelo pot (sem res)_M0_down#pos_vpot_posEff_impTime.txt ',
        'Medição de corrente pelo pot (sem res)_M1_down#pos_vpot_posEff_impTime.txt ',
        'Medição de corrente pelo pot (sem res)_M2_down#pos_vpot_posEff_impTime.txt ',
        'Medição de corrente pelo pot (sem res)_M4_down#pos_vpot_posEff_impTime.txt ',
        'Medição de corrente pelo pot (sem res)_M41_down#pos_vpot_posEff_impTime.txt'];
label3=['Massa nula (M0) ',
        'Massa M1 = 258g ',
        'Massa M2 = 463g ',
        'Massa M4 = 675g ',
        'Massa M4+M1=933g'];
legend3=[''];
ylabel3=['Largura de impulso (*100us)'];

title4='Comparaçao entre a corrente media e a largura de impulso na Subida (-90=>+90º)';
files4 =['Medição de corrente pelo pot (sem res)_media_M1#pos_vpot_posEff_impTime.txt  ';
         'Medição de corrente pelo pot (sem res)_media_M2#pos_vpot_posEff_impTime.txt  ';
         'Medição de corrente pelo pot (sem res)_media_M4#pos_vpot_posEff_impTime.txt  ';
         'Medição de corrente pelo pot (sem res)_media_M42#pos_vpot_posEff_impTime.txt '];
files4b=['calibM1#pos_vpot_posEff_posFilt_curr.txt ';
         'calibM2#pos_vpot_posEff_posFilt_curr.txt ';
         'calibM4#pos_vpot_posEff_posFilt_curr.txt ';
         'calibM42#pos_vpot_posEff_posFilt_curr.txt'];
label4=['Massa M1 = 258g     ';
        'Massa M2 = 463g     ';
        'Massa M4 = 675g     ';
        'Massa M4+M2=1138g   '];
legend4=['Largura do impulso (*100us)';
         'Corrente media (*10mA)     '];
ylabel4=[''];
     
title5='Comparaçao entre a corrente media e a largura de impulso na Descida (+90=>-90º)';
files5 =['Medição de corrente pelo pot (sem res)_media_M1#pos_vpot_posEff_impTime.txt  ';
         'Medição de corrente pelo pot (sem res)_media_M2#pos_vpot_posEff_impTime.txt  ';
         'Medição de corrente pelo pot (sem res)_media_M4#pos_vpot_posEff_impTime.txt  ';
         'Medição de corrente pelo pot (sem res)_media_M42#pos_vpot_posEff_impTime.txt '];
files5b=['calibM1#pos_vpot_posEff_posFilt_curr.txt ';
         'calibM2#pos_vpot_posEff_posFilt_curr.txt ';
         'calibM4#pos_vpot_posEff_posFilt_curr.txt ';
         'calibM42#pos_vpot_posEff_posFilt_curr.txt'];
label5=['Massa M1 = 258g     ';
        'Massa M2 = 463g     ';
        'Massa M4 = 675g     ';
        'Massa M4+M2=1138g   '];
legend5=['Largura do impulso (*100us)';
         'Corrente media (*10mA)     '];
ylabel5=[''];


f5=figure(5);
set(f5,'name',title5);
for i=1:size(files5,1)
    clear array;
    array=load(files5(i,:));
    arrayb=load(files5b(i,:));
    
    % ---------------------------------------------------------------------
    % Adaptar este bloco de codigo de acordo com os dados de origem
    subplot(2,2,i);
    plot(array(ceil(length(array)/2):end,3),array(ceil(length(array)/2):end,4),'b',...
         arrayb(ceil(length(arrayb)/2):end,3),arrayb(ceil(length(arrayb)/2):end,5),'r');
    hold on;
    plot(array(ceil(length(array)/2):end,3),array(ceil(length(array)/2):end,4),'.',...
         arrayb(ceil(length(arrayb)/2):end,3),arrayb(ceil(length(arrayb)/2):end,5),'.r');
    hold off;
    % ---------------------------------------------------------------------
    
    xlabel(label5(i,:));
%    ylabel(ylabel5);

    if (i==size(files5,1))
        legend(legend5,4);
    end
    grid on
end

f4=figure(4);
set(f4,'name',title4);
for i=1:size(files4,1)
    clear array;
    array=load(files4(i,:));
    arrayb=load(files4b(i,:));
    
    % ---------------------------------------------------------------------
    % Adaptar este bloco de codigo de acordo com os dados de origem
    subplot(2,2,i);
    plot(array(1:ceil(length(array)/2),3),array(1:ceil(length(array)/2),4),'b',...
         arrayb(1:ceil(length(arrayb)/2),3),arrayb(1:ceil(length(arrayb)/2),5),'r');
    hold on;
    plot(array(1:ceil(length(array)/2),3),array(1:ceil(length(array)/2),4),'.b',...
         arrayb(1:ceil(length(arrayb)/2),3),arrayb(1:ceil(length(arrayb)/2),5),'.r');
    hold off;
    % ---------------------------------------------------------------------
    
    xlabel(label4(i,:));
%    ylabel(ylabel4);

    if (i==size(files4,1))
        legend(legend4,4);
    end
    grid on
end

f3=figure(3);
set(f3,'name',title3);
for i=1:size(files3,1)
    clear array;
    array=load(files3(i,:));
    
    % ---------------------------------------------------------------------
    % Adaptar este bloco de codigo de acordo com os dados de origem
    subplot(2,3,i);
    plot(array(:,3),array(:,4),'.');
    hold off;
    % ---------------------------------------------------------------------
    
    xlabel(label3(i,:));
    ylabel(ylabel3);

%     if (i==size(files3,1))
%         legend(legend3,4);
%     end
    grid on
end

f2=figure(2);
set(f2,'name',title2);
for i=1:size(files2,1)
    clear array;
    array=load(files2(i,:));
    
    % ---------------------------------------------------------------------
    % Adaptar este bloco de codigo de acordo com os dados de origem
    subplot(2,3,i);
    plot(array(:,3),array(:,4),'.');
    hold off;
    % ---------------------------------------------------------------------
    
    xlabel(label2(i,:));
    ylabel(ylabel2);

%     if (i==size(files2,1))
%         legend(legend2,4);
%     end
    grid on
end

f1=figure(1);
set(f1,'name',title1);
for i=1:size(files1,1)
    clear array;
    array=load(files1(i,:));
    
    % ---------------------------------------------------------------------
    % Adaptar este bloco de codigo de acordo com os dados de origem
    subplot(2,3,i);
    plot(array(1:ceil(length(array)/2),3),array(1:ceil(length(array)/2),4),'b',...
         array(ceil(length(array)/2):end,3),array(ceil(length(array)/2):end,4),'r');
    hold on;
    plot(array(1:ceil(length(array)/2),3),array(1:ceil(length(array)/2),4),'.b',...
         array(ceil(length(array)/2):end,3),array(ceil(length(array)/2):end,4),'.r');
    hold off;
    % ---------------------------------------------------------------------
    
    xlabel(label1(i,:));
    ylabel(ylabel1);

    if (i==size(files1,1))
        legend(legend1,4);
    end
    grid on
end
