Está en la página 1de 4

Controlar la velocidad de desplazamiento de un servo motor con Arduin... http://creatinueva.com/2014/02/07/controlar-la-velocidad-de-desplaza...

Sesión

Entradasrecientes

Categorías

1 de 4 14/10/2015 10:20
Controlar la velocidad de desplazamiento de un servo motor con Arduin... http://creatinueva.com/2014/02/07/controlar-la-velocidad-de-desplaza...

– Cables,protoboard… AcercadeLuisLeon

Elcódigo

Para elcódigo que utilizarem os en nuestro Arduino UNO ,es necesario considerar usar dos principales
variables que definirán elángulo delservom otor y elvalor obtenido por elpotencióm etro:

Variable “potval”:Alm acenará los valores de la lectura analógica delpin A0,en elcual,irá conectado el
potencióm etro.Esta variable será de tipo INTEGER,ya que alm acenará valores de 0 al1023.
Variable “servopos”:Alm acenará los valores delángulo delservom otor.Su valor inicialserá de 90ºy
será de tipo IN TEG ER,ya que alm acenará valores del0 al180.

Adem ás,requerim os incluir la librería Servo.h para facilitar nuestra program ación delservom otor.Esta
librería se encuentra incluida dentro de los ficheros delArduino IDE.Asim ism o,com enzam os a RedesSociales
em plear esta librería,colocando elalias o elnom bre delservom otor,que en este caso le puse
“m iservo”.

Por otro lado,es necesario configurar las patillas 2 y 4 delArduino com o entradas,donde irá conectado
elbotón delsentido delgiro,con ayuda de la instrucción “pinM ode”.En esta ocasión,elpin 2 significará
que elservo deberá girar a la izquierda y elpin 4 que elservo deberá girar a la derecha.Y para concluir
los preparativos delcódigo para pasar a la rutina,es necesario vincular elalias delservo con elpin 3,
donde irá conectado.Esta vinculación se hace por m edio delcódigo “m iservo.attach(3)”.

D e esta m anera,elcódigo quedará de la siguiente form a:

1 //Variables
2 int potval=0; //Variable que contendrá el valor del potenciómetro
3 int servopos=90; //Variable que contendra el ángulo del servo
4 //Declaraciones
5 #include <Servo.h> //Incluimos la libreria de Servo
6 Servo miservo; //Definimos que el servo se llamara miservo
7
8 void setup() {
9 //Configuración
10   miservo.attach(3); //Servo en patilla 3
11   pinMode(2, INPUT); //Botón para iniciar giro del servo hacia la izquierda 
12   pinMode(4, INPUT); //Botón para iniciar giro del servo hacia la derecha
13
14 //Colocar el servo en una posición inicial
15   miservo.write(90); //Centramos el servo a la posición central
16 }
17

Ya con los preparativos listos para escribir la rutina,procedem os a definir elprogram a principal.Para
iniciar,prim ero se procede a obtener elvalor expedido por elpotencióm etro y cargarlo a la variable
“potval”.Esto,m ediante la instrucción “analogRead” em pleada de la siguiente form a:“potval=
analogRead(A0)”.

Posteriorm ente,m ediante códigos de condición IF/ELSE,obtenem os los valores de los botones
conectados a los pines 2 y 4.De form a aplicada,em pleam os la instrucción “digitalRead” para obtener
dos posibles resultados (HIGH & LO W ),que esto se interpretaría com o HIG H:Pulsado y LO W :Sin pulsar.
Cabe destacar,que em pleam os una expresión lógica AN D para verificar que sólo un botón esté pulsado
y elotro perm anezca suelto.

Aplicado dentro delcódigo,sielbotón de giro a la izquierda está pulsado,la variable servopos (la cual
iniciará en 90),deberá decrem entar en 1 grado,lo cual,nos perm itirá que gire a la izquierda.En elotro
caso,sielbotón de giro a la derecha está pulsado,la variable servopos deberá increm entar 1 grado.

D espués de cerradas las condiciones,se deberá hacer la escritura delángulo en elservo,m ediante la
instrucción “m iservo.w rite(servopos)”,la cual,nos ayudará a colocar nuestro servo en elángulo ya
m odificado por las condiciones.

Para concluir,colocarem os un retardo,cuyo valor será variado por la lectura delpotencióm etro.D e
esta m anera,elpotencióm etro perm itirá que la rutina se ejecute con m enos retraso o con m ayor
retraso.Esto ocasionaría que se m odifique elángulo m ás rápido o m ás lento.Por lo tanto,elcódigo nos
queda de la siguiente form a:

1 //Variables
2 int potval=0; //Variable que contendrá el valor del potenciómetro
3 int servopos=90; //Variable que contendra el ángulo del servo
4 //Declaraciones
5 #include <Servo.h> //Incluimos la libreria de Servo
6 Servo miservo; //Definimos que el servo se llamara miservo
7
id t () {

2 de 4 14/10/2015 10:20
Controlar la velocidad de desplazamiento de un servo motor con Arduin... http://creatinueva.com/2014/02/07/controlar-la-velocidad-de-desplaza...

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

Cóm o se observa,las condiciones que se em plean son IF y un ELSE IF,que nos indican que pueden
haber dos condiciones diferentes,que ejecutan dos acciones diferentes,pero cuyos elem entos
im plicados dentro de la condición lógica son los m ism os.

H ardw are

La conexión física es relativam ente m uy sencilla.Lo que debem os hacer es verificar que no haya alguna
om isión de alguna resistencia a tierra (para poner un valor bajo en elbotón),que nuestro servo esté
alim entado y que nuestro potencióm etro esté adquiriendo la alim entación de form a correcta.Para
nuestro circuito de prueba,em pleam os elsiguiente diagram a:

Espero que les ayude m ucho.Cualquier com entario,sugerencia o duda,pueden com entar en este post.
A continuación dejaré los enlaces de descarga deldiagram a y delcódigo:

D escargar:Regular_la_velocidad_de_un_servo

3 de 4 14/10/2015 10:20
Controlar la velocidad de desplazamiento de un servo motor con Arduin... http://creatinueva.com/2014/02/07/controlar-la-velocidad-de-desplaza...

AcercadeLuisLeon

Temasrelacionados

3Comentarios

Pingback:PRÁCTICAS con Arduino | sindofdez

DejaunComentario
D ebes de estarlogueado para publicar un com entario.

Com prar Trituradora de Piedra ? Capacidad de trituración 50-1000t/h

Creatinueva 2015 ® Todos los derechos Reservados

4 de 4 14/10/2015 10:20

También podría gustarte