By DEATH_Mod AFTER_FRESH+Sensor de temperaura+LCD

*************************** By DeAtH_MoD ******************************

AFTER_FRESH+Sensor de temperaura+LCD

En este momento estoy haciendo unas pruebas de funcionamiento pero solo quiero opiniones
acerca de esta idea.
El funcionamiento es el siguiente:
*Pantalla LCD 16x2.
*Muestra lecturas de la temperatura del GPU.
*Tiene opcion de configuracion para apagado de el After_fresh, no por tiempo, este se desactiva
en la temperatura que este configurada.
* activacion de un fan en caso de que la consola tenga la temperatura alta y se desactiva
cuando esta disminuya.
*alarma para sobrecalentamiento que tambien es configurable.
*Consta de 4 botones para configurar: tiene boton de setup, exit,aumentar o disminuir el valor
deseado.

No tengo una camara muy buena, espero que por lo menos puedan ver algo.
Imagen
Imagen
Imagen

para que se hagan una idea del funcionamiento dejo un link con un video:
http://www.youtube.com/watch?v=pHkkDnie390

Esten pendientes pues dependiendo de su interes le dejare tanto el .hex para programar el
PIC y el montaje.

Aqui dejo el esquema y el hex del montaje.
He probado toda la semana el montaje y hasta el momento ok.
si alguien encuentra un problema favor dejarme un mensaje.
No me hago responsable de los daños ocasionados, si no estas seguro o no entiendes
el montaje pide ayuda.
Gracias a marvicdigital por tus aportes, tus ideas son muy valiosas para mi y por lo que haces
para ayudar a la comunidad EOL.

Imagen

afterfresh_lcd.rar (4.47 KB)

archivo para programar el pic


los 5V van conectados en Standby y GND como estan en el after-fresh-tutorial,tambien los
puntos power control y power sensor:
hilo_after-fresh-tutorial_928059

Puedes instalarlo sin LCD sin Buzzer, y sin el rele esta configurado para refigerar la consola hasta
que llegue a los 30 grados, y el rele es para un fan extra que solo se activa si la temperatura es
muy alta y el Buzzer es para la alarma de recalentamiento.
El circuito oscilador es tambien necesario para que el PIC funcione.
Con el LCD tienes la posibilidad de ver la temperatura, configurarlo a tu gusto, pero no olvidar que
es necesario los los botones de setup,exit,+ y -.
En el resistencia variable de 10k que va conectada a AN3 es el voltaje de referencia debe
entar solo 1v, para esto debes chequear y ajustar la resistencia para que el LM35 nos de una
lectura correcta de la temperatura.
NO OLVIDAR QUE ES OBLIGATORIO TENER INSTALADO EL FAN FIX V1 PARA SU CORRECTO
FUNCIONAMIENTO.

Esto solo lo hago con el fin de puedan hacer un "TEST" de temperatura de su consola, observe su
comportamiendo y se den cuenta si vale la pena o no instalar un fan extra o saber donde queda
mejor ubicado para mejorar la refigeracion de la consola.
XD XD XD Espero les sea de ayuda. mucha suerte y hasta la proxima. XD XD XD

!!!! SaLuDoS !!!!

***********************************************************************
death_mod escribió:*************************** By DeAtH_MoD ******************************

AFTER_FRESH+Sensor de temperaura+LCD

En este momento estoy haciendo unas pruebas de funcionamiento pero solo quiero opiniones
acerca de esta idea.
El funcionamiento es el siguiente:
*Pantalla LCD 16x2.
*Muestra lecturas de la temperatura del GNU.
*Tiene opcion de configuracion para apagado de el After_fresh, no por tiempo, este se desactiva
en la temperatura que este configurada.
* activacion de un fan en caso de que la consola tenga la temperatura alta y se desactiva
cuando esta disminuya.
*alarma para sobrecalentamiento que tambien es configurable.
*Consta de 4 botones para confugurar: tiene boton de setup, exit,aumentar o disminuir el valor
deseado.

No tengo una camara muy buena, espero que por lo menos puedan ver algo.
Imagen
Imagen
Imagen

para que se hagan una idea del funcionamiento dejo un link con un video:
http://www.youtube.com/watch?v=pHkkDnie390

Esten pendientes pues dependiendo de su interes le dejare tanto el .hex para programar el
PIC y el montaje.

!!!! SaLuDoS !!!!

***********************************************************************

yde donde has sacado esto, yo lo quiero:S saludos!
GNU? Querras decir GPU...
Stilo16v escribió:GNU? Querras decir GPU...


TIENES TODA LA RAZON, Gracias ya lo he corregido.
death_mod escribió:
Stilo16v escribió:GNU? Querras decir GPU...


TIENES TODA LA RAZON, Gracias ya lo he corregido.

pero esque yo quiero eso, como lo hago, donde lo consigo?:O saludos!
ummmmm..... me parece q son pocos grados para una consola de fabrica no?
perdigones escribió:ummmmm..... me parece q son pocos grados para una consola de fabrica no?


si has visto el video la prueba que realice es acabando de prender la consola y esta abierta.
por eso se encontraba a temperatura ambiente entre unos 26 grados. En las pruebas que he
realizado hay consolas que suben hasta 62 grados por eso el circuito es programable por que
las temperaturas varian y asi cada quien pueda hacer un test y configurar a su gusto.
En el video muestra que el after_fresh esta programado para apagarse cuando la consola
este en 30 grados, al final si alcanzas a apreciar este se apaga.

!!!!!! SaLuDoS !!!!!!
death_mod escribió:
perdigones escribió:ummmmm..... me parece q son pocos grados para una consola de fabrica no?


si has visto el video la prueba que realice es acabando de prender la consola y esta abierta.
por eso se encontraba a temperatura ambiente entre unos 26 grados. En las pruebas que he
realizado hay consolas que suben hasta 62 grados por eso el circuito es programable por que
las temperaturas varian y asi cada quien pueda hacer un test y configurar a su gusto.
En el video muestra que el after_fresh esta programado para apagarse cuando la consola
este en 30 grados, al final si alcanzas a apreciar este se apaga.

!!!!!! SaLuDoS !!!!!!

me gustaria que nos hicieras un tutorial porfavor, seria un gran aporte para todos;) saludos!
Si, queremos un TUTO!!!!!!!!!!!
¿La placa con el circuito integrado queda un poco grande o es mi impresion? Enhorabuena esta muy currado.
¿A caso no era perjudicial para la consola los cambios bruscos de temperatura?
¿No es mejor procurar que se caliente menos para que asi no haya tanta diferencia entre la temperatura maxima y la minima y no se deforme asi la placa?Esto es simple fisica,la dilatacion de la placa seguida de un enfriamiento excesivamente rapido puede resquebrajar mas rapido las soldaduras y empeorar el problema.Lo ideal seria que los cambios de temperatura fueran lo mas lentos posibles,o porlo menos eso pienso yo.Aver si viene un experto en estos temas como Marvicdigital(creador de este fix) y nos aclaran esto.
_Makako_ escribió:¿A caso no era perjudicial para la consola los cambios bruscos de temperatura?
¿No es mejor procurar que se caliente menos para que asi no haya tanta diferencia entre la temperatura maxima y la minima y no se deforme asi la placa?Esto es simple fisica,la dilatacion de la placa seguida de un enfriamiento excesivamente rapido puede resquebrajar mas rapido las soldaduras y empeorar el problema.Lo ideal seria que los cambios de temperatura fueran lo mas lentos posibles,o porlo menos eso pienso yo.Aver si viene un experto en estos temas como Marvicdigital(creador de este fix) y nos aclaran esto.

WooOoOoOooOooOo
ahii ahii, estoy contigo! [fumando]
_Makako_ escribió:¿A caso no era perjudicial para la consola los cambios bruscos de temperatura?
¿No es mejor procurar que se caliente menos para que asi no haya tanta diferencia entre la temperatura maxima y la minima y no se deforme asi la placa?Esto es simple fisica,la dilatacion de la placa seguida de un enfriamiento excesivamente rapido puede resquebrajar mas rapido las soldaduras y empeorar el problema.Lo ideal seria que los cambios de temperatura fueran lo mas lentos posibles,o porlo menos eso pienso yo.Aver si viene un experto en estos temas como Marvicdigital(creador de este fix) y nos aclaran esto.


El afetr fresh no da cambios bruscos de temperatura en la board como para dilatarla y pandearla. De hecho la curva de la caida en la temperatura con el after fresh era de 70ºC a 35ºC en 4 minutos(ojala mi memoria no falle :-| )algo asi como 10ºC por minuto, vamos que el fenomeno de dilatación que se imaginan algunos no existe, ni mucho menos un cambio brusco de temperatura.
La causa real de las 3LR se llama "Caja metálica".

Saludos
¿Esa caja metalica que esta unida a los disipadores por unos tornillos y que en un principo ayuda a disipar el calor y luego al apagarla lo "rebota" hacia los componenetes de la placa?
¿Es eso lo que causa las 3 luces rojas?
Si eso es asi,si tengo instalado en mi consola el fan fix v1 y v2 con el ventilador alimentado a 9v con una fuente externa(es que a 12v hace mucho ruido),¿mejoraria la disipacion del calor despues del apagado dejandolo conectado 5 minutos mas?Esta claro que no seria lo mismo que el afterfresh,pero es que despues de 2 mudanzas no tengo ni idea de donde puede haber ido mi querido t-20,que hace tantos años monte.Gracias por contestar tan rapido [beer]
_Makako_ escribió:¿Esa caja metalica que esta unida a los disipadores por unos tornillos y que en un principo ayuda a disipar el calor y luego al apagarla lo "rebota" hacia los componenetes de la placa?
¿Es eso lo que causa las 3 luces rojas?
.........


No presisamente, no tiene que ver con rebotes de calor, es algo peor que eso, si se fijan los que puedan tener una consola desarmada, en los conectores de video, del disco duro y en los puertos para la memoria; cuando estos están sin sus tornillos y solo están los tornillos de los disipadores verán como estos conectores no encajan con sus respectivos orificios(de la caja metálica), están entre 1mm y 3 mm por encima solo se acomodan cuando se les ponen los tornillos, esto produce un pandeo de la board, producto de forzar a que dichos conectores queden centrados en los orificios de la carcasa metálica }:/ y eso sumado a las altas temperaturas son las que producen el desprendimiento de las soldaduras de la GPU... de ahi que hallan errores tipo E74 ,sin video, las 3LR.
Es una pena que mi poco tiempo no me deje terminar aquel informe completo que tengo sobre este asunto.

Saludos
marvicdigital escribió:
_Makako_ escribió:¿Esa caja metalica que esta unida a los disipadores por unos tornillos y que en un principo ayuda a disipar el calor y luego al apagarla lo "rebota" hacia los componenetes de la placa?
¿Es eso lo que causa las 3 luces rojas?
.........


No presisamente, no tiene que ver con rebotes de calor, es algo peor que eso, si se fijan los que puedan tener una consola desarmada, en los conectores de video, del disco duro y en los puertos para la memoria; cuando estos están sin sus tornillos y solo están los tornillos de los disipadores verán como estos conectores no encajan con sus respectivos orificios(de la caja metálica), están entre 1mm y 3 mm por encima solo se acomodan cuando se les ponen los tornillos, esto produce un pandeo de la board, producto de forzar a que dichos conectores queden centrados en los orificios de la carcasa metálica }:/ y eso sumado a las altas temperaturas son las que producen el desprendimiento de las soldaduras de la GPU... de ahi que hallan errores tipo E74 ,sin video, las 3LR.
Es una pena que mi poco tiempo no me deje terminar aquel informe completo que tengo sobre este asunto.

Saludos

un dia tendrias de dar una charla de como evitarlas, porque yo eso de la posicion no lo sabia, gracias por la inf! saludos!
Oye maveric ósea que según tu estudio sobre este problema seria mejor dejar sin tornillos los conectores que mencionaste después de reparar la consola por 3 luces rojas?
pasa pasa pasa ese esquema y ese .hex, que ahora mismo lo montoooooo


mooola


currazo por cierto.

si tienes el asm.... jejeje para estudiarlo... esque me viene de perlas pa una historia que quiero hacer pa calentar el agua de una piscina con placas solares :) [angelito]
No presisamente, no tiene que ver con rebotes de calor, es algo peor que eso, si se fijan los que puedan tener una consola desarmada, en los conectores de video, del disco duro y en los puertos para la memoria; cuando estos están sin sus tornillos y solo están los tornillos de los disipadores verán como estos conectores no encajan con sus respectivos orificios(de la caja metálica), están entre 1mm y 3 mm por encima solo se acomodan cuando se les ponen los tornillos, esto produce un pandeo de la board, producto de forzar a que dichos conectores queden centrados en los orificios de la carcasa metálica }:/ y eso sumado a las altas temperaturas son las que producen el desprendimiento de las soldaduras de la GPU... de ahi que hallan errores tipo E74 ,sin video, las 3LR.

Pues eso si que es un fallo de diseño grave,mas que grave estupido.¿Es que cuando hacen los tests de temperatura en el control de calidad,la placa no esta atornillada a la caja?Es que no se me ocurre otra forma de pasar por alto este error.Y nosotros mientras aqui,partiendonos la cabeza por culpa de unos incompetentes.Gracias por todo Marvic [beer]
_Makako_ escribió:
No presisamente, no tiene que ver con rebotes de calor, es algo peor que eso, si se fijan los que puedan tener una consola desarmada, en los conectores de video, del disco duro y en los puertos para la memoria; cuando estos están sin sus tornillos y solo están los tornillos de los disipadores verán como estos conectores no encajan con sus respectivos orificios(de la caja metálica), están entre 1mm y 3 mm por encima solo se acomodan cuando se les ponen los tornillos, esto produce un pandeo de la board, producto de forzar a que dichos conectores queden centrados en los orificios de la carcasa metálica }:/ y eso sumado a las altas temperaturas son las que producen el desprendimiento de las soldaduras de la GPU... de ahi que hallan errores tipo E74 ,sin video, las 3LR.

Pues eso si que es un fallo de diseño grave,mas que grave estupido.¿Es que cuando hacen los tests de temperatura en el control de calidad,la placa no esta atornillada a la caja?Es que no se me ocurre otra forma de pasar por alto este error.Y nosotros mientras aqui,partiendonos la cabeza por culpa de unos incompetentes.Gracias por todo Marvic [beer]



Bueno , alo mejor esta tradución de una parte del texto original y que es noticia en vandal te pueda sacar de dudas:

http://www.vandal.net/noticia/34500/un-68-por-ciento-de-las-xbox-360-originales-eran-defectuosas/

Y el enlace a la noticia original :

http://venturebeat.com/2008/09/05/xbox-360-defects-an-inside-history-of-microsofts-video-game-console-woes/

Si alguien se puede currar una buena traducción, se lo agradecería mucho. Aún recuerdo cuantas discusiones sobre el porcentaje de consolas defectuosas, sobre todo para aquellos que aseguraban ciegamente que no sobrepasaban el 30% [carcajad] . Es una lástima que Yo ya no quiera una 360 ni regalada, después de la muerte de 2 consolas, una hace ya casi 2 años y la otra escasos 3 meses(una Falcón)..de verdad que paso...por ahora.

Saludos
Uff que pereza,tan solo de leerla se me han quitado las ganas de traducir la noticia,es que es larga y pesada de co**nes ,cada 2x3 se tira por los cerros de Ubeda.
Primero nos presentan a un pive de 40 tacos que se ha gastado mas de 1000$ en juegos para 360 y sus desventuras con 4 consolas con 3LRDLM,de como descubre que hay mas de 1.200.000 afectados con este mal blablabla que la empresa sabia que el diseño de la 360 era defectuoso y apesar de ello no pararon la produccion,pensaron que el problema se arreglaria solo cawento
Luego habla de microsoft y lo compara con el mismisimo Tercer Reich [qmparto] y blablabla,blablabla,blablabla,blablabla........no sabia que habia un libro que habla de las 3rlod Oooh .......blablabal,blablabla y termina con el pive este de 40 tacos diciendo que lo tienen cojido por los huevos,que seguira comprandose x360 porque le gustan los videojuegos [looco] .A mi me gusta leer prensa sensacionalista en mi idioma, en ingles se me hace pesado [sonrisa] .
Esto es como leer Harry Potter en ingles para saber como termina el cuarto libro antes que nadie y no enterarte de la misa la mitad [+risas] Un saludo [bye]
_Makako_ escribió:Uff que pereza,tan solo de leerla se me han quitado las ganas de traducir la noticia,es que es larga y pesada de co**nes ,cada 2x3 se tira por los cerros de Ubeda.
Primero nos presentan a un pive de 40 tacos que se ha gastado mas de 1000$ en juegos para 360 y sus desventuras con 4 consolas con 3LRDLM,de como descubre que hay mas de 1.200.000 afectados con este mal blablabla que la empresa sabia que el diseño de la 360 era defectuoso y apesar de ello no pararon la produccion,pensaron que el problema se arreglaria solo cawento
Luego habla de microsoft y lo compara con el mismisimo Tercer Reich [qmparto] y blablabla,blablabla,blablabla,blablabla........no sabia que habia un libro que habla de las 3rlod Oooh .......blablabal,blablabla y termina con el pive este de 40 tacos diciendo que lo tienen cojido por los huevos,que seguira comprandose x360 porque le gustan los videojuegos [looco] .A mi me gusta leer prensa sensacionalista en mi idioma, en ingles se me hace pesado [sonrisa] .
Esto es como leer Harry Potter en ingles para saber como termina el cuarto libro antes que nadie y no enterarte de la misa la mitad [+risas] Un saludo [bye]


gracias! algo es algo makako [carcajad] [carcajad] [carcajad] [carcajad] saludos!!
Ya esta para descarga el circuito y el archivo para programar el pic, he estado con mucho
trabajo por eso no habia podido dejar los archivos. Tratare de estar pendiente para resolver
dudas, saludos a todos y mucha suerte.
death_mod escribió:Ya esta para descarga el circuito y el archivo para programar el pic, he estado con mucho
trabajo por eso no habia podido dejar los archivos. Tratare de estar pendiente para resolver
dudas, saludos a todos y mucha suerte.


Muchas gracias...te ha quedado muy bien [beer] cuando tenga un tiempito lo probaré..mil gracias.

Saludos
_Makako_ escribió:Esto es como leer Harry Potter en ingles para saber como termina el cuarto libro antes que nadie y no enterarte de la misa la mitad [+risas] Un saludo [bye]

Te referirás al 7º libro, ¿no? XD

Entonces por lo que decís de las 3LR, si desarmo mi consola saco la placa y la pongo en el suelo de mi casa ¿las evitaré? (no pienso hacer eso, pero si es culpa del armazón metálico de la carcasa original quizá se la cambie)

Al creador del hilo, muy buena idea, la única pega es que micro que usas, que no me gustan XD, prefiero Atmel.
Buenas espero seros de ayuda en cuanto a la pregunta que se formulaba de que si es bueno o malo el after_fresh.

Os comento un poco mis esperiencias sobre soldaduras empleadas en mi trabajo. Desde mi punto de visto el after fresh es una muy buena idea, siempre y cuando lo combienes con el cambio de pasta termica y el fan fix 1-2, puesto que sino no se hace esto lo que se conseguiria es un stress termico por pasar de temperaturas bajas a altas en muy por tiempo. En electronica se utilizan perfieles de enfiamiento en los horno de convección en los cuales la pieza nunca debe de enfriarse mas de 3ºC por segundo y en nuestro caso son 40ºC (de 70ºC a 30ºC) en tan solo 240seg (4 min) des esta formula (40/240) sale que nosotros enfriamos la GPU a 0.16ºC/seg en lo que la pieza no sufriria nada, los peor como he dicho antes es ciclos frio/calor en los cuales si que sufre mas por eso lo mejor es combinar el after_fresh con los diferentes fan fix.

Espero haber sido de ayuda en este caso.
muy buena tu teoria,pero mas que eso logica....gracias por darnos tu opinion.en mi experiencia de 360,la moyoria de consolas que he reparado y para q no sufran de luces rojas o de errores como el E74 es aflojar todos los tornillos que epretan la caja metalica con la placa.eso me ha funcionado de maravilla con muchos errores para que no buelvan ha apareser, ya q con la primera reparada y con unos buenos ventiladores esos problemas resueltos.esto es solo para consolas q no sean muy "toreadas"ya que si la han reparado muchas veces la placa tiende a desformarse
REHome está baneado por "Ya hemos tenido suficiente, búscate otro foro para trollear por favor"
CaNii escribió:
death_mod escribió:*************************** By DeAtH_MoD ******************************

AFTER_FRESH+Sensor de temperaura+LCD

En este momento estoy haciendo unas pruebas de funcionamiento pero solo quiero opiniones
acerca de esta idea.
El funcionamiento es el siguiente:
*Pantalla LCD 16x2.
*Muestra lecturas de la temperatura del GNU.
*Tiene opcion de configuracion para apagado de el After_fresh, no por tiempo, este se desactiva
en la temperatura que este configurada.
* activacion de un fan en caso de que la consola tenga la temperatura alta y se desactiva
cuando esta disminuya.
*alarma para sobrecalentamiento que tambien es configurable.
*Consta de 4 botones para confugurar: tiene boton de setup, exit,aumentar o disminuir el valor
deseado.

No tengo una camara muy buena, espero que por lo menos puedan ver algo.
Imagen
Imagen
Imagen

para que se hagan una idea del funcionamiento dejo un link con un video:
http://www.youtube.com/watch?v=pHkkDnie390

Esten pendientes pues dependiendo de su interes le dejare tanto el .hex para programar el
PIC y el montaje.

!!!! SaLuDoS !!!!

***********************************************************************

yde donde has sacado esto, yo lo quiero:S saludos!


Hola:

Lo sacó de una web muy famosa que es esta de abajo, en el cual te explica y puedes descargar su código fuente y el hex ya compilado.
http://www.pablin.com.ar/electron/circu ... /index.htm

El mérito no es de él, sólo hizo lo explicado en esta web y no es muy complicado hacerlo.

Ahora, que él haya modificado el código fuente a su gusto ya es otro cantar. Me extraña que de tanto pedir de donde sacó los datos, evitaba las respuestas.

; Control de temperatura con LM35 y pantalla de LCD
; Una salida se activa ante una temp. baja y se desactiva ante una alta ambas seteables
; Guarda los parámetros en la EEPROM
; Micro: PIC16F870 a 4MHz XT

pcl   equ   0x02      ;Contador de programa (Parte baja)
estado   equ   0x03      ;Registro de estados
ptoa   equ   0x05      ;Puertos de E/S
ptob   equ   0x06
ptoc   equ   0x07
intcon   equ   0x0B      ;Controlador de interrupciones
eedata   equ   0x0C      ;Registro de datos de la EEPROM
eeaddr   equ   0x0D      ;Registro de direccion de la EEPROM
adres   equ   0x1E      ;Resultado de la conversión A/D (HIGH / LOW)
adcon   equ   0x1F      ;Configuración del conversor A/D
uni   equ   0x20      ;Usados para manejar los datos a mostrar en display
dec   equ   0x21
cen   equ   0x22
tiempo1   equ   0x23      ;Usados para temporizar
tiempo2   equ   0x24
letra   equ   0x25      ;Usado para apuntar la letra a colocar en el LCD
menor   equ   0x26      ;Temperatura de activación
mayor   equ   0x27      ;Temperatura de desactivación
buffer   equ   0x28      ;Usado como registro temporal

#define   CARRY   estado, 0   ;Bit de acarreo
#define   CERO   estado, 2   ;Flag indicador de resultado cero
#define   RP0   estado, 5   ;Bit 0 selector de página de memoria
#define   RP1   estado, 6   ;Bit 1 selector de página de memoria
#define   ADGO   adcon, 2   ;Bit que inicia la conversión (1) / Indica finalización (0)
#define   EEREAD   eedata, 0   ;Bit que inicia la lectura de la EEPROM
#define   EEWRITE   eedata, 1   ;Bit que inicia la escritura de la EEPROM - Indica finalización
#define   EEWREN   eedata, 2   ;Bit que habilita la escritura en la EEPROM
#define   EEAREA   eedata, 7   ;Bit que selecciona el área de EEPROM a utilizar (0=AREA DE DATOS)
#define   MINS   ptoa, 1      ;Sube el punto mínimo
#define   MINB   ptoa, 2      ;Baja el punto mínimo
#define   MAXS   ptoa, 3      ;Sube el punto máximo
#define   MAXB   ptoa, 4      ;Baja el punto máximo
#define   BUZZER   ptoc, 3      ;Salida al aviso acústico
#define   RELE   ptoc, 4      ;Relé que maneja la carga (calefactor / enfriador)
#define   LCDE   ptoc, 6      ;Habilitación del LCD
#define   LCDRS   ptoc, 7      ;Selección de modo del LCD

   bsf   RP0      ;Pasa a página 1
   bcf   RP1
   movlw   b'00011111'   ;Configura puerto A
   movwf   ptoa
   clrf   ptob      ;Puerto B completo como salidas (bus del LCD)
   clrf   ptoc      ;Puerto B completo como salidas
   movlw   b'10001110'   ;Configura los pines del Puerto A
   movwf   adcon      ;AN0 como única entrada análoga
   bsf   RP1      ;Pasa a página 3
   bcf   EEAREA      ;Selecciona el banco de EEPROM de datos
   bcf   RP1      ;Pasa a página 0
   bcf   RP0
   movlw   b'01000001'   ;Enciende y configura el convertidor A/D - Selecciona AN0 como entrada
   movwf   adcon
   
   clrf   ptoa      ;Apaga todo
   clrf   ptob
   clrf   ptoc
   
   bsf   RP1      ;Pasa a la página 2 de memoria
   clrf   eeaddr      ;Direcciona la primera posición de la EEPROM
   bsf   RP0      ;Pasa a la página 3 de memoria
   bsf   EEREAD      ;Inicia la lectura de la EEPROM
   bcf   RP0      ;Vuelve a la página 3 de memoria
   movf   eedata, 0   ;Dato Leído de la EEPROM -> W
   movwf   menor      ;Guarda el dato leído de la EEPROM en MENOR (punto de activación del relé)
   incf   eeaddr      ;Direcciona a la segunda posición de la EEPROM
   bsf   RP0      ;Pasa a la página 3 de memoria
   bsf   EEREAD      ;Inicia la lectura de la EEPROM
   bcf   RP0      ;Vuelve a la página 3 de memoria
   movf   eedata, 0   ;Dato Leído de la EEPROM -> W
   movwf   mayor      ;Guarda el dato leído de la EEPROM en MAYOR (punto de desactivación del relé)
   bcf   RP1      ;Pasa a la página 0 de memoria

   movlw   b'00111000'   ;Comunicación con el LCD a ocho bits - Dos líneas de texto
   call   CONTROL
   movlw   d'2'
   call   DEMORA      ;Demora 2ms
   movlw   b'00000110'   ;Mensaje estático, se desplaza el cursor hacia la derecha
   call   CONTROL
   movlw   d'2'
   call   DEMORA      ;Demora 2ms
   movlw   b'00001100'   ;Enciende el display - Oculta el cursor - Caracter fijo
   call   CONTROL
   movlw   d'2'
   call   DEMORA      ;Demora 2ms
   movlw   b'00000001'   ;Limpia la pantalla y pone cursor en posición inicial
   call   CONTROL
   movlw   d'2'
   call   DEMORA      ;Demora 2ms

   clrf   letra      ;Coloca el título en el LCD
OTRA   movf   letra, 0   ;Letra actual -> W
   call   LINEA1      ;Obtiene el caracter a colocar desde la tabla
   call   DATO      ;Envía el caracter al LCD
   incf   letra, 1

   movf   letra, 0   ;Comprueba si ya envió los 16 caracteres del título
   sublw   d'16'
   btfss   CERO
   goto   OTRA      ;Si no llego a la letra 16 sigue enviando

   movlw   0xC0      ;Posiciona el cursor en la 2da. linea
   call   CONTROL
   movlw   d'1'
   call   DEMORA      ;Demora 1ms

   clrf   letra      ;Coloca el título en el LCD
OTRA2   movf   letra, 0   ;Letra actual -> W
   call   LINEA2      ;Obtiene el caracter a colocar desde la tabla
   call   DATO      ;Envía el caracter al LCD
   incf   letra, 1

   movf   letra, 0   ;Comprueba si ya envió los 16 caracteres del título
   sublw   d'16'
   btfss   CERO
   goto   OTRA2      ;Si no llego a la letra 16 sigue enviando

   call   VERINF      ;Coloca en el LCD la temp. inferior (de activación)
   call   VERSUP      ;Coloca en el LCD la temp. superior (de desactivación)

CICLO   bsf   ADGO      ;Inicia la conversión A/D
   btfsc   ADGO      ;Espera que termine de convertir
   goto   $ -1
   
   bsf   RP0      ;Pasa a página 1 (para acceder a los ocho bits bajos del resultado)
   movf   adres, 0   ;Resultado de conversión -> W
   bcf   RP0      ;Pasa a página 1

   movwf   buffer      ;Guarda el dato obtenido de ADRESL en el buffer temporal
   bcf   CARRY      ;Limpia el CARRY
   btfsc   adres, 0   ;Mira el bit menos significativo de ADRESH (Bit 8)
   bsf   CARRY      ;Si está en 1 pone en uno el carry
   rrf   buffer, 1   ;Hace desaparecer el bit 0 de ADRESL, mete el bit 0 de ADRESH por el 7 de ADRESL

   movf   menor, 0   ;Punto de activación -> W
   addlw   d'1'      ;Suma 1 a W
   subwf   buffer, 0   ;W = Temp. Actual - (Menor + 1)
   btfss   CARRY      ;Si dio negativo es porque la temp. medida es igual o menor al punto de activación
   bsf   RELE      ;Si dio negativo (si carry = 0) acciona el relé
   
   movf   mayor, 0   ;Punto de desactivación -> W
   subwf   buffer, 0   ;W = Temp. Actual - (Mayor)
   btfsc   CARRY      ;Si dio negativo es porque aún no alcanzó la temp. de desactivación
   bcf   RELE      ;Si dio positivo (si carry = 1) desactiva el relé

   movf   buffer, 0   ;Dato digitalizado -> W
   call   DECIMAL      ;Obtiene UNI, DEC y CEN con el agregado de 30h para la tabla ASCII
   
   movlw   0x8D      ;Coloca el cursor en la posición 0Dh de la pantalla.
   call   CONTROL

   movf   cen, 0      ;Coloca en el LCD las centenas
   call   DATO
   movf   dec, 0      ;Coloca las decenas
   call   DATO
   movf   uni, 0      ;Coloca las unidades
   call   DATO

   btfss   MINS      ;Mira el pulsador de incremento en temp. de activación
   call   SUBEMIN
   btfss   MINB      ;Mira el pulsador de decremento en temp. de activación
   call   BAJAMIN
   btfss   MAXS      ;Mira el pulsador de incremento en temp. de desactivación
   call   SUBEMAX
   btfss   MAXB      ;Mira el pulsador de decremento en temp. de desactivación
   call   BAJAMAX
   
   goto   CICLO      ;Vuelve a medir y mostrar

LINEA1   addwf   pcl, 1      ;Suma el contenido de W al contador de programa (para explorar la tabla)
   retlw   "T"
   retlw   "E"
   retlw   "M"
   retlw   "P"
   retlw   "E"
   retlw   "R"
   retlw   "A"
   retlw   "T"
   retlw   "U"
   retlw   "R"
   retlw   "A"
   retlw   ":"
   retlw   " "
   retlw   " "
   retlw   " "
   retlw   " "

LINEA2   addwf   pcl, 1      ;Suma el contenido de W al contador de programa (para explorar la tabla)
   retlw   " "
   retlw   " "
   retlw   " "
   retlw   " "
   retlw   " "
   retlw   " "
   retlw   b'01111111'   ;Flecha izquierda
   retlw   "-"
   retlw   "-"
   retlw   b'01111110'   ;Flecha derecha
   retlw   " "
   retlw   " "
   retlw   " "
   retlw   " "
   retlw   " "
   retlw   " "

SUBEMIN   incf   menor, 1   ;Suma 1 a la temp. de activación
   call   VERINF      ;Actualiza la información en el LCD
   btfss   MINS      ;Espera que suelte el pulsador
   goto   $ -1
   goto   SAVEMIN      ;Una vez que suelta la tecla va a guardar el parámetro
   
BAJAMIN   decf   menor, 1   ;Resta 1 a la temp. de activación
   call   VERINF      ;Actualiza la información en el LCD
   btfss   MINB      ;Espera que suelte el pulsador
   goto   $ -1
   
SAVEMIN   bsf   RP1      ;Pasa a página 2
   clrf   eeaddr      ;Direcciona el primer byte de la EEPROM
   movf   menor, 0
   movwf   eedata      ;Temp. Activación -> EEPROM
   call   EESAVE      ;Ejecuta la rutina de grabación
   bcf   RP1      ;Pasa a página 0
   goto   TIC      ;Va a hacer el TIC de teclado

SUBEMAX   incf   mayor, 1   ;Suma 1 a la temp. de desactivación
   call   VERSUP      ;Actualiza la información en el LCD
   btfss   MAXS      ;Espera que suelte el pulsador
   goto   $ -1
   goto   SAVEMAX      ;Una vez que suelta la tecla va a guardar el parámetro
   
BAJAMAX   decf   mayor, 1   ;Resta 1 a la temp. de desactivación
   call   VERSUP      ;Actualiza la información en el LCD
   btfss   MAXB      ;Espera que suelte el pulsador
   goto   $ -1
   
SAVEMAX   bsf   RP1      ;Pasa a página 2
   movlw   d'1'
   movwf   eeaddr      ;Direcciona el 2do. byte de la EEPROM
   movf   mayor, 0
   movwf   eedata      ;Temp. Activación -> EEPROM
   call   EESAVE      ;Ejecuta la rutina de grabación
   bcf   RP1      ;Pasa a página 0
   goto   TIC      ;Va a hacer el TIC de teclado
   
EESAVE   bsf   RP0      ;Pasa a página 3
   bsf   EEWREN      ;Habilita la escritura en la EEPROM
   movlw   0x55      ;Secuencia de seguridad
   movwf   eeaddr
   movlw   0xAA
   movwf   eeaddr
   bsf   EEWRITE      ;Inicia la grabación
   bcf   EEWREN      ;Deshabilita la escritura
   btfsc   EEWRITE      ;Espera que termine de grabar
   goto   $ -1
   bcf   RP0      ;Pasa a página 2
   return

TIC   bsf   BUZZER      ;Acciona el buzzer
   movlw   d'100'
   call   DEMORA      ;Deja sonar el buzzer durante 100ms
   bcf   BUZZER
   return
   
CONTROL   bcf   LCDRS      ;Pone en bajo la línea de modo del LCD (Control)
   goto   ENVIAR      ;Se saltea la sig. línea
DATO   bsf   LCDRS      ;Pone en alto la línea de modo del LCD (Dato)
ENVIAR   movwf   ptob      ;Coloca el dato o control a enviar en el bus del LCD
   movlw   d'1'
   call   DEMORA      ;Demora 1ms
   bsf   LCDE      ;Habilita el LCD
   movlw   d'1'
   call   DEMORA      ;Demora 1ms
   bcf   LCDE      ;Deshabilita el LCD
   movlw   d'1'
   call   DEMORA      ;Demora 1ms
   return

DECIMAL   movwf   uni      ;Convierte el dato presente en W en UNI, DEC y CEN
   clrf   dec
   clrf   cen
   movlw   d'100'      ;Determina la cant. de centenas
CENTENA   subwf   uni, 1
   btfss   CARRY
   goto   CIEN
   incf   cen, 1
   goto   CENTENA
CIEN   addwf   uni, 1
   movlw   d'10'      ;Determina la cant. de decenas
DECENA   subwf   uni, 1
   btfss   CARRY
   goto   DIEZ
   incf   dec, 1
   goto   DECENA
DIEZ   addwf   uni, 1      ;Uni queda con la cant. de unidades (sin decenas ni centenas)

   movlw   0x30      ;Le suma 30h a los valores de UNI, DEC y CEN para que queden en ASCII
   addwf   uni, 1
   addwf   dec, 1
   addwf   cen, 1
   return
   
DEMORA   movwf   tiempo2      ;Demora tantos milisegundos como valor en w
TOP2   movlw   d'110'
   movwf   tiempo1
TOP1   nop
   nop
   nop
   nop
   nop
   nop
   decfsz   tiempo1, 1
   goto   TOP1
   decfsz   tiempo2, 1
   goto   TOP2
   return

VERINF   movf   menor, 0   ;Temperatura de activación -> W
   call   DECIMAL      ;Obtiene UNI, DEC y CEN en formato ASCII
   movlw   0xC2      ;Posiciona el cursor en el tercer caracter de la 2da. línea
   call   CONTROL      ;para escribir el punto de activación
   movlw   d'1'
   call   DEMORA      ;Demora 1ms
   movf   cen, 0      ;Coloca en el LCD las centenas
   call   DATO
   movf   dec, 0      ;Coloca las decenas
   call   DATO
   movf   uni, 0      ;Coloca las unidades
   call   DATO
   return

VERSUP   movf   mayor, 0   ;Temperatura de desactivación -> W
   call   DECIMAL      ;Obtiene UNI, DEC y CEN en formato ASCII
   movlw   0xCB      ;Posiciona el cursor en el caracter 12 de la 2da. línea
   call   CONTROL      ;para escribir el punto de desactivación
   movlw   d'1'
   call   DEMORA      ;Demora 1ms
   movf   cen, 0      ;Coloca en el LCD las centenas
   call   DATO
   movf   dec, 0      ;Coloca las decenas
   call   DATO
   movf   uni, 0      ;Coloca las unidades
   call   DATO
   return
   
   org   0x2100      ;Guarda los parámetros por default en la EEPROM
   data   0x28      ;Punto de activación: 40 grados
   data   0x32      ;Punto de desactivación: 50 grados

   end



Hice cosas con el LCD y no es complicado hacerlo. Tengo manuales que hice en PDF sobre temas de PIC que pueden ver aquí.

Un cordial saludo.

EDITO:
Imagen
Con este libro, puedes hacer muchas cosas y ampliar funciones, modding, lo que sea con nuestras consolsa.
http://www.pic16f84a.org/index.php?opti ... apitulo_28

Ver vídeo 16F84A por puerto seriecontrolado con Visual C#.
http://www.youtube.com/watch?v=niWAbQ-HVnY

Hay circuitos que te viene en el libro hay un integrado DS1624, termómetro y eeprom que puedes colocar 8 con sólo conectado a dos cables en modo paralelo. Puedes meter 8 sensores por todas partes en la 360 y PlayStation 3 para controlar su temperatura y te de avisos de alarmas. Aunque la verdad 8 sensores independiente me parece mucho para el tamaño que tiene la 360 y PS3, con dos o tres bastará.

Bueno, en mi caso pondría un mini ventilador que quepa dentro en ciertas partes para que si aumenta la temperatura, se active ese ventilador. Otra cosa, que tenía en mente es que al recién apagar la 360, si tiene una temperatura alta que la tiene seguro, el ventilador no pare de moverse hasta que se enfríe bien y el sensor detecta ese frio y parará.

PD: El tema de microcontroladores la verdad que es muy interesante. Puedes elegir AVR, FreeScale y muchos más que te funcionarán, no quedarse solo con PIC, aunque para aprendiseje es mejor si eres novel.
27 respuestas