Stap 4: nu voor de elektronica!
- Upload een programma naar de Arduino te rijden de steppers wanneer de flex-sensor wordt geactiveerd. Mijn code is hieronder!
- Verbind de stepper driver planken met stappenmotoren en Arduino. Ik gebruikte pinnen 2, 3, 4 en 5 en pennen 8, 9, 10 en 11 voor de twee stepper driver boards, maar u kunt welke pinnen u wilt en de onderstaande code dienovereenkomstig aan te passen.
- De sensor van de bocht heeft zeer korte benen, dus ik gesoldeerd lange stukken van vaste kern draad om de poten uit te breiden verder de rest van het project. Ik gebruikte krimp omslag (elektrische tape werkt ook) voor de bescherming van de verbinding, zoals de bocht sensor veel gebruik krijgt en ik niet de benen wilde te breken.
- Maak een divider spanning met de bocht sensor en een weerstand: de bocht sensor verbinden met 5V aan de ene kant en de 17.3 kohm weerstand anderzijds. Dit gewricht moet een derde been, dat naar A0 pin op de arduino gaat. Sluit vervolgens de resterende been van de weerstand op grond van de Arduino.
- Tot slot, het allemaal uit te testen! Buig de sensor en zien als de motoren draaien.
Hieronder is de Arduino schets die ik gebruikt om de stappenmotoren met de flex-sensor controle, en het is ook een bijlage hierboven.
/**
* Code om te zetten van een stappenmotor als een flex-sensor wordt geactiveerd.
*
*
* De flex wordt gemeten door een spanning divider met een 17.3kohm weerstand en een 2.2"
* Buig sensor. De weerstand gaat op grond van de Arduino, de flex-sensor gaat naar 5V,
* en het midden van de scheidingslijn gaat naar A0.
*
* Een stepper is bedraad via arduino pin 2, 3, 4 en 5 overeenkomt met
* de stepper bestuur pinnen 1N1, 1N2, 1N3 en 1N4. De andere is op pin 8, 9, 10 en 11.
*/
#include
#define STEPS_PER_MOTOR_REVOLUTION 32
---(Stappen per uitgaande as van de vermindering van de versnelling)---
#define STEPS_PER_OUTPUT_REVOLUTION 32 * 64 //2048
Stepper-stepper1 (STEPS_PER_MOTOR_REVOLUTION, 8, 9, 10 en 11);
Stepper-stepper2 (STEPS_PER_MOTOR_REVOLUTION, 2, 3, 4 en 5);
int STEPS_PER_FLEX = 5; De graden van flex waartegen we aannemen de gebruiker dat vraagt een knuffel.
int FLEX_THRESHOLD = 20;
int MAX_ROTATION = STEPS_PER_OUTPUT_REVOLUTION;
int MIN_ROTATION = 0;
int currentRotation = 0;
De invoer pin.
int input = 0;
VOID Setup {}
stepper1.setSpeed(600);
stepper2.setSpeed(600);
}
void loop {}
int sensor = analogRead(input);
De flex-bedrag toewijzen aan een hoek tussen 0 en 90 graden.
De min en max hier zijn van observatie en moeten worden bijgewerkt voor elke hugbot.
int flex = kaart (sensor, 470, 200, 0, 90);
int rotationAmt = 0;
Bereken of we afhankelijk van de hoeveelheid flex draaien moeten.
Alleen STEPS_PER_FLEX draaien op een moment om een reactieve uiterlijk te behouden.
Als (flex > FLEX_THRESHOLD) {}
rotationAmt = min (MAX_ROTATION - currentRotation, STEPS_PER_FLEX);
} else {}
rotationAmt = -1 * min (currentRotation - MIN_ROTATION, STEPS_PER_FLEX);
}
Als (rotationAmt! = 0) {}
currentRotation += rotationAmt; Beweeg de armen in tegengestelde richtingen.
stepper1.Step(rotationAmt);
stepper2.Step(-rotationAmt);
}
}