problemas control de servos con RKI-1580 (Rhino Robot Control)

Hola a todos, despues de buscar en google y no encontrar nada al respecto, escribo aquí por si alguno conoceis la placa y sabeis la solución, he comprado la placa RKI-1580 (Rhino Robot Control) para controlar los motores de mi proyecto (un rover de 6 ruedas), he comprado esta placa por su simplicidad para manejar los motores con el mando de la PS2… la placa esta basada en ARDUINO UNO R3 y tiene la opción de manejar dos servos desde el mando de la ps2… quiero montarle al rover la típica torre con “pan-tilt” y el control de los dos servos desde esta placa me ahorraría tener que incluir mas electronica…
alguno habeis trabajado con esta placa o sabeis por donde tengo que encaminar mis pasos…
muchas gracias de antemano y saludos

Hi,
Adjunto un link donde puedes bajar el manual del driver RKI-1580.

tauro0221:
Hi,
Adjunto un link donde puedes bajar el manuales del driver RKI-1580.https://robokits.download/datasheets//RKI-1580(User_Manual).pdf

Muchas gracias, ya lo tenía he conseguido meter un código que viene de ejemplo con un movimiento de 90-180 con retardo y loop que funciona, pero no consigo usar como pone en el manual mover el servicio con L1 o L2 del mando PS2...

Hi,
Aqui hay otro queposiblemente ya los a visto donde explica como usar el PS2. Vi un video y se ve bien hecho.

tauro0221:
Hi,
Aqui hay otro queposiblemente ya los a visto donde explica como usar el PS2. Vi un video y se ve bien hecho.

Robokits India, Easy to use, Versatile Robotics & DIY kits

si lo habia visto pero no he conseguido nada con los servos... pero lo peor es que con las pruebas he borrado el código con el que venia y que me permitía mover 2 motores con el mando y ahora tampoco soy capaz de encontrar el código para dejarlo como estaba de origen... :frowning:

Como no tengo.mucho tiempo para este proyecto dejaré aparcado el RKI 1580...
Que me aconsejáis para controlar un Rover de 6 ruedas con un motor cada una de 12v a 30rpm de alto torque (quiero que tenga una carga útil de al menos 4kg) y un rango de alcance de 500m a un km, había pensado de wifi pero al ser utilizado en campo abierto está opción la veo complicada, así que intentaré conectarla a un radio de 6 canales...
Muchas gracias de antemano por vuestras respuestas.
Saludos

Hi,
En el link que te envie tienen un code para correr 2 motores posiblemente es el mismo que borraste. Miralo para ver si es que trajo el robot. Yo lo copie mira ver si te trabaja. Adjunto el sketch y el link.

int RightMotor = 9;
// pin maping according to schematics
int LeftMotor = 10;  int R_dir = 8;
int L_dir = 12;
void setup() {
  // reducing the pwm  freq 
  TCCR1B = TCCR1B & 0B11111000 | 0B00000100;
  pinMode(RightMotor, OUTPUT);
  pinMode(LeftMotor, OUTPUT);
  pinMode(R_dir, OUTPUT);
  pinMode(L_dir, OUTPUT);
}
void loop() {
  Forward(255);
  delay(3000);
  Backward(255);
  delay(3000);
}
void Forward(unsigned int Pwm) {
  digitalWrite(R_dir, LOW);
  digitalWrite(L_dir, LOW);
  analogWrite(RightMotor, Pwm);
  analogWrite(LeftMotor, Pwm);
}
void Backward(unsigned int Pwm) {
  digitalWrite(R_dir, HIGH);
  digitalWrite(L_dir, HIGH);
  analogWrite(RightMotor, Pwm);
  analogWrite(LeftMotor, Pwm);
}
void Left(unsigned int Pwm) {
  digitalWrite(R_dir, LOW);
  digitalWrite(L_dir, HIGH);
  analogWrite(RightMotor, Pwm);
  analogWrite(LeftMotor, Pwm);
}
void Right(unsigned int Pwm) {
  digitalWrite(R_dir, HIGH);
  digitalWrite(L_dir, LOW);
  analogWrite(RightMotor, Pwm);
  analogWrite(LeftMotor, Pwm);
}
void Stop() {
  digitalWrite(RightMotor, LOW);
  digitalWrite(LeftMotor, LOW);
}

https://robokits.download/datasheets//RKI-1580(User_Manual).pdf

tauro0221:
Hi,
En el link que te envie tienen un code para correr 2 motores posiblemente es el mismo que borraste. Miralo para ver si es que trajo el robot. Yo lo copie mira ver si te trabaja. Adjunto el sketch y el link.

int RightMotor = 9;

// pin maping according to schematics
int LeftMotor = 10;  int R_dir = 8;
int L_dir = 12;
void setup() {
  // reducing the pwm  freq
  TCCR1B = TCCR1B & 0B11111000 | 0B00000100;
  pinMode(RightMotor, OUTPUT);
  pinMode(LeftMotor, OUTPUT);
  pinMode(R_dir, OUTPUT);
  pinMode(L_dir, OUTPUT);
}
void loop() {
  Forward(255);
  delay(3000);
  Backward(255);
  delay(3000);
}
void Forward(unsigned int Pwm) {
  digitalWrite(R_dir, LOW);
  digitalWrite(L_dir, LOW);
  analogWrite(RightMotor, Pwm);
  analogWrite(LeftMotor, Pwm);
}
void Backward(unsigned int Pwm) {
  digitalWrite(R_dir, HIGH);
  digitalWrite(L_dir, HIGH);
  analogWrite(RightMotor, Pwm);
  analogWrite(LeftMotor, Pwm);
}
void Left(unsigned int Pwm) {
  digitalWrite(R_dir, LOW);
  digitalWrite(L_dir, HIGH);
  analogWrite(RightMotor, Pwm);
  analogWrite(LeftMotor, Pwm);
}
void Right(unsigned int Pwm) {
  digitalWrite(R_dir, HIGH);
  digitalWrite(L_dir, LOW);
  analogWrite(RightMotor, Pwm);
  analogWrite(LeftMotor, Pwm);
}
void Stop() {
  digitalWrite(RightMotor, LOW);
  digitalWrite(LeftMotor, LOW);
}




https://robokits.download/datasheets//RKI-1580(User_Manual).pdf

Muchas gracias creo que es el mismo que he probado, luego lo intento otra vez y os cuento

código probado y lo que hace es mover el motor X segundos hacia la derecha y X segundos hacia la izquierda en bucle, no consigo ver la forma de moverlo con el mando...

he encontrado este codigo pero lo veo como meterlo

	PSXINIT();
	UART_INIT(9600);
int main(void)
{
	char speed1;
	SERVOINIT();
	UART_INIT(115200);
	INIT();
	MOTORINIT();
	PSXINIT();
	LED2OFF();
	LED2ON();
	SERVOMAX[0]=230;
	SERVOMIN[0]=25;
	SERVOSPEED[0]=200;
	SERVO[0]=127;
	SERVOMAX[1]=230;
	SERVOMIN[1]=25;
	SERVOSPEED[1]=200;
	SERVO[1]=127;
	

	while (1) 
	{
		PSXPOLL(); 

		if(LJOYY>133)
		{
			speed1=(LJOYY-128)* .665 + 15;
			if((RJOYX>133) || (LJOYX>133))
			{
				RMF(speed1);
				LMS();
			}
			else if((RJOYX<123) || (LJOYX<123))
			{
				LMF(speed1);
				RMS();
			}
			else
			{
				BACKWARD(speed1);
			}
		}
		else if(LJOYY<123)
		{
			speed1=(128-LJOYY)* .665 + 15;
			if((RJOYX>133) || (LJOYX>230))
			{
				RMB(speed1);
				LMS();
			}
			else if((RJOYX<123) || (LJOYX<25))
			{
				LMB(speed1);
				RMS();
			}
			else
			{
				FORWARD(speed1);
			}			
		}
		else if(LJOYX<123)
		{
			LEFT((128-LJOYX)* .665 + 15);
		}
		else if(LJOYX>133)
		{
			RIGHT((LJOYX-128)* .665 + 15);
		}
		else if(RJOYX<123)
		{
			LEFT((128-RJOYX)* .665 + 15);
		}
		else if(RJOYX>133)
		{
			RIGHT((RJOYX-128)* .665 + 15);
		}
		else
		{
			STOP();
		}
		
		
		
		if(PSX_A==1)
		{
			if (SERVO[0] >= SERVOMIN[0])
				SERVO[0]--;
		}
		
		if(PSX_X==1)
		{
			if (SERVO[0] <= SERVOMAX[0])
				SERVO[0]++;
		}
		
		
		if(PSX_D==1)
		{
			if (SERVO[1] <= SERVOMAX[1])
				SERVO[1]++;
		}
		
		if(PSX_O==1)
		{
			if (SERVO[1] >= SERVOMIN[1])
				SERVO[1]--;
		}
		
		
		if(PSX_ST==1)
		{
			SERVO[0]=127;
			SERVO[1]=127;
		}
		
		DELAYMS(20);
	}
}

viene de aquí HOW TO MAKE A WIRELESS PS2 REMOTE CONTROLLED ROBOT - Robokits Resources

estoy por tirar momentáneamente la toalla :frowning:

Hi,
Si te fijas en el loop lo unico que hace es mover el carro hacia el frenta y hacia atras. Tu dices que solmenta se mueve para los lados. Puede ser que tiene los cables cambiados. Mira los comandos que tienes en el loop.

[code]void loop() {
  Forward(255);
  delay(3000);
  Backward(255);
  delay(3000);
}

[/code]

tauro0221:
Hi,
Si te fijas en el loop lo unico que hace es mover el carro hacia el frenta y hacia atras. Tu dices que solmenta se mueve para los lados. Puede ser que tiene los cables cambiados. Mira los comandos que tienes en el loop.

[code]void loop() {

Forward(255);
  delay(3000);
  Backward(255);
  delay(3000);
}


[/code]

tienes razón los motores hacen el movimiento hacia el frente y hacia atrás...