Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Servo en Arduíno - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 16 de diciembre de 2025 por Francisco J. G.

2 visualizaciones

Servo en Arduíno

Descargar la transcripción

Buenas tardes, tengo otro esquema aquí con un nuevo elemento, que sería este de aquí, que es un servo. 00:00:05
Vamos a hacer una introducción que es un servomotor. Un servomotor es un tipo especial de motor que permite controlar con precisión su posición angular. 00:00:12
Normalmente iría entre 0 y 180 grados. A diferencia de un motor normal, no gira libremente, sino que se mueve exactamente hasta el ángulo que le indiquemos. 00:00:23
Entonces, ¿en qué se usa? Se usa en robótica, se usa en brazos mecánicos, en puertas automáticas, en sistemas de orientación, cámaras, sensores, etc. En este circuito se utiliza un microservo tipo SG90, que es muy común en Arduino, que es este de aquí. 00:00:33
Este servo sería el aspecto real 00:00:51
En el que veis que tiene tres pines 00:00:56
Y bueno, aquí tendríamos 00:00:58
Este sería el motor 00:00:59
Y aquí esto es lo que haría girar 00:01:00
Pues esa palanca 00:01:02
¿Cómo funciona un servomotor? 00:01:05
Internamente está formado 00:01:08
¿Por qué? 00:01:10
Por un motor DC 00:01:10
De corriente continua 00:01:11
En el que hay un sistema de engranajes 00:01:14
Y también estaría formado 00:01:18
Por un potenciómetro 00:01:21
para saber la posición, y un circuito de control interno. 00:01:22
El servo no recibe un voltaje variable, sino que es una señal PWM, 00:01:26
o sea, ya vimos en los pines, el PWM era modulación por ancho de pulso, 00:01:30
enviada desde Arduino. 00:01:36
Entonces, según el ancho de pulso, si el pulso es corto, 00:01:39
pues el ángulo será pequeño, será cerca de 0 grados. 00:01:42
Si el pulso es medio, pues sería la posición central, que sería 90 grados, 00:01:47
y si el pulso es largo, pues el ángulo sería grande y sería hasta 180 grados. 00:01:51
Necesitamos aquí una librería para codificarlo, que sería la servo.h 00:01:56
y que se encarga de proporcionarnos una serie de métodos para poder mover ese servo. 00:02:00
El servo va a tener tres cables que están aquí ya posicionados, 00:02:09
en el que vemos aquí tiene una señal, uno que sería de potencia 00:02:13
y otro que sería de tierra. 00:02:20
El rojo es el de potencia, que sería alimentación 5 voltios. 00:02:22
El negro sería el de GND, 0 voltios. 00:02:25
Y luego el verde que pongo aquí, señal, sería la señal de control, 00:02:29
que lo vamos a realizar siempre a través de un pin, como tenemos aquí. 00:02:33
¿Qué más? En cuanto a las conexiones, pues lógicamente este iría a un pin, 00:02:39
este iría a 5 voltios y este iría a tierra. No hay mucho más. 00:02:43
este sería el código que luego lo explicaré 00:02:47
y si le damos a ejecutar 00:02:51
veis el código lo que está haciendo es que cada cierto tiempo 00:02:53
se le está proporcionando un valor desde el pin 2 00:02:59
de un pulso pequeño, uno medio o uno grande 00:03:03
para que recorra los 0, los 90 y los 180 grados 00:03:10
Aquí tenemos el código y ahora lo que haremos es rehacerlo desde cero. 00:03:14
La utilización de un servo es muy sencilla y vamos a hacer el proyecto desde cero. 00:03:28
Voy a borrar todo esto y lo hacemos desde aquí. 00:03:38
quitamos el código y luego lo ponemos vale nos traemos el servo desde aquí 00:03:41
tenía tendríamos el micro servo que sería este de aquí yo lo que he hecho es 00:03:53
que lo he girado para ponerlo en mejor posición a la hora de para que se puede 00:03:57
utilizar este servo este servo se podría utilizar aquí poniéndonos una barrera y 00:04:02
sería pues por ejemplo la barrera pues en un parking bien vamos a hacer las 00:04:05
conexiones la señal vamos a ponerlo al pin 2 por ejemplo que lo que tenía puesto 00:04:10
le dejamos de color verde y luego teníamos potencia que sería 5 voltios y el gnd que le 00:04:14
vamos a llevar aquí que lo ponemos negro y ya estaría montaje el montaje es muy sencillo en 00:04:38
cuanto al código ya lo tendría aquí y si vamos poco a poco lo que vamos haciendo que es primero 00:04:46
va a utilizar una librería 00:04:55
que sería servo.h 00:04:57
ya vimos como se incluían 00:04:59
librerías en C++ 00:05:01
con entre estos dos ángulos 00:05:03
y siempre era un fichero que era fichero cabecera 00:05:04
que tenía una extensión .h 00:05:07
y esta se va a llamar pues 00:05:09
servo, bien a continuación 00:05:11
lo que hacemos es que vamos a crear 00:05:13
creamos un objeto de 00:05:15
servo 00:05:19
ese objeto servo que proviene de esta 00:05:21
librería se llama miservo 00:05:23
¿Para qué? Para utilizar los métodos de ese objeto. Vamos a poner a continuación, vamos a decir aquí, que creo un objeto de tipo servo. 00:05:25
Bien, hemos creado posteriormente, creamos una variable de tipo entera llamada ángulo, 00:05:43
donde en un valor inicial le hemos dado un valor de cero, 00:05:57
porque el servo le va a conferir por primero un ángulo de cero grados 00:06:01
y luego irá pasando por los distintos ángulos. 00:06:04
Si os fijáis en el setup, lo único que hemos hecho es que aquí, en esta línea, 00:06:07
que la voy a escribir yo de nuevo, 00:06:12
¿Qué hemos hecho? Hemos puesto, vamos a borrarlo todo y lo vamos haciendo poco a poco, aquí en el setup, que es en la configuración, lo que vamos a ponerle, primero vamos a llamar al objeto que hemos creado, mi servo, y vamos a utilizar un método suyo, vamos a ponerlo esto bien, el método que vamos a utilizar es attach, 00:06:18
Ese attach, que significa unir, lo que está haciendo es que relacionemos el objeto servo con uno de los pines, que sería el pin 2. 00:06:43
Ese es el que hemos puesto aquí y es el que estará unido al pin del servo. 00:06:58
con lo cual estamos uniendo que la señal proviene pues del del pin 2 y eso lo configuramos aquí 00:07:07
bien vamos a ponerlo por ejemplo así indica que el servo está conectado al pin digital 00:07:18
2. ¿Vale? ¿Qué tenemos después? Vamos a inicializar 00:07:39
en el setup. Inicializamos el serial o el monitor 00:07:43
en serie. ¿Qué os acordáis? Era serial y luego begin. 00:07:47
Le ponemos un valor de 9600 00:07:52
y ya habríamos inicializado 00:07:55
la comunicación en serie. Vamos a ponerlo aquí. 00:07:58
Se inicia la comunicación. 00:08:05
en serie 00:08:11
para mostrar 00:08:13
los 00:08:16
ángulos 00:08:18
por pantalla 00:08:19
vale 00:08:22
bien, que más 00:08:24
bien, ya aquí no tendríamos que 00:08:27
poner absolutamente nada más y nos iríamos 00:08:29
al loop, en el loop vamos a utilizar 00:08:31
un bucle, un bucle para 00:08:33
que vaya recorriendo cada 00:08:35
uno de los ángulos 00:08:37
eso como se va a hacer, lo escribo y luego 00:08:39
lo explico, for 00:08:41
ángulo, que es la variable que hemos 00:08:43
creado antes, que tenía un valor de 0 00:08:47
le vamos a poner aquí 0 00:08:49
ángulo 00:08:51
igual a 180 00:08:53
y ángulo 00:08:59
y le vamos a poner 00:09:01
aquí 00:09:08
vale, miservo 00:09:11
punto write 00:09:19
ángulo, y luego ya pues 00:09:22
nada más que el serial, el punto print y vamos a imprimir los ángulos. Aquí vamos 00:09:31
a poner ángulo, los puntos comillas y lo copiamos tres veces, copiar, no lo he copiado 00:09:40
Y aquí vamos a poner, bueno, nos haría falta más que uno. 00:10:09
Y aquí pondríamos la variada de ángulo. 00:10:16
Vamos a poner un println para que haga un retorno de carro. 00:10:22
Y por último, un delay para que lo haga cada una de las veces, cada una serie de milisegundos. 00:10:26
Vamos a poner 800. 00:10:36
Bien, ¿qué tenemos aquí? 00:10:38
Y esto es un bucle, un bucle for, que consta de tres partes. 00:10:39
Si veis aquí, un bucle for consta de una inicialización, una condición y un incremento. 00:10:47
Esto sería el bucle for. 00:11:04
fijaos, el for 00:11:06
viene entre dos llaves 00:11:12
una de apertura y una de cierre 00:11:14
que aquí no he puesto 00:11:16
vamos a ponerle aquí 00:11:17
ahí 00:11:20
ya sale correcto 00:11:23
veis, el bucle for es esta estructura 00:11:27
que va desde este 00:11:30
llave de apertura y esta 00:11:31
de cierre, y esto que hay dentro 00:11:34
lo va a leer una serie de veces 00:11:36
es un bucle como este loop 00:11:38
que era un bucle infinito, pero este no es infinito en este caso 00:11:39
Bueno, lo va a hacer de manera que a través de estos dos paréntesis dentro tenemos tres partes separadas entre punto y coma 00:11:41
Vamos a ponerlo con la misma estructura para que lo entendáis 00:11:53
Esto sería un punto y coma y esto sería un punto y coma 00:11:56
Y esto, esto y paréntesis es lo que es la cabecera del for 00:11:59
La primera parte que sería esta es una inicialización 00:12:03
Estamos diciendo, oye, el ángulo que hemos puesto creado aquí en principio va a valer cero 00:12:07
Y va a empezar desde el 0. 00:12:11
Después habrá una condición y lo comprobará en el FOR. 00:12:14
Cada vez que pase por aquí va a comprobar si el ángulo es menor o igual que el 180. 00:12:17
Si lo es, entonces lo que hará es que incrementará el ángulo 30 grados. 00:12:22
Cogerá esto es igual que poner ángulo igual a ángulo más 30. 00:12:28
Podríamos ponerlo igual así, si os queda más claro. 00:12:33
Más 30. 00:12:39
por lo tanto inicializa el ángulo a 0 00:12:40
luego mira, comprueba si el ángulo 00:12:42
es igual o menor a 180 grados 00:12:44
y después le incrementa 00:12:46
si lo es, le incrementa a 30 grados 00:12:48
una vez que ha comprobado esto 00:12:50
en un principio entrará en el for 00:12:54
verá que el ángulo es 0 y es menor que 180 00:12:56
porque es 0 00:12:58
entonces lo que hará es que 00:12:59
entrará dentro del bloque for 00:13:02
llamaremos al método write de mi servo 00:13:03
que es para que 00:13:05
le confiera a mi servo un valor de cero, 00:13:06
el valor que corresponda con esta variable, 00:13:11
que como en principio es cero, le va a dar un valor de cero grados. 00:13:14
Y después lo que haremos es que imprimiremos Arduino, 00:13:18
o sea, Arduino ángulo, y detrás del ángulo tendríamos el qué, 00:13:21
el valor de ese ángulo que realmente es un cero. 00:13:24
Ahora espera 80 milisegundos y vuelve otra vez al for. 00:13:27
que lo que ahora lee 00:13:30
primero se habrá incrementado el ángulo en 30 grados 00:13:33
y siempre que el ángulo sea menor o igual que 160 grados 00:13:38
lo incrementa en 30 grados 00:13:44
y ahora ángulo es 30 grados 00:13:45
imprimirá 30 00:13:47
que hará que el servo se ponga en 30 grados 00:13:48
y lo imprimiremos en el monitor en serie 00:13:50
a través de estas dos líneas 00:13:53
se establece otra pausa de 800 milisegundos 00:13:54
que sería casi un segundo y llega otra vez al for ahora le vuelve a incrementar y ahora que 00:13:59
tendríamos tendríamos un valor de 60 grados el menos que 180 si entonces le confiero le confiere 00:14:05
al servo un valor de 60 grados y lo que hace es que se pondrá en el servo en una posición de 60 00:14:11
grados así sucesivamente hasta que llegue a 180 cuando llega a 180 como ya no cumple el for ya 00:14:16
no entra dentro del for sale y entonces volverá otra vez al loop y lo hará de nuevo otra vez y 00:14:23
así infinitas veces veis hay un bucle dentro de otro bucle un bucle que lo realiza este bucle se 00:14:28
va a realizar cuántas veces los valores que va a tener que va a pasar el bucle van a ser de ángulo 00:14:35
qué valor va a tener en principio tener a cero luego tendrá un valor de 30 grados luego tendrá 00:14:42
uno de 60, de 90, de 120, luego de 150, luego de 180 y cuando llega a 180 le conferirá ese valor 00:14:48
de 180 al servo pero cuando pase al siguiente que sería 210 como ya no cumple este for no entrará 00:15:02
él y en ir al loop volverá otra vez aquí y empezará otra vez de cero con lo cual este 00:15:12
no se lo va a proporcionar al trigger y volverá a realizar esta secuencia secuencia se repite 00:15:17
infinitas veces por él el propio método loop veis un bucle dentro de otro bucle bien vamos 00:15:33
a ejecutarlo 00:15:43
y ya lo está haciendo 00:15:44
si le damos al monitor en serie vamos a 00:15:50
conmover esto para que lo veamos 00:15:52
veis todos los valores que va 00:15:53
proporcionando va leyendo el for 00:15:56
0, 30, 60, 90, 120 00:15:58
150 y 180 como ya no 00:16:00
cumple el for empezaría 00:16:02
recorre otra vez el loop y empezaría de nuevo 00:16:03
veis lo está la secuencia de valores 00:16:06
de ángulos y esos ángulos se lo está 00:16:08
a través del método 00:16:10
write 00:16:11
se lo está pasando a través del pin 2 al servo para que el servo se mueva en esas distintas posiciones o distintos ángulos. 00:16:13
Idioma/s:
es
Materias:
Informática
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado básico
      • Primer Curso
      • Segundo Curso
    • Ciclo formativo de grado medio
      • Primer Curso
      • Segundo Curso
    • Ciclo formativo de grado superior
      • Primer Curso
      • Segundo Curso
Autor/es:
Francisco José González Constanza
Subido por:
Francisco J. G.
Licencia:
Todos los derechos reservados
Visualizaciones:
2
Fecha:
16 de diciembre de 2025 - 9:42
Visibilidad:
Público
Centro:
IES CIFP a Distancia Ignacio Ellacuría
Duración:
16′ 35″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
863.45 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid