Espectroscopía casera con DVD



En otra entrada anterior habíamos explicado que un DVD o un CDROM se comportan como una red de difracción. También habíamos calculado el número de líneas y los ángulos para hacer la observación. En esta segunda parte lo aplicaremos para observar los espectros de una luz de sodio a alta presión (HPS o High Pressure Sodium) y una lámpara fluorescente de bajo consumo de mercurio.

Hay algunas condiciones que debemos cumplir para que las observaciones salgan mejor:
  • Lo primero de todo, las observaciones salen mejor cuando se trata de una fuente puntual. Un foco extenso sólo producirá borrones en lugar de líneas.
  • Los rayos deben llegar paralelos. Para minimizar los artefactos de la y las lineas espurias de la difracción. En el laboratorio utilizaríamos un colimador, en casa conseguimos lo mismo al observar una fuente muy lejana, como por ejemplo una farola.
  • Limitar la entrada. En la línea de lo anterior, es muy conveniente tener una ranura por donde entran los rayos de luz. Mientras más fina más definido el espectro, pero también menos intenso. Si es muy fina podría darse dispersión y empeorar la condición anterior. Los rayos ya no serían paralelos y el espectro se vuelve borroso. Por lo tanto hay un límite en cómo de estrechas podemos hacer las líneas.
  • La fuente debe ser única. Parece que no hace falta decirlo. Si tenemos otras luches a la entrada o alrededor veremos los espectros solapados y nada nítidos. Por extraño que parezca, en casa esto es de lo más complicado de conseguir, por los reflejos en los cristales o las paredes que meten ruido en la observación. Incluso con una farola hay reflejos en edificios cercanos. Por eso lo mejor es limitar la entrada con una ranura.

Ver las líneas espectrales de una luz valiéndose de un CD es muy fácil y no tiene ningún misterio. Conseguir fotografiarlo ya es más complicado y se necesita bastante paciencia. Hay mucha gente que ha echo experimentos y los ha subido, esta es una buena página: http://ioannis.virtualcomposer2000.com/spectroscope/toyspectroscope.html


Análisis por ordenador

Hemos obtenido la foto de un espectro interesante, por ejemplo este


Ni que decir tiene que los colores de la imagen son aproximados ya que tanto la cámara como el monitor trabajan con valores de Rojo-Verde-Azul y algunas frecuencias (colores) quedan fuera de su alcance y no se pueden reproducir.

Ahora lo que me gustaría es tenerlo en un gráfico, de Intensidad frente a longitud de onda. Lamentablemente nunca podremos hacer eso con un montaje precario, porque para saber la intensidad necesitamos medir y compensar la respuesta del CCD de la cámara. Y puesto que es la del móvil, no tenemos tales datos. Para la longitud de onda necesitaríamos medir los ángulos de una manera precisa, y tampoco tenemos esa información en la imagen. Si supiéramos el ángulo exacto no tendríamos más que aplicar la transformación que hay en este gráfico:


Obtenido con esta hoja de datos. Así que de momento a lo máximo que podemos optar es a un gráfico Intensidad - Píxel y eso haremos.

Suponiendo que tenemos un espectro como el de antes, queremos una sección transversal de la imagen, o sea coger la linea central por ejemplo, y obtener su intensidad luminosa en cada píxel. Eso nos lo hace http://rsb.info.nih.gov/ij/, que es una herramienta en java para manipulación de imágenes online. Muy útil. Lo que ocurre es que yo quería más cosas.

Yo quiero procesar varias líneas de cada imagen (no sólo la línea central. Hay espectros que por el centro están sobreexpuestos y se ven mejor en los bordes. Quiero hacerlo con varias imágenes y dejar el resultado en un fichero. Finalmente me gustaría que el gráfico estuviera superpuesto al espectro, en parte porque queda bonito, y en parte porque al carecer de la longitud de onda me tengo que guiar por el color. Por cierto que esto de dejarse guiar por el color no es del todo buena idea porque las cámaras digitales suelen alterarlos (por una cosa que se llama balance de blancos), así que si en la vuestra se puede desactivar mucho mejor.

Para todo eso he programado un breve programa en C que:
  • Usando la librería libjpeg extrae la linea que se le diga (por defecto la línea media).
  • Extrae las N líneas adyacentes que se pidan y calcula la media. Por ejemplo puede servir para suavizar el gráfico. Además este efecto se acentúa al ser concéntricas las líneas espectrales. Sirve para eliminar ruido del CCD en las zonas oscuras, como contrapunto ensancha las líneas y vuelve borroso el espectro.
  • Con los tonos de color obtenidos genera una imagen en formato AVS para graficarla con Gnuplot. El formato AVS de imágenes es de los más sencillos que hay. Documentado aquí en dos párrafos: http://local.wasp.uwa.edu.au/~pbourke/dataformats/avs_x/
  • Si la imagen es en color calcula la intensidad total usando una media cuadrática. Hay multitud de maneras de convertir una imagen a escala de grises, esta es la que mejor resultado me ha dado para las imágenes que tengo. Lo malo es que no incorpora ningún tipo de ponderación de colores.
  • Escribe un archivo con la intensidad luminosa calculada por cada píxel.
  • Escribe un archivo con los comandos de Gnuplot necesarios para hacer el gráfico.
  • Y finalmente ejecuta Gnuplot para generar una imagen PNG con todos los elementos. Con una versión antigua de Gnuplot las líneas quedan muy ásperas porque libgd no soporta antialias. Así que he usado el terminal tipo pngcairo que incorpora Gnuplot 4.4.

El resultado me encanta. Aquí abajo tenéis por ejemplo el gráfico de un tubo fluorescente de espectro ensanchado. A decir verdad no sé interpretar casi ninguna línea. Pero podéis ver el doblete amarillo del mercurio por ejemplo.




¿Sodio o mercurio?
 
Teniendo la longitud de onda de una linea dada podríamos ir a la base de datos del NIST a mirar de qué elemento podría ser. Pero como esa información no la tenemos no podemos analizar nada, y nos limitaremos a interpretar lo que vemos en base a espectro que conocemos. Como por ejemplo el del mercurio.

He aquí la luz que proporciona una lámpara de bajo consumo (varía según marca y modelo).


Fijaos en el doblete amarillo que se distingue fácilmente. Es del mercurio y está formado por dos líneas en 576.9nm y 579nm. Además de este se ven varias líneas más que también parecen compuestas.

Cuando vemos un doblete en el amarillo es tentador pensar que estamos resolviendo el doblete de la línea D del sodio. Pero no es el caso, primero porque estamos observando una lámpara de mercurio, no de sodio, y aunque podría contener trazas no darían unas líneas tan intensas. Sin embargo hay otra forma de verlo, mirad la imagen original:


El espectro anterior está calculado en la línea media, así que vamos a suponer que el ancho total es de 320 pixeles (que es el ancho de la imagen). Habíamos dicho en la primera parte que la anchura en grados del segundo orden de difracción es de 60. Tenemos 320 pixeles para reproducir 60º de espectro. Mirad la posición y separación de las lineas del doblete del mercurio y del sodio:


Por una simple regla de tres al mirar el doblete del sodio, que está separado 0.14º, la separación entre los máximos de las líneas sería de

\[\Delta = \frac{320 \times 0.14}{60} = 0.75\]

es decir, los máximos están separados por menos de un píxel. Así que los veremos como uno sólo. La resolución que tenemos no es suficiente. Sin embargo la separación de las líneas del doblete amarillo del mercurio es de 0.40º, y su intensidad es mucho más débil (no se presenta el problema de la sobreexposición que ensancharía las líneas y las solaparía). La separación en las imágenes es de

\[\Delta = \frac{320 \times 0.40}{60} = 2.13\]

algo más de 2 pixeles. Ese sí que podríamos verlo y de hecho es el que vemos en la imagen.

Ahora mirad este otro espectro, de una luz de sodio a alta presión. La banda negra que veis en la zona naranja es una banda de absorción del sodio -con la alta presión se da un fenómeno de auto absorción, y la línea D en lugar de radiarse se retiene-. El caso es que no es una absorción limpia con un mínimo en el centro, sino que en el centro tiene un pequeño máximo. ¡Ahí tenemos el doblete D del sodio! Estamos viendo que la absorción no es de una única línea sino que se compone de dos separadas. Hemos tenido que recurrir a verlo en absorción porque los medios que tenemos no son suficientes para verlo en emisión. Con un ancho de la imagen original de 480px, la separación sería de 1.12 pixeles, algo más si tenemos en cuenta que lo que se ve en esa imagen no es el espectro visible completo de 60º, sino sólo una parte.


En esta otra imagen de la lámpara de mercurio he quitado el zoom y se ve el comienzo del tercer orden de difracción. Fijaos como las dos líneas violetas están más separadas a la derecha de la imagen que a la izquierda.



Y hasta aquí podemos llegar sin recurrir a apoyos ópticos como un ocular o un colimador. Y sin un montaje fijo que nos permita medir ángulos con precisión y situar la cámara en el punto adecuado. Hay muchos más tipos de lámparas, la próxima vez que la grabadora os estropee un DVD ya sabéis algo que probar. Tenéis más información así como espectros comentados en http://ioannis.virtualcomposer2000.com/spectroscope/ o en http://www.astrosurf.com/~buil/us/spe2/hresol4.htm.

 Como siempre, os dejo las imágenes, los espectros así como el código fuente del programa en esta dirección. El programa en C está bastante liado, no es un buen ejemplo de programación, aún así tal vez os resulte útil para vuestras pruebas.

8 comentarios:

  1. Hola, encuentro muy interesante tu programa, es justo lo que necesito, pero tengo el pequeño problema de no saber compilarlo. No encuentro ninguna direccion de contacto asi que he tenido que recurrir a los comentarios, por favor, avisame si llegas a leer este comentario, estaria muy interesado en aprender a utiliz tu programa.

    ResponderEliminar
  2. Hola How. He visitado tu perfil pero tampoco me aparece ningún email para avisarte. Si quieres escríbeme a electronicayciencia@gmail.com y vemos qué falla en la compilación.

    ResponderEliminar
  3. Hola, la verdad que me gustaron mucho estos 2 artículos de espectroscopía casera y tenía ganas de armarme uno.. El temita es que no puedo entrar a los links del virtualcomposer2000, sabes si se mudaron a otro sitio?
    Gracias por estos tutoriales tan buenos. Saludos

    ResponderEliminar
    Respuestas
    1. Hola. La verdad es que no sé qué ha sido del sitio. Mantengo los links por si en el futuro vuelven.

      De todas formas hay mucha información sobre esto buscando en Google. ¿Tienes en mente algún proyecto concreto o sólo es por hacer el experimento?

      Saludos.

      Eliminar
  4. Gracias por responder tan rápido.. Si, tenía ganas de hacerme uno para probar que tal era la resolución y ver si sólo las fuentes con mucho brillo logran generar un buen espectro, ya que la idea es tratar de montarlo en un telescopio y ver los espectros de estrellas y planetas brillantes. Sería mucha molestia, si aún lo tenés al espectrómetro, si te pido unas fotos del mismo para ver el diseño?

    ResponderEliminar
    Respuestas
    1. Siento no poderte ayudar en eso, Gastón. Los espectros de este artículo son de fuentes muy intensas como farolas o tubos fluorescentes. Así que no necesité construirme ningún espectroscopio. Fue suficiente con sujetar un corte de DVD frente al objetivo de la cámara y hacer pasar la luz incidente por una rendija de cartón.

      Para analizar el espectro de un planeta sí que necesitarás montar un espectroscopio, además de un buen telescopio y una cámara muy sensible y con poco ruido de CCD.

      En el artículo http://electronicayciencia.blogspot.com.es/2010/07/difraccion-en-un-dvd.html tienes el cálculo de los ángulos.

      Suerte con el proyecto. Si subes tus progresos a internet, dímelo y pongo un link en la entrada.

      Eliminar
    2. Muchas gracias igualmente.. Sí estuve usando los cálculos para ver como hago todo.. Voy a hacer el intento a ver que sale jeje si llego a algo te escribo.. Saludos

      Eliminar
  5. ¿Cómo puedo conocer el ángulo de refracción para calcular la lambada (longitud de onda)?

    ResponderEliminar

Por favor, usa mayúsculas, minúsculas, puntos, comas, interrogaciones y todo eso. Muchas gracias.