Paso 1: Control de un motor de corriente continua con resistencia variable
Lo primero que haremos es conseguir cada motor funciona con un controlador.
Usar un joystick con potentiameter para controlar la velocidad y la dirección de un motor DC.
Esto se utilizará para:
-subir y bajar la garra
-abrir y cerrar el clow
Cadena de hardware:
Joystick (potentiameter) -> Arduino con código -> controlador de motor DC V1.1 (make.rrf.org\dcmd-1.1) - > motor
Se basa en: http://www.reprap.org/bin/view/Main/DC_Motor_Driver_1_1#Wire_up_test_devices
Aquí está el código de arduino:
Nota: esto sólo funciona un motor de corriente continua
********************ARDUINO*****************
OLLA para el control de velocidad motor DC y dirección *** / /
definir variables y pernos
int potPin = 2; Seleccione la entrada de pin para el potenciómetro
int val = 0; variable para almacenar el valor que viene desde el sensor
int j = 0;
int Dir_A = 4;
int Speed_A = 5;
void setup() {}
pinMode (Dir_A, salida);
pinMode (Speed_A, salida);
Serial.Begin(9600);
}
void loop() {}
Lea la ubicación de la palanca de mando y calcular la distancia y del centro de
Val = analogRead(potPin); leer el valor del sensor
j = val - 517; 517 es centro - cuán lejos del centro de
j = abs(j); valor absoluto
poner algunos límites en j para mantener valores PWM útil
por debajo de 100 no se mueva el motor y PWM máximo es 255
Si (j > = 510) {}
j = 510; lo más que puede hacer el pin PWM es de 255
}
Si (j < = 200 & & j > = 10) {}
j = 200; por debajo de 100 PWM el motor hace un pich alta sonido y no se mueve
}
Si (j < = 10) {}
j = 0; debajo de 10 el joystick es muy cercano al centro
}
Funcionamiento motor de DC A basado en las entradas analógicas de joystick
Si (val > = 520) {}
digitalWrite (Dir_A, alto); otra dirección
analogWrite (Speed_A, j/2); PWM salida (dividir por 2, ya que máximo es 255)
}
Si (val < = 510) {}
digitalWrite (Dir_A, LOW); //
analogWrite (Speed_A, j/2); //
}
Si (val < = 520 & & val > = 510) {}
analogWrite (Speed_A, 0); Apagar si el joystick está en el centro
}
imprimir valores para la depuración
Serial.Print(Val); Enviar números de PC por lo que se puede ver lo que pasa
Serial.Print(",");
Serial.println(j);
}