Necesito un sensor de temperatura que lo lea la computadora

Eduardo, gracias por la aclaracion, ya me estaba imaginando que el problema podría venir de la proto, sinembargo necesitaba esta confirmación. Voy a probar con el circuito impreso haber como me va. muchas gracias..
 
veo que algunos ya les funciona con el lm35, adc0804, max232 y el pic 16f84, pero nadie aporta el programa de la pc, yo me estoy haciendo bolas con el programa en delphi que encontre, pero no logro corregirle algunos errores.

necesito alguno en visual vbasic, que alli le entiendo un poco mas.

mi idea es que al llegar una temperatura determinada se encendiera un led, pero como no se ensamblador, necesito saber como envio un pulso por el serial. delphi no se nada.

realize el que sale en monografias. gracias
 
Calvete, esa grafica un desastre, eso en la realidad no debería ser así, me recuerda cuando estaba armando en un PCB un bardisplay que respondía a la temperatura, los leds subían y bajaban, algunos se quedaban parcialmente encendidos.
Prueba lo siguiente:
Conéctale un capacitor electrolítico entre masa y la entrada del ADC (pin 6) el valor debería de ser entre 1uF a 4.7uF y nos cuentas como cambio tu grafica. Aparentemente es el ruido que se esta entrando por el ADC. También ponle otro capacitor electrolítico entre masa y el pin 9 que es de referencia.

P.D. podrías subir el programa del PIC en HEX?
 
hola, he echo un programa en visualbasic, que pretende leer la temperatura del sensor, con los mismos materiales que calvete, pero sin la misma programacion del PIC.



resulta que solo me da numeros entre 256 y 240, algunas hasta 127, pero aun desconectando el sensor me sigue dando esas lecturas.

tengo mal el programa?

voy a implementar el codigo de tu PIC y las mismas conexiones.
 

Adjuntos

  • leer_temp_135.txt
    1.3 KB · Visitas: 145
Hola don "calvete":

En la nota AN510 del manual de Microchip viene un proyecto completo para eso. Yo lo copié
para un 12C671 pero así nomás no lo pude hacer andar. Es medio delicado porque la trama
de datos se pierde casi por nada. Un poco que cambie la temperatura del Xtal, la frecuencia
del micro se corre, y la sincronización con la PC se pierde. Y ahí sí que hasta que vuelve a
enganchar la trama otra vez pueden pasar tus 2 segundos.

Por las dudas controla la estabilidad de cada bit del valor digital sin conectar nada a la PC.
Algunos problemas vienen de una mala elección del punto de tierra en común. En general
conviene que el punto de toma a tierra esté lejos de la entrada al amplificador o al
conversor A/D.

Otra cosa: No estás optoacoplando las salidas a PC del micro. Hacerlo puede ayudar con el ruido. Un consejo infalible es OPTOACOPLAR TODO lo digital que entre y salga del micro.
En especial si va a otro circuito como la PC, que tiene su propia fuente y sus propios ruidos.

También controlá con el medidor de temperatura del téster para ver si la temperatura que medís realmente fluctúa tanto.

Si desgraciadamente fluctúa fijate si este método te puede servir. Te actualiza el promedio a
cada muestra nueva que tomes. Como es "en línea" no tarda casi nada.

Acá está la presentación:
(El enlace ha sido quitado por el autor)

El algoritmo básico es:
Código:
; Parámetros del algoritmo
A = 0.2 
B = 1 - A
; Estos valores son para una relación Ruido/Señal < 5 % 
; Podés cambiarlos según el nivel de ruido esperado en tu señal.
; Con un menor valor de A promedia mejor, pero tiene menor respuesta en frecuencia.

Prom = 0   ; Promedio inicial

lazo    ; Tu lazo de programa con medición en cada paso

     Señal <- tu medición 

     Prom = B * Prom  + A * Señal        ; El algoritmo

     (acá usas vos el valor del promedio)

     goto lazo

El ruido se empieza a cancelar al cabo de unas cuantas mediciones (20-30).
No tengo la referencia de quien es el autor de ese sencillo algoritmo, pero anda bárbaro.
Algo más elaborado, es hacer que el promedio sea adaptativo y se ajuste solo al nivel de
ruido. Pero creo que con esto te debe bastar.

Saludos.
 
muchas gracias por las respuestas, hace mucho no revisaba el foro, les cuento que ya corregí el problema al armar la pcb, al parecer el problemas era ruido producido por la proto. además le implementé una fuente distinta al ADC y al MAX232, para evitar el ruido que este ultimo produce. el salto se ve de ves en cuando y un grado como maximo.

nuevamente muchas gracias
 
E aqui el .HEX

El dato esta disponible cada 6ms aproximadamente ya que el pic hace un promedio de unos 60 datos. con esto busca evitar los saltos erroneos producidos por el fuerte ruido en ambientes fiertes.
 

Adjuntos

  • temperatura_690.rar
    671 bytes · Visitas: 135
hola calvete yo estoy tratando de hacer un proyecto similar pero mi rpoblema es que no se programar el pic si me facilitas la información.

gracia de ante mano lo puedes mandar.
 
perdonen que me meta, ya que es para la pc por que usar un pic?

sabiendo programar en muchos programadores, el Qbasic nunca se olvida con una resistencia variable por temperatura ntc y un a/d + el puerto serie o paralelo se puede perfectamente con unas pocas variables y lineas, ya que tenemos la pc para que usar un pic

si tengo tiempo y solo si tengo tiempo subo el archivo .bas

saludos
 
Hace un tiempo salió un artículo en una revista donde usaban el puerto de juegos de la PC
(que normalmente no se usa) para sensar una resistencia NTC. Usaban el mismo método
que para sensar las resistencias de la palanca de un joystick: generando un bucle medían
el tiempo de una caida RC. Creo que también era en basic.
Como dijo "Santix", si lo encuentro, ... y tengo tiempo ... lo subo.

Saludos.
 
Alejandro Sherar dijo:
Hace un tiempo salió un artículo en una revista donde usaban el puerto de juegos de la PC
(que normalmente no se usa) para sensar una resistencia NTC. Usaban el mismo método
que para sensar las resistencias de la palanca de un joystick: generando un bucle medían
el tiempo de una caida RC. Creo que también era en basic....
Bajo DOS los programas llamaban al BIOS ( INT 15h, AH=84h ), que internamente hacia eso.
Bajo Windows llaman a la API joyGetPos(UINT,LPJOYINF)
 
_Eduardo_ dijo:
Bajo Windows llaman a la API joyGetPos(UINT,LPJOYINF)...
¿ Y dónde reside esa API ? Viene dentro del paquete de "win" o hay que conseguirla aparte
como las de acceso al puerto paralelo ("inp" y "out")
¿ Cómo la invoco desde Visual Basic ?
 
Alejandro Sherar dijo:
¿ Y dónde reside esa API ? Viene dentro del paquete de "win" o hay que conseguirla aparte como las de acceso al puerto paralelo ("inp" y "out")
Es del paquete de Windows, esta en la libreria estatica winmm.lib y en la dinamica winmm.dll

¿ Cómo la invoco desde Visual Basic ?
Sacando de google un ejemplo: http://www.ex-designz.net/apidetail.asp?api_id=201

Hay listados de APIs para VB (como http://www.xs4all.nl/~rjg70/_vbapi/ref/index.html) pero es lejos mas completa la "Win32 programmer's reference" aunque los ejemplos son para C (en algunas partes esta online y en otros es un .HLP de entre 6 y 24MB)
 
Gente, que paso con los links que posteo Mamu al comienzo del hilo? Se ve que la pagina caduco... alguien tiene los esquematicos para resubirlos aqui?
Saludos
 
Hola soy nuevo en lo que se refiere a electronica..., estoy realizando un proyecto del sensor, y utilize el diagrama que publico calvete, la duda es que si se tiene que programar el PIC16F84? que pasa si no se programa?

en vez de utilizar el puerto serial se puede utilizar el paralelo reemplazando en el dibujo el serial?

cualquier comentarios es bien recibido...
 
Quisisera saber si se puede consegir un programita para esta practica


http://img515.imageshack.us/img515/7356/adquisiciondedatos1.png


- un convertidor ADC0804
- un transductor LM35 (sensor de temperatura)
- 1 res. 10k Ohm.
- 1 capacitor 150 pF
- 8 leds
- 8 res. 220 Ohms.
- conector DB25 macho
Bueno los leds son para que te cerciores de que todo anda bien... estas salidas van al conector DB25 del pin 2 al 9 (LSB-MSB) y este al puerto de impresora configurada en modo EPP en el BIOS al inicio... escoges un pin del 18 al 25 para conectarlo a tierra de tu armado
si puedes aisla la tierra digital DGND si trabajas con muchas conexiones para evitar el ruido... El código es muy simple:

#include"stdio.h"
#include"conio.h"
#include"dos.h"

#define PORT 0x378 //puerto de datos (pines 2 al 9)

void main()
{
while(!kbhit())// mientras no se pulse ninguna tecla
{
int a = ~inportb(PORT);// recibe el dato por el puerto 378
printf(" %d\n",a); // imprime
delay(500); // espera medio segundo
}
}

está en C++ y compilado con el Turbo C++ si kieres le pones interfaz.
 
Quisisera saber si se puede consegir un programita para esta practica


http://img515.imageshack.us/img515/7356/adquisiciondedatos1.png


- un convertidor ADC0804
- un transductor LM35 (sensor de temperatura)
- 1 res. 10k Ohm.
- 1 capacitor 150 pF
- 8 leds
- 8 res. 220 Ohms.
- conector DB25 macho
Bueno los leds son para que te cerciores de que todo anda bien... estas salidas van al conector DB25 del pin 2 al 9 (LSB-MSB) y este al puerto de impresora configurada en modo EPP en el BIOS al inicio... escoges un pin del 18 al 25 para conectarlo a tierra de tu armado
si puedes aisla la tierra digital DGND si trabajas con muchas conexiones para evitar el ruido... El código es muy simple:

#include"stdio.h"
#include"conio.h"
#include"dos.h"

#define PORT 0x378 //puerto de datos (pines 2 al 9)

void main()
{
while(!kbhit())// mientras no se pulse ninguna tecla
{
int a = ~inportb(PORT);// recibe el dato por el puerto 378
printf(" %d\n",a); // imprime
delay(500); // espera medio segundo
}
}

está en C++ y compilado con el Turbo C++ si kieres le pones interfaz.
 
Lo malo es que no puedo ver el diagrama Exacto ni el codigo fuente del programa que muestre la temperatura en Pantalla por medio de Coordenadas en VisualBasic.

Alguien puede ser tan amable de poner el codigo fuente? porque no me funciona al hacerlo con la libreria IO.DLL he intentado y hasta he modificado el BIOS de MI PC para Cambiar los Valores de los Puertos en la dirección Paralela 378h
 
Atrás
Arriba