Proyecto de Tesis en Mecatrónica. Universidad Técnica del Norte. Ernesto Palacios <mecatronica.mid@gmail.com>
Dependencies: EthernetNetIf HTTPServer QEI_hw RPCInterface mbed
Diff: setup.cpp
- Revision:
- 26:dad0b2031173
- Parent:
- 25:1910a55ff0a3
- Child:
- 27:b8254b76ec57
--- a/setup.cpp Thu Apr 11 04:31:37 2013 +0000 +++ b/setup.cpp Sun Dec 29 21:47:15 2013 +0000 @@ -32,7 +32,7 @@ // la velocidad de posicionamiento en Hz float t_alto; // para el posicionamiento del motor -const int addres = 0x36; // Direccion del enconder en modo esclavo +int fq_actual = 0; // Ultimo valor seteado para el tren de pulsos int read_encoder() { @@ -107,38 +107,79 @@ // ------ * -------- * ------ * ---------- = -------- // ms 1s 1min 360 grad 3 Min - if( isPC ) - pc.printf("%f", rpm); - else - RS_232.printf("%f", rpm); + if( isPC ) + pc.printf("%f", rpm); + else + RS_232.printf("%f", rpm); break; } case 'H': // Establecer nueva frecuencia { setPTO( value ); + fq_actual = value; + + // Envia un OK de comando recibido + if( isPC ) + pc.printf("OK\r\n"); + else + RS_232.printf("OK\r\n"); + break; } case 'K': { setPTO( value * 1000 ); + fq_actual = value; + // Envia un OK de comando recibido + if( isPC ) + pc.printf("OK\r\n"); + else + RS_232.printf("OK\r\n"); + break; } case 'A': // Cambiar voltaje de salida { aout = (float)( value + 10000.0 ) / 20000.0; + + // Envia un OK de comando recibido + if( isPC ) + pc.printf("OK\r\n"); + else + RS_232.printf("OK\r\n"); + break; } case 'D': // Cambiar la direccion { + stopTimer2(); pin_dir = value; wait_us( 2 ); - startTimer2(); + + if ( fq_actual != 0 ) + { + startTimer2(); + } + + // Envia un OK de comando recibido + if( isPC ) + pc.printf("OK\r\n"); + else + RS_232.printf("OK\r\n"); + break; } case 'V': //Setear la velocidad de Posicionamiento { fq_posicion = value; + + // 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 pulsos a la velocidad de posicionamiento @@ -152,6 +193,15 @@ 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 @@ -162,12 +212,28 @@ RS_232.printf( "%d",read_encoder() ); break; } + case 'Z': //Limpiar contador encoder clear_encoder(); + + // Envia un OK de comando recibido + if( isPC ) + pc.printf("OK\r\n"); + else + RS_232.printf("OK\r\n"); + break; case 'S': //Encender el Servo + pin_son = value; + + // Envia un OK de comando recibido + if( isPC ) + pc.printf("OK\r\n"); + else + RS_232.printf("OK\r\n"); + break; } @@ -198,11 +264,11 @@ aout = 0.5 ; if(isPC) - pc.printf( "AL" ); //ALARMA! solo es AL para que + pc.printf( "AL\r\n" ); //ALARMA! solo es AL para que //sea conciso con el modo ETH y funcione //bien en LabVIEW. else - RS_232.printf( "AL" ); + RS_232.printf( "AL\r\n" ); } int getMRvalue( int fout ) @@ -291,14 +357,14 @@ setMR2( getMRvalue( freq ) ); // Cambiar frefuencia startTimer2(); // Iniciar Timer if( pin_alm == 0 ) - sprintf( output,"Ok" ); + sprintf( output,"OK\r\n" ); else sprintf( output,"AL" ); }else{ stopTimer2(); LPC_TIM2->TC = 0x00; // Resetear Timer if( pin_alm == 0 ) - sprintf( output,"Ok" ); + sprintf( output,"OK\r\n" ); else sprintf( output,"AL" ); } @@ -316,7 +382,7 @@ stopTimer2(); //Posicion alcanzada ALTO. if( pin_alm == 0 ) - sprintf( output,"Ok" ); + sprintf( output,"OK\r\n" ); else sprintf( output,"AL" ); @@ -329,7 +395,7 @@ // Esta funcion cambia la velocidad con la que se // posicionara el eje del motor en un angulo determinado if( pin_alm == 0 ) - sprintf( output,"Ok" ); + sprintf( output,"OK\r\n" ); else sprintf( output,"AL" ); @@ -340,7 +406,7 @@ int vout = atoi( input ); aout = (float)( vout + 10000 ) / 20000; if( pin_alm == 0 ) - sprintf( output,"Ok" ); + sprintf( output,"OK\r\n" ); else sprintf( output,"AL" ); } @@ -354,7 +420,7 @@ pin_dir = value; if( pin_alm == 0 ) - sprintf( output,"Ok" ); + sprintf( output,"OK\r\n" ); else sprintf( output,"AL" ); } @@ -368,7 +434,7 @@ pin_son = value; if( pin_alm == 0 ) - sprintf( output,"Ok" ); + sprintf( output,"OK\r\n" ); else sprintf( output,"AL" ); @@ -389,7 +455,7 @@ clear_encoder(); if( pin_alm == 0 ) - sprintf( output,"Ok" ); + sprintf( output,"OK\r\n" ); else sprintf( output,"AL" ); @@ -397,7 +463,6 @@ void getRPM_eth( char * input, char * output ) { - int ang = 0; float rpm; rpm = encoder.CalculateRPM( encoder.GetVelocityCap() , // ultima velocidad leida desde el encoder @@ -406,7 +471,7 @@ if( pin_alm == 0 ) - sprintf( output,"Ok" ); + sprintf( output,"OK\r\n" ); else sprintf( output,"%f", rpm );