Prácticas 3 y 4 con arduino: control de un motor y un servomotor

Prácticas 3 y 4 con arduino: control de un motor y un servomotor- Arduino, Electrónica

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:Prácticas 3 y 4 con arduino: control de un motor y un servomotor- Arduino, Electrónica

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
}

Prácticas 3 y 4 con arduino: control de un motor y un servomotor- Arduino, Electrónica

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.

12 comentarios en «Prácticas 3 y 4 con arduino: control de un motor y un servomotor»

  1. 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);
    }

  2. 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

Deja un comentario