Tutorial de arduino: Manejando servomotores « Devthisblog

Devthisblog Desarrollo .net, Diseño Web, Seguridad… Y todo lo que se me vaya ocurriendo…

abril 14, 2017

Tutorial de arduino: Manejando servomotores

Filed under: .net,Arduino,electronica,Programación — Etiquetas: , , , , , , — jnavero @ 4:47 pm

Los servomotores, son un tipo de motor que pueden girar en un rango (generalmente 180º).

Se controla mediante el envío de pulsos que hacen indicarle en la posición en la que debe “situarse”.

En este post, voy a hablar de dos servos que son los que tengo (unos chinos) y el otro (supongo que también chino) pero, aparentemente con mejor pinta. Estos servos son bastante económicos y muy sencillos de utilizar en nuestra placa arduino.

Servomotores para arduino

El primer motor (el que mejor pinta tiene) viene indicado el pinout en la pegatina por lo que no tendremos problema, además he de decir, que el sonido que hace es menor que el otro (se nota que tiene mas calidad).

Para el segundo servo, tenemos tres cables (igual que en el primero) y el pin out es el siguiente:

1- Positivo, Cable Rojo

2- Negativo, Cable marrón

3- Señal, Cable naranja.

Sin mas y como en los otros post que he escrito, vamos al grano:

La receta:

  • 1 Arduino uno
  • 1 Servo motor (voy a usar el modelo SM-2309S (el servomotor negro que se ve en la foto anterior)).
  • 1 Condensador de 100uF 25V.

Las conexiones de un servo con nuestro arduino va de la siguiente forma:

 

Arduino con un servo

Las conexiones quedan de la siguiente forma:

  • Positivo y Negativo (Lo normal)
  • Negativo del condensador en el pin A17
  • Negativo de Negativo del proto a C17
  • Negativo del Servo en el pin D17
  • Señal de Arduino a Servo, Del pin 3 (de arduino) al B18 de la protoboard
  • Señal del Servo en el pin D18
  • Positivo del condensador en el pin A19
  • Positivo del proto al pin C19
  • Positivo del Servo en el pin D19

Con esto tendríamos el servo conectado para hacer un “Hola mundo” con un servo motor.

En este caso el condensador (capacitor) no es necesario por el consumo que tiene este servo, pero, el condensador estabiliza la corriente cuando un motor comienza a girar y conseguimos regular los picos de tensión que se puedan producir.

Si tenemos muchos elementos conectados, puede suceder que el arduino se reinicie por que no tenga suficiente potencia para arrancar ciertos elementos, este efecto lo podemos paliar con los condensadores.

El código:

Vamos a hacer el “hola mundo” de los servomotores.

 C++ | 
 
 copy code |
?

01
02
#include <servo.h>
03
Servo myServo;
04
int angle;
05
 
06
void setup() {
07
  angle = 0;
08
  myServo.attach(3);
09
  Serial.begin(9600);
10
}
11
 
12
void loop() {
13
   angle = angle +1;
14
 
15
   if(angle &gt; 179)
16
   {
17
       angle = 0;
18
   }
19
   
20
  myServo.write(angle);
21
 
22
  Serial.print("angle: ");
23
  Serial.print(angle);
24
  Serial.print(\r\n ");
25
  delay(50);
26
}
27

(Código en Github)

He simplificado el codigo todo lo posible, y paso a explicar el funcionamiento del mismo que como ya se puede ver es sencillo.
– Include está incluyendo la librería para poder utilizar servomotores.
En la linea siguiente (Servo myServo) creamos una variable que hará de referencia a nuestro servo y en el Setup de nuestro programa, le indicamos en que pin está conectada la señal que en nuestro caso en el pin 3 de nuestra placa arduino.

Como el rango de este servo es de 180º nuestra variable angle va de 0 a 179 y cuando llega a 179 se reinicia.
Para hacer que el servo se mueva usamos la función write (myServo.write(angle)).

Con esto concluimos nuestro Hola mundo para servo motores.

Saludos a todos!

No hay comentarios »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress