vía serial. conversion=read_adc(); campo=0.2326*conversion-ajuste; lcd_gotoxy(1,1); printf(lcd_putc,"Campo Magnetico"); lcd_gotoxy(1,2); printf(lcd_putc," %f mT ",campo); printf("%f ",campo); printf("\n "); delay_ms(500);
Este programa esta diseñado para ser trabajado en el compiladorccs, que se encarga de pasar el código de lenguaje c al código máquina que es el lenguaje que interpreta el microcontrolador.
Por otra parte, para programar el microcontrolador en C, es necesario tener un compilador, que se encargue de transformar el código fuente programado en C a código de máquina (sistema binario), este proceso se detalla a continuación.
Creación de un proyecto en CCS
Para comenzar un proyecto en el compilador C CCS, se sugieren los siguientes pasos: 1. En la barra de herramientas se selecciona el iconoPIC Wizard. Figura 33
2. Se escoge el nombre del proyecto con el cual se desea guardar. Figura 34
Figura 33.Icono a seleccionar
Figura 34. Paso para guardar el proyecto
3. Selección del microcontrolador , características y opciones de configuración, es posible dejar todas las opciones como vienen y simplemente dar Ok, ya que después es posible cambiar la configuración ya establecida.Figura 35
4. Por último se crea el proyecto y se mostrará la ventana en donde se realiza el programa.Figura 36
Figura 36.Entorno para la programación
5.Se copia el código que se muestra en el apéndice A.
Figura 37.Código para el funcionamiento del magnetómetro
6. Para compilar el programa se puede ir al iconoCOMPILEo directamente con la tecla
memoria utilizada y la lista de archivos de salida, donde se encuentra el archivo máquina
(.HEX).
Figura 38.Compilación del código
Programación del Microcontrolador
Para programar el microntrolador, es decir, enviar el código máquina proporcionado por la compilación del programa en C al microntrolador, es necesario disponer de un programador de pic, existen programadores que se pueden usar directamente con el compiladorccs, en este caso se usa un programador que necesita un programa extra para ser enviado al microntrolador, este se llama pickit2programer y trabaja con el programador
pickit2. Se deben seguir los siguietes pasos:
Se conecta el programador, y se abre el programapickit2, si todo esta correcto debe aparecer como muestra en la Figura 39.
Se debe cargar el programa con extensión.HEXgenerado por la compilación del código
C, esto se hace en la pestañafile, Import Hex, y abrir el archivo.Hex. Despues se procede a programar dando en la pestaña programmerrightarrow write device, si todo se hizo correctamente deben aparecer las pantallas de la Figura 40.
Figura 39.Programa pickit2 encargado de envíar el código al microcontrolador
Figura 40.Carga del archivo.Hexusando pickit2 Adquisición de los datos vía serial
Hasta este punto, el instrumento de medición se encuentra en la capacidad adquirir los valores de campo magnético y mostrarlos a través de la pantalla LCD, pero se pensó en la necesidad que en ocasiones se tiene de procesar, analizar, enviar o guardar la información adquirida, por tal razón se realizó la comunicación serial con ayuda del
programa Python, que maneja un lenguaje de programación que permite al programador emplear un estilo particular de programación, como: programación orientada a objetos, programación imperativa y programación funcional. El proceso se describe a continuación.
Programa en Python. Para adquirir los datos generados por el magnetómetro se hizo uso de el programa python y se le agregó el módulo Pyserial que cuenta con unas librerías para su configuración y su funcionamiento. Para enviar datos de forma serial, es necesario ejecutar el siguiente código en python.
#!/usr/bin/python
# Importamos la librería de PySerial import serial
import time
# Abrimos el puerto del arduino a 9600
PuertoSerie = serial.Serial(’/dev/ttyUSB0’, 9600,timeout=1) # Creamos un bucle sin fin
outfile = open(’Bserial.txt’, ’w’) # Indicamos el valor ’w’. n=0
while n<=10:
DatoSerial = PuertoSerie.readline()
print "Campo Magnetico " + DatoSerial.rstrip(’\n’)+ "mT" outfile.writelines(str(n)) outfile.writelines(" ") outfile.writelines(str(DatoSerial)) time.sleep(1) PuertoSerie.flushInput() n += 1 outfile.close()
Figura 41.Programa para la adquisisción de datos via serial
Este código lee los datos del puerto serial y los muestra en la terminal, la cantidad de datos obtenidos para este ejemplo es de10, pero el usuario es quien determina a partir del código la cantidad de datos que quiere adquirir. Su ejecución se muestra en la Figura 42.
oscar@oscar-Aspire-4739Z:~/python$ ./Bserial.py Campo Magnetico -0.69 mT Campo Magnetico 77.68 mT Campo Magnetico 42.56 mT Campo Magnetico 20.00 mT Campo Magnetico 10.69 mT Campo Magnetico 5.34 mT Campo Magnetico -1.62 mT Campo Magnetico -1.86 mT Campo Magnetico -1.16 mT Campo Magnetico -0.69 mT Campo Magnetico -0.93 mT
Figura 42.Programa para la adquisisción de datos via serial Guardar los datos en un archivo de texto
Ahora, si se desea guardar los datos adquiridos para un posterior análisis, es necesario agregar al código anterior:
outfile=open(’Bserial.txt’,’w’)
que se encarga de generar el archivo de texto; el literalwindica que es para escritura. Como se muestra en la siguiente Figura 43.
#!/usr/bin/python
# Importamos la libreira de PySerial import serial
import time
# Abrimos el puerto del arduino a 9600
PuertoSerie = serial.Serial(’/dev/ttyUSB0’, 9600,timeout=1) # Creamos un bucle sin fin
outfile = open(’Bserial.txt’, ’w’) # Indicamos el valor ’w’. n=0
while n<=10:
DatoSerial = PuertoSerie.readline()
print "Campo Magnetico " + DatoSerial.rstrip(’\n’)+ "mT" outfile.writelines(str(n)) outfile.writelines(" ") outfile.writelines(str(DatoSerial)) time.sleep(1) PuertoSerie.flushInput() n += 1 outfile.close()
Al ejecutar este programa se encuentran dos resultados, uno son los datos en la terminal y el otro es un documento de texto que se encuentra en la misma carpeta en que se ejecutó el programa, los datos en la terminal son los mostrados en la Figura 44 y los datos en formato txt se muestran a continuación.
0 -0.69 1 77.68 2 42.56 3 20.00 4 10.69 5 5.34 6 -1.62 7 -1.86 8 -1.16 9 -0.69 10 -0.93
Figura 44.Datos mostrados en archivo de texto .txt
Comparación entre el magnetómetro y el teslámetro Phywe 13610-90 Para evaluar el funcionamiento y exactitud en la medición del magnetómetro construido, se realiza una prueba en la cual se contrastan los valores de campo magnético obtenidos con el magnetómetro prototipo y el teslámetro Phywe13610-90, para ello se hace el montaje de las bobinas de helmholtz y se colocan las dos sondas lo más próximas posibles en el centro de las bobinas, con el fin de que estén en presencia del mismo campo magnético. El montaje se muestra en la Figura 45 y un ejemplo de la medición en la Figura 46.
Figura 45.Montaje de comparación Figura 46.Comparación de datos
La prueba se inicia con campo magnético nulo, para el cual se registra en los dos instrumentos de medición un valor de 0.0mT, a medida que se aumenta la corriente en las bobinas, se observan los valores de campo magnético para cada instrumento, encontrando los siguientes resultados (ver Figuras 47 y 48).
Figura 47.Campo magnético en función de la corriente (Prototipo)
Figura 48.Campo magnético en función de la corriente (Phywe 13610-90)
En la gráfica de la Figura 47, se muestran los datos de campo magnético en función de la corriente obtenidos con el magnetómetro prototipo, para el cual se encontró una sensibilidad de 1.5436 mT/A, mientras que para el teslámetro Phywe la sensibilidad
encontrada es de1.4364 mT/Acomo se muestra en la gráfica de la Figura 48, dando como resultado una desviación relativa de7.5% que se puede deber a varios factores como:
El teslámetro Phywe tiene mayor resolución en la medida que el magnetómetro prototipo.
No tener una completa alineación de la sonda del magnetómetro con el eje de las bobinas.
La sonda empleada en la calibración no sea la misma que se conecta al magnetómetro prototipo, recordando que el fabricante brinda una estimación de la sensibilidad pero no da un valor preciso y esta puede varias de un sensor a otro.
En el apéndice C se muestran los datos correspondientes a las gráficas de las Figuras 47 y 48 y también una serie de fotos que corroboran las mediciones hechas.
Usos del magnetómetro
Es importante que el instrumento de medición a parte de ser fiable sea funcional para el ámbito experimental o educativo. Considerando lo anterior, se muestran algunos laboratorios que se pueden realizar con el magnetómetro prototipo teniendo en cuenta la información que se presenta en la Tabla 8 de características. Este instrumento de medición tiene la capacidad de hacer mediciones sobre imanes potentes como los de neodimio y también sobre algunos cerámicos, siempre y cuando el campo magnético a medir en el punto más intenso no sobrepase su rango de medición que para este caso es de 115mT, esta información permite aclarar que tipo de laboratorio se puede realizar con el magnetómetro. Algunos de estos son:
La medición de campo magnético continuo en función de la distancia, la corriente y el número de espiras de una bobina sin núcleo.
El campo magnético generado por imanes de diferentes simetrías.
La homogeneidad del campo magnético en la configuración de Helmholtz.
Experimentos que requieren de la evaluación cuantitativa de datos densidad de flujo magnético B, como por ejemplo: la relación carga masa con el tubo de rayos filiforme o de rayos catódicos.
Pero también hay mediciones que no son viables para el magnetómetro, como la medición del campo magnético terrestre, ya que es del orden de 10−3mT (6,5µT), por lo que el magnetómetro mediría 0 mT teniendo en cuenta que la mínima medida que puede realizar el instrumento es de0,232 mT. Otras prácticas en las que no es funcional son las relacionadas con mediciones de campos magnéticos muy intensos como los aplicados a los laboratorios de resonancia de spín electrónico y efecto Zeeman, por lo general estos campos son de un poco más de1Trango que no alcanza a tener el magnetómetro. Para evaluar el funcionamiento del magnetómetro, se realizaron algunas pruebas con imanes de neodimio de simetría circular y uno cerámico de simetría de arandela. A continuación se hace una breve descripción de los montajes realizados y los resultados obtenidos.
Campo magnético en el eje de un imán
Es posible medir el campo magnético sobre el eje de un imán de neodimio de forma circular. Para realizar este experimento, se usa un imán de las siguientes dimensiones:38mm
de diámetro por5mmde ancho; se coloca la sonda inicialmente a3mmdel eje del imán y se va alejando cada 3mm, registrándose así las variaciones del campo magnético, (ver Figura 49). La gráfica de la Figura 50 muestra los resultados de campo magnético desde una distancia inicial de3mmhasta 90mm.
Figura 49. Descripción del montaje para le medición de campo magnético en el eje del imán con forma de disco en función de la distancia
Figura 50. Campo magnético en función de la distancia para un imán en forma de disco.Cerca al imán el campo es máximo y comienza a disminuir conforme se aleja el sensor del eje del imán, hasta que el campo se aproxima a cero.
Campo magnético entre dos imanes de neodimio
Configuración 1: Igual polaridad. Se separan dos imanes una distancia de18cm,