Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Servo en Arduíno - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Servo en Arduíno
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
30
00:09:09
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:
- 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
- Ciclo formativo de grado básico
- 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