Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Pwm y zumbador - 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:
Hola, muy buenas. En la práctica de hoy aprenderemos algo más sobre la placa
00:00:00
Arduino Uno, que es la que estamos utilizando hasta ahora. También conoceremos
00:00:05
un actuador nuevo, concretamente el zumbador. Volviendo a la placa, vemos que
00:00:09
tiene 14 entradas o salidas digitales. Ya sabemos que lo podemos configurar de
00:00:14
una manera o de otra utilizando la función pinMode y seis entradas
00:00:20
analógicas. Si nos vamos a la referencia de Arduino, vemos que hay una función que
00:00:25
se llama AnalogWrite, lo cual nos puede llamar la atención, puesto que en
00:00:30
principio no tenemos salidas analógicas. Vamos a entrar en ella para ver lo que
00:00:34
nos dice. Esta función nos dice que va a escribir un valor analógico utilizando
00:00:39
la técnica conocida como modulación por anchura de pulso, PWM por sus siglas en
00:00:45
inglés. Y esto lo va a hacer utilizando los pines digitales. Antes de continuar
00:00:51
tenemos que tener bien claro lo que significa salida digital y salida
00:00:56
analógica. Por salida digital entendemos que es una salida que puede estar o a 0
00:01:02
voltios o a 5 voltios, que son los voltajes con los que trabaja la placa
00:01:07
de Arduino Uno. Por salida analógica entendemos que en un pin podemos poner
00:01:11
un valor de voltaje comprendido entre dos valores, por ejemplo entre 0 y 5
00:01:17
voltios. Es decir, si la placa de Arduino trabaja entre 0 y 5 voltios cabría
00:01:22
esperar que con una salida analógica yo pudiera poner en un pin un voltio, un
00:01:28
voltio con 3, un voltio con 5, a diferencia del funcionamiento de los
00:01:33
pines digitales donde o pongo 0 voltios o pongo 5 voltios. Valores intermedios no
00:01:37
es posible. Bien, pues ya hemos visto que Arduino tiene pines de entradas
00:01:41
analógicas pero no tiene pines de salidas analógicas. Entonces, ¿cómo es
00:01:45
posible escribir valores analógicos con Arduino? Bien, pues esto se consigue
00:01:49
utilizando la técnica de modulación de anchura de pulsos, PWM por sus siglas
00:01:53
en inglés. Ahora vamos a ver qué significa esto y cómo funciona. Pinchamos en el
00:02:00
enlace y accedemos a esta página donde Arduino nos muestra información sobre
00:02:05
esta modulación. Si bajamos un poco más vemos un diagrama de voltajes.
00:02:09
Concretamente vemos cinco diagramas. Este primero, segundo, tercero, cuarto y
00:02:14
quinto. ¿Qué quiere decir esto? En el eje de acisas tendríamos el tiempo para
00:02:20
cada una de las gráficas y en el eje de ordenadas los voltajes. Fijémonos en la
00:02:24
del medio. La mitad del tiempo está a nivel de 5 voltios y la otra mitad a 0
00:02:29
voltios. Es decir, esto se correspondería con una salida que está todo el rato
00:02:34
cambiando entre 5 voltios y 0 voltios. La mitad del tiempo está a nivel alto y la
00:02:38
otra mitad del tiempo a nivel bajo. Jugando con el tiempo que está a nivel
00:02:43
alto y a nivel bajo vamos a conseguir el efecto de una salida analógica con más
00:02:47
o menos voltaje. Hay que entender que esto se va a hacer a una alta frecuencia.
00:02:53
Volviendo a la referencia de la función analog write nos dice que cuando
00:02:58
utilizamos esta función la frecuencia con la que se está pasando de valor alto
00:03:02
a valor bajo es de 490 hercios y que incluso en dos de sus pines, el 5 y el 6,
00:03:06
lo hace a unos 980 hercios. Entonces tenemos que entender que el valor de
00:03:12
frecuencia es tan alto que para la mayoría de los receptores esto parecerá
00:03:18
que los estamos alimentando con un voltaje analógico y no digital. Pues
00:03:23
jugando con la cantidad de tiempo que está a nivel alto y la cantidad de
00:03:28
tiempo que está a nivel bajo vamos a conseguir el efecto de tener un valor
00:03:32
analógico más alto o más bajo. Por ejemplo en la primera gráfica con un
00:03:37
ciclo de trabajo del 0% es como si tuviéramos 0 voltios. En la segunda
00:03:42
gráfica con un ciclo de trabajo del 25% es como si tuviéramos un cuarto de 5
00:03:47
voltios. En la del medio con un ciclo de trabajo del 50% un medio de 5 voltios.
00:03:52
¿Lo entendemos verdad? Jugando con esta modulación conseguimos el efecto de una
00:03:58
salida analógica aunque realmente no lo es. Bueno pues si volvemos a la placa
00:04:03
vamos a ver que hay algunos pines digitales que tienen como una muesca
00:04:07
concretamente el 3, el 5, el 6, el 9, el 10 y el 11. Esos son los pines digitales
00:04:11
que me permiten realizar una modulación de anchura de pulso. Bueno pues vamos a
00:04:18
comprobar que esto funciona bien con un ejemplo. Para ello vamos a ir a Tinkercad
00:04:23
nos vamos a crear un nuevo circuito al que le vamos a llamar PWM y como
00:04:28
siempre pondremos la placa de arduino, la de pruebas, un led,
00:04:36
una resistencia a la que le daremos un valor de 250 ohmios.
00:04:42
Conectamos como siempre la placa y esta resistencia la vamos a conectar al pin
00:04:48
10 y ahora vamos con el código como siempre en texto y vamos a ir
00:04:55
modificando cosas. En este caso ya no necesitamos la función pinmode, la
00:05:01
eliminamos. Lo primero nos vamos a crear una variable con el pin. Esta función de
00:05:06
aquí ya no la necesitamos, esta de aquí tampoco porque en lugar de escribir un
00:05:10
valor digital vamos a escribir un valor analógico así que analogwrite el pin y
00:05:15
aquí si vamos a la referencia de arduino nos dice que tenemos que escribir un
00:05:21
valor entre 0 y 255 es decir cuando escribamos 0 a la salida se pondrá una
00:05:25
modulación de anchura de pulso de tal forma que simule 0 voltios y cuando
00:05:31
pongamos 255 va a ser lo mismo pero para 5 voltios. Vamos a empezar poniendo un 0
00:05:36
y vamos a simular. Vemos que efectivamente nuestro diodo no se ha
00:05:41
encendido. Ahora vamos a poner un valor intermedio. Lo podemos hacer por ejemplo
00:05:45
al no tener que echar cuentas poniendo 255 y multiplicado por 0 con 5. En C el
00:05:50
signo para las multiplicaciones es el asterisco y cuidado porque los decimales
00:05:58
se ponen con punto no con coma. De esta manera estaremos escribiendo un valor en
00:06:02
torno a 127 una cosa así. Vamos a ver. Bueno se enciende nuestro LED.
00:06:08
Por último vamos a poner aquí un 1. En teoría si nuestro simulador funciona
00:06:15
bien tendría que encenderse con mayor intensidad. Os he advierto que TinkerCAD
00:06:21
no es muy fino con esto. El efecto del voltaje se aprecia mucho mejor cuando
00:06:25
utilizamos la placa de arduino en la realidad pero bueno nos sirve para
00:06:29
comprobar que verdaderamente esto funciona. Una cosa importante a destacar
00:06:33
es que la modulación de anchura de pulso se va a estar ejecutando continuamente
00:06:36
desde el momento en que se llama a la función analogwrite y no va a cesar
00:06:41
hasta que escribamos o leamos en digital el pin en cuestión. No es necesario
00:06:46
estar llamando en bucle a la función analogwrite para que escriba a nivel
00:06:51
alto, a nivel bajo, a nivel alto sino que una vez que se llama a la función esto
00:06:55
lo hace la placa de arduino constantemente hasta que se le diga que
00:06:59
se detenga. Bueno en esta práctica hemos utilizado la modulación de anchura de
00:07:03
pulso para controlar la intensidad lumínica del led pero también podríamos
00:07:08
utilizar esta técnica por ejemplo para controlar la velocidad de giro de un
00:07:11
motor eléctrico. Ahora vamos a ver otras posibilidades que ofrecen los pines
00:07:15
digitales de la placa de arduino. Si volvemos a la referencia de arduino
00:07:19
encontraremos una función con el nombre de TORN. Esta función nos va a permitir
00:07:22
cambiar la frecuencia que aparecen en los pines digitales que vimos
00:07:27
anteriormente. La sintaxis es muy sencilla, el pin, la frecuencia y también
00:07:31
cabe la posibilidad de indicar la duración del sonido. Bueno a continuación
00:07:37
vamos a cambiar el circuito para que un zumbador produzca un sonido. Lo primero
00:07:42
que vamos a hacer va a ser cambiarle el nombre, le vamos a llamar PIP. Vamos a
00:07:47
quitar estos elementos del circuito y vamos a poner un zumbador. Lo tenemos por
00:07:50
aquí, el que se llama piezo. Bueno como veis tiene un polo negativo y uno
00:07:57
positivo. El negativo lo vamos a conectar a tierra, lo podemos hacer en esta parte
00:08:01
aquí abajo, así. Y el positivo lo vamos a conectar al pin 10. Y ahora vamos con el
00:08:06
código. Vamos a quitar el código de antes, que ya no lo necesitamos. Vamos a
00:08:12
cambiar el nombre a la variable, ahora la vamos a llamar PINVACER y vamos a
00:08:17
utilizar la función TORN, donde indicamos el pin sobre el que queremos actuar y la
00:08:21
frecuencia que queremos escuchar. Nosotros vamos a emplear la frecuencia de
00:08:27
440 hercios, que si alguien sabe de música pues se corresponde con el LA,
00:08:31
con el que suelen afinar las orquestas. Bien, pues vamos a probar el circuito.
00:08:35
Si tenemos puestos unos altavoces comprobaremos cómo efectivamente se
00:08:43
produce un pitido continuo. Si queremos que este pitido tenga una duración
00:08:47
determinada, por ejemplo un segundo, pues pondremos 1000 milisegundos. Ya sabéis
00:08:51
que en Arduino se trabaja con milisegundos. Lo volvemos a simular
00:08:57
y ahora escucharemos durante un segundo ese pitido y se acabará. Como lo tenemos
00:09:04
en el setup y no estamos dentro del bucle de loop, pues sólo se ejecutará una vez,
00:09:09
que es tal como hasta ahora queremos. Bueno, pues presta atención porque a
00:09:13
partir de ahora te contaré lo que tienes que hacer en esta práctica.
00:09:16
En este caso yo he entrado a Tinkercad con el perfil de un alumno igual que
00:09:20
vosotros. Nos tendremos que ir a clases, seleccionar nuestra clase, entrar en la
00:09:24
actividad de Melody y copiar y modificar el circuito. Aquí le vamos a poner el
00:09:29
nombre de Melody. Vamos a quitar el copy off y si lo estamos haciendo en parejas,
00:09:34
pues el nombre de los dos integrantes de la pareja. Vemos que tenemos un buzzer y
00:09:38
ahora vamos a ver qué tenemos en el código. Vamos a hacerlo un poquito más
00:09:42
grande para verlo mejor. Y bueno, pues tenemos una variable para nuestro pin
00:09:45
del zumbador y dentro del setup llamamos a la función melodía que tenemos aquí
00:09:49
debajo. Dentro del loop no tenemos nada. Es decir, esta función melodía sólo se
00:09:53
va a ejecutar una vez, cuando se inicie Arduino. Bueno, dentro de la función
00:09:58
melodía nos hemos declarado un array con el tipo de datos float, es decir, un
00:10:02
array de números decimales como podemos ver aquí. Os recuerdo los números
00:10:07
decimales en programación siempre van con el punto, no con la coma. Bueno, este
00:10:11
sería un elemento, este sería otro... Lo que sí van separados por comas en los
00:10:16
arrays son los distintos elementos. Bueno, como veis nos creamos el array e
00:10:20
inicializamos sus valores. Eso lo hacemos empleando las llaves. A continuación
00:10:24
tenemos otro array, pero en este caso de números enteros, indicando la duración
00:10:28
de las notas. Estos dos arrays tienen que tener el mismo número de elementos
00:10:32
porque cada nota tendrá asociado su duración. Fijaros que nos dicen que si
00:10:35
queremos una redonda pondremos un 1, una blanca un 2, una negra un 4, una corchea
00:10:40
un 8. Bueno, a continuación nos creamos una variable numNotas y le asignamos un
00:10:45
valor que resulta ser, estos son detalles técnicos, el cálculo automático del
00:10:50
número de elementos de los arrays. Bien, y ahora tenemos un bucle for en el
00:10:55
que nos creamos una variable llamada notaActual y le asignamos el valor 0 en
00:10:59
la que la condición que se debe cumplir para ejecutar el bucle es que la nota
00:11:04
actual sea inferior al número de notas que nos calculamos anteriormente y aquí
00:11:08
tendríamos la actualización de la variable notaActual que es la que me
00:11:12
está controlando el bucle. Bueno, dentro del bucle nos creamos una variable
00:11:15
duración de notas que le asignamos un valor de un segundo, milisegundos,
00:11:19
dividido entre la duración de las notas. A continuación llamamos a la función
00:11:23
tone, indicando el pin al que tenemos el zumbador, la frecuencia de la nota
00:11:28
correspondiente, fijaros cómo utilizo el array y el índice, y la duración de la
00:11:33
nota en particular. Para conseguir el efecto de que las notas no estén ligadas
00:11:37
una a otra sino que haya una pequeña pausa entre notas, ese es el valor que
00:11:39
utilizaremos para mantener la Arduino en espera. Y a continuación decimos que no
00:11:43
emita ningún sentido con la función notTone, que no la hemos visto en la
00:11:47
referencia de Arduino, pero lo que nos dice es que deja de ejecutar cualquier
00:11:50
sonido. En realidad, como hemos puesto una duración, esta función no sería
00:11:55
necesaria, pero bueno, tampoco pasa nada por ponerla. Bueno, pues vamos a ejecutar el
00:12:00
programa y vamos a ver qué ocurre.
00:12:04
Bueno, como hemos podido observar, se ha ejecutado una vez la melodía. Si queremos
00:12:09
escucharla varias veces podemos hacer dos cosas, una detener la simulación y
00:12:13
volverla a simular de nuevo, o en la placa de Arduino tenemos un botón de
00:12:17
Reset, que es este de aquí. Si le pulsamos se resetea la placa y por
00:12:20
tanto se volvería a ejecutar el setup. Vamos a probarlo.
00:12:24
Bueno, pues en esta práctica lo que tendrás que hacer es, utilizando la tabla
00:12:30
de frecuencias para las distintas notas que te la dejo en el águla virtual, en
00:12:34
esta tabla podemos ver las distintas notas, aquí a la izquierda, y las
00:12:39
distintas escalas que tenemos. Por ejemplo, como decía anteriormente, 440 se
00:12:44
corresponde con la nota La de esta escala de aquí. Bueno, pues cógete la
00:12:49
partitura de la melodía que tú quieras, asínale las frecuencias y la duración
00:12:53
de las notas en estos Arrays y ejecuta tu propia melodía. Venga, sed originales.
00:12:58
Hasta ahora.
00:13:03
- Valoración:
- Eres el primero. Inicia sesión para valorar el vídeo.
- 1
- 2
- 3
- 4
- 5
- Idioma/s:
- Autor/es:
- Juan Luis Carrillo Arroyo
- Subido por:
- Juan Luis C.
- Licencia:
- Reconocimiento - Compartir igual
- Visualizaciones:
- 69
- Fecha:
- 20 de febrero de 2023 - 11:52
- Visibilidad:
- Público
- Centro:
- IES EL ALAMO
- Duración:
- 13′ 05″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 161.74 MBytes