TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: navaismo en 12 de Octubre de 2006, 00:11:18

Título: Problemas extraños con PIC16F877 y sensado
Publicado por: navaismo en 12 de Octubre de 2006, 00:11:18
Buenas a todos, Pues un amigo me pidio ayuda para hacer un programa basico de algo asi como un termostato programable. Se le ingresa la temperatura un rango de error minimo 1 grado y listo se pone a calentar y si se pasa enfria, una vez enfriado vuelve a calentar, hasta que le demos salir.

Bueno el problema esta en que al pasarlo al proto el programa dura a lo mucho 1 minuto y se resetea o cuando se enciende el pin que activa la resistencia se resetea, bueno no se resetea se vuelve loco el lcd deja de mostrar los mensajes y se empiezan a ver caracteres raros algo asi //_00???/_/ osea muere el programa.

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

y la imagen de como lo conecto en el proto

(http://img81.imageshack.us/img81/613/ttwz6.jpg)

Las resistencias de los botones son de 330, la del mclr de 10k por sugerencia de una amiga le coloque resistencias de 2.2K entre el pin de RS y E del lcd y el pic. Los capacitores ceramicos son de de 15pF y un crystal de 12.

Pero siempre se resetea, en la simulacion como siempre sirve. ¿Que sera alguien ve algo extrano o mal? Ya cambie de protos de hecho ya use 4
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: Mario en 12 de Octubre de 2006, 03:35:41
Intenta también con otra fuente, eso me pasaba a mi mucho con un transformador que tenía.

Una sugerencia...... ¿cambiaste de µicro?

Suele pasar que la luna se alinea con Júpiter y provoca que en acuario se establezcan similitudes con géminis, provocando que la marea suba y generando oxígeno en menor proporción dando paso a un campo magnético intrínseco pero capaz de desvalancear el µicro a esa frecuencia.  :D


Se haría la recomendación del proto pero.......... ya lo hiciste.

Trata ahora con el µicro porque no veo error en tu programa (o por lo menos error para que se resete).
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: Chaly29 en 12 de Octubre de 2006, 04:36:59
Hola navaismo, yo sacaría las resistencia de 2K2 que mencionas as colocado en serie con las lineas de RS y E, ya que los display no bienen preparadas para tenerlas, por lo cual te pueden traer inconvenientes tales como los mencionados por vos, aparte no le veo sentido alguno que las tenga.

Un saludo.

Atte. CARLOS.
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: navaismo en 12 de Octubre de 2006, 14:39:38
Ya en un principio estabn in resistencias, y lo del micro es el tercero ya queme 2 y no jala!!! que sera.

Gracias
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: Marioguillote en 12 de Octubre de 2006, 15:06:38
Entonces tenés problemas en la fuente .....
Ruido que se te mete en los 5Volts y te provoca transitorios que te vuelven loco al PIC y en el peor de los casos te lo mata, como decís que ya fallecieron 2.
Que tan fiable es la alimentación al PIC ?

Otra posible falla es que el protoboard esté para jubilarlo.

Saludos
Mario
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: navaismo en 12 de Octubre de 2006, 16:17:43
 :8} :2] :z) Ya cambie a un 5to proto y nada ahora solo se ven cuadritos en el lcd ya estoy que me lleva....... 5 protos no creo que sea eso!!!, el programa no se tal vez sea eso pero no encuentro que parte. El lcd mmm no creo. Puff que maleta me veo solo lo voy a intentar una vez mas y si no al diablouna semana y nada.

La fuente uso una de PC, y una de esas normales un transformador un mc7805 unos capacitores y ya el transformador es de 15V 300mA.

Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: Mario en 12 de Octubre de 2006, 17:30:37
¿Intentaste cambiar de fuente?

Si usas una de PC, debe haber cables rojos los cuales te dán 5-6 volts. Los amarillos te dan +12 y los azules -12.

Usa el cable rojo (mide por aquello de las dudas).

Yo también usaba una fuente de esas y tomaba la salida desde los +12. Resultó ser que la parte de salida del +12 (7815 o algo asi) estaba malo; así que me cambié a los +5 y todo perfecto.


Como te mencioné, y como te sugirieron, intenta cambiar de fuente.
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: navaismo en 12 de Octubre de 2006, 18:08:30
Si ya lo hice uso el cable morado el k da voltaje al usb, y cambie ala que hice las normalitas. Y nada ya lo deje por la Paz, como que a mi amigo no le interesa mucho o pretende que se lo haga todo por el. Entonces pues como que no me late asi no le vi interes y no se lo veo ahora sabe del problema y no hace nada. De hecho todo el material es mio viene y ni cable trae mejor asi lo dejo gracias si lo llego a resolver les avisare.
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: AABHGA en 13 de Octubre de 2006, 07:42:10
Si ya lo hice uso el cable morado el k da voltaje al usb, y cambie ala que hice las normalitas. Y nada ya lo deje por la Paz, como que a mi amigo no le interesa mucho o pretende que se lo haga todo por el. Entonces pues como que no me late asi no le vi interes y no se lo veo ahora sabe del problema y no hace nada. De hecho todo el material es mio viene y ni cable trae mejor asi lo dejo gracias si lo llego a resolver les avisare.

Jajajaja, lindos amigos te conseguís, pero el problema puede ser la alineación de los planetas o algo, xque ya me ha pasado en varias ocaciones, que esta todo trabajando bien y de un momento a otro parece que el micro empieza a perder lineas del programa, y despues de un rato se calma.
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: Marioguillote en 13 de Octubre de 2006, 12:01:25
Realmente como dijo Álvaro .... lindos amigos .....  :D

A mí me ocurre eso de los cuadraditos en el display cuando me paso de alimentación en el pin 3 VEE del LCD.
Yo no uso esa conexión que vós ponés en el esquema.
Yo pongo VEE al pin central de un preset de 10K conectado entre +5 y GND y variándolo; que es lo que le hace variar el contraste; cuando el contraste sube mucho, se borra la indicación y aparecen los cuadraditos.

Pero yendo a una solución más científica, empiezo a coincidir con mi tocayo Mario y con Álvaro.
Hay que estar muy atento a las alineaciones planetarias.  :D

Saludos
Mario
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: navaismo en 13 de Octubre de 2006, 14:34:35
:D :D :D eso de la alineacion planetaria esta  Super cool :D :D :D  mi signo es aries afectara!!! :D :D
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: AABHGA en 13 de Octubre de 2006, 23:17:32
Si, vas a salir cual carnero que surca los cielos y por eso quemas los pics xD
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: navaismo en 15 de Octubre de 2006, 16:05:41
Bueno parece que los plentas dejaron de estar alineados.

Hoy me dedique un rato a ver que pasaba con ese programa. tenia la espina de poque no funcionaba, y bueno despues de 2 horas de estar molesto y no encontrar el problema me decidi a cambiar el Cristal de 12MHZ a uno de 4MHz y quitar la linea de
Código: [Seleccionar]
DEFINE OSC 12

y oh sorpresa a la primera funciono, y mi duda es O esa linea no funciona o la confuguracion con HS del winpic800 no sirve. ¿que sera?Pero bueno ya funciona  :-/  y a mi amigo le regreso el color a la piel ya podra hacer su examen. :D
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: Mario en 15 de Octubre de 2006, 19:16:38
Que bueno.


Lo de la alienación de los planetas era broma (¿o lo era?)...... pero lo de la frecuencia no.

Tengo un µicro 18F448 que no trabaja a frecuencias mayores de 4 Mhz.  :shock:

Ya puedes poner tu oficina de asesoría, ser consultor como se dice en inglés; se puede sacar una buena feria de "compañeros necesitados" al final de semestre  :D
Título: Re: Problemas extraños con PIC16F877 y sensado
Publicado por: navaismo en 15 de Octubre de 2006, 20:23:32
Por Supuesto que era Broma lo de los planetas. :D

Sera que los samples de microchip no sorpoten mas alla de 4mhz????