Ver

Dependencies:   mbed QEI PTC3471 USBDevice

Revision:
1:e2066df0a7a6
Parent:
0:f4d8c80475a0
Child:
2:61c074362ef1
--- a/main.cpp	Fri Aug 25 14:22:44 2017 +0000
+++ b/main.cpp	Thu Aug 09 19:45:40 2018 +0000
@@ -14,12 +14,12 @@
 
 Ticker Control_Interrupt;                                                       // Interrupção de Tempo para acionamento do algoritmo de controle
 
-QEI Encoder_Motor (PTD0,PTB17,NC, 300, QEI::X4_ENCODING);                      // Objeto de leitura do encoder do motor
-QEI Encoder_Pendulo (PTA12,PTA13,NC, 500, QEI::X4_ENCODING);                    // Objeto de leitura do encoder do pêndulo
+QEI Encoder_Motor (PTD0,PTB17,NC, 300, QEI::X4_ENCODING);                       // Objeto de leitura do encoder do motor
+QEI Encoder_Pendulo (PTA12,PTA13,NC, 600, QEI::X4_ENCODING);                    // Objeto de leitura do encoder do pêndulo
 
 DigitalOut Horario(PTC1);                                                       // DigitalOut que sinaliza se deve virar o motor no sentido horário
-DigitalOut AntiHorario(PTD6);                                                   // DigitalOut que sinaliza se deve virar o motor no sentido anti-horário
-PwmOut Motor(PTD5);                                                             // AnalogOut (PWM) que indica de 0 a 1 qual o módulo da tensão sobre o motor
+DigitalOut AntiHorario(PTD5); //                                                // DigitalOut que sinaliza se deve virar o motor no sentido anti-horário
+PwmOut Motor(PTD6); //                                                          // AnalogOut (PWM) que indica de 0 a 1 qual o módulo da tensão sobre o motor
 
 bool Flag_Controle = false;
 int PlotCount = 0;
@@ -66,7 +66,7 @@
     /*********************************************************************************/
     /** Inicialização do algoritmo de proteção. NUNCA DEVE SER RETIRADO DO PROGRAMA **/
     /**/                                wait(5);                                   /**/
-    /**/         Protecao_Init(&Encoder_Motor, &Control_Interrupt, pi/2);        /**/
+    /**/         Protecao_Init(&Encoder_Motor, &Control_Interrupt, pi);        /**/
     /** Inicialização do algoritmo de proteção. NUNCA DEVE SER RETIRADO DO PROGRAMA **/
     /*********************************************************************************/
     
@@ -82,11 +82,8 @@
             if(PlotCount>=100){                                                  // Controla para que o printf ocorra apenas uma vez a cada 10 iterações
                 
                 PlotCount = 0;
-                //pc.printf("Theta_0: %f, dTheta_0: %f\n\r", th0*180/pi, dth0*180/pi);
-                //pc.printf("Theta_1: %f, dTheta_1: %f\n\r", th1*180/pi, dth1*180/pi);
-                
-                pc.printf("Theta_0: %f\n\r", th0*180/pi);
-                pc.printf("Theta_1: %f\n\r", th1*180/pi);
+                pc.printf("Theta_0: %f, dTheta_0: %f\n\r", th0*180/pi, dth0*180/pi);
+                pc.printf("Theta_1: %f, dTheta_1: %f\n\r", th1*180/pi, dth1*180/pi);
                 
             }
             
@@ -111,10 +108,10 @@
     dth0_f = (tau/(Ts+tau))*dth0_f + (Ts/(Ts+tau))*dth0;
     dth1_f = (tau/(Ts+tau))*dth1_f + (Ts/(Ts+tau))*dth1;  
     
-    u=0;
+    /** Inserir Calculo do Sinal de Controle **/
+    u = 0;
 
 
-    
     if(u>1)
         u=1;
     if(u<-1)
@@ -159,8 +156,8 @@
     th1_a=th1;                                                    
     
     /** Leituras cruas dos ângulos do encoder **/
-    phi0 = pi*Encoder_Motor.getPulses()/600.0;                                   // (pulsos_lidos/pulsos_por_volta)*pi = angulo_em_radianos
-    phi1 = pi*Encoder_Pendulo.getPulses()/1000.0;                                // (pulsos_lidos/pulsos_por_volta)*180 = angulo_em_graus
+    phi0 = pi*Encoder_Motor.getPulses()/600.0;                                  // (eventos_lidos/eventos_por_volta)*2*pi = angulo_em_radianos
+    phi1 = pi*Encoder_Pendulo.getPulses()/1200.0;                               // (eventos_lidos/eventos_por_volta)*360  = angulo_em_graus
     
     th0 = phi0;
     /** Tratamento do ângulo lido para ser zero na vertical para cima **/       // Como o encoder é incremental quando inicializamos o programa com o pêndulo na posição