Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Potenciómetro 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:
Potenciómetro en Arduíno
Buenos días, os presento aquí otro esquema de otro circuito en el que he añadido un componente más.
00:00:05
El componente que he añadido ha sido el potenciómetro, que es este que veis aquí.
00:00:13
Si veis nos aparece una resistencia porque realmente un potenciómetro lleva interna una resistencia y ahora veremos por qué.
00:00:17
Un potenciómetro es la clásica rueda que tenéis en las radios o en los televisores antiguos,
00:00:24
antiguos en el que con esta rueda lo que haces es que vas aumentando o disminuyendo la resistencia
00:00:29
cuando está en el lado izquierdo estaría en un máximo de resistencia entonces el voltaje no pasa
00:00:35
y cuando lo vais moviendo va disminuyendo la resistencia y va añadiendo mayor voltaje
00:00:41
este es un instrumento analógico un potenciómetro es un componente electrónico variable que actúa
00:00:47
como una resistencia ajustable al girar su eje cambia el valor de la resistencia y por tanto
00:00:53
el voltaje de salida. En Arduino se usa principalmente para control de posición, para regulador
00:00:59
de intensidad de un LED, como selector de velocidad o de ángulo, que es lo que vamos
00:01:05
a ver aquí en el caso del servo, para entrada analógica para menús o ajustes, etc. Es
00:01:11
uno de los sensores analógicos más básicos y más importantes. ¿Cómo funciona? Tiene
00:01:17
tres extremos. Si nos acercamos, está formado por tres terminales. Uno será el que conectemos
00:01:22
a tierra, el otro le conectaremos
00:01:28
del de la izquierda
00:01:30
al voltaje
00:01:32
o alimentación y luego el viper
00:01:33
que el viper es el central
00:01:36
y es el que va a producir la salida variable
00:01:38
y no tiene mucho más
00:01:40
al girarlo la patilla
00:01:42
central entrega un voltaje entre 0
00:01:44
y 5 voltios dependiendo de donde pongamos
00:01:46
la rejilla
00:01:48
donde si aplicamos mayor o menos resistencia
00:01:50
Arduino lo lee con una
00:01:53
función que luego veremos que es analog
00:01:54
red, y el valor que va a tener
00:01:56
va a ser, ya no te hablamos
00:01:58
de un componente digital en el que sólo
00:02:00
permitía un valor de 0, 0 voltios
00:02:02
o de 1, que era 5 voltios
00:02:04
sino que ahora es un valor comprendido
00:02:06
entre 0 y 1023, un valor analógico
00:02:08
por tanto, no es un valor discreto
00:02:10
sino que es un valor continuo
00:02:12
el objetivo del ejercicio
00:02:14
que aparece aquí es
00:02:17
girar el potenciómetro y que el servo
00:02:18
se mueva suavemente de 0 a 180
00:02:20
grados según la posición
00:02:22
lo veremos a través de una función de transformación
00:02:24
Y este ejemplo es muy visual y perfecto para explicar entradas analógicas con versión de valores y control de actuadores. Voy a borrar el que he sacado y os voy a poner el circuito. Este sería el código, no es un código muy sencillito.
00:02:26
y iniciaremos la simulación y en un principio el servo no se mueve.
00:02:42
Conforme yo voy moviendo la rueda, pues le bajo confiriendo porque va disminuyendo la resistencia
00:02:48
y por tanto generando un voltaje que iría por aquí hasta el pinal analógico
00:02:53
y lo que haría es que iría moviendo el servo a mayor ángulo o menor en función del voltaje
00:03:00
que le estoy pasando a través del potenciómetro.
00:03:06
vamos a comerciarlo desde el principio
00:03:08
lo que voy a hacer es que voy a quitar todos los componentes
00:03:13
y creamos de nuevo todo el circuito
00:03:18
me quedo tan solo con la placa de arduino y pasamos la placa de pruebas
00:03:23
lo que voy a hacer es que voy a alimentar estas dos líneas con 0 voltios y 5 voltios
00:03:27
como siempre hago voy a poner una para alimentación que iría hasta aquí
00:03:32
que sería de color rojo, ya estamos alimentando esta línea con 5 voltios
00:03:36
y una con GND que iría hasta la otra línea para alimentarlo con 0 voltios
00:03:43
lo vamos a poner en negro para que lo distingamos
00:03:50
ya tenemos el circuito cerrado hasta estas dos líneas
00:03:52
ahora a continuación vamos a añadir el potenciómetro
00:03:55
le vamos a poner aquí y alimentaremos su pata izquierda
00:03:59
la alimentaremos con tierra o con masa
00:04:05
como siempre hemos hecho
00:04:09
y esta otra la alimentaríamos con 5 voltios
00:04:11
que iría hasta aquí
00:04:16
nos quedaría la pata central
00:04:17
que la pata central lo que vamos a hacer es que
00:04:19
tiene que ir hasta un pin analógico
00:04:22
para que pueda leer el valor analógico
00:04:26
que va aportando el potenciómetro
00:04:28
según movemos la tuerca o la rosca
00:04:30
Este le ponemos otro color para distinguirlo y ya tendríamos puesto el potenciómetro. A continuación vamos a traer un servo, le giramos para que esté más cómodo para las conexiones y bueno, os acordáis del servo.
00:04:33
El servo tenía un pin de potencia que le vamos a llevar hasta la zona de alimentación.
00:04:49
La zona de alimentación es la roja, que era esta.
00:04:55
Le vamos a poner de color rojo para que veamos que está alimentado el servo.
00:04:59
Y yo luego la tierra para que no sea tan...
00:05:04
Voy a eliminarlo y para que sea más visual vamos a crear un puente aquí
00:05:11
con alimentación
00:05:16
alimentando esta otra línea de aquí arriba
00:05:20
para que nos podamos utilizarla para el servo
00:05:22
y por otro lado tenemos la de masa
00:05:24
que la vamos a alimentar también aquí
00:05:27
con esta la ponemos de color negro
00:05:30
y ya tenemos estas dos líneas alimentadas desde aquí
00:05:33
entonces ahora ya podemos llevar las dos líneas
00:05:35
la de alimentación
00:05:39
hasta el servo, acordaos que esta es la de alimentación,
00:05:43
la roja, y la de tierra la llevamos también hasta la otra línea
00:05:50
para alimentar el servo y darle los cero voltios.
00:05:54
Y tenemos de color negro.
00:05:58
Ya tenemos las dos líneas, lo único que nos quedaría
00:06:00
es la de la señal, que iría a un pin digital, acordaos.
00:06:02
Lo vamos a llevar hasta, por ejemplo, el pin 9,
00:06:07
que era un pin digital, y le ponemos de otro color
00:06:10
para distinguirlo, de color azul. Esto sería ya el circuito. Si le damos, vamos a ver si
00:06:14
funciona o no, y movemos el potenciómetro y veis, me va dando el ángulo que yo deseo.
00:06:19
Bien, vamos a pasar a explicar el código. El código es muy sencillito. Lo único que
00:06:26
sí quiero explicar previo a esto es una función que vamos a utilizar. Bueno, realmente vamos
00:06:32
Vamos a utilizar dos métodos. Uno sería el método AnalogRed, que está aquí,
00:06:38
que lo que va a hacer es leer del potenciómetro qué potencial está saliendo
00:06:45
desde 0 a 2023. Ya hemos visto que tenía esos dos valores de intervalo
00:06:53
como mínimo y como máximo. Entonces queremos saber qué potencial
00:06:58
está proporcionando el potenciómetro. Entonces para ello necesitamos
00:07:02
que se ha leído por este pin analógico.
00:07:06
Entonces, analogRed va a leer de ese pin.
00:07:09
Este pin, por tanto, será un pin analógico de entrada,
00:07:11
porque va a leer el potencial que sale del potenciómetro.
00:07:14
Con respecto a la otra función, sería la función map,
00:07:20
que es una función que permite convertir un valor a un ángulo.
00:07:23
Veis aquí, tiene cinco parámetros.
00:07:27
Primero tenemos el valor de la lectura del potenciómetro,
00:07:30
el que nos va a dar analog red y luego tiene los dos siguientes parámetros
00:07:35
son el intervalo de lectura del potenciómetro que hemos dicho que iba de 0 a 1023
00:07:40
y luego por último la lectura de los ángulos del servo que va a ir de 0 a 180 grados
00:07:46
y esa sería la función map
00:07:56
Bien, voy a ponerlo, voy a hacer toda la secuencia desde cero para que veamos cómo funciona el programa.
00:07:58
Recordar, por tanto, que AnalogRed es para leer un valor analógico a través de un pin analógico
00:08:17
analógico y que map no es nada más que una función que va a traducir los valores, unos valores en otros, traduce los valores de 0 a 1023 del potenciómetro a 0 y 180 grados que es el ángulo del servo, si tiene un valor de 0 el potenciómetro tendrá un valor de 0 grados, si tiene un valor de 1023 el potenciómetro tendrá un valor de 180 grados,
00:08:23
Los valores intermedios se corresponderán con los valores intermedios también de los ángulos y no hace mucho más. Imaginaos, si el valor del potenciómetro está a la mitad, nos da un valor entre 0 y 1023, la mitad sería aproximadamente 512, el valor del potenciómetro, que nos va a dar, si lo traduce a ángulos, que nos va a dar la mitad del ángulo, sería 90 grados y no hace mucho más.
00:08:50
Bien, entonces vamos a ir poco a poco con el código. Lo voy a cortar y poniendo las líneas una a una.
00:09:18
Entonces, lo primero que vamos a hacer, ¿qué es? Lo primero es, acordaos que necesitamos una librería, la librería de Servo para poder manejar sus métodos.
00:09:28
Ya la tengo aquí añadida y a continuación lo único que voy a hacer es crear un objeto Servo. Entonces Servo y le llamamos MiServo.
00:09:39
Bien, ya tenemos el objeto servo para poder utilizar los métodos de la librería servo.
00:09:47
A continuación vamos a generar cuatro variables. Una primera variable entera que se llama pinPot y esta variable va a tener un valor que va a ser el valor del potenciómetro, del pin analógico que va a establecer la lectura.
00:09:54
que sería el a cero
00:10:17
a continuación tendríamos otro entero
00:10:19
que sería pin servo
00:10:22
y que el pin servo va a ser el nueve
00:10:23
lo hemos visto anteriormente
00:10:25
metemos el valor de nueve
00:10:27
es el valor de lectura del propio servo
00:10:28
una vez que tenemos estos
00:10:31
a continuación tengo otra variable
00:10:33
que sería valor pot
00:10:37
y este valor le vamos a poner a cero
00:10:39
luego veremos para qué es
00:10:42
y a continuación in ángulo
00:10:43
que será también un valor de 0 inicializado a 0
00:10:46
estas serían las 5 variables globales que vamos a tener
00:10:49
la de servo, la de pin pot que va a contener el pin analógico
00:10:55
la de pin servo que va a contener el valor del pin digital
00:11:01
y luego el valor pot será el valor que iríamos obteniendo
00:11:05
desde el potenciómetro
00:11:09
un valor que va a ser entre 0 y 1023
00:11:13
mientras que ángulo va a reflejar el valor que vamos a tener
00:11:17
entre 0 y 180 grados
00:11:20
estos dos, si se produciera una conversión
00:11:22
entre los valores de valor pot y de ángulo
00:11:25
lo va a realizar la función MAP
00:11:27
bien, pasamos a Void Setup
00:11:29
como siempre
00:11:35
y le ponemos sus
00:11:40
creamos también el
00:11:42
el método loop
00:11:44
void loop
00:11:47
que siempre tiene que estar aquí
00:11:49
y ya tendríamos
00:11:51
los dos métodos
00:11:53
procedemos primero con el
00:11:56
setup y lo único que vamos a hacer
00:11:58
es acordaros
00:12:01
perdón
00:12:02
cuando tenemos un servo tenemos que asociar
00:12:03
a que pin estaba unido ese servo
00:12:06
hemos dicho que está al pin 9
00:12:09
Y el pin 9 es la variable pin servo. Eso se hacía con la función attach. Servo.attach y le ponemos el valor del pin del servo, que es el pin servo. O lo que es lo mismo, el valor de 9.
00:12:11
Y como queremos ver el resultado a través del monitor en serie, vamos a generar también el serial y le vamos a inicializar.
00:12:27
Acordaros, 9600 baudios siempre se utilizaban para el serial.
00:12:40
600.
00:12:47
Vale, ya tenemos el voice setup, que no hemos añadido más que dos líneas de configuración,
00:12:49
configuración tanto para el servo como para el monitoreo en serie a continuación tenemos que
00:12:56
hacer lo primero que tenemos que hacer es leer el valor del potenciómetro lo que lo va a leer
00:13:00
a través de este pin analógico entonces queremos saber en todo momento en el void loop que lo va
00:13:08
repitiendo continuamente saber porque yo voy a poder mover la rosca ver qué valor de potencial
00:13:13
me está confiriendo eso lo vamos a albergar donde en valor pot y se hacía a través de un método que
00:13:19
lo hemos dicho le he dicho antes que era el analog red que es para leer el valor en un pin
00:13:25
analógico aquí tendremos que poner el pin pot y el pin pot nos refleja que qué pin analógico va
00:13:31
a leer el valor ese sería el acero que es el que hemos conectado al potenciómetro y a los red va a
00:13:43
leer puesto que era un pin de entrada va a leer el valor que le está dando el potenciómetro en
00:13:52
función de que giremos la ruedecita y que apliquemos mayor o menor resistencia una vez
00:13:58
que tenemos el valor de lectura del potenciómetro introducido dentro de la variable valor pot a
00:14:05
continuación lo que tenemos que hacer es el ángulo el ángulo que era otra variable que hemos definido
00:14:13
arriba le vamos a poner la función map que es la que he dicho anteriormente porque porque esta
00:14:17
función nos va a coger cinco parámetros primero coge el valor bot el valor que le ha dado la
00:14:22
lectura del pin analógico a continuación le ponemos la escala que tiene el propio potenciómetro que
00:14:30
hemos dicho que va de 0 a 1023 y después la escala o intervalo que tiene el servo que sería de 0 a
00:14:37
180 grados esta función como digo anteriormente y que lo que hacía convierte 0 el 0 del potenciómetro
00:14:45
lo convierte en un 0 grados y el 1023 en 160 grados los valores intermedios no serían nada
00:14:54
más que calcularlos la mitad que hemos dicho que era 512 de si aporta un valor de 512 el
00:15:01
potenciómetro tendríamos que sería la mitad de 180 que sería lo convertiría en 90 grados luego
00:15:09
lo veremos a través del monitor en serie una vez que ya tenemos esto ahora tenemos que decirle al
00:15:13
servo qué cuántos grados queremos que se mueva por tanto hay que poner mi servo y escribir great
00:15:19
dicho valor en él y por ello tenemos que pasarle el valor del ángulo a esa función great ángulo
00:15:31
Una vez que ya hemos hecho esto, ya estaría completo. Si nosotros le damos a ejecutar, funcionaría perfectamente. Bueno, aquí hemos escrito algo mal, mi servo que lo he puesto en minúsculas. Le damos de nuevo a ejecutar y no creo que haya ningún problema más.
00:15:39
¿Veis? En función del valor que yo le voy dando de potencial del potenciómetro, él va girando los grados que se correspondan.
00:15:58
Para verlo vamos a crear aquí el monitor en serie y verlo in situ cómo va haciendo esas conversiones la función map desde los valores del potenciómetro a los valores de ángulo.
00:16:07
Por ello utilizamos el serial y acordaos con la función print. La función print imprimía en el monitor en serie y vamos a poner aquí, por ejemplo, potenciómetro, dos puntos, esta cadena de texto.
00:16:19
A continuación ponemos serial.print y le ponemos ahora lo que queremos que nos saca en el monitor es el valor que le está dando para que lo lea el pin analógico a cero el valor de potencial que le está confiriendo.
00:16:36
Entonces acá va a poner ese valor, lo habíamos recogido en esta lectura y por tanto será valor pot, le ponemos que imprima valor pot.
00:16:57
Posteriormente, ahora queremos que nos saque el valor del ángulo, entonces le ponemos un espacio ángulo servo con dos puntos, espacio y le dejamos y cerramos.
00:17:10
y por último
00:17:25
bueno aquí nos ha faltado el print
00:17:29
y por último
00:17:31
vamos a ponerle serial
00:17:35
tendríamos que ponerle
00:17:37
pero ahora no le pongo print
00:17:39
solo sino print nl
00:17:40
para que haga un retorno de carro y que nos vaya
00:17:43
saliendo no solo en horizontal
00:17:45
sino que cada uno de los valores en vertical
00:17:47
esto lo he puesto mal
00:17:49
y aquí tendríamos que indicarle
00:17:51
que nos imprima en el monitor en serie
00:17:57
pues el ángulo
00:17:59
que ya vimos que estaba aquí
00:18:00
lo hacía la función map
00:18:03
convertía valores
00:18:04
del potenciómetro
00:18:05
en valores de ángulo
00:18:08
y ya estaría completo
00:18:11
si nosotros le damos a ejecutar
00:18:12
algo he escrito mal
00:18:15
serial.print
00:18:18
potenciómetro perfecto, valor pot
00:18:20
perfecto
00:18:22
y serial.print
00:18:23
ln
00:18:26
vamos a ver que está mal
00:18:28
hasta aquí estaba todo bien
00:18:31
tiene que estar en estas cuatro líneas
00:18:32
aquí le hemos puesto las comillas
00:18:34
perfecto, aquí también sería el punto print
00:18:36
sería el punto print
00:18:39
ah, ln
00:18:40
estaba mal escrito
00:18:42
bien, le damos a ejecutar
00:18:43
y si ahora ponemos el monitor en serie
00:18:45
veis que me está diciendo
00:18:48
cuando el potentiómetro como está en la rosca
00:18:49
en el valor de cero
00:18:53
no le está confiriendo ningún valor
00:18:54
analógico a este pin analógico
00:18:56
como me está dando un valor de 0
00:18:59
la conversión que hace MAP es 0 grados
00:19:01
si yo le subo
00:19:04
vamos a subirle
00:19:06
un poco a 184 grados
00:19:08
él hace la regla de 3
00:19:10
en el que el 184
00:19:12
le correspondería un ángulo de 32 grados
00:19:14
si yo lo pongo a 90
00:19:16
acordaos que eran 511
00:19:18
511 es lo que
00:19:20
le está transfiriendo
00:19:22
él calcula el ángulo
00:19:23
que serían aproximadamente 90 grados y si yo le llevo al sal máximo que serían los 1023 recordad
00:19:25
que los valores que puede proporcionar el potenciómetro sería entre 0 y 1023 serían
00:19:31
los 180 grados y el servo se mueve 180 grados detenemos la simulación y por último comentó
00:19:36
de nuevo las líneas para que nos quede aquí bastante claro la primera sería la importación
00:19:47
Tendrá librerías, aquí tendríamos creamos un objeto servo, en estas dos líneas creamos dos variables enteras que serían tanto pinpot que va a alojar el pin analógico y pinservo que va a alojar el número del pin digital.
00:19:52
Aquí creo otras dos variables, creamos dos variables enteras que van a albergar tanto el valor que le confiere el potenciómetro, que sería un valor entre 0 y 1023 y por otro lado tenemos el valor que estaría reflejado en ángulo que va a tener un valor entre 0 y 180 grados.
00:20:20
Nos vamos al setup, aquí unimos al servo cuál es el pin que tiene, el pin sería el 9 y aquí comenzamos el monitor en serie.
00:20:49
Con respecto al Void Loop, lo primero que hace es la lectura del pin analógico de entrada y en esa lectura alberga un valor entre 0 y 1023 que le va a dar el propio potenciómetro.
00:21:08
Muy bien, después tenemos función map, función map que convierte un valor del potenciómetro en un ángulo.
00:21:38
Un ejemplo de ello podría ser, vamos a poner aquí ejemplos, si fueran un valor de 0 le correspondería un valor de 0 grados.
00:22:00
Si fuera un valor de 512 lo convertiría en un valor de 90 grados y así sucesivamente.
00:22:15
por último escribimos el valor del ángulo en el servo
00:22:27
para que lo mueva
00:22:30
escribimos
00:22:32
el
00:22:39
valor del
00:22:40
ángulo
00:22:43
en el servo
00:22:44
para
00:22:47
que lo mueva
00:22:49
y ya nos
00:22:50
quedaría nada más que las líneas del serial
00:22:53
que no las voy a comentar
00:22:55
que lo único que hace es dibujar
00:22:57
o sea, escribir
00:23:00
en el monitor en serie, primero potenciómetro,
00:23:01
luego el valor que le está confiriendo el potenciómetro,
00:23:05
luego ángulo servo y luego el ángulo que ha convertido la función MAP.
00:23:08
- 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:
- 1
- Fecha:
- 16 de diciembre de 2025 - 9:25
- Visibilidad:
- Público
- Centro:
- IES CIFP a Distancia Ignacio Ellacuría
- Duración:
- 23′ 22″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 1.05