Autor Tema: Problemas con la lectura de temperatura en mi display  (Leído 3372 veces)

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

Desconectado Trev

  • PIC16
  • ***
  • Mensajes: 115
Problemas con la lectura de temperatura en mi display
« en: 15 de Agosto de 2009, 19:52:30 »
Hola  :) acabo de montar un simple control de temperatura con un LCD con backlight y un teclado conectado a mi pic 16f877a no tengo conectado el sensor lm335 porque no lo he calibrado asique lo pruebo con un pot por ahora..el problema que me surge es que si bien todo va bien en la simulación en proteus ,en el proto no me imprime la temperatura el display(solo los titulos)sino hasta despues de usar el teclado asique no se  :shock:..ahh y he comprobado(con el pic desconectado) que mi 7805 no regula bien si le doy mas de 4 V al backligh¿cual es la tension justa a la que funciona el backlight?a 4 V consigo 4.92 V del 7805 si subo de eso me saca 4.5 y eso es malo para el pic :( ,les dejo la simulación en proteus y el código en ccs,saludos y gracias.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #1 en: 15 de Agosto de 2009, 21:15:58 »
lo primero y principal es indicarle al ccs que los resultados de estos valores pasan de ser int o long a float....

voltaje=(bin_lectura*P)+2.73;
temperatura=(voltaje/0.01)-273;

prueba asi

voltaje=(float)((bin_lectura*P)+2.73);
temperatura=(float)((voltaje/0.01)-273);

si no se lo indicas no te los transforma....
Suerte
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Trev

  • PIC16
  • ***
  • Mensajes: 115
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #2 en: 16 de Agosto de 2009, 00:58:40 »
Gracias por responder..  :) ,no sabia que se transformaba asi un entero bueno probaré y te cuento o sino mejor los paso a float pero el problema esta en el arranque (antes de usar el teclado por primera vez) despues me muestra la variable con dos decimales..

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #3 en: 16 de Agosto de 2009, 10:01:23 »
lo primero y principal es indicarle al ccs que los resultados de estos valores pasan de ser int o long a float....

voltaje=(bin_lectura*P)+2.73;
temperatura=(voltaje/0.01)-273;

prueba asi

voltaje=(float)((bin_lectura*P)+2.73);
temperatura=(float)((voltaje/0.01)-273);

si no se lo indicas no te los transforma....
Suerte

O así:
voltaje=((float)(bin_lectura*P)+2.73);
temperatura=(((float)voltaje / 0.01)-2.73);

Comento, porque me ha tocado hacerlo como indica ppyote, indicando en forma general toda la ecuación y no ha funcionado.

Saludos!
« Última modificación: 16 de Agosto de 2009, 23:03:08 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #4 en: 16 de Agosto de 2009, 11:26:27 »
como aun me considero nuevato en ccs.. tengo una duda..no basta con declarar a voltaje y temperatura como un float al inicio del programa?...cual es la finalidad de poner:
voltaje=(float)((bin_lectura*P)+2.73);

saludos
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #5 en: 16 de Agosto de 2009, 12:39:12 »
como aun me considero nuevato en ccs.. tengo una duda..no basta con declarar a voltaje y temperatura como un float al inicio del programa?...cual es la finalidad de poner:
voltaje=(float)((bin_lectura*P)+2.73);

saludos

Voltaje y Temperatura seguro ya están definidos como float. En cambio bin_lectura es el valor de la conversión analógica y es de 16 bits.

En este caso por ejemplo, bin_lectura y P son long, entonces si al multiplicarlos da mayor a 65536 se trunca y se pierde su valor. Al colocar ((float)(bin_lectura*P)) los trata como float, el resultado no se trunca y nos da el valor deseado   :mrgreen:

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #6 en: 16 de Agosto de 2009, 21:44:59 »
como aun me considero nuevato en ccs.. tengo una duda..no basta con declarar a voltaje y temperatura como un float al inicio del programa?...cual es la finalidad de poner:
voltaje=(float)((bin_lectura*P)+2.73);

saludos

Voltaje y Temperatura seguro ya están definidos como float. En cambio bin_lectura es el valor de la conversión analógica y es de 16 bits.

En este caso por ejemplo, bin_lectura y P son long, entonces si al multiplicarlos da mayor a 65536 se trunca y se pierde su valor. Al colocar ((float)(bin_lectura*P)) los trata como float, el resultado no se trunca y nos da el valor deseado   :mrgreen:

Saludos!

Las cosas claras y el chocolate espeso, esas respuestas son las mejores, de corta explicacion pero de facil entendimiento...
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Trev

  • PIC16
  • ***
  • Mensajes: 115
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #7 en: 17 de Agosto de 2009, 00:10:41 »
Gracias amigos pero sigo igual :( no hubo manera de que me presente la temperatura la primera vez solo despues de seleccionar una tempreatura con el teclado ahi si hace la lectura..,coloque una resistencia de 10k como undica el datasheet del sensor y lo calibre como dice a 2.98 V pero = sigue marcando 0,salu2

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #8 en: 17 de Agosto de 2009, 12:46:09 »
Hola a todos. ¿Trev, puedes subir el esquema?

Gracias

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #9 en: 17 de Agosto de 2009, 13:22:08 »
Agrega #use fast_io(b), porque sino es tratado como standard y cada vez que escribas o leas el puerto cambiará el tris según sea el caso. Además puedes reemplazar portb=vect[ i ]; por output_b(vect[ i ]);

Luego las siguientes lineas:
Código: C
  1. set_tris_a(0x0D);                     //Configuro RA0,RA2(Vref-) y RA3(Vref+) como entradas.
  2.    setup_adc(adc_clock_internal);        //Pongo en marcha módulo A/D.
  3.    delay_us(80);
  4.    setup_adc_ports(AN0_VREF_VREF);      
  5.    set_adc_channel(0);                   //El canal analogo a emplear será RA0/AN0.      
  6.    delay_us(80);

Quitalas del bucle y colócalas al inicio del maín:

Código: C
  1. main()
  2. {  
  3.    set_tris_b(0xf0);
  4.    set_tris_d(0x00);  
  5.    setup_adc(adc_clock_internal);        //Pongo en marcha módulo A/D.
  6.    setup_adc_ports(AN0_VREF_VREF);      
  7.    set_adc_channel(0);                   //El canal analogo a emplear será RA0/AN0.      
  8.    delay_us(30);

La configuración del TRISA no es necesaria.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Trev

  • PIC16
  • ***
  • Mensajes: 115
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #10 en: 17 de Agosto de 2009, 22:29:22 »
Gracias viejo  :) voy a probar esto(si mi novia me da un respiro  :D) y luego te cuento ademas no me vendria mal repasar un poco el modulo A/D saludos desde Rosario

Desconectado Trev

  • PIC16
  • ***
  • Mensajes: 115
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #11 en: 17 de Agosto de 2009, 22:41:22 »
Hola ramirez aca te dejo la simulación (va la siburracion  :D en criollo)en proteus nos vemos

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #12 en: 20 de Agosto de 2009, 10:48:15 »
Hola Trev, con que versión lo has hecho, ya que yo tengo 7.2 y no puedo abrirlo. Además, si puedes, te agradecería que lo guardaras en esta versión para poder abrirlo.

¿Cual es la última versión que existe?

Gracias

Desconectado Trev

  • PIC16
  • ***
  • Mensajes: 115
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #13 en: 20 de Agosto de 2009, 12:31:26 »
Mira te conviene actualizar el proteus,en directoriowarez puedes encontrarlo,te registras y listo porque yo no tengo las versiones viejas¿el código lo pudiste abrir?para mi esta bien es un problema de calibración del sensor me juego

Desconectado Trev

  • PIC16
  • ***
  • Mensajes: 115
Re: Problemas con la lectura de temperatura en mi display
« Respuesta #14 en: 29 de Agosto de 2009, 15:41:32 »
Muchachos ya descubri el problema..entra en la interrupción del portb primero,no se porque se dispara la interrupción,Saludos
 :)


 

anything