Paso 4: ahora para la electrónica!
- Cargar un programa en el Arduino para conducir los motores PAP cuando se activa el sensor de flex. Mi código está a continuación!
- Conectar las tarjetas de controlador paso a paso a los motores paso a paso y Arduino. Utiliza pines 2, 3, 4 y 5 y pines 8, 9, 10 y 11 para los dos tableros del controlador paso a paso, pero puede utilizar cualquier pins que te gusta y ajusta en consecuencia el código a continuación.
- El sensor de curva tiene las patas muy cortas, por lo que soldados largos trozos de cable de núcleo sólido a las piernas para ampliar más lejos el resto del proyecto. Usé el abrigo del encogimiento (cinta eléctrica funciona también) para proteger la conexión, como el sensor de curva va a obtener un montón de uso y no quiero romper las piernas.
- Crear un divisor del voltaje con el sensor de curva y resistencia: Conecte el sensor de curva a 5V en un lado y la resistencia de 17,3 kohm en el otro. Esta Junta debe tener una tercera pierna que va al pin A0 en el arduino. Conectar el tramo restante de la resistencia a tierra de Arduino.
- Por último, probar todo! El sensor de la curva y ver si los motores de giro.
A continuación es el sketch de Arduino que utiliza para controlar los motores paso a paso con el sensor flex, y también es un archivo adjunto arriba.
/**
* Código para girar un motor paso a paso cuando se activa un sensor flex.
*
*
* El cable se mide por un divisor de tensión con una 17.3kohm resistencia y 2.2"
* flex sensor. La resistencia va a masa de Arduino, el sensor flex va a 5V,
* y el centro del divisor va a A0.
*
* Un paso a paso está cableado a través de los pines de arduino 2, 3, 4 y 5 correspondiente a
tablero paso a paso pasadores 1N1, 1N2, 1N3 y 1N4. La otra es en los pines 8, 9, 10 y 11.
*/
#include
#define STEPS_PER_MOTOR_REVOLUTION 32
---(Pasos por eje de reducción del engranaje de salida)---
#define STEPS_PER_OUTPUT_REVOLUTION 32 * 64 //2048
Paso a paso stepper1 (STEPS_PER_MOTOR_REVOLUTION, 8, 10, 9, 11);
Paso a paso stepper2 (STEPS_PER_MOTOR_REVOLUTION, 2, 3, 4, 5);
int STEPS_PER_FLEX = 5; Los grados de flexión en el cual asumimos que el usuario está solicitando un abrazo.
int FLEX_THRESHOLD = 20;
int MAX_ROTATION = STEPS_PER_OUTPUT_REVOLUTION;
int MIN_ROTATION = 0;
currentRotation int = 0;
La clavija de entrada.
int entrada = 0;
void setup() {}
stepper1.SETSPEED(600);
stepper2.SETSPEED(600);
}
void loop() {}
sensor int = analogRead(input);
Mapa de la cantidad de flex a un ángulo entre 0 y 90 grados.
El min y max aquí son de observación y deben ser actualizados para cada hugbot.
int flex = mapa (sensor, 470, 200, 0, 90);
int rotationAmt = 0;
Calcular si debemos girar dependiendo de la cantidad de flexión.
Gire sólo STEPS_PER_FLEX a la vez para mantener un aspecto reactivo.
Si (flex > FLEX_THRESHOLD) {}
rotationAmt = min (MAX_ROTATION - currentRotation, STEPS_PER_FLEX);
} else {}
rotationAmt = -1 * min (currentRotation - MIN_ROTATION, STEPS_PER_FLEX);
}
Si (rotationAmt! = 0) {}
currentRotation += rotationAmt; Los brazos se mueven en direcciones opuestas.
stepper1.Step(rotationAmt);
stepper2.Step(-rotationAmt);
}
}