function y=momXmagn(u); global Asat tau proportion % Le vecteur entrée est à 6 composantes % u(1:3) est le vecteur dérivée champ magnétique B' ( B'x B'y B'z ) en axes satellite % u(4:6) est le vecteur champ B (Bx By Bz en axes satellite % Unit sera son vecteur unitaire % tau est la constante de temps donnée en global dans derivdat % Asat est la matrice d'inertie du satellite dans x y z, elle est donnée en global % La fonction retourne le gain matriciel K % Séparation des vecteurs B_prime(1:3)=u(1:3); B(1:3)=u(4:6); % Vecteur unitaire de B unit=B/norm(B); mat_unit=[0 -unit(3) unit(2); unit(3) 0 -unit(1); -unit(2) unit(1) 0]; UvectUvect=mat_unit*mat_unit; K_mat=-1/norm(B)^2*UvectUvect*Asat/tau; % ********************* % Pour éviter une saturation qui risque de bloquer une composante par rapport à une autre % et donc de ne pas avoir le couple opposé à la rotation principale, je mets % une saturation anticipée proportionnelle, ce qui : % Gardera le couple opposé à la rotation transversale % limitera le moment magnétique des bobines à 0.2 Am² mt_mgn=K_mat*B_prime'; maxi=[abs(mt_mgn(1)),abs(mt_mgn(2)),abs(mt_mgn(3))]; test=max(maxi); if test>=0.2 y=0.2*mt_mgn/test; end if test<0.2 y=mt_mgn; % y=0.2*mt_mgn/test; Loi à mettre en place?? si on veut accélérer la réduction des vitesses ( à voir en détail ) end % Fin du test y=y*proportion; end % Fin programme