Autor Tema: Aprendiendo a pasar valores entre los distintos Sistemas  (Leído 6799 veces)

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

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Aprendiendo a pasar valores entre los distintos Sistemas
« Respuesta #15 en: 19 de Mayo de 2006, 19:01:11 »
hola
mis preguntas son de novata novata.
estoy haciendo un proyecto que metiendole una señal analogica me la convierta a digital y me la envie por el puerto serie al ordenador y me salgan los numeros por el hyperterminal. el pic que uso es 16f876A.
mi pregunta es: cuando me hace la conversion a digital, el elnguaje es binario? en el ordenador me tendria que salir ceros y unos? porque menos ceros y unos me sale de todo. tendria que convertir el dato de binario a ascci? como lo hago?
yo solo quiero que me salga el valor de la tension que le meto en decimal (ej:2.3)
gracias


Hola aamoros79 te paso a responder.

1) La señal que te convierte el PIC se almacena SIEMPRE en una memoria en formato binario.  Eso es como se almacena en la memoria luego tu lo lees como HEXA o BINARIO, pero eso lo haces a nivel de código y es tu 'forma' de representarlo.  El dato en la memoria no cambiará.  Si está almacenado un b'00100011' lo puedes ver así o como un 23h 

2) El Hyperterminal trabaja con textos en ASCII, si tu mandas el dato tal cual lo lees estarás mandando un byte cuya representación ASCII pudiera ser cualquier cosa.  Si mandas un 0x41 estarás mandando una A . 

3) Para tener el valor de voltaje , tu pic debiera hacer una pequeña multiplicación que dependerá de la presición.  Si trabajas con 8 bits será

    Vtension = Vref * ( ValorAD / 255)

Si trabajas con 10 bits será
    Vtension = Vref * (ValorAD / 1023)

Donde Vref  es tu voltaje de referencia, gralmente 5V.

Esto te devolverá un resultado en coma flotante o float. (ojo si trabajas con ensamblador!!) 
También hay formas de que trabajes con numeros solamente enteros pero no te quiero confundir con eso ahora.

4) Para tener por ej 3.2 tendrías que usar algun código que te permita pasar de float a ASCII.  En C la instrucción printf suele hacer esto.

Ya que eres novata ,  como tu dices, te aconsejo que uses C o basic para codificar tu software.

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)


 

anything