Autor Tema: Usando brujula digital Hitachi HM55  (Leído 6321 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado frozenpork

  • PIC10
  • *
  • Mensajes: 21
Usando brujula digital Hitachi HM55
« en: 20 de Marzo de 2008, 14:55:46 »
Hola Todos

    Ando en mision de hacer calcular mi orientacion con esta brujula la Hitachi HM55B. pero revisando me encontre que tengo que realizar una funcion ATN. he estado leiendo en el foro y la respuesta es una tabla. :shock: la situacion es como hacer una tabla para esta brujula ella debe calcular    tita = ATN(-x/y). me tiene loco la brujulita esta...  :lol: de tip nervioso y demas jejeje
Bueno si lo haces, malo si no lo haces...

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Usando brujula digital Hitachi HM55
« Respuesta #1 en: 20 de Marzo de 2008, 16:28:58 »
Lo que buscas es la función "Arco Tangente", para ello te puedes coger una hoja de cálculo y realizarte la tabla con la precisión que requieras (1 grado, 30 minutos, 6 minutos, 1 minuto, etc). Pones grados en una columna y tangente en otra columna, rellenas la columna de grados (o minutos) y aplicas la fórmula en la columna tangente y copias la formula hacia abajo para obtener todos los valores.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Usando brujula digital Hitachi HM55
« Respuesta #2 en: 20 de Marzo de 2008, 16:42:18 »
También tienes que tener cuidado ya que un valor de tangente determinado tiene 2 ángulos posibles,es decir,la función arco tangente (-x/y) tiene 2 soluciones para theta.Para determinar cual es la que se corresponde con los valores cartesianos "x" e "y" tienes que calcular el cuadrante al cual pertenece el ángulo a partir de dichos valores (a partir de sus signos, más bien).Una vez conozcas el cuadrante,ya tienes lo necesario para saber con cual de las dos soluciones quedarte.
Si haces esas tablas que te recomienda jfh900,te darás cuenta de que obtienes la misma theta para 2 parejas distintas de valores cartesianos
« Última modificación: 20 de Marzo de 2008, 16:44:42 por Modulay »

Desconectado frozenpork

  • PIC10
  • *
  • Mensajes: 21
Re: Usando brujula digital Hitachi HM55
« Respuesta #3 en: 20 de Marzo de 2008, 19:26:41 »
Claro como explicas que hay hacer una tabla con la calculadora y los cuadrantes es matematica de tiendas de caramelos  :z). en papel lo veo facil, pero para hacerlo con el PBP esta la complicacion.
Bueno si lo haces, malo si no lo haces...

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Usando brujula digital Hitachi HM55
« Respuesta #4 en: 20 de Marzo de 2008, 20:06:09 »
Puedes también probar con algún polinomio interpolante...transcribirlo a código sería sumamente fácil ya que se trataría simplemente de multiplicaciones y sumas,y podrías prescindir de tablas

Desconectado frozenpork

  • PIC10
  • *
  • Mensajes: 21
Re: Usando brujula digital Hitachi HM55
« Respuesta #5 en: 21 de Marzo de 2008, 00:38:44 »
que buena tu idea la de la interpolacion, a ver que encuentro de eso en mis papeles porque le calulo II lo olvide hace mucho tiempo... aviso cualquier evento :mrgreen:
Bueno si lo haces, malo si no lo haces...

Desconectado frozenpork

  • PIC10
  • *
  • Mensajes: 21
Re: Usando brujula digital Hitachi HM55
« Respuesta #6 en: 21 de Marzo de 2008, 11:04:02 »
   

   tanΘ  = -1.47748x + 4.83456x^3

es el polinomio interpolante de lagrange para la tangente ahora a programarla :-/
Bueno si lo haces, malo si no lo haces...

Desconectado frozenpork

  • PIC10
  • *
  • Mensajes: 21
Re: Usando brujula digital Hitachi HM55
« Respuesta #7 en: 21 de Marzo de 2008, 11:05:39 »
Debemos tomar en cuenta que necesitamos es el        Θ =ATN(-1.47748x+4.83456x^3) para poder usar la brujula
Bueno si lo haces, malo si no lo haces...

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Usando brujula digital Hitachi HM55
« Respuesta #8 en: 21 de Marzo de 2008, 11:14:02 »
La función que tienes que aproximar mediante la interpolación es ATAN(x),no TAN(x).
No recuerdo los métodos de Lagrange,pero al ser ATAN(x) derivable,puedes tirar por la vía de Taylor,Laurent,etc..

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Usando brujula digital Hitachi HM55
« Respuesta #9 en: 22 de Marzo de 2008, 11:01:02 »
Que tal amigos!
frozenpork Aqui
Hay un ejemlo en basic stamp que te puede servir tambien hay un programa para la pc el cual puedes descargar, segun veo,  y puedes probar la brujula.

Saludos

Desconectado frozenpork

  • PIC10
  • *
  • Mensajes: 21
Re: Usando brujula digital Hitachi HM55
« Respuesta #10 en: 23 de Marzo de 2008, 13:20:04 »
Amigotes creo que empece el tema de manera inadecuada. el problema de usar esta brujula es que los PIC 16Fxxx no son capaces de realizar este calculo

DO ' Main loop
GOSUB Compass_Get_Axes ' Get x, and y values
angle = x ATN -y ' Convert x and y to brads   <<<<<<<<<<<<<<<<<<<<<<<AQUI ESTA EL PROBLEMA
angle = angle */ 360 ' Convert brads to degrees
DEBUG HOME, "x-axis N(-S) = ",SDEC x, ' Display axes and degrees
CLREOL, CR, "y-axis W(-E) = ",
SDEC y, CLREOL, CR, CR, "angle = ",
DEC angle, " degrees", CLREOL
PAUSE 150 ' Debug delay for slower PCs
LOOP

como puden observar los demas comandos son sencillos usando PBP.  se necesita calcular el angle=x ATN -y.
el BS2 es capaz de calcular este ATN el PBP no. el calculo de la ATN (arcotangente) es fundamental para el calculo de la posicion del norte magnetico de la tierra. :?
Bueno si lo haces, malo si no lo haces...

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Usando brujula digital Hitachi HM55
« Respuesta #11 en: 23 de Marzo de 2008, 14:06:32 »
Entonces el problema no es del PIC si no del lenguaje de programación.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Usando brujula digital Hitachi HM55
« Respuesta #12 en: 23 de Marzo de 2008, 14:07:35 »
Que tal frozenpork!
La cosa se ve algo complicada ya que, efectivamente el pic basic pro al pareser no tiene una instruccion para la arc tang, lo que podrias hacer es intentar utilizar la funcion seno y coseno para de alguna manera resolver el problema, otras occiones quizas un poco mas radicales seria cambiarte de compilador  :mrgreen: por ejemplo el proton que si soporta esa funcion  :mrgreen: otro es el ccs y por ultimo la que yo utilice fue esta sin complicarme mucho (Devantech Magnetic Compass - CMPS03).

Saludos
« Última modificación: 23 de Marzo de 2008, 14:10:44 por RALF2 »

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Usando brujula digital Hitachi HM55
« Respuesta #13 en: 23 de Marzo de 2008, 14:49:35 »
Sigo apostando por la interpolación

Desconectado frozenpork

  • PIC10
  • *
  • Mensajes: 21
Re: Usando brujula digital Hitachi HM55
« Respuesta #14 en: 31 de Marzo de 2008, 10:41:06 »
Hola muchachos. bueno le di a la brujulita y decidi dejarla con una resolucion de 30º. se debe tomar la brujula y tomar mediciones junto con una brujula normal para saber los valores q genera dependiendo de donde estaapuntada, debido a los campos magneticos, como batria,cables, motores alteran las lecturas. en mi proyecto quedo asi con mi codigo. gracias por su ayuda

'****************************************************************
'*  Name    : BRUJULA                                           *
'***************************************************************
 
' *******************************************
'         Comfiguracion de la LCD
' *******************************************
INCLUDE "modedefs.bas"
define OSC 4

DEFINE OSC 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4

TRISB=$00
TRISC=$00
               
 

Dout var        portd.0
En   var      portd.2
Clk  var      portd.3
Reset CON %00000000
Measure CON %1000
Report CON %1100
Ready CON %1100
NegMask CON %1111100000000000
z VAR Word
y VAR Word
statuus VAR byte
angle VAR Word





inicio:   

call Compass_Get_Axes
CALL CALC_ANGLE
lcdout $fe,$C0, "angle = ",DEC angle, "degrees"
PAUSE 2000
goto inicio
 




Compass_Get_Axes:
lcdout $FE,1,"LLL"
 
HIGH En
LOW En
SHIFTOUT Dout,clk,MSBFIRST,[Reset\4]

HIGH En
LOW En
SHIFTOUT Dout,clk,MSBFIRST,[Measure\4]
statuUs = 0
 
REPEAT   
lcdout $FE,1,"1111"
HIGH En
LOW En
SHIFTOUT Dout,clk,MSBFIRST,[Report\4]

SHIFTIN dout,clk,MSBPOST,[Statuus\4]     
UNTIL STATUUS=ready

SHIFTIN dout,clk,MSBPOST,[z\11,y\11]
HIGH En
lcdout $fe,1,#Y,"  ",#Z," ",#statuus

;IF (y.BIT10 = 1) THEN y = y | NegMask
;IF (z.BIT10 = 1) THEN z = z | NegMask
RETURN

CALC_ANGLE:
IF Y<2020 AND y>2015 AND z<1993 AND z>1998 THEN angle=0
IF y<5 AND y>0 AND z<2007 AND z>2013 THEN angle=30
IF Y<17 AND Y>11 AND z<2037 and z>2031 THEN angle=60
IF Y<13 AND Y>7 AND Z<7 AND Z>3 THEN ANGLE=90
IF y<5 AND z<12 AND z<11 AND Z>7 THEN ANGLE=120
IF Y<2035 AND Y>2030 AND Z<32 AND Z>27 THEN ANGLE=150
IF Y<2043 AND Y>2038 AND Z<30 AND Z>26 THEN ANGLE=180
IF Y<2038 AND Y>2033 AND Z<37 AND Z>32 THEN ANGLE=210
IF Y<2030 AND Y>2026 AND Z<24 AND Z>28 THEN ANGLE=240
IF Y<2023 AND Y>2019 AND Z<12 AND Z>8 THEN ANGLE=270
IF Y<2022 AND Y>2018 AND Z<2035 AND Z>2031 THEN ANGLE=300
IF Y<2021 AND Y>2017 AND Z<2007 AND Z>2001 THEN ANGLE=330
RETURN

end
Bueno si lo haces, malo si no lo haces...