Autor Tema: Entrada a pic16F877 con zener  (Leído 4702 veces)

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

Desconectado ojkarin

  • PIC10
  • *
  • Mensajes: 39
Entrada a pic16F877 con zener
« en: 26 de Julio de 2010, 06:09:58 »
Hola, estoy trabajando con un pic16F877. Uso las entradas RB6 y RB7 para poder usar la interrupción por cambio en el puerto B.
Estas entradas provienen de un interruptor manual que proporciona 24V y las adapto a la entrada del pic con una resistencia de 3K3 y un zener, con lo que al pic le entran 4.7V.
Las salidas que se activan al cambiar el interruptor son RA0 y RA1 y estas van conectadas a un uln2803 y a un relé que conmuta a 5V.
El problema viene que hay momentos en que con el interruptor abierto, el relé se pone a cambiar de posición de manera rápida y continua.
Midiendo con un polímetro me marca alrededor de 0.2V a la salida del interruptor y alrededor de 2.5V (va oscilado algunos mV arriba o abajo) a la salida del pic.
He estado mirando la placa en la que tengo el dispositivo montado y no he encontrado ningún corto y todas las conexiones parecen correctas. Si alguien sabe lo que ocurre o cualquier idea serán bien recibidas.
Un saludo.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Entrada a pic16F877 con zener
« Respuesta #1 en: 26 de Julio de 2010, 09:40:01 »
ojkarin, sin ver tu circuito me imagino lo siguiente, cuando activas el interruptor se genera una caída de 4,7V en el zener a través de la resistencia ( pin = a un 1) pero al abrir el interruptor se genera una alta impedancia en el pin absorbiendo ruido, le tienes montada un resistencia pull-down o resistencia a tierra ?, esto para garantizar un 0 en el pin si el interruptor no está activo.

saludos.

Desconectado ojkarin

  • PIC10
  • *
  • Mensajes: 39
Re: Entrada a pic16F877 con zener
« Respuesta #2 en: 26 de Julio de 2010, 12:44:33 »
Hola, he activado las resistencias de pull-up del puerto B que son internas del pic y parece que se calma un poco aunque sigue parecido. Da igual que a la entrada tenga un uno o un cero.
Una cosa de la que me he dado cuenta es que al ir a utilizar el polímetro para medir las tensiones en distintos puntos de la placa, al tocar una de las sondas con la masa de la placa el traqueteo del relé cesaba, daba Igual que la otra sonda estuviese conectada a algo o al aire, y si tocaba con el dedo también lo que me hace sospechar que sea cosa de masas, aunque no he encontrado ningun cortocircuito y todo en principio parece bien.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Entrada a pic16F877 con zener
« Respuesta #3 en: 26 de Julio de 2010, 12:46:33 »
No, dice pull-down, es distinto, exactamente lo contrario.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado ojkarin

  • PIC10
  • *
  • Mensajes: 39
Re: Entrada a pic16F877 con zener
« Respuesta #4 en: 26 de Julio de 2010, 12:52:39 »
No, dice pull-down, es distinto, exactamente lo contrario.

Ya, ya, era por probar, lo único es que para las de pull-down me tocará echar mano del soldador.
¿De qué valor la debo poner? y la conecto entre la entrada del pic y tierra ¿no?


Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Entrada a pic16F877 con zener
« Respuesta #5 en: 26 de Julio de 2010, 12:55:28 »
No, dice pull-down, es distinto, exactamente lo contrario.

Ya, ya, era por probar, lo único es que para las de pull-down me tocará echar mano del soldador.
¿De qué valor la debo poner? y la conecto entre la entrada del pic y tierra ¿no?



Exactamente, puede ser de 4.7k.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Entrada a pic16F877 con zener
« Respuesta #6 en: 26 de Julio de 2010, 13:24:54 »
Si vas a utilizar una resistencia pull-down debes deshabilitar la pull-up interna del PIC, para que no se te forme un divisor de voltaje en la entrada del pin cuando no estén presentes los 24V

saludos.

Desconectado ojkarin

  • PIC10
  • *
  • Mensajes: 39
Re: Entrada a pic16F877 con zener
« Respuesta #7 en: 26 de Julio de 2010, 13:52:01 »
Ok, conectado el pull-down y parece que va todo bien. Las pull-up ya las había desconectado previamente a soldar las de pull-down.
A ver si sigue todo así. ;-)
Un saludo y gracias.

Desconectado ojkarin

  • PIC10
  • *
  • Mensajes: 39
Re: Entrada a pic16F877 con zener
« Respuesta #8 en: 28 de Julio de 2010, 04:40:24 »
Hola de nuevo, el problema de estas entradas ya está solucionado, gracias. Ahora el problema me viene de otra entrada, también de 24V y convertida a 5V mediante un zener aunque esta proviene de un inductivo de proximidad.
El caso es que esta entrada va conectada al pin RB0 para así poder generar una interrupción en cada cambio de flanco del pin. Lo que ocurre es que cada vez que se preoduce el cambio se me tiene que incrementar un contador en una unidad y en mi caso se incrementa en varias unidades.
El programa que lo gestiona no creo que sea el problema, ya que cada vez que el contador incrementa pongo a creo el flag de dicha interrupción. Además dependiendo de dónde y cómo tenga el inductivo los incrementos son mayores o menores.
Supongo que será algo parecido a lo que me ocurria con las entradas anteriores lo que ahora pasa pero como la entrada tiene que actuar con cada cambio de flanco no se que ponerle. Ya he probado con una resistencia de pull-down pero parece que no es la solución.
Saludos y gracias.

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Entrada a pic16F877 con zener
« Respuesta #9 en: 28 de Julio de 2010, 05:04:27 »
Recuerda que una interrupción se genera al cambiar el estado. Si al volver de la interrupción el contacto interno (seguramente una platina) hará rebotes y te volverá a detectar interrupción por lo cual volverá a sumarte y así continuamente hasta que la platina se estabilice.
Para ello deberías crear una variable FLAG (bandera) y usar uno de sus bits para no volver a contar cada vez que entres a interrupciones si la platina no se ha vuelto a abrir y resetee dicho FLAG.

Igualmente te aconsejo utilizar una rutina antirrebotes  luego detectar el contacto para evitar estas molestias. Claro que dicha rutina deberías hacerla en el programa principal y no en las rutinas de interrupciones, sino el micro no respondería mientras estás dentro de la pausa. A menos que no tengas otra cosa que hacer con el micro ...
« Última modificación: 28 de Julio de 2010, 05:52:01 por pibe »
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado ojkarin

  • PIC10
  • *
  • Mensajes: 39
Re: Entrada a pic16F877 con zener
« Respuesta #10 en: 28 de Julio de 2010, 08:20:29 »
Gracias por la respuesta, la final y a modo de prueba le he puesto una pausa un la interrupcción y ya lo hace bien. Dado que el sistema tampoco es muy exigente en temas de tiempo y tampoco necesito mucha exactitud de momento lo dejaré así hasta que tenga tiempo de cambiarlo y probarlo bien.
Lo de poner otra variable flag lo he dejado porque al final me estaba volviendo loco ya que si me cambiaba dentro de la interrupción y luego fuera no sabía o no se me ocurría cómo ponerla... en fín, un lio.
Gracias y un saludo.


 

anything