TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: 4M 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!
-
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!!!!
-
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.
-
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.
-
¿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í?
-
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.
-
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.
-
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.
-
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.