Вы находитесь на странице: 1из 3

Prcticas 3 y 4 con arduino: control de un

motor y un servomotor
By salva el 24 Mayo 2010 10 Comentarios
Arduino,
Electrnica
Darle 5/5

D
arle 1/5
D
arle 2/5
D
arle 3/5
D
arle 4/5
D
arle 5/5
Su voto: Nada Average: 4.3 (6 votes)




Vamos a controlar un motor, lo conectaremos segn el esquema adjunto al pin 9 de Arduino, para
poder modular el pulso, realizaremos varias prcticas:
1. Arrancamos el motor, esperamos un tiempo, despus 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 iluminacin del led, ahora podemos controlar la velocidad
del motor con la funcin 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 funcin 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 potencimetro para variar la velocidad del motor. El potencimetreo se
conecta de la siguiente forma, extremos a v+ y gnd y el pin de control al pin 0 de las entradas
anlogicas de Arduino.
Arduino dispone de 6 entradas analgicas, que tienen un voltaje de 0 a 5voltios que convertidas a
seales digitales tendramos de 0 a 1024, esto es 10 bits de resolucin. Por qu dividimos por 4
analogRead()?, pues porque esta funcin devuelve un valor comprendido entre 0 y 1024 (10 bits) y
la funcin 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 posicin 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 posicin 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);
}
}
- See more at: http://www.tecnosalva.com/pr%C3%A1cticas-3-y-4-arduino-control-motor-y-
servomotor#sthash.8WeHuu1A.dpuf

Вам также может понравиться