Autor Tema: Conversion dato Long a Float  (Leído 1335 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Conversion dato Long a Float
« en: 17 de Mayo de 2006, 15:20:08 »
Hola muy buenas,

Hace unos dias postee una subrutina que realizaba la conversión AD de 12 bits del MAX187. Volviendo a recuperarla ya que tengo que armar mi aplicación, veo que al obtener dos medidas distintas obtengo valores no de acuerdo con la realidad. Por ejemplo: leo una entrada de 200 mV y veo en el display 200.00, en cambio leo un valor de 1,032 V, y veo 1032.00. ¿Puede ser debido a estas líneas?:

float convert_to_volts(long data) {
                                   return ((float)data*2.5/0xFFFF);
                                  }

Tengo mis dudas si es correcto o estoy cometiendo un error. También pido disculpas si mi subrutina crea algún problema a alguien que se haya decidido a usar este magnifico AD, pero veo en diferentes drivers que tiene CCS en conversores de 12 bits similares que usan las mismas instrucciones.

Un saludo,

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Conversion dato Long a Float
« Respuesta #1 en: 17 de Mayo de 2006, 15:38:21 »
ORE no veo cual es el error.

Si 200mV = 200.00
y 1,032V = 1032mV = 1032.00 

Estas viendo un dato para mi correcto. ;)

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado ORE

  • PIC10
  • *
  • Mensajes: 43
Re: Conversion dato Long a Float
« Respuesta #2 en: 18 de Mayo de 2006, 15:25:16 »
Hola Manuix,

Gracias por tu respuesta. Esto quiere decir que lo que estoy retornando son milivoltios, por lo que la subrutina de devolución debería decir:

float convert_to_mili_volts(long data) {
                                   return ((float)data*2.5/0xFFFF);
                                  }
¿Podría solucionar este, no llamarlo error, sino problema de sintaxis dividiendo el valor entre 1000?

¿O no sería políticamente correcto?

Gracias


 

anything