Autor Tema: adc+txserial= problema con punto flotante  (Leído 2920 veces)

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

4M

  • Visitante
adc+txserial= problema con punto flotante
« en: 10 de Mayo de 2007, 22:38:08 »
Buenas noches a todos, se le agradece de antemano a quien pueda ayudar, soy nuevo en esto... estoy conviertiendo una señal analogica de 0 a 5v, con n=10, todo perfecto cuando el convertidor es entero, el detalle es cuando la conversion da un resultado con punto flotante, como hago para transmitir este dato? debo convertirlo? que debo hacer? pues para mi proyecto es muy importante los decimales ya que perderia datos a la hora de trabajrlos

Ademas quiero saber si cuando hace la conversion, el decimal se pierde desde el principio, o queda pero se pierde cuando lo transmite!

Deimos

  • Visitante
Re: adc+txserial= problema con punto flotante
« Respuesta #1 en: 11 de Mayo de 2007, 06:46:43 »
Hola 4M y bienvenido al foro.

Primero dinos con que máquina estás trabajando, con 18F, 16F, dspic, ...?

En un ADC, el número de valores es fondo de escala dividido entre el número de bits a convertir. Esto te da un valor real, casi nunca natural o entero. Cuando envías por TX (se supone RS232 no?) la trama, tu envías los unos y los ceros y es en el otro lado, el que recibe el que ha de tratar la información sabiendo el fondo de escala de la conversión y el número de bits a los que se ha convertido.

Resultado=valor digital enviado*(fondo de escala/nºbits) y ahí recuperas la coma flotante.

Se supone (porque tampoco lo has dicho) que estas programando en C, no? Pues mucho más fácil, porque en asm hacer operaciones con comas flotantes...... puede ser un verdadero drama.

Salu2!!!!

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: adc+txserial= problema con punto flotante
« Respuesta #2 en: 11 de Mayo de 2007, 08:22:51 »
4M no creo que debas convertirlo a coma flotante si lo que te interesa es enviar un dato de la 'magnitud' del voltage sensado, entonces con solo enviar el valor A/D leído estaría OK.

Luego del otro lado lo procesas.

Ahora si aún así quieres enviar datos en coma flotante, en presente que un dato float son 4 bytes.  Deberás transmitir los 4 bytes, uno a la vez.

- 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 toc-toc

  • PIC12
  • **
  • Mensajes: 57
Re: adc+txserial= problema con punto flotante
« Respuesta #3 en: 11 de Junio de 2007, 13:49:36 »
 Saludos a todo el grupo. Aprovechando el tema de la coma flotante, amigo Mauricio.

 Tengo una pregunta respecto a este tema. Tengo un posicionador que me entrega tramas de datos del tipo:

 12.0159876263
 02.8972461346
 45.6587149327

 Necesito realizar operaciones con estos datos como operaciones trigonométricas, conversión de grados a
radianes, que necesitan de coma flotante. Pensaba usar el PIC18F2550 que dispone de registros A/D, alguien
puede ayudarme.

 
Incluso la época de agobio es digna de respeto.
Porque, no la ha creado el hombre, sino la naturaleza que puede ser dura pero jamas absurda.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: adc+txserial= problema con punto flotante
« Respuesta #4 en: 11 de Junio de 2007, 16:12:54 »
¿Esa información que recibes es en ASCII?

¿Qué precisión de todos esos dígitos realmente necesitas?

Usaras un compilador de C supongo ¿es así?
- 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 BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: adc+txserial= problema con punto flotante
« Respuesta #5 en: 11 de Junio de 2007, 20:50:41 »
Saludos a todo el grupo. Aprovechando el tema de la coma flotante, amigo Mauricio.

 Tengo una pregunta respecto a este tema. Tengo un posicionador que me entrega tramas de datos del tipo:

 12.0159876263
 02.8972461346
 45.6587149327

 Necesito realizar operaciones con estos datos como operaciones trigonométricas, conversión de grados a
radianes, que necesitan de coma flotante. Pensaba usar el PIC18F2550 que dispone de registros A/D, alguien
puede ayudarme.

 

Hola.
Te recomiendo programar en algún lenguaje C(como Mauricio intuye). Si aún así pensás hacerlo en assembler vas a tener que recurrir a polinomios de Taylor de orden bastante grande para aproximar valores de funciones trigonométricas. Si no requerís de tanta precisión, por ahí con tablas lo lográs.

Saludos.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado toc-toc

  • PIC12
  • **
  • Mensajes: 57
Re: adc+txserial= problema con punto flotante
« Respuesta #6 en: 12 de Junio de 2007, 10:03:24 »
 
 Hola!. Gracias por responder a mi consulta.

 Mira los datos son las coordenadas de salida de un GPS y se tienen que hacer operaciones trigonométricas
con ellos además de convertir grados a radianes.

 Mauricio y BrunoF, el lenguaje puede ser C o C++, supongo que no tendré problemas.

 Reconozco el esfuerzo en tiempo que le dais a mis consultas y solo puedo daros esta satisfacción del verdadero
agradecimiento, un abrazo a todos. Cómo me gustaría poder ayudaros en algún momento, lo intentaré siempre.

 
Incluso la época de agobio es digna de respeto.
Porque, no la ha creado el hombre, sino la naturaleza que puede ser dura pero jamas absurda.

Desconectado HaroldCannet

  • PIC10
  • *
  • Mensajes: 2
Re: adc+txserial= problema con punto flotante
« Respuesta #7 en: 17 de Junio de 2007, 07:35:00 »
Hola toc-toc:

en respuesta a tu pregunta un copilador super bueno para todo tipo de operaciones matematicas esel PROTO IDE. Este tiene comandos para realizar justo determinadas operaciones, entre estos estan los que tu nececitas.

Saludos. Espero que te sirva de algo.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: adc+txserial= problema con punto flotante
« Respuesta #8 en: 17 de Junio de 2007, 10:58:45 »
Como bien te apuntó Bruno, una de las formas más elegantes de resolver funciones trigonométricas es el uso del polinomio de taylor.  Tienes que armarlo a mano, para la precisión que creas necesaria.  Si usas funciones que están en la red o en los libros, ten cuidado que todas las que he visto están en radianes y no en grados sexadecimales. 

Esas funciones no suelen estar en las librerías de los lenguajes, pero tal vez consigas algo buscando en foros de C estándar. 
- 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)


 

anything