Paso 3: codificación
Y este es el código que utilizamos para el control del cabrestante. Usted puede también encontrarlo aquí:
https://github.com/openMolmol/hack-acmotor-with-Relay-and-Arduino
el código incluye un retraso según el ciclo de trabajo del motor que es el 25%. Esto significa que si utilizas durante 30 segundos usted tendrá que esperar unos 2 minutos para utilizarlo de nuevo para evitar dañar el motor.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Estamos utilizando dos relés de estado sólido para controlar el motor de CA con un Arduino Uno
Conecte la resistencia de 200 k entre dos terminales del condensador del motor
Permita que el motor tiene 10 segundos de tiempo de funcionamiento cada vez
el código se basa en un motor de CA con ciclo de trabajo 25%
Las patillas del relé conectan al arduino digital PWM Pin 10 y 11, tierra a tierra
Circuito SSR convertido Eric Rosenthal
yesyesno LLC Jan, 17, 2013 mailto: molmol
int PinDown = 6; elegir la clavija para el relé
int PinUp = 5; elegir la clavija para el relé
int nSecondsMoving = 10; unidad en segundos; NO van menos de 10 segundos
int nSecondsMovingUp = nSecondsMoving * 1.2; el motor sube 1,2 veces más largo que desciende
int nSecondsPausedMin = nSecondsMoving * 4;
se trata de nSecondsMoving * 4 - tenemos que esperar 2 minutos, si nos hemos movido durante 30 segundos
int nSecondsPausedMax = nSecondsMoving * 4 + 10;
se trata de nSecondMovind * 4 + algo que añadir para la aleatoriedad, es decir 10 segundos...
firstTime booleano;
void setup() {}
Serial.Begin(9600);
pinMode (PinUp, salida); declarar relayPin como salida
motor pasará a primera
pinMode (PinDown, salida); declarar relayPin como salida
firstTime = true;
}
void loop() {}
digitalWrite (PinUp, LOW); desactivar el relé de
digitalWrite (PinDown, LOW); desactivar el relé de
Si (firstTime == true) {}
retardo (1 * 1000); 1 segundo de retraso en el primer arranque
} else {}
retardo (random (nSecondsPausedMin, nSecondsPausedMax) * 1000); aleatorio de espera entre cada operación de
}
digitalWrite (PinUp, alto); activar relé
Delay(nSecondsMovingUp*1000);
digitalWrite (PinUp, LOW); desactivar el relé de
retardo (random (nSecondsPausedMin, nSecondsPausedMax) * 1000);
digitalWrite (PinDown, alto); activar relé
Delay(nSecondsMoving * 1000);
digitalWrite (PinDown, LOW); desactivar el relé de
firstTime = false;
extremo abajo
}