Saltar navegación

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

Pwm y zumbador - 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 20 de febrero de 2023 por Juan Luis C.

69 visualizaciones

Descargar la transcripción

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:
  • 1
  • 2
  • 3
  • 4
  • 5
Eres el primero. Inicia sesión para valorar el vídeo.
Idioma/s:
es
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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid