TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: crduke en 22 de Noviembre de 2006, 19:11:15
-
Estoy realizando un programa el cual debo visualizar un voltaje de 0- 5V que se introduce atraves del convertidor A/D, estoy utilizando el pic 16F873 y debo enviar los datos a un pc utilizando el programa hyperterminal, el problema que tengo es que el convertidor da el resultado en 10 bits y no se como convertir ese dato al valor equivalente en ASCII para poder enviar al pc y me aparesca el voltaje de entrada del convertidor en la pantalla de hyperterminal, espero que me puedan ayudar.
-
Hola crduke.
¿Para que quieres pasarlos a ASCII? si los datos al fin y al cabo se envian como binarios?
Creo que te estas refiriendo a pasar los datos de Binario a BCD.
No has mencionado en que lenguaje programas los PICs.
Saludos.
-
BrunoF, creo que te confundiste con el concepto de crduke, lo que el quiere es hacer la conversión entre el valor obtenido por el covertidos A/D y el valor de tencion. Por ejemplo, con una Vref-=0V y una Vref+ =5V al aplicarle una tencion de 2.5V al pin del conversor A/D, el pic obtendra el valor 511 (teoricamente), lo que el desea es pasar ese valor (511) a los 2.5V de tensión que hay a la entrada ya que según parece eso es lo que desea ver en la Hyperterminal.
Otra cosa, si bien los datos se manda en binario a la Hyperterminal, para que en ella aparezca un 1 hay que mandar el 1 en ASCII, y asi para todos los numeros.
Yo como practica hice justamente eso, solo que pasaba el valor del conversor a la Hyperterminal, previamente hacinado una conversión a BCD, pasando cada numero del BCD a ASCII y después mandándolo a la PC. Por ende en mi caso para el ejemplo anterior veía el valor 511. Enviaba 4 números para formar ese valor, en este caso seria 0511.
Si te interesa esto avisame y lo cuelgo.
La manera de obtener el ASCII a partir del BCD es sumandole 0x30 (exadecimal).
Saludos
-
¿Confundido? ¿Por que?
Si lo que dije es lo que tu has dicho, con la unica diferencia que luego transformas el BCD a ASCII lo que seria el paso final para completar lo que el quiere hacer.
Saludos.
-
Perdona, no quise ofenderte, simplemente quede decir que si no pasas el numero a enbiar a la pc a ASCII, loq ue vas a ver va a ser el caracter que coresponde en ASCII a ese numero. pero eso es solo lo que visualisa la Hyperterminal, si mando un 49 en binario, en la pantalla de la Hyperterminal vere un 1.
Vos justamente dijiste:
¿Para que quieres pasarlos a ASCII? si los datos al fin y al cabo se envian como binarios?
Saludos, y nuevamente te pido disculpas si te molesto mi comentario.
-
Hola.
Esteca55 te va a costar mucho mas que eso lograr molestarme :lol: :D :D
No me molestó en absoluto tu comentario. La solución correcta y completa es la que publicaste vos, que por visto comprendiste mejor lo que intentó preguntar crduke.
Saludos.
-
bruno, creo que no me explique bien, lo que queria decir es lo que dijo esteca555, el programa lo hago en asm, configuro al pic para que el voltaje de referencia del conversor sea la propia del pic (5V), al aplicarle una tencion de 2.5V al pin del conversor A/D, el conversor me genera un valor de 511 el cual es equivalente a 2.5 V, como ustedes saben la resolucion es de 10 bits, este valor quiero que se visualice en hiperterminal (es decir me debe aparecer 2.5 V en la pantalla).
Yo multiplicaba el valor del conversor por 488 que es la resolucion del CAD, esto me genera un registro de 32 bytes, este registro queria pasarlo a bcd pero no se como, y luego a ASCII para enviarlo al pc.
asteca55 si tienes el programa o la forma de hacerlo por favor enviamelo o explicame como puedo hacer mi correo es alca_share@yahoo.es o publicalo aqui
gracias
-
Hola, bueno acá te adjunto el codigo en asm y el hex.
No tengo el esquema sino lo pondría con gusto, pero te cuento como tendrías que armarlo:
El pic es un 16F877a, con un cristal de 4MHz. La entrada analógica (entre cero y 5v) esta en el pin 2 (RA0/AN0) y no es mas que un pote de 1k entre masa y los 5V. No hace falca conectar las Vref ya que usa las tenciones del pic como referencias. La conexion a hacia la Hiperterminal es por los pines RC6 y RC7 (TxD y RxD respectivamente) recuerda usar un max232 para adecuar las tenciones a la norma RS232.
El programa también visualiza el valor del conversor en 3 display multeplezados, conectados al puerto B (a=Rb0... g=RB6) y la activación de cada display (común del display) se hace con los pines RD0, RD 1 y RD2, siendo RD2 el menos significativo. Los tres display los conecte directo al pic con unas resistencia de 470 ohm, y para activar cada display use un CD557 con una R de base de 4k7.
Bueno esto es todo.
Saludos y espero que puedas entenderlo, cualquier cosa …
-
asteca555 gracias por la informacion, voy a montar el circuito, luego te cuento como me fue.