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 distintaETIQUETAS
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 Norteaeons 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