Vamos a controlar un motor, lo conectaremos según el esquema adjunto al pin 9 de Arduino, para poder modular el pulso, realizaremos varias prácticas:
1. Arrancamos el motor, esperamos un tiempo, después apagamos el motor.
int motorPin = 9; void setup() { pinMode(motorPin, OUTPUT); } void loop() { int onTime = 2500; int offTime = 1000; digitalWrite(motorPin, HIGH); delay (onTime); digitalWrite(motorPin, LOW); delay (offTime); }
2. Al igual que antes cambiabamos la iluminación del led, ahora podemos controlar la velocidad del motor con la función analogWrite(pin, valor).
int motorPin = 9; void setup() { pinMode(motorPin, OUTPUT); } void loop() { int onSpeed = 200; int onTime = 2500; int offSpeed = 50; // a number between 0 (stopped) and 255 (full speed) int offTime = 1000; //the number of milliseconds for the motor to turn off for analogWrite(motorPin, onSpeed); // turns the motor On delay(onTime); // waits for onTime milliseconds analogWrite(motorPin, offSpeed); // turns the motor Off delay(offTime); // waits for offTime milliseconds }
3. Aceleramos y desaceleramos el motor, ahora usamos un bucle para acelerar y frenar el motor, usando del mismo modo la función analogWrite(), que en el caso anterior.
int motorPin = 9; void setup() { pinMode(motorPin, OUTPUT); } void loop() { int delayTime = 50; tor for(int i = 0; i <256; i++){ //aceleramos analogWrite(motorPin, i); delay(delayTime); } for(int i = 255; i>= 0; i--){ //frenamos analogWrite(motorPin, i); delay(delayTime); } }
4. Usamos ahora un potenciómetro para variar la velocidad del motor. El potenciómetro se conecta de la siguiente forma, extremos a v+ y gnd y el pin de control al pin 0 de las entradas análogicas de Arduino.
Arduino dispone de 6 entradas analógicas, que tienen un voltaje de 0 a 5 voltios que convertidas a señales digitales tendríamos de 0 a 1024, esto es 10 bits de resolución. ¿Por qué dividimos por 4 analogRead()?, pues porque esta función devuelve un valor comprendido entre 0 y 1024 (10 bits) y la función analogWrite () toma valores comprendidos entre 0 y 255 (8 bits).
int motorPin = 9; int potPin=0; int potValue; void setup() { pinMode(motorPin, OUTPUT); } void loop() { potValue = analogRead(potPin) / 4; analogWrite(motorPin, potValue); }
5. Control de un servomotor
#include <servo.h> Servo myservo; // creamos un objeto servo para controlar nuestro servo int pos = 0; // variable para almacenar la posición del servo void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { for(pos = 0; pos <180; pos += 1) // avanza de 0 a 180 grados { // en saltos de un grado myservo.write(pos); // mueve a la posición de la variable 'pos' delay(15); // espera 15ms } for(pos = 180; pos>=1; pos-=1) // va de 180 a 0 grados { myservo.write(pos); delay(15); } }
Las cinco prácticas están representadas en el siguiente vídeo.
por favor como podría encender y apagar un motor con un pulsador
hola quiero mover un servomotor cada hora 45°por 500ms me puedes instruir, si has usado la funcion time
Buenos dias,
Me gustaria me ayudaras a reducir la velocidad de este servo al activar un pulsador. Es que lo está haciendo muy rapido y deseo que me ayudes a colocar un ´codigo adicional para reducir hasta un 80% la velocidad del servomotor.
Muchas gracias,
Este es el código actual
#include
Servo myservo;
const int buttonPin = 2;
int val;
int buttonState = 0;
void setup()
{
myservo.attach(9);
pinMode(buttonPin, INPUT);
}
void loop()
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
val = 90;
}
else {
val = 0;
}
myservo.write(val);
delay(15);
}
¿Me podrías dar el nombre de los materiales que usaste?
oye sabras como controlar un servo en tres posiciones con un pushbutton… me salvarias la vida si lo supieses…:)
q buen proyecto ojala pudieran subir un controlador de velocidad de un motor con sensor de proximidad
Alguien sabe como hacer para controlar un motor de 220 Volts
es para unas ventanas de techo!PUedo usar lo mismo que esta aca pero intercalando reles?
Gracias
Saludos
¿se puede utilizar un 2n2222 como transistor?
por cierto excelentes aportes.
Salva respondio que el transistor Q1 queda bien con el BD135.
Con respecto al diodo, uso cualquier diodo? o alguno en especial?
oiiee cual es el transistor Q1 y el diodo que se utiliza acual es=?
para esta práctica va bien con el BD135
Qué modelo/valor es Q1 en el esquema??
Muchas gracias!