You are on page 1of 7
rr a ey Fd gle Lal c a F s/.0,00 CC CT ET —Abtegtewe Tutorial MagnetémetroHCSO8SL anricuios Tutorial Magnetémetro HMC5883L POPULARES Posted ty Tssias M4 Comments : wo Bla, 5.0 En este tutorial revisaremos las caracteristicas de la brijula digital o| jn 25, 2015 magnetémetro HMC5883L, explicaremos la conexién y realizaremos- «jemplos con Arduino EL HMC58831 es un magnetémetro de 3 ejes, con este pods ler las anricutas componentos de campo magnética prosento, de esta forma conoctondo RECIENTES la draccién del campo magnétic terrestre podomos caleuiar orientacién con respecto al norte magnético de la terra, esto siempre y cuando nuestro sensor no este expuesto a algin campo magnético ‘extaro u algun objeto metaico que altere el campo magnético terrestre EL HVIC58831 se encuentra comercialmente en médulos, os cuales faciltan su uso, el modelo que usaremos para este tutorial es el que pueden encontrar en nuestra tienda: PROMOCONES SPECIALS Shiels Geeetech Gsw/sPRS Sh 1690 | modulo trabaja con 3.3V, pero tiene un regulador interno por lo que se puede alimentar con SV 0 con 3.3V en sus pines respectivos Ee= 7 Su drecci6n 12 es Ox1E, direccién que no podemos cabiar, por esta ‘azn no se puede conectar oo HVCSBES en el bu2 I2C, poro si podemos conectar otros dispositives que tengan direccién distinta ETIQUETAS rmbt | uD) brane | arter ovennoes Shiels Relay v2 rida 6 cota argos (ata coment, 31. 45,00 Sensor de humeda felativa y temperatura ‘yrs (442301) El sorsor OHT21 ome med tomperatra Y humeded rate do ferma Si 25,00 Sensor de uo de 26.32" r-Dnso El sensor do ho pote red el causal de opua en a tuber ya. i, 12500 Servo M9968 11k rensmiow, corpse con engranes oo met Tene dos modos de Funcionamiento, Modo Continuous-Measurement (continuo), en donde el magnetémetro esté constantemente realizado ediciones y actualizando los registos xy.z.correspondiontes a las lecturas. Y el modo Single-Measurement , aqui el magnetémetro solo realiza una madida cuando el Arduino le sotcite. ‘Asimismo podemas configurar el rango de medicién desde £0.88Ga hasta #8.1Ga a las que se le aplica ganancias de 1370 a 230 respectivamente y de esta forma tener un rango de salida de 12bits, Libreria para el HMC5883L En este tutorial trabajaremos con la lbreria desarrolada por Jeff Rowberg, la libreria se descargar en: htsps:/sithub.com/jrowbers/i2edevib/tree/master/Aedvino/HMCSBB3L Esta lbreria trabaja con una ibreria adicional para la comunicacién I2C, ‘esta también lo pueden encontrar en el mismo github de ka libraria anterior: hteps:/sithub.com/jrowberg/i2cdevibtree/master/Arduino/I2Cdev Estas lbrerfas son del mismo desarrollador que as que usamos en el tutorial MPUBO5O, la ibrerfa [2Cdev es la misma que usamos en dicho tutorial Para trabajar ls siguientes ejercicios es necesario instalar las librerias ‘en el IDE Arduino. Conexiones entre HMC5883L y Arduino Las conexiones son como cualquier conexién I2C; ress maine rete ea ae} ae wee am aa few Pp Realizando lecturas del campo magnético: fF Ieduino & (rier Use) Un pequet y muy ponte ‘dna, Isto praetor cna Protoboars 043406 1,200 Nédulo Relay SSR 101 soc El méduo SSR 9 pamite encendasiapaga do supa. Fuente para proyectos 36 = nyaak ants conmutad sn ara proyectos con 1.1200 a Fuente para proyectos 3W =5W05 vanteconmutads sn case de SV y SO0mA, pata proyectos con simentcin En este ejemplo realizaremos las lecturas del HMCS88QL, obtendremos: los componentes en X.Y y Z del campo magnético. El cédigo para este ejemplo es al siguiente vote setup Serta. begin( 9600): Sersal.printin(sEnictalszendo Nagnotonsteo. "95 wiresbegin) sagnetonetro.instial£ze(): ? vote t00p0) agnetonetro.etieading(ies, Say, sna); Sertal.printte")s Serial -print(an) Serdal-print (toy Sersal-peine(ay)s Serdal print tee"), Serial-printin(ae); olay (300)3, Como se puede observar el programa es facil de entender, podemos resumir la explcacién a 3 parles de cédigo. Primero es necesario inclir las librerias y dectarar el objeto o variable para el magnetémetr include “wires? Posteriormente en setup() es necesario inicializar la comunicactén 12C y ‘el magnetémetro: 2005 ragretonetro.tnctialtze(): Aliniciaizar el magnetémetro los valores por defecto para el rango es de +£1.3Ga y de ganancia 1090. Posteriormente se realza la lectura, esto se hace de la siguiente forma, sagnetonetro.getieading(tex, Say, Anz); De esta forma tendremas los valores del campo magnético en las variables mx my y mz, estos valores estén con la ganancia mencionada anteriormente Posteriormente enviamos los valores por el puerto seri, esta titima parte variard de acuerdo a su aplicacion, Nuevamente mencionamos que estos valores estén con ganancia, para tener el valor real hay que divicirlo entre 1090 (ganancia por defecto) y de esta forma obtener la medida en Gauss. ‘Si queremos modificar el rango y ganancia debemos agregar después de inicialzar el magnetdmetro la siguiente linea de cédigo: sagnetinetro,setcnin(valve) Donde value corresponde a: Value Rango Ganancia (LSB/Gauss) 0 + 088 Ga 1370 1 + 1.3Ga 1090 (Defaut) 2 + 1.9Ga 820 3 +256 660 4 +-4.0Ga 40 5 +47 Ga 390 6 + 5.6 Ga 330 7 +-8.1Ga 230 De esta forma podermos establecer un nuevo rango de medicién. El ‘campo rragnético teresire dependiendo del lugar puede varia entre 0,25-0,65 Ga, teniendo en cuenta esto es mejor si solo vamos a medi el ‘campo terrestres mejor trabajar con el rango por defeco, si queremos mayor precisién podemnos bajar el rango a 0.88Ga pero se podria saturar la leotura si existe un campo magnético exerno, Brdjula digital con Arduino En este ejemplo implementaremos una brijula, para esto necesitamos ccaleular el angulo de nuestra orientacién con respacto al Norte Para determinar el angulo usamas la siguiente forma: Este angulo nos determina la orientacién del Norte Magnético, pero ‘existe una diferencia entre el norte geogréfico y el norte magnético, a ‘sta diferencia se le conace como declinacién magnétca El valor de la dectinacién magnética depende de nuestra ubicacién y lo pueden obtener en a siguiente pagina: hito:/wiw.magnetic~ \eclination.com/ , en nuestro caso, para la ciudad de Trujllo-Pert es de "16" El céigo en donde implementamos lo mencionado anteriormente es el siguiente: ‘inelude “RCSB. fast declinntion=-1.26; //decLinacién de -3°16°(Yrujtllo-Perd) vote setunt) { Serta begin( 9600); Serta printan(Intctatizendo Magnetonetre.-")t uire bepsn(t sagnetonerro.inctialtze(); > vote 22090) tagnetonctro.gettending(tex, day, Anz)? U1eatesianos el Snguto del efe X con respecte a1 norte ‘oat anguto = atan2(4y, 8): angulonsngulo® (180/4 F1);//convertinos de 2actanes = praeo= Tinozsranos el angulo entre el eje XY el Norse Serial: print¢"Aangulor-h: "Ys Sersalprine(angulo, Healesianos ol sngulo equivalents de (388 89} + [0 360 r{anguie«e) angulo-angutes36e; prints, printin(angaie, 0) En a siguiente imagen mostramas el resutado cuando apuntamas el eje Xen la ireccién Norte aeons v [emis Estos valores serén correctos siempre y cuando no existan campos. ‘magnéticos externos, 0 metales cerca que interfieran con el campo ‘magnético. Por ejemplo si acercamos nuestro magnetémetro a nuestra PC o acercamos un objeto metalico al magnetémetro, el valor del angulo variara sin haber rotado el magnetémetro. Pueden adquirir los materiales usados en este tutorial en nuestra tienda: - Arduino Uno R3 - Modulo Magnetémetro 3-ejes HMC5883L. oO? Me SB: > cm 4 Comments lser 4a amigo buena colaboracion ., solo quisiera que agregues come descargar e505 Ivars quo re posto Naylamp a Hola Elser, tenes que irl directorio principal y sescatgar a carpota panei, desputs ya en PC imports slo ns Reorias mencionds. Felipe 4 Hola, Gracias poral tutorial, esta excolone, Solo tengo una pregunta ZT accede a pain 7°5, Leng 79°180" W. Dectnacidn magndtica "16 Navlamp 4a Hola Folge, Gracias porn cbscnecié,ofctioments bo un eno I dectnacin dberia ser -16 staremes congiendo, Saludos Leave a Reply “emai: + comment: seem Boletin inocuzea su arecetn de corso cle iC ey Informactén sobre latlenda 9

You might also like