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:
Mon Feb 03 22:37:57 2014 +0000
Parent:
26:dad0b2031173
Child:
28:b7ded82ee7da
Commit message:
Se aumento parametros P para miles de pulsos y M para millones de pulsos

Changed in this revision

setup.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/setup.cpp	Sun Dec 29 21:47:15 2013 +0000
+++ b/setup.cpp	Mon Feb 03 22:37:57 2014 +0000
@@ -91,28 +91,16 @@
     
         case 'R':                // Leer la velocidad en RPMs del encoder
         {
-            int ang = 0;
-            float rpm;
             
-            clear_encoder();                  // Encerar encoder
-            crono.reset();                   // Encerar el cronometro;
-            
-            while( ang == 0 )              // Esperar hasta q exista lectura del encoder
-                ang = read_encoder();     // Leer nueva posicion
-                
-            crono.stop();               // detener cronometro
-            rpm = ( ang * 500 ) / (crono.read_ms() * 3 );
-            
-            //  grados     1000 ms    60 s     1 Rev       500  Rev
-            //  ------  * -------- * ------ * ---------- = -------- 
-            //    ms         1s       1min     360 grad     3   Min
+            //Leer la posición del encoder
             
                 if( isPC )
-                    pc.printf("%f", rpm);
+                    pc.printf("encoder\n\r");
                 else
-                    RS_232.printf("%f", rpm);
+                    RS_232.printf("encoder\n\r");
             break;
         }
+        
         case 'H':                        // Establecer nueva frecuencia
         {
             setPTO( value );
@@ -123,9 +111,9 @@
                     pc.printf("OK\r\n");
                 else
                     RS_232.printf("OK\r\n");
-
             break;
         }
+        
         case 'K':
         {
             setPTO( value * 1000 );
@@ -182,12 +170,16 @@
             
             break;
         }
-            // Generar un numero definido de pulsos a la velocidad de posicionamiento  
+        
+        // Generar un numero definido de pulsos a la velocidad de posicionamiento  
         case 'G':
         {
             int pulsos = value;       //Numero de pulsos a generar
             t_alto = pulsos / fq_posicion;  //Tiempo que debe ser generado el tren de pulsos.
-        
+            
+            //DEBUG
+            pc.printf("Tiempo en timer en seg = %f", t_alto);
+            
             stopTimer2();               //Deten el tren de pulsos
             setPTO( fq_posicion );      //Nueva frecuencia de salida
             startTimer2();              //Inicia el tren de pulsos
@@ -204,6 +196,60 @@
 
             break;
         }
+        
+        // Generar un numero definido de MILES de pulsos a la velocidad de posicionamiento  
+        case 'P':
+        {
+            int pulsos = value * 1000;       //Numero de pulsos a generar
+            t_alto = pulsos / fq_posicion;  //Tiempo que debe ser generado el tren de pulsos.
+            
+            //DEBUG
+            pc.printf("Tiempo en timer en seg = %f", t_alto);
+            
+            stopTimer2();               //Deten el tren de pulsos
+            setPTO( fq_posicion );      //Nueva frecuencia de salida
+            startTimer2();              //Inicia el tren de pulsos
+            wait( t_alto );             //Espera hasta llegar a la posicion
+            stopTimer2();               //Posicion alcanzada ALTO. 
+            
+
+            // Envia un OK de comando recibido
+                if( isPC )
+                    pc.printf("OK\r\n");
+                else
+                    RS_232.printf("OK\r\n");
+            
+
+            break;
+        }
+        
+        // Generar un numero definido de MILLONES pulsos a la velocidad de posicionamiento  
+        case 'M':
+        {
+            int pulsos = value * 1000000;       //Numero de pulsos a generar
+            t_alto = pulsos / fq_posicion;  //Tiempo que debe ser generado el tren de pulsos.
+            
+            //DEBUG
+            pc.printf("Tiempo en timer en seg = %f", t_alto);
+            
+            stopTimer2();               //Deten el tren de pulsos
+            setPTO( fq_posicion );      //Nueva frecuencia de salida
+            startTimer2();              //Inicia el tren de pulsos
+            wait( t_alto );             //Espera hasta llegar a la posicion
+            stopTimer2();               //Posicion alcanzada ALTO. 
+            
+
+            // Envia un OK de comando recibido
+                if( isPC )
+                    pc.printf("OK\r\n");
+                else
+                    RS_232.printf("OK\r\n");
+            
+
+            break;
+        }
+        
+        
         case 'E':                       //Leer posicion angular relativa del encoder
         {
             if( isPC )