Buenas,
Después de unos dias sin actualizar estoy centrado en la parte del motor paso a paso.
Para ello he comprado un EasyDriver, que conecto de la siguiente forma:
Lo alimento con un transformador de 12v y 1 amperio.
El código que utilizo de momento es muy sencillo, un ejemplo encontrado en la web
#define STEPS 200
#define NUNVUELTAS 100
const int openDirection = STEPS * NUNVUELTAS;
const int closeDirection = STEPS * NUNVUELTAS * -1;
int DIR_PIN = 6; //Direction pin
int STEP_PIN = 7; //Stepper pin
void setup() {
Serial.begin(9600);
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
}
void loop() {
rotate(openDirection, getVelocity());
delay(2000);
rotate(closeDirection, getVelocity());
delay(4000);
}
void rotate(int steps, float speed){
//rotate a specific number of microsteps (8 microsteps per step) – (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest – Slower is stronger
int dir = (steps > 0)? HIGH:LOW;
steps = abs(steps);
digitalWrite(DIR_PIN,dir);
float usDelay = (1/speed) * 70;
for(int i=0; i < steps; i++){
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}
}
He detectado los siguientes problemas:
-
El Easydriver se calienta muchísimo, es normal?, creéis que seria mejor poner un rele para cortar la alimentación al EasyDriver cuando no se esta utilizando?
-
No puedo modificar la velocidad, Os adjunto 2 videos, uno a velocidad 1 (Se supone que el máximo) donde el motor funciona correctamente. Luego bajo la velocidad a 0.50 y el motor se comporta erróneamente
Otras dudas que tengo:
-
Quiero poner 6 switch de 3 posiciones con 2 led cada uno, de esta forma puedo abrir/automático/cerrar la válvula del riego de cada sección de forma manual. Como puedo hacer la conexión?, necesito 2 puertos analógicos por switch o 4 sumándo los leds?
-
He comprado un teclado 4x4, quiero utilizarlo para modificar variables insitu sin necesidad de desmontarlo y conectarlo al ordenador. Me gustaría hacerlo con interrupciones, para tener el código mucho mas legible y he visto que puedo hacerlo conviertiendolo para usar el bus I2C con esto:
PCF8574, es viable?
Un saludo y gracias