Ya hemos visto en la entrada anterior que medir la gravedad es algo que cualquiera puede hacer en su casa.
Ahora nos planteamos utilizar algún sensor y nuestra placa de arduino (o compatible) para ver si podemos medir el período con arduino. Es decir, hacer que el proceso de conteo de oscilaciones y el cálculo de la gravedad sea automático y más preciso. Vamos allá.
Materiales necesarios
De acuerdo a la solución que hemos seleccionado, este ha sido el material que nos ha hecho falta:
- 1 placa compatible con arduino
- 1 sensor de infrarrojos
- Un peso (bola, caja), hilo, metro para medir la longitud. Un marco de puerta o similar para colgar el péndulo. Un soporte para situar el sensor en el suelo.
- Opcional: echar un vistazo a nuestra anterior entrada
- Para programar la placa: IDE de arduino, visualino, mblock o similar
Como se ve, solo es necesario asegurarse de tener los dos primeros puntos, el resto, creo que todo el mundo cuenta con ello (el último punto está constituido por programas gratuitos descargables de Internet en los enlaces que he puesto).
El trabajo manual
La industrialización, primero y la revolución de la informática, después, facilitaron nuestras vidas al automatizar trabajos de manera que no precisaran de nuestra intervención.
Para «automatizar el cálculo de la gravedad«, aprovechando que no vivimos en el siglo XIX, primero identificamos el trabajo manual que hacemos: tomamos datos de tiempo de oscilación con el cronómetro de nuestro móvil.
La precisión será nuestra capacidad de reacción al ver el peso oscilante regresar a su posición de partida, para apretar el botón «detener» del cronómetro del móvil. Se pueden comprobar las medidas de tiempo que tomé en la tabla de la entrada anterior. Existe muy poca variación a nivel de centésimas (100 milisegundos).
En resumen, con mayor o menor precisión, el trabajo manual que hacemos es medir tiempo y contar oscilaciones.
El trabajo automático. Robótica educativa
En el mundo de la robótica educativa basada en arduino, corresponde a los sensores tomar datos. Por otra parte, el propio sistema interno de arduino le permite la medición de tiempos.
El cronómetro, por lo tanto, lo tenemos disponible en nuestro microcontrolador y para contar las oscilaciones deberemos buscar un sensor que lo permita.
¿Qué sensores utilizar?
Tratamos de conocer el período de oscilación de un péndulo. En nuestra experiencia manual, hemos visto que basta contar números de 1 en 1 , una «experiencia claramente digital», para obtener un valor decimal.
Es posible, por lo tanto, que sea suficiente un sensor digital. Pero, ¿qué sensor y cómo situarlo?.
Solución seleccionada (hardware)
Para medir el período con arduino, hemos pensado en un detector de obstáculos, situado en un lugar «especial» que permita obtener el período.
Situaremos un detector de infrarrojos (IR) enfrente de nuestro objeto y contaremos cuántas veces se acerca al sensor. El sitio ideal es el punto más bajo del péndulo.

Cada vez que la bola pase por su punto más bajo, activará el sensor IR. El conteo lo hará la placa de arduino, que también medirá el tiempo. De ahí obtendremos una aproximación al valor de la aceleración de la gravedad. Después podemos hacer pruebas desplazando el péndulo distintos ángulos.
En el vídeo se puede ver cómo se activa el detector cada vez que la bola pasa por su punto más bajo:
Medir el período con arduino: la programación
Como se puede ver, el montaje no es complicado; una vez realizado debemos idear el algoritmo adecuado que nos permita obtener el período con arduino y calcular la gravedad.
El primer problema que se plantea es dónde empezar a contar el tiempo. Comenzaremos cuando la bola pase por primera vez por encima del sensor. Será necesario que cuente dos activaciones antes de poder decir que ha pasado un período.
Por lo tanto, si queremos que haga 10 oscilaciones, pediremos que pase 20 veces por encima del sensor.
Cuando el contador establecido sobrepase 20, dejará de contar y grabará el tiempo que ha pasado. Este tiempo se descuenta del tiempo en que se tomó la primera medida para obtener el tiempo total. Dividimos entre 20 y tenemos el período.
Como sabemos la longitud del péndulo, podemos calcular la aceleración según la fórmula de la entrada anterior.
El algoritmo que hemos seguido:

El programa se muestra en la siguiente figura, utilizando programación por bloques con visualino y en una primera versión sin optimizar (se muestran por separado las instrucciones de inicialización y de impresión por puerto serie, que van situadas donde están las flechas rojas):

Las instrucciones de inicialización de variables:

Las instrucciones de impresión por puerto serie:

Los resultados del programa realizado, impresos en el monitor del sistema, se pueden ver en el siguiente vídeo:
Hay muchas formas de resolver este tipo de problemas. Os invito a probar otras maneras de plantear el experimento y a optimizar el código.
Proyecto muy interesante para realizar con mis alumnos de bachillerato. Muy claro y bien explicado.
Me podrían enviar el código para Arduino y la descripción del proyecto por correo.
Muchas gracias!!
Hola, felicitaciones por el proyecto, será que me puedas pasar el programa por favor.
Hola, Mariana,
te lo he enviado a tu correo, espero que te sea útil
Un saludo
Federico Arroyo
Hola buen dia.
¿Crees que puedes enviarme el cogido del programa a mi correo. De antemano muchas gracias
Te lo acabo de enviar, espero que te sirva
saludos
Buenas tardes.
Felicitaciones por este proyecto.
Hace tiempo estaba intentando medir con arduino.
Serían tan amables de enviarme el código para arduino uno.
Muchísimas gracias y nuevamente, felicitaciones.
Gracias por tus comentarios, Javier, te he enviado el programa a tu correo. Hay que vigilar que el sensor se active correctamente, por lo que el móvil que oscila debe ser suficientemente grande. Además, ten en cuenta que un exceso de luz puede provocar activaciones falsas.
Eh, podriamos reenviarme el codigo de programacion a mi correo?
Hola, Ángel,
enviado a tu correo, espero que te sea de utilidad
Un saludo
Federico Arroyo
Felicitaciones, excelente proyecto. Muy actualizado, para los estudiantes del siglo XXI. Me podrían enviar el código para Arduino y la descripción del proyecto por correo. Mil gracias.
Hola, Jesús,
he enviado el código que hice a tu correo, espero que te sirva
Saludos
Hola que proyecto tan genial, os felicito, podrias por favor compartirme al correo vuestro codigo arduino utilizado en el mismo, gracias. Exitos
Buenos días, Ricardo,
te he enviado el programa que hice en su día en formato .ino
espero que te sirva
un saludo
Federico
Buenas tardes muy buen proyecto me podrías regalar el código del Arduino, gracias existos.
Hola, Sara,
te he enviado el archivo .ino con el programa. Recuerda verificar que los sensores cuentan bien las oscilaciones.
Saludos
Hola muy bueno el proyecto, te felicito, me podrias enviar el codigo por favor para Arduino y la discripcion del proyecto por correo. Saludos. Gracias. (julioabalos39@gmail.com).
Hola, Julio César, te lo he enviado a tu correo.
Un saludo
Federico
Buenos días Federico
Me sumo a las felicitaciones. Yo también estoy trabajando con los péndulos y arduino con mi alumnado de bachillerato y buscando prácticas me he encontrado con su excelente aportación. Si puede enviarme el código y la descripción a mi también se lo agradecería. Andamos un poco perdidos. Un saludo.
Hola, Carmen,
te he enviado al correo el archivo que hice, en formato .ino.
Si lees detenidamente las dos partes de la entrada en el blog, junto con las salidas que se imprimen en el monitor, creo que podrás entender lo que hace el programa. Básicamente cuenta el número de activaciones hasta 20. La primera vez que se activa el sensor, guarda el valor del tiempo en una variable (la funcion millis() proporciona directamente este tiempo). Cuando el contador está en 20, toma otra vez el tiempo. Restando ambos tiempos y dividiendo por el número de oscilaciones, se obtiene el período del péndulo y a partir de ahí, se aplica la fórmula para obtener «g». Ten en cuenta que el sensor de IR está a «1» inicialmente y al activarse pasa a «0».
El cableado del sensor es sencillo: a GND, a 5 V y la otra pata a una pin digital de arduino.
Espero que te resulte útil.
Un saludo,
Federico
Buenas tardes Federico, tu nos podrías hacer el favor de explicarme el codigo, por favor
Hola, Santiago,
intentaré en breve responder a tu pregunta, en cuanto encuentre un hueco
gracias por acercarte al blog,
saludos
Me podrías pasar el código es oara un proyecto en la universidad
Hola, Danilo, enviado a tu correo, espero que te sea útil
Un saludo,
Federico Arroyo
Buenos días Federico
Me sumo a las felicitaciones. Yo también estoy trabajando con los péndulos y Arduino en la universidad y buscando prácticas me he encontrado con su excelente aportación. Si puede enviarme el código y la descripción a mi también se lo agradecería, ya que me gustaría poder implementarlo y modificarlo para agregarle nuevas formas de lectura en base a ecuaciones diferenciales de modelado matemático para una mejor precisión, por favor.
Hola me encanta este proyecto, pero no entiendo muy bien la programación por bloques, tu me puedes enviar el código, para poder entenderlo mejor?, muchas Gracias!
Hola, Andrés,
te lo he enviado, espero que te resulte útil
un saludo,
Federico
hola buenas tardes muy interesante la actividad con Arduino me podría compartir el código. muchas gracias.
Hola, saludos desde Argentina. He visto tu post y me resultó interesante para replicar. ¿Podrías compartir el código? Gracias de antemano.
Hola un proyecto muy interesante y practico para enseñar a los jóvenes. me puedes hacer el favor de compartir el código, soy docente muchas gracias .
Buenas noches Federico, tu me podrias ayudar con un codigo que me tome la cantidad de aoscilaciones por minuto, muchisimas gracias
Hola, Santiago,
disculpa el retraso.
Solo tienes que adaptar el problema del péndulo: ir contando las activaciones del sensor hasta que pase el tiempo utilizando la función millis(). En la primera activación guardas el tiempo dado por millis() en una variable, llamémosla «tiempo1». Haces un bucle del tipo mientras(millis()-tiempo1<1000){¿se activa el sensor?->SI: contador = contador +1; NO: seguir}.
Un saludo
Buenas noches, me podrias pasar el codigo utilizado en arduino gracias
hola me encanto el proyecto me podria pasar el codigo?
Te lo he enviado a tu correo,
en función de cómo construyas el péndulo, es posible que tengas que hacer ajustes
espero que te resulte de utilidad
Un saludo
Federico
Hola, tu proyecto es fantástico, yo apenas estoy iniciando en el mundo de arduino y encontrar tu publicacion fue fantastico, usted me podria compartir su proyecto para analizarlo. Le agradezco de antemano
Hola, Jonathan,
lo he enviado a tu correo, espero que te resulte útil
vigila la correcta activación del sensor
Federico
Hola, increíble proyecto, soy programador y estoy comenzando en le mundo de Arduino, me podría compartir el código para analizar por favor, Gracias
Hola, Sediel, te lo acabo de enviar,
Cuidado con la correcta activación del sensor.
Gracias por echar un vistazo al blog.
Un saludo,
Federico
Buenas Federico, me gusto mucho su proyecto, me podría pasar el código? me serviría mucho para un proyecto en secundaria. Gracias.
Hola, Belén,
te lo he enviado.
Como suelo decir, cuidado con la correcta activación del sensor y ten en cuenta que hay que cambiar la longitud del péndulo y poner la que tengas.
Gracias por acercarte al blog.
Un saludo,
Federico
Muy bueno tu proyecto, es posible que nos dejes ver el codigo. Gracias. 🙂
Hola, Cristian,
te lo he enviado a tu correo,
espero que te sirva
Un saludo
Federico
Hola, me podría facilitar el código para el funcionamiento del sensor?, por favor.
Le agradezco de antemano
Hola, José Felipe, te he enviado el programa que hice en su día a tu correo. Espero que te sirva.
Gracias por pasarte por el blog.
Federico
Excelente, de gran ayuda para un proyecto que estoy realizando.
Me podrias por favor compartir el codigo via correo.
Hola, Laura,
te lo he mandado a tu correo.
Un saludo
Federico
Hola, buenas tardes, me podrías compartir el código de este ejercicio? mi correo es jacrespol97@gmail.com
Hola,Juan Andrés,
te lo he enviado a tu correo,
espero que te sirva
saludos
Buenas tardes, debería de publicar el código ya que es una práctica muy interesante.
Hola, Edgar,
¡si el código está publicado en la entrada! Eso sí, con bloques (el programa visualino es descargable y «traduce» los bloques a código directamente utilizable en el IDE de arduino). Te he mandado el código escrito para IDE a tu correo.
Muchas gracias por tus palabras y por acercarte el blog.
Saludos
Federico
Buen día, excelente software has creado, me puedes compartir el codigo
Hola, Andrés,
te lo he enviado,
un saludo
Federico
hola, excelente trabajo, me pasarías el código
Hola, César,
te lo he enviado,
espero que te resulte útil
Federico Arroyo
Hola, buenas tardes, me podría compartir el código, es para una practica de la escuela, y quiero llevar el proyecto desde diferentes puntos de vista, tanto como el manual como también el uso de un microcontrolador.
Hola, Axel,
ya te lo he enviado,
saludos
Buen día! Podrían enviarme el código para este experimento? Desde ya Gracias!
te lo he enviado al correo
un saludo
buenas , interesante proyecto, me enviarías el código porfavor, gracias!!!
Hola, Tobías,
te lo he enviado, espero que te sirva
saludos
Hola muy buena tarde.
¿Cree que pueda enviarme el cogido del programa?
Me han encantado varios videos que ha publicado. Es una maravilla que alguien pueda compartir estos proyectos tan buenos. ¡¡Muchas felicidades!!
De antemano muchas gracias
Hola, Paulina,
gracias por tus palabras, te acabo de enviar el programa,
un saludo,
Federico
Me podrían pasar el código por favor
Hola, Dylan,
te he enviado el código
un saludo