Autor Tema: TERMOSTATO ELECTRONICO EN PIC BASIC  (Leído 13261 veces)

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

Desconectado microfull

  • PIC10
  • *
  • Mensajes: 26
    • microfull
TERMOSTATO ELECTRONICO EN PIC BASIC
« 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.
www.microfull.com
Desarrollo de proyectos microcontrolados

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: TERMOSTATO ELECTRONICO EN PIC BASIC
« Respuesta #1 en: 09 de Noviembre de 2007, 21:31:41 »
Quizas esto te pueda ayudar Termostato

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.
« Última modificación: 09 de Noviembre de 2007, 22:21:02 por navaismo »
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado microfull

  • PIC10
  • *
  • Mensajes: 26
    • microfull
Re: TERMOSTATO ELECTRONICO EN PIC BASIC
« Respuesta #2 en: 10 de Noviembre de 2007, 00:36:56 »
Muchas Gracias Novaismo este era el que estaba buscando
www.microfull.com
Desarrollo de proyectos microcontrolados

Desconectado elneroo

  • PIC10
  • *
  • Mensajes: 1
Re: TERMOSTATO ELECTRONICO EN PIC BASIC
« Respuesta #3 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..

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: TERMOSTATO ELECTRONICO EN PIC BASIC
« Respuesta #4 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

Desconectado korinotenshi

  • PIC10
  • *
  • Mensajes: 2
Re: TERMOSTATO ELECTRONICO EN PIC BASIC
« Respuesta #5 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

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: TERMOSTATO ELECTRONICO EN PIC BASIC
« Respuesta #6 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
 
Todos los días se aprende algo nuevo.

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: TERMOSTATO ELECTRONICO EN PIC BASIC
« Respuesta #7 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
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado mecatronico26

  • PIC10
  • *
  • Mensajes: 1
Re: TERMOSTATO ELECTRONICO EN PIC BASIC
« Respuesta #8 en: 25 de Enero de 2016, 10:14:57 »
Quizas esto te pueda ayudar Termostato

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

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:TERMOSTATO ELECTRONICO EN PIC BASIC
« Respuesta #9 en: 25 de Enero de 2016, 10:19:21 »
e
Quizas esto te pueda ayudar Termostato

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:
Todos los días se aprende algo nuevo.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:TERMOSTATO ELECTRONICO EN PIC BASIC
« Respuesta #10 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.
Saludos desde Granada, España.