% Alguns dados:
%
% m0 => em vazio
% m1 => carga de 258 g
% m2 => carga de 454 g
% m3 => carga de 717 g
% Posição -90º => posição inferior (máxima tensão de saída)
% Posição +90º => posição superior (mínima tensão de saída)
%
% Conclusões:
%
% Respostas ao degrau:
% Observa-se um ligeiro aumento de oscilação à medida que a massa aumenta.
% No entanto não se podem fazer grandes comparações dado a limitada
% variação de cargas usadas. Não se exploraram maiores cargas devido à
% instabilidade que o sistema servo+carga possui na realização de
% movimentos bruscos.
%
% Resposta à rampa no intervalo -90 a +90 graus (ou vice-versa):
% Observa-se aumento de oscilação à medida que a carga aumenta. No entanto,
% isto pode dever-se à oscilação mecanica após a realização de cada passo.
% Mais conclusões podem ser tiradas a seguir...
%
% Resposta à rampa no intervalo +-90 a 0 graus:
% Aqui pode-se observar a tensão após a paragem final, e visualiza-se a
% oscilação constante após o instante final sendo tanto maior quanto maior
% for a carga. Daqui se conclui que a oscilação mecanica não está
% relacionada com a oscilação eléctrica.
%
% Conclusões finais:
% Conclui-se que o filtro implementado (resultados nas curvas a vermelho) é
% bastante eficiente eliminando os picos que entretanto surgem.
% No entanto recomenda-se a aplicação de um filtro passa-baixo em hardware
% para a realização de uma limpeza prévia, pois se diminuirmos a frequência
% de amostragem podemos apanhar vários picos consecutivos tornando ineficaz
% o filtro implementado em software.

clear all
close all

% Organização dos arrays:
% Coluna 1: Tempo
% Coluna 2: Tensão a saída do potenciómetro não filtrado
% Coluna 3: Tensão a saída do potenciómetro filtrado
% Coluna 4: Posição do servo correspondente a tensão filtrada

stepf=['step-90;~00#m0.txt',
       'step-90;~00#m1.txt',
       'step-90;~00#m2.txt',
       'step~00;-90#m0.txt',
       'step~00;-90#m1.txt',
       'step~00;-90#m2.txt'];
       
       
rampf=['ramp-90;+90#m0.txt',
       'ramp-90;+90#m1.txt',
       'ramp-90;+90#m2.txt',
       'ramp-90;+90#m3.txt',
       'ramp+90;-90#m0.txt',
       'ramp+90;-90#m1.txt',
       'ramp+90;-90#m2.txt',
       'ramp+90;-90#m3.txt'];
       
rmpf2=['ramp-90;~00#m0.txt',
       'ramp-90;~00#m1.txt',
       'ramp-90;~00#m2.txt',
       'ramp-90;~00#m3.txt',
       'ramp+90;~00#m0.txt',
       'ramp+90;~00#m1.txt',
       'ramp+90;~00#m2.txt',
       'ramp+90;~00#m3.txt'];

f3=figure(3);
set(f3,'NumberTitle','off','name','Respostas a rampa na gama de +/-90 a 0 graus');
for i=size(rmpf2,1):-1:1
    clear array;
    
    array=load(rmpf2(i,:));
    
    subplot(2,4,i);
    
    plot(array(:,1),array(:,2),'b');
    hold on
    plot(array(:,1),array(:,3),'r');
    hold off
    
    xlabel('tempo');
    ylabel('Tensão (V)');
    title(rmpf2(i,:));
end

f2=figure(2);
set(f2,'NumberTitle','off','name','Respostas a rampa na gama de -90 a 90 graus');
for i=size(rampf,1):-1:1
    clear array;
    
    array=load(rampf(i,:));
    
    subplot(2,4,i);
    
    plot(array(:,1),array(:,2),'b');
    hold on
    plot(array(:,1),array(:,3),'r');
    hold off
    
    xlabel('tempo');
    ylabel('Tensão (V)');
    title(rampf(i,:));
end

f1=figure(1);
set(f1,'NumberTitle','off','name','Respostas ao degrau para diferentes massas (m)');
for i=size(stepf,1):-1:1
    clear array;
    
    array=load(stepf(i,:));
    
    subplot(2,3,i);
    
    plot(array(:,1),array(:,2),'b');
    hold on
    plot(array(:,1),array(:,3),'r');
    hold off
    
    xlabel('tempo');
    ylabel('Tensão (V)');
    title(stepf(i,:));
end
