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:
- 29:52932326c45a
- Parent:
- 28:b7ded82ee7da
- Child:
- 30:413d1a6648b5
diff -r b7ded82ee7da -r 52932326c45a setup.cpp --- 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" ); }