Autor Tema: Duda con salida del CAD utilizando RS232  (Leído 2754 veces)

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

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
Duda con salida del CAD utilizando RS232
« en: 06 de Mayo de 2004, 15:48:00 »
Quisiera que me despejaran esta duda, ¿En qué codigo esta lo que obtengo a la salida del pic cuando utilizo el convertidor analogico digital, si ademas estoy utilizando la comunicacion serial (RS232).  Lo que sucede es que quiero mandar a la pantalla mediante el hyperterminal el valor de voltaje que meto en el pic, pero no se que transformaciones debo de hacer ya que solo veo caracteres. Este es el código que estoy utilizando

Codigo:

#include <16f874A.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,WRT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  

main()
  {
    int value;
    float valreal;
    float const resoluc = 5.0/256.0;
    set_tris_b(0x00);

    setup_adc_ports(ALL_ANALOG);
    setup_adc(ADC_CLOCK_INTERNAL);
    set_adc_channel(0);
   
 
   while (TRUE)
       {
        delay_ms(500);
        value=read_adc();
        output_high(PIN_B7);
        valreal=value*resoluc;
        putc(valreal);
       }         
   }




De antemano gracias por la ayuda

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Duda con salida del CAD utilizando RS232
« Respuesta #1 en: 06 de Mayo de 2004, 23:54:00 »
El error lo tienes en putc(valreal); esta función solo envia un caracter.

Un saludo

Desconectado Ginho_rj

  • PIC12
  • **
  • Mensajes: 87
RE: Duda con salida del CAD utilizando RS232
« Respuesta #2 en: 07 de Mayo de 2004, 05:42:00 »
BOM DIA,PRIMEIRAMENTE NÃO SEI O PORQUE AS PESSOAS DESTE FORUM AINDA COLOCAM RESOLUÇÕES DO TIPO 5/256 OU 5/1024 QUANDO O CERTO SERIA 5/255 E 5/1023 DEIXEMOS ISSO DE LADO E VAMOS AO SEU CODIGO :

#include <16f874A.h>

#device adc=10
#include   <MATH.h>

#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,WRT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  

main()
  {
    float value;//o valor retornado tem 10 bits nao pode ser armazenado em um int,poderia ser ate em um int16,coloquei float devido ao resultado

    set_tris_b(0x00);

    setup_adc_ports(ALL_ANALOG);
    setup_adc(ADC_CLOCK_INTERNAL);
    set_adc_channel(0);
   
 
   while (TRUE)
       {
        delay_ms(500);//nao retire esse delay ja que sao necessarios 20us para carregar o capacitor interno
        value=read_adc();
       
        output_high(PIN_B7);//para que serve essa saida ,para dizer que ja foi feita a conversão??
        value=(value*5)/1023;
        printf ("%1.2f", value);//escreve na serial com duas casas decimais
       }         
   }


obs:coloque o hyperterminal com 9600bps,e caso o pino b nao funcione post aqui!

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Duda con salida del CAD utilizando RS232
« Respuesta #3 en: 07 de Mayo de 2004, 09:36:00 »
Muito obrigado (agora estou fazendo um corso de portugues na minha escola). Pruebo el código y veo que tal funciona y luego les cuento.

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Duda con salida del CAD utilizando RS232
« Respuesta #4 en: 07 de Mayo de 2004, 10:08:00 »
Pues bien, ya hice las correcciones necesarias y pues ya obtengo el valor de voltaje que esperaba pero en el hyperterminal sucede que despues de mandarme algunos valores de voltaje, me manda un valor y muchos ceros algo como lo que sigue:

 4.98  4.98 .9804687500000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000  4.98  4.98  4.98  .98046875000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000

A qué creen que se pueda deber ?  De antemano gracias por las sugerencias y comentarios.

Este es el código actual y revisando pues solo lo hace con valores mayores o iguales a 1 V

Codigo:

#include <16f874A.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,WRT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  

main()
  {
     float value;
   float const resoluc = 5.0/256.0;
   set_tris_b(0x00);

   setup_adc_ports(ALL_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);
   
 
  while (TRUE)
       {
        delay_us(50);
        value=read_adc();
        value=value*resoluc;
        printf ("  %1.2f", value);
        output_high(PIN_B7); //solo sirve para indicar que el pic esta funcionando
        delay_ms(1000);
       }         
   }




Ahora otra pregunta, yo estoy utilizando visual basic, entonces quisiera saber que funcion se utiliza para sacar el dato y que tipo de dato es para saber que manipulaciones tengo que hacer. Muchas gracias a ambos por la ayuda.

Desconectado Ginho_rj

  • PIC12
  • **
  • Mensajes: 87
RE: Duda con salida del CAD utilizando RS232
« Respuesta #5 en: 07 de Mayo de 2004, 22:48:00 »
olha ai uma outra alteração que fiz e novos comentarios:

include <16f874A.h>

#device adc=10//não deixe de colocar isto
#include <MATH.h> //não deixe de colocar isto

#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,WRT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

main()
{
float value;//o valor retornado tem 10 bits nao pode ser armazenado em um int,poderia ser ate em um int16,coloquei float devido ao resultado

set_tris_b(0x00);

setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);


while (TRUE)
{
delay_us(50);//nao retire esse delay ja que sao necessarios 20us para carregar o capacitor interno
value=read_adc();

output_high(PIN_B7);//entendi  ja para que serve
value=(value*5)/1023;
printf("%1.2f
", value);//escreve na serial com duas casas decimais
}
}



inclui um tratamento na serial não deixe de colocar as linhas que adicionei,mesmo depois de eu ter falado sobre o erro de colocar
5/256,voce ainda continua????,ao inves de colocar uma const faça os calculos direto na linha da variavel
pode ter certeza que dara certo

obs:os erros apresentados foram devido ao numero de bits ,a conversao, e a quebra de linha que esqueci de colocar no printf!qual o porque dos 1000ms????

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: Duda con salida del CAD utilizando RS232
« Respuesta #6 en: 11 de Mayo de 2004, 13:57:00 »
talves sea tarde para responder a este tema pero igual a alguien le puede servir. el error yo creo que esta en la funcion

read_adc()

como dice el manual de CCS esta funcio lee el valor digital desde el conversor. solo lee el ultimo valor convertido, es decir si la ocupas repetidamente siempre leera el mismo valor. Lo que conviene es:

read_adc(ADC_START_AND_READ)

adegurandose de que un nuevo valor leido fue convertido justo antes de la lectura.

Saludos
kruskal@hotmail.com

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Duda con salida del CAD utilizando RS232
« Respuesta #7 en: 11 de Mayo de 2004, 14:54:00 »
Gracias a ambos por su ayuda, creo que cada vez voy entendiendo mejor esto.  Hice lo que me dijeron y pues todo ha salido como yo quería.  De verdad muchas gracias.

Los 1000ms son para que se tarde un poco mas en desplegar los datos el hyperterminal. Y pues sigo dividiendo entre 256 y me sale el valor de voltaje que espero.


Desconectado Ginho_rj

  • PIC12
  • **
  • Mensajes: 87
RE: Duda con salida del CAD utilizando RS232
« Respuesta #8 en: 11 de Mayo de 2004, 16:50:00 »
da certo sim ,o erro é de apenas 5mv!

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Duda con salida del CAD utilizando RS232
« Respuesta #9 en: 12 de Mayo de 2004, 09:53:00 »
Oye, ahora quisiera desplegar esos datos con visual basic pero lo que no se, es que tipo de datos son los que tengo a la salida del convertidor analógico digita, si me pudieras ayudar en esto te lo agradecería bastante.  Sólo necesito saber que tipo de datos salen para poder manipularlos con visual basic. De antemano gracias.

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: Duda con salida del CAD utilizando RS232
« Respuesta #10 en: 12 de Mayo de 2004, 15:58:00 »
De aqui baje un programa http://www.lawebdelprogramador.com/codigo/enlace.php?idp=59&id=93&texto=Visual+Basic

que abre y recibe informacion por el puerto com

La informacion se recibe como un string pero mejor estudiate el scrip y aprendes por tu cuenta, que es la mejor manera.
Por problemas de espacio no puedo adjuntar el archivo ZIP correspondiente pero con la direccion lo bajas tu si te interesa
 
salud2
kruskal@hotmail.com


 

anything