TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: microfull en 09 de Noviembre de 2007, 20:46:46

Título: TERMOSTATO ELECTRONICO EN PIC BASIC
Publicado por: microfull en 09 de Noviembre de 2007, 20:46:46
Bueno compañeros tengo un problema al desarrollar yn termostato con el lm35 y lcd con pic 16f876. necesito leer un voltaje y este a travez de unos puslsadores darle el valor a controlar y luego un factor de error el cual dejara pasar la temperatura por encima y por debajo de la temperatura a controlar. el control es on/off y la verdad no se como hacerlo puesto que y intente realizar uno como el de pablin pero no me hacia control yo le decia el rango maximo y minimo y este no controlaba se disparaba cuando estaba muy por encima yo muy por debajo. agradeceria su ayuda.
Título: Re: TERMOSTATO ELECTRONICO EN PIC BASIC
Publicado por: navaismo en 09 de Noviembre de 2007, 21:31:41
Quizas esto te pueda ayudar Termostato  (http://www.micropic.es/index.php?option=com_remository&Itemid=27&func=fileinfo&id=83)

Si no estas registrado no podras verlo.

Asi que dejo el codigo:

Código: FreeBasic
  1. '****************************************************************
  2. '*  Name    : TERMO_ON/OFF.PBP                                  *
  3. '*  Author  : Max Eduardo Reyes Vera Juarez                     *
  4. '*  Notice  : Copyright (c) 2006 Protegido Por  leyes de Autor  *
  5. '*          : All Rights Reserved                               *
  6. '*  Date    : 04/10/2006                                        *
  7. '*  Version : 1.0                                               *
  8. '*  Notes   :                                                   *
  9. '*          :                                                   *
  10. '****************************************************************
  11.  
  12. DEFINE LCD_DREG   PORTD
  13. DEFINE LCD_DBIT   4
  14. DEFINE LCD_EREG   PORTC
  15. DEFINE LCD_EBIT   5
  16. DEFINE LCD_RSREG  PORTC
  17. DEFINE LCD_RSBIT  4
  18.  
  19. DEFINE ADC_CLOCK      3
  20. DEFINE ADC_BITS      10
  21. DEFINE ADC_SAMPLEUS  50
  22.  
  23. ADCON1 = 143
  24. OPTION_REG.7 = 0
  25.  
  26. TRISA = 255
  27. TRISB = 255
  28. TRISC = 0
  29. TRISD = 0
  30.  
  31.  
  32. TERMO VAR PORTA.0
  33. HTEMP VAR PORTB.0
  34. LTEMP VAR PORTB.1
  35. ENTER VAR PORTB.2
  36. EXIT  VAR PORTB.3
  37. HEAT  VAR PORTC.0
  38.  
  39. SENSOR  VAR WORD
  40. MAXTEMP VAR WORD
  41. RANGO   VAR WORD
  42. REF     VAR WORD
  43. SL      VAR WORD
  44. RL      VAR BYTE
  45. TL      VAR BYTE
  46. I       VAR BYTE
  47.  
  48.  
  49. pause 500
  50. high heat
  51. pause 500
  52. low heat
  53. pause 1000
  54.  
  55. INICIO:
  56.   MAXTEMP=0
  57.   RANGO=0
  58.   PORTC=0
  59.  LCDOUT$FE,1,"  INGRESE  "
  60.  LCDOUT$FE,$C0,"TEMPERATURA"
  61.  GOSUB PAUSA
  62.  
  63. GOTO INICIO
  64.  
  65.  
  66. PAUSA:
  67.  FOR I=0 TO 20
  68.   IF HTEMP=0 OR LTEMP=0 THEN
  69.    GOTO MAST
  70.   ENDIF
  71.   PAUSE 100
  72.  NEXT I
  73. RETURN
  74.  
  75. MAST:
  76.  IF EXIT=0 THEN BREAK
  77.  IF LTEMP=0 THEN
  78.   GOSUB MENOST
  79.  ENDIF
  80.  
  81.  IF hTEMP=0 THEN
  82.   PAUSE 130
  83.    IF HTEMP=0 THEN
  84.     MAXTEMP=MAXTEMP+1
  85.      TL = MAXTEMP
  86.     LCDOUT$FE,1,"TEMPERATURA DE:"
  87.     LCDOUT$FE,$C0,"    ",DEC TL,"ßC"
  88.     IF LTEMP=0 THEN MENOST
  89.    ENDIF
  90.  ENDIF  
  91.  
  92.  IF MAXTEMP>=250 THEN
  93.    MAXTEMp=0
  94.  ENDIF
  95.  
  96.  IF ENTER=0 THEN
  97.  MAXTEMP=(MAXTEMP*2)
  98.   GOSUB XRANGO
  99.  ENDIF
  100. GOTO MAST
  101.  
  102. MENOST:
  103.  IF EXIT=0 THEN BREAK
  104.  IF HTEMP=0THEN
  105.   GOTO MAST
  106.  ENDIF
  107.  
  108.  IF LTEMP=0 THEN
  109.   PAUSE 130
  110.    IF LTEMP=0 THEN
  111.     MAXTEMP = MAXTEMP - 1
  112.     TL = MAXTEMP
  113.     LCDOUT$FE,1,"TEMPERATURA DE:"
  114.     LCDOUT$FE,$C0,"    ",DEC TL,"ßC"
  115.     IF HTEMP=0 THEN MAST
  116.    ENDIF
  117.  ENDIF
  118.  
  119.  IF MAXTEMP <=0 THEN
  120.   MAXTEMP = 250
  121.  ENDIF
  122.  
  123.  IF ENTER=0 THEN
  124.  MAXTEMP=(MAXTEMP*2)
  125.  GOSUB XRANGO
  126.  ENDIF
  127.  
  128. GOTO MENOST
  129.  
  130. XRANGO:
  131.  LCDOUT$FE,1,"MARGEN DE ERROR?"
  132. GOSUB PAUS2
  133. GOTO XRANGO
  134.  
  135. RANGOTT:
  136.  IF EXIT=0 THEN BREAK
  137.  IF LTEMP=0 THEN
  138.   GOTO RANGOTM
  139.  ENDIF
  140.  
  141.  IF HTEMP=0 THEN
  142.   PAUSE 130
  143.    IF HTEMP=0 THEN
  144.     RANGO = RANGO+1
  145.     RL = RANGO
  146.     LCDOUT$FE,1,"RANGO DE:"
  147.     LCDOUT$FE,$C0,"+/-  ",DEC RL,"ßC"
  148.     IF LTEMP=0 THEN RANGOTM
  149.    ENDIF
  150.  ENDIF
  151.  
  152.  IF RANGO>255 THEN
  153.   RANGO=0
  154.  ENDIF
  155.  
  156.  IF ENTER=0 THEN
  157.   RANGO = (RANGO*2)
  158.   GOTO CALIENTA
  159.  ENDIF
  160. GOTO RANGOTT
  161.  
  162. RANGOTM:
  163.  IF EXIT=0 THEN BREAK
  164.  IF HTEMP=0 THEN
  165.   GOTO RANGOTT
  166.  ENDIF
  167.  
  168.  IF LTEMP=0 THEN
  169.   PAUSE 130
  170.    IF LTEMP=0 THEN
  171.     RANGO = RANGO-1
  172.     RL = RANGO
  173.     LCDOUT$FE,1,"RANGO DE:"
  174.     LCDOUT$FE,$C0,"+/-  ",DEC RL,"ßC"
  175.     IF HTEMP=0 THEN RANGOTT
  176.    ENDIF
  177.  ENDIF
  178.  
  179.  IF RANGO<=0 THEN
  180.   RANGO=255
  181.  ENDIF
  182.  
  183.  IF ENTER=0 THEN
  184.   RANGO = (RANGO*2)
  185.   GOTO CALIENTA
  186.  ENDIF
  187. GOTO RANGOTM
  188.  
  189. CALIENTA:
  190.  HIGH HEAT
  191.  GOSUB SENSA
  192.  SL=(SENSOR/2)
  193.  LCDOUT$FE,1,"CALENTANDO A:"
  194.  LCDOUT$FE,$C0,DEC TL,"ßC  ","+/- ",DEC RL,"ßC"
  195.  PAUSE 1500
  196.  LCDOUT$FE,1,"TEMP DE: ", DEC SL, "ßC"
  197.  pause 1500
  198.  IF SENSOR>(MAXTEMP+RANGO) THEN
  199.   lcdout$fe,1
  200.   gOTO COOL
  201.  ENDIF
  202. GOTO CALIENTA
  203.  
  204. COOL:
  205.  LOW HEAT
  206.  GOSUB SENSA
  207.  SL=(SENSOR/2)
  208.  lcdout $fe,$c0, "...ENFRIANDO...."
  209.  PAUSE 1500
  210.  LCDOUT$FE,1,"TEMP DE: ", DEC SL,"ßC"
  211.  PAUSE 1500
  212.  IF SENSOR<=(MAXTEMP-RANGO) THEN
  213.   GOTO CALIENTA  
  214.  ENDIF
  215. GOTO COOL
  216.  
  217. SENSA:
  218.  FOR i = 0 TO 50
  219.   ADCIN TERMO,SENSOR
  220.   REF=REF+SENSOR
  221.   IF EXIT=0 THEN BREAK
  222.   PAUSE 10
  223.  NEXT I
  224.  SENSOR =REF/50
  225.  REF=0
  226. RETURN  
  227.  
  228. PAUS2:
  229.  FOR I=0 TO 10
  230.   IF HTEMP=0 OR LTEMP=0 THEN
  231.    GOTO RANGOTT
  232.   ENDIF
  233.   PAUSE 150
  234.  NEXT I  
  235. RETURN
  236.  
  237. BREAK:
  238.  PORTC=0
  239.  MAXTEMP=0
  240.  RANGO=0
  241. GOTO INICIO
  242. END



Si te sacas de onda con el simbolo de la Beta en el despliegue del LCD es porque asi consigo el simbolo de grados en mi lcd. Ese hace lo que quieres la conexion deberas sacarla conforme al programa. Espero te sirva.
Título: Re: TERMOSTATO ELECTRONICO EN PIC BASIC
Publicado por: microfull en 10 de Noviembre de 2007, 00:36:56
Muchas Gracias Novaismo este era el que estaba buscando
Título: Re: TERMOSTATO ELECTRONICO EN PIC BASIC
Publicado por: elneroo en 21 de Noviembre de 2009, 17:37:36
hola compañeros me podrian pasar este proyecto lo necesito urgente se ve muy interesante por favor...... gracias....... soy nuevo en el foro..
Título: Re: TERMOSTATO ELECTRONICO EN PIC BASIC
Publicado por: migsantiago en 21 de Noviembre de 2009, 21:35:55
hola compañeros me podrian pasar este proyecto lo necesito urgente se ve muy interesante por favor...... gracias....... soy nuevo en el foro..

Lee esto por favor:
http://www.todopic.com.ar/foros/index.php?action=globalAnnouncements;id=1
Título: Re: TERMOSTATO ELECTRONICO EN PIC BASIC
Publicado por: korinotenshi en 31 de Agosto de 2010, 15:01:33
hola yo quiero armar el termostato pero no entiendo en el programa  que quiere decir [  HEAT  VAR PORTA.0] alguien me podria decir que significa  porfavor
Título: Re: TERMOSTATO ELECTRONICO EN PIC BASIC
Publicado por: Fer_TACA en 01 de Septiembre de 2010, 05:39:54
Es un nombre dado al pin del puert correspondiente.Asi luego en el programa en vez de que  cada vez que quieras realizar al con ese pin en ves de escribir:   portx.x le das el nombre y puedes saber mejor que es lo que hace ese pin dentro del programa.
No se si me he explicado
 
Título: Re: TERMOSTATO ELECTRONICO EN PIC BASIC
Publicado por: ASTROCAR en 01 de Septiembre de 2010, 06:26:37
buenos dias, ya que estan desarrollando este tema de control de un termostato aca no es aplicable control PID?

Saludos y estamos en contacto.
Atten.
Alexander Santana.
Venezuela-Barcelona
Título: Re: TERMOSTATO ELECTRONICO EN PIC BASIC
Publicado por: mecatronico26 en 25 de Enero de 2016, 10:14:57
Quizas esto te pueda ayudar Termostato  (http://www.micropic.es/index.php?option=com_remository&Itemid=27&func=fileinfo&id=83)

Si no estas registrado no podras verlo.

Asi que dejo el codigo:

Código: FreeBasic
  1. '****************************************************************
  2. '*  Name    : TERMO_ON/OFF.PBP                                  *
  3. '*  Author  : Max Eduardo Reyes Vera Juarez                     *
  4. '*  Notice  : Copyright (c) 2006 Protegido Por  leyes de Autor  *
  5. '*          : All Rights Reserved                               *
  6. '*  Date    : 04/10/2006                                        *
  7. '*  Version : 1.0                                               *
  8. '*  Notes   :                                                   *
  9. '*          :                                                   *
  10. '****************************************************************
  11.  
  12. DEFINE LCD_DREG   PORTD
  13. DEFINE LCD_DBIT   4
  14. DEFINE LCD_EREG   PORTC
  15. DEFINE LCD_EBIT   5
  16. DEFINE LCD_RSREG  PORTC
  17. DEFINE LCD_RSBIT  4
  18.  
  19. DEFINE ADC_CLOCK      3
  20. DEFINE ADC_BITS      10
  21. DEFINE ADC_SAMPLEUS  50
  22.  
  23. ADCON1 = 143
  24. OPTION_REG.7 = 0
  25.  
  26. TRISA = 255
  27. TRISB = 255
  28. TRISC = 0
  29. TRISD = 0
  30.  
  31.  
  32. TERMO VAR PORTA.0
  33. HTEMP VAR PORTB.0
  34. LTEMP VAR PORTB.1
  35. ENTER VAR PORTB.2
  36. EXIT  VAR PORTB.3
  37. HEAT  VAR PORTC.0
  38.  
  39. SENSOR  VAR WORD
  40. MAXTEMP VAR WORD
  41. RANGO   VAR WORD
  42. REF     VAR WORD
  43. SL      VAR WORD
  44. RL      VAR BYTE
  45. TL      VAR BYTE
  46. I       VAR BYTE
  47.  
  48.  
  49. pause 500
  50. high heat
  51. pause 500
  52. low heat
  53. pause 1000
  54.  
  55. INICIO:
  56.   MAXTEMP=0
  57.   RANGO=0
  58.   PORTC=0
  59.  LCDOUT$FE,1,"  INGRESE  "
  60.  LCDOUT$FE,$C0,"TEMPERATURA"
  61.  GOSUB PAUSA
  62.  
  63. GOTO INICIO
  64.  
  65.  
  66. PAUSA:
  67.  FOR I=0 TO 20
  68.   IF HTEMP=0 OR LTEMP=0 THEN
  69.    GOTO MAST
  70.   ENDIF
  71.   PAUSE 100
  72.  NEXT I
  73. RETURN
  74.  
  75. MAST:
  76.  IF EXIT=0 THEN BREAK
  77.  IF LTEMP=0 THEN
  78.   GOSUB MENOST
  79.  ENDIF
  80.  
  81.  IF hTEMP=0 THEN
  82.   PAUSE 130
  83.    IF HTEMP=0 THEN
  84.     MAXTEMP=MAXTEMP+1
  85.      TL = MAXTEMP
  86.     LCDOUT$FE,1,"TEMPERATURA DE:"
  87.     LCDOUT$FE,$C0,"    ",DEC TL,"ßC"
  88.     IF LTEMP=0 THEN MENOST
  89.    ENDIF
  90.  ENDIF  
  91.  
  92.  IF MAXTEMP>=250 THEN
  93.    MAXTEMp=0
  94.  ENDIF
  95.  
  96.  IF ENTER=0 THEN
  97.  MAXTEMP=(MAXTEMP*2)
  98.   GOSUB XRANGO
  99.  ENDIF
  100. GOTO MAST
  101.  
  102. MENOST:
  103.  IF EXIT=0 THEN BREAK
  104.  IF HTEMP=0THEN
  105.   GOTO MAST
  106.  ENDIF
  107.  
  108.  IF LTEMP=0 THEN
  109.   PAUSE 130
  110.    IF LTEMP=0 THEN
  111.     MAXTEMP = MAXTEMP - 1
  112.     TL = MAXTEMP
  113.     LCDOUT$FE,1,"TEMPERATURA DE:"
  114.     LCDOUT$FE,$C0,"    ",DEC TL,"ßC"
  115.     IF HTEMP=0 THEN MAST
  116.    ENDIF
  117.  ENDIF
  118.  
  119.  IF MAXTEMP <=0 THEN
  120.   MAXTEMP = 250
  121.  ENDIF
  122.  
  123.  IF ENTER=0 THEN
  124.  MAXTEMP=(MAXTEMP*2)
  125.  GOSUB XRANGO
  126.  ENDIF
  127.  
  128. GOTO MENOST
  129.  
  130. XRANGO:
  131.  LCDOUT$FE,1,"MARGEN DE ERROR?"
  132. GOSUB PAUS2
  133. GOTO XRANGO
  134.  
  135. RANGOTT:
  136.  IF EXIT=0 THEN BREAK
  137.  IF LTEMP=0 THEN
  138.   GOTO RANGOTM
  139.  ENDIF
  140.  
  141.  IF HTEMP=0 THEN
  142.   PAUSE 130
  143.    IF HTEMP=0 THEN
  144.     RANGO = RANGO+1
  145.     RL = RANGO
  146.     LCDOUT$FE,1,"RANGO DE:"
  147.     LCDOUT$FE,$C0,"+/-  ",DEC RL,"ßC"
  148.     IF LTEMP=0 THEN RANGOTM
  149.    ENDIF
  150.  ENDIF
  151.  
  152.  IF RANGO>255 THEN
  153.   RANGO=0
  154.  ENDIF
  155.  
  156.  IF ENTER=0 THEN
  157.   RANGO = (RANGO*2)
  158.   GOTO CALIENTA
  159.  ENDIF
  160. GOTO RANGOTT
  161.  
  162. RANGOTM:
  163.  IF EXIT=0 THEN BREAK
  164.  IF HTEMP=0 THEN
  165.   GOTO RANGOTT
  166.  ENDIF
  167.  
  168.  IF LTEMP=0 THEN
  169.   PAUSE 130
  170.    IF LTEMP=0 THEN
  171.     RANGO = RANGO-1
  172.     RL = RANGO
  173.     LCDOUT$FE,1,"RANGO DE:"
  174.     LCDOUT$FE,$C0,"+/-  ",DEC RL,"ßC"
  175.     IF HTEMP=0 THEN RANGOTT
  176.    ENDIF
  177.  ENDIF
  178.  
  179.  IF RANGO<=0 THEN
  180.   RANGO=255
  181.  ENDIF
  182.  
  183.  IF ENTER=0 THEN
  184.   RANGO = (RANGO*2)
  185.   GOTO CALIENTA
  186.  ENDIF
  187. GOTO RANGOTM
  188.  
  189. CALIENTA:
  190.  HIGH HEAT
  191.  GOSUB SENSA
  192.  SL=(SENSOR/2)
  193.  LCDOUT$FE,1,"CALENTANDO A:"
  194.  LCDOUT$FE,$C0,DEC TL,"ßC  ","+/- ",DEC RL,"ßC"
  195.  PAUSE 1500
  196.  LCDOUT$FE,1,"TEMP DE: ", DEC SL, "ßC"
  197.  pause 1500
  198.  IF SENSOR>(MAXTEMP+RANGO) THEN
  199.   lcdout$fe,1
  200.   gOTO COOL
  201.  ENDIF
  202. GOTO CALIENTA
  203.  
  204. COOL:
  205.  LOW HEAT
  206.  GOSUB SENSA
  207.  SL=(SENSOR/2)
  208.  lcdout $fe,$c0, "...ENFRIANDO...."
  209.  PAUSE 1500
  210.  LCDOUT$FE,1,"TEMP DE: ", DEC SL,"ßC"
  211.  PAUSE 1500
  212.  IF SENSOR<=(MAXTEMP-RANGO) THEN
  213.   GOTO CALIENTA  
  214.  ENDIF
  215. GOTO COOL
  216.  
  217. SENSA:
  218.  FOR i = 0 TO 50
  219.   ADCIN TERMO,SENSOR
  220.   REF=REF+SENSOR
  221.   IF EXIT=0 THEN BREAK
  222.   PAUSE 10
  223.  NEXT I
  224.  SENSOR =REF/50
  225.  REF=0
  226. RETURN  
  227.  
  228. PAUS2:
  229.  FOR I=0 TO 10
  230.   IF HTEMP=0 OR LTEMP=0 THEN
  231.    GOTO RANGOTT
  232.   ENDIF
  233.   PAUSE 150
  234.  NEXT I  
  235. RETURN
  236.  
  237. BREAK:
  238.  PORTC=0
  239.  MAXTEMP=0
  240.  RANGO=0
  241. GOTO INICIO
  242. END



Si te sacas de onda con el simbolo de la Beta en el despliegue del LCD es porque asi consigo el simbolo de grados en mi lcd. Ese hace lo que quieres la conexion deberas sacarla conforme al programa. Espero te sirva.


hola amigo como te va? estuve analizando tu programa y bueno tiene un error si lo quere compilar en micocode, en donde colocas "EXIT", si lo cambias por "SALIR"se ejecuta bien, la otra cuestion es hacerte una consulta, utilizas algun amplificador comparador (por ej un LM358), para poder ingresar las variaciones de tensiones con el sensor de temperatura y una referencia (zener y resistencia) o como lo haces? que sensor de temperatura utilizas (LM35)? desde ya muchas gracias
Título: Re:TERMOSTATO ELECTRONICO EN PIC BASIC
Publicado por: Fer_TACA en 25 de Enero de 2016, 10:19:21
e
Quizas esto te pueda ayudar Termostato  (http://www.micropic.es/index.php?option=com_remository&Itemid=27&func=fileinfo&id=83)

Si no estas registrado no podras verlo.

Asi que dejo el codigo:

Código: FreeBasic
  1. '****************************************************************
  2. '*  Name    : TERMO_ON/OFF.PBP                                  *
  3. '*  Author  : Max Eduardo Reyes Vera Juarez                     *
  4. '*  Notice  : Copyright (c) 2006 Protegido Por  leyes de Autor  *
  5. '*          : All Rights Reserved                               *
  6. '*  Date    : 04/10/2006                                        *
  7. '*  Version : 1.0                                               *
  8. '*  Notes   :                                                   *
  9. '*          :                                                   *
  10. '****************************************************************
  11.  
  12. DEFINE LCD_DREG   PORTD
  13. DEFINE LCD_DBIT   4
  14. DEFINE LCD_EREG   PORTC
  15. DEFINE LCD_EBIT   5
  16. DEFINE LCD_RSREG  PORTC
  17. DEFINE LCD_RSBIT  4
  18.  
  19. DEFINE ADC_CLOCK      3
  20. DEFINE ADC_BITS      10
  21. DEFINE ADC_SAMPLEUS  50
  22.  
  23. ADCON1 = 143
  24. OPTION_REG.7 = 0
  25.  
  26. TRISA = 255
  27. TRISB = 255
  28. TRISC = 0
  29. TRISD = 0
  30.  
  31.  
  32. TERMO VAR PORTA.0
  33. HTEMP VAR PORTB.0
  34. LTEMP VAR PORTB.1
  35. ENTER VAR PORTB.2
  36. EXIT  VAR PORTB.3
  37. HEAT  VAR PORTC.0
  38.  
  39. SENSOR  VAR WORD
  40. MAXTEMP VAR WORD
  41. RANGO   VAR WORD
  42. REF     VAR WORD
  43. SL      VAR WORD
  44. RL      VAR BYTE
  45. TL      VAR BYTE
  46. I       VAR BYTE
  47.  
  48.  
  49. pause 500
  50. high heat
  51. pause 500
  52. low heat
  53. pause 1000
  54.  
  55. INICIO:
  56.   MAXTEMP=0
  57.   RANGO=0
  58.   PORTC=0
  59.  LCDOUT$FE,1,"  INGRESE  "
  60.  LCDOUT$FE,$C0,"TEMPERATURA"
  61.  GOSUB PAUSA
  62.  
  63. GOTO INICIO
  64.  
  65.  
  66. PAUSA:
  67.  FOR I=0 TO 20
  68.   IF HTEMP=0 OR LTEMP=0 THEN
  69.    GOTO MAST
  70.   ENDIF
  71.   PAUSE 100
  72.  NEXT I
  73. RETURN
  74.  
  75. MAST:
  76.  IF EXIT=0 THEN BREAK
  77.  IF LTEMP=0 THEN
  78.   GOSUB MENOST
  79.  ENDIF
  80.  
  81.  IF hTEMP=0 THEN
  82.   PAUSE 130
  83.    IF HTEMP=0 THEN
  84.     MAXTEMP=MAXTEMP+1
  85.      TL = MAXTEMP
  86.     LCDOUT$FE,1,"TEMPERATURA DE:"
  87.     LCDOUT$FE,$C0,"    ",DEC TL,"ßC"
  88.     IF LTEMP=0 THEN MENOST
  89.    ENDIF
  90.  ENDIF  
  91.  
  92.  IF MAXTEMP>=250 THEN
  93.    MAXTEMp=0
  94.  ENDIF
  95.  
  96.  IF ENTER=0 THEN
  97.  MAXTEMP=(MAXTEMP*2)
  98.   GOSUB XRANGO
  99.  ENDIF
  100. GOTO MAST
  101.  
  102. MENOST:
  103.  IF EXIT=0 THEN BREAK
  104.  IF HTEMP=0THEN
  105.   GOTO MAST
  106.  ENDIF
  107.  
  108.  IF LTEMP=0 THEN
  109.   PAUSE 130
  110.    IF LTEMP=0 THEN
  111.     MAXTEMP = MAXTEMP - 1
  112.     TL = MAXTEMP
  113.     LCDOUT$FE,1,"TEMPERATURA DE:"
  114.     LCDOUT$FE,$C0,"    ",DEC TL,"ßC"
  115.     IF HTEMP=0 THEN MAST
  116.    ENDIF
  117.  ENDIF
  118.  
  119.  IF MAXTEMP <=0 THEN
  120.   MAXTEMP = 250
  121.  ENDIF
  122.  
  123.  IF ENTER=0 THEN
  124.  MAXTEMP=(MAXTEMP*2)
  125.  GOSUB XRANGO
  126.  ENDIF
  127.  
  128. GOTO MENOST
  129.  
  130. XRANGO:
  131.  LCDOUT$FE,1,"MARGEN DE ERROR?"
  132. GOSUB PAUS2
  133. GOTO XRANGO
  134.  
  135. RANGOTT:
  136.  IF EXIT=0 THEN BREAK
  137.  IF LTEMP=0 THEN
  138.   GOTO RANGOTM
  139.  ENDIF
  140.  
  141.  IF HTEMP=0 THEN
  142.   PAUSE 130
  143.    IF HTEMP=0 THEN
  144.     RANGO = RANGO+1
  145.     RL = RANGO
  146.     LCDOUT$FE,1,"RANGO DE:"
  147.     LCDOUT$FE,$C0,"+/-  ",DEC RL,"ßC"
  148.     IF LTEMP=0 THEN RANGOTM
  149.    ENDIF
  150.  ENDIF
  151.  
  152.  IF RANGO>255 THEN
  153.   RANGO=0
  154.  ENDIF
  155.  
  156.  IF ENTER=0 THEN
  157.   RANGO = (RANGO*2)
  158.   GOTO CALIENTA
  159.  ENDIF
  160. GOTO RANGOTT
  161.  
  162. RANGOTM:
  163.  IF EXIT=0 THEN BREAK
  164.  IF HTEMP=0 THEN
  165.   GOTO RANGOTT
  166.  ENDIF
  167.  
  168.  IF LTEMP=0 THEN
  169.   PAUSE 130
  170.    IF LTEMP=0 THEN
  171.     RANGO = RANGO-1
  172.     RL = RANGO
  173.     LCDOUT$FE,1,"RANGO DE:"
  174.     LCDOUT$FE,$C0,"+/-  ",DEC RL,"ßC"
  175.     IF HTEMP=0 THEN RANGOTT
  176.    ENDIF
  177.  ENDIF
  178.  
  179.  IF RANGO<=0 THEN
  180.   RANGO=255
  181.  ENDIF
  182.  
  183.  IF ENTER=0 THEN
  184.   RANGO = (RANGO*2)
  185.   GOTO CALIENTA
  186.  ENDIF
  187. GOTO RANGOTM
  188.  
  189. CALIENTA:
  190.  HIGH HEAT
  191.  GOSUB SENSA
  192.  SL=(SENSOR/2)
  193.  LCDOUT$FE,1,"CALENTANDO A:"
  194.  LCDOUT$FE,$C0,DEC TL,"ßC  ","+/- ",DEC RL,"ßC"
  195.  PAUSE 1500
  196.  LCDOUT$FE,1,"TEMP DE: ", DEC SL, "ßC"
  197.  pause 1500
  198.  IF SENSOR>(MAXTEMP+RANGO) THEN
  199.   lcdout$fe,1
  200.   gOTO COOL
  201.  ENDIF
  202. GOTO CALIENTA
  203.  
  204. COOL:
  205.  LOW HEAT
  206.  GOSUB SENSA
  207.  SL=(SENSOR/2)
  208.  lcdout $fe,$c0, "...ENFRIANDO...."
  209.  PAUSE 1500
  210.  LCDOUT$FE,1,"TEMP DE: ", DEC SL,"ßC"
  211.  PAUSE 1500
  212.  IF SENSOR<=(MAXTEMP-RANGO) THEN
  213.   GOTO CALIENTA  
  214.  ENDIF
  215. GOTO COOL
  216.  
  217. SENSA:
  218.  FOR i = 0 TO 50
  219.   ADCIN TERMO,SENSOR
  220.   REF=REF+SENSOR
  221.   IF EXIT=0 THEN BREAK
  222.   PAUSE 10
  223.  NEXT I
  224.  SENSOR =REF/50
  225.  REF=0
  226. RETURN  
  227.  
  228. PAUS2:
  229.  FOR I=0 TO 10
  230.   IF HTEMP=0 OR LTEMP=0 THEN
  231.    GOTO RANGOTT
  232.   ENDIF
  233.   PAUSE 150
  234.  NEXT I  
  235. RETURN
  236.  
  237. BREAK:
  238.  PORTC=0
  239.  MAXTEMP=0
  240.  RANGO=0
  241. GOTO INICIO
  242. END



Si te sacas de onda con el simbolo de la Beta en el despliegue del LCD es porque asi consigo el simbolo de grados en mi lcd. Ese hace lo que quieres la conexion deberas sacarla conforme al programa. Espero te sirva.


hola amigo como te va? estuve analizando tu programa y bueno tiene un error si lo quere compilar en micocode, en donde colocas "EXIT", si lo cambias por "SALIR"se ejecuta bien, la otra cuestion es hacerte una consulta, utilizas algun amplificador comparador (por ej un LM358), para poder ingresar las variaciones de tensiones con el sensor de temperatura y una referencia (zener y resistencia) o como lo haces? que sensor de temperatura utilizas (LM35)? desde ya muchas gracias


Esto es un post del 2007 y no se si vas a tenr respuesta. Me da que no. :mrgreen:
Título: Re:TERMOSTATO ELECTRONICO EN PIC BASIC
Publicado por: dogflu66 en 25 de Enero de 2016, 11:52:11
Hace años que navaismo se despidió del foro, así que no vas a obtener respuesta de él.
De todas formas para utilizar un LM35 no es necesario acoplarle un acondicionador, porque la resolución del LM35 es muy baja y el ADC del PIC la va a cubrir prácticamente completa conectándolo directamente.