Proyecto de Tesis en Mecatrónica. Universidad Técnica del Norte. Ernesto Palacios <mecatronica.mid@gmail.com>

Dependencies:   EthernetNetIf HTTPServer QEI_hw RPCInterface mbed

Files at this revision

API Documentation at this revision

Comitter:
Yo_Robot
Date:
Tue Feb 04 16:40:15 2014 +0000
Parent:
28:b7ded82ee7da
Child:
30:413d1a6648b5
Commit message:
Se cambiaron los nombres de algunas funciones seriales, y de Ethernet, se agregaron las funciones del encoder con la Interfaz QEI, a?n no se prueban

Changed in this revision

setup.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/setup.cpp	Tue Feb 04 15:39:53 2014 +0000
+++ b/setup.cpp	Tue Feb 04 16:40:15 2014 +0000
@@ -34,7 +34,7 @@
 
 int fq_actual = 0;    // Ultimo valor seteado para el tren de pulsos
 
-int read_encoder()
+int velocidad_rpm()
 {
     return encoder.GetPosition();
 }
@@ -89,15 +89,15 @@
     switch( command )
     {
     
-        case 'R':                // Leer la velocidad en RPMs del encoder
+        case 'E':                // Leer el contador del encoder.
         {
             
             //Leer la posición del encoder
             
                 if( isPC )
-                    pc.printf("encoder\n\r");
+                    pc.printf("%d\n\r",encoder.GetPosition());
                 else
-                    RS_232.printf("encoder\n\r");
+                    RS_232.printf("%d\n\r",encoder.GetPosition());
             break;
         }
         
@@ -172,7 +172,7 @@
         }
         
         // Generar un numero definido de pulsos a la velocidad de posicionamiento  
-        case 'G':
+        case 'P':
         {
             float pulsos = value;       //Numero de pulsos a generar
             t_alto = (float)(pulsos / fq_posicion);  //Tiempo que debe ser generado el tren de pulsos.
@@ -198,7 +198,7 @@
         }
         
         // Generar un numero definido de MILES de pulsos a la velocidad de posicionamiento  
-        case 'P':
+        case 'M':
         {
             float pulsos = value * 1000;       //Numero de pulsos a generar
             t_alto = (float)(pulsos / fq_posicion);  //Tiempo que debe ser generado el tren de pulsos.
@@ -224,7 +224,7 @@
         }
         
         // Generar un numero definido de MILLONES pulsos a la velocidad de posicionamiento  
-        case 'M':
+        case 'N':
         {
             float pulsos = value * 1000000;       //Numero de pulsos a generar
             t_alto = (float)(pulsos / fq_posicion);  //Tiempo que debe ser generado el tren de pulsos.
@@ -250,17 +250,18 @@
         }
         
         
-        case 'E':                       //Leer posicion angular relativa del encoder
+        case 'R':   // Leer la velocidd del encoder en RPM's
         {
             if( isPC )
-                pc.printf( "%d",read_encoder() );
+                pc.printf( "%d",velocidad_rpm() );
             else
-                RS_232.printf( "%d",read_encoder() );
+                RS_232.printf( "%d",velocidad_rpm() );
             break;
         }
 
         case 'Z':           //Limpiar contador encoder
-            clear_encoder();
+            encoder.Reset(QEI_RESET_POS);
+            encoder.Reset(QEI_RESET_VEL);
             
             // Envia un OK de comando recibido
                 if( isPC )
@@ -429,7 +430,8 @@
 void setANG_eth( char * input, char * output )
 {
     long int pulsos = atol( input );       //Numero de pulsos a generar
-    t_alto = pulsos / fq_posicion;  //Tiempo que debe ser generado el tren de pulsos.
+    float pulsos_f = (float) pulsos;
+    t_alto = pulsos_f / fq_posicion;  //Tiempo que debe ser generado el tren de pulsos.
     
     stopTimer2();               //Deten el tren de pulsos
     setPTO( fq_posicion );      //Nueva frecuencia de salida
@@ -500,7 +502,7 @@
 void getENC_eth( char * input, char * output )
 {
     if( pin_alm == 0 )
-        sprintf( output,"%d", read_encoder() );
+        sprintf( output,"%d", encoder.GetPosition() );
     else
         sprintf( output,"AL" );
 }
@@ -508,7 +510,8 @@
 
 void setENC_eth( char * input, char * output )
 {
-    clear_encoder();
+    encoder.Reset(QEI_RESET_POS);
+    encoder.Reset(QEI_RESET_VEL);
     
     if( pin_alm == 0 )
         sprintf( output,"OK\r\n" );
@@ -519,17 +522,16 @@
 
 void getRPM_eth( char * input, char * output )
 {
-    float rpm;
+    int rpm;
     
-    rpm = encoder.CalculateRPM( encoder.GetVelocityCap() ,   // ultima velocidad leida desde el encoder
-                          360                          // numero de revoluciones por vuelta del encoder
-                         );  
-                         
+    rpm = encoder.CalculateRPM( encoder.GetVelocityCap(), 360);   // ultima velocidad leida desde el encoder
+                                                    // numero de revoluciones por vuelta del encoder
+                          
     
     if( pin_alm == 0 )
-        sprintf( output,"OK\r\n" );
+        sprintf( output,"%d",rpm );
     else
-        sprintf( output,"%f", rpm );
+        sprintf( output,"AL" );
     
     
 }