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.
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...
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
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...