TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: paco1980 en 30 de Mayo de 2007, 18:29:58
-
Hola de nuevo.
Resulta que ya pregunté por este tema, y me dieron una buena solución.
Tengo el puerto b como entrada, y las pull_ups de dicho puerto activadas, de tal manera que siempre están a nivel alto, desde dentro del pic. Cuando quiero activar una de esas entradas, lo que hago es poner directamente el pin a tierra, sin resistencias ni nada. El sistema funciona bien, y el consumo cuando pongo algún pin a tierra es de 300 a 400 micro amperios. Parece poco consumo, pero es un sistema que va a funcionar a pilas, y tengo una entrada que va a estar activada el 50% del tiempo.
Una vez me llega el pulso por ese pin, lo leo, y ya no lo necesito hasta que otra vez se desactive y vuelva a activarse.
¿Se os ocurre alguna idea para que despues de leer esta entrada pueda desabilitarla o hacer algo parecido para quitarme ese consumo, y que cuando se vuelva a activar pueda volver a leerla?.
Se acepta cualquier tipo de idea, ya que tengo todo el circuito implementado para hacerle todo tipo de pifias, jeje.
Gracias, y un saludo desde España.
-
Hola.
Y si en lugar de colocar las resistencias a vcc las pones a gnd, claro que ya no serian internas sino externas.
-
gracias, pero lo he probado de mil maneras posibles, y la opción de menos consumo que he conseguido, es la que tengo implementada.
¿No se os ocurre un circuito externo al pic, que cuando se cierre el contacto para entrar en la patilla, lo mantenga durante un periodo de tiempo, y a continuación, abra el circuito, para abrir el contacto aunque el pulsador quede cerrado mas tiempo.
Que una vez hecho esto, no se vuelva repetir la operación hasta que el pulsador se abra, y vuelva a cerrarse.?
Y si no es así. ¿Se os ocurre algo parecido por software?.
Espero haberme explicado mas o menos bien.
Por cierto, utilizo un pic 18f4431.
Un saludo y gracias.
-
Estoy muy ocupado y no me puedo explayar mucho pero... cuando el pulsador se cierra lo detectas, ¿no? Bien, pues, acto seguido puedes poner la patilla como salida y a nivel bajo.
¿Cómo detectas entonces cuando el pulsador se ha pulsado (valga la redundancia) otra vez? Pues... no lo se muy bien jeje. Siempre puedes comprobar el estado cada cierto tiempo.
Luego lo miro un poco mejor (y me explico un poco mejor jeje)
Un saludo desde Alicante.
-
Yo supongo que en ese caso el problema vendrá si estando el PIC como salida a nivel 0, por la entrada llegase un nivel 1.
-
Yo supongo que en ese caso el problema vendrá si estando el PIC como salida a nivel 0, por la entrada llegase un nivel 1.
Exacto, la corriente solo estaría limitada por la impedancia que tenga el circuito exterior... si supera los 25mA.. adios a ese pin.
paco1980, no me puse a pensar la solución pero intuyo estará en hacer un circuito que te genere un pulso al cambiar al entrada, esto por supuesto previo al pic.
Una vez en el pic, solo procesas el pulso que sería por 'bajo'. Tal vez haya que usar un arreglo de comparadores, pero no se me ocurre ahora cómo.
Lo de usar entradas de alta impedancia ya lo hemos charlado en otro hilo y no se si venga al caso retomar la discusión...
-
Si eso sucediera CRASH! jeje :D
Idea deshechada.
Un saludo desde Alicante.
PD: Maunix, has escrito tú post mientras yo escribía el mio :)
-
Compañero quiza la idea de un circuito externo no sea lo que busques ya q de todas formas eso te va a consumir potencia indpte del pic, las ideas que se me ocurrian tal ves comsumian mas corriente que ni el mismo PIC, asi que tal ves sea mejor irte por una via de programación
-
Acabo de caer en que... nuestro compañero habilita las resistencias de pull-up para poder poner el pin del pic directamente a tierra (yo en todos mis diseños también pongo así los pulsadores), entonces, aunque pongamos el pin como salida, es imposible que le llegue un nivel alto.
Caso 1:
Pin como entrada (con pull-up activada) y el interruptor abierto -> El pic detectaría un nivel alto.
Cuando detectamos que se ha pulsado ponemos el pin como salida (y a 0V) y obtenemos:
Caso 2:
Pin como salida (la pull-up se desactiva al ponerlo como salida) y el interruptor cerrado -> El pic no se quemaría porque lo que tenemos es un nivel bajo.
Como hacemos ahora para detectar cuando el interruptor se ha soltado? Puff... eso ya es otra historia, puedes hacer un polling poniendo el pin como entrada cada ciertos ms. (cosa que no aseguraría que consumiera menos que los 400 uA que comenta paco1980).
También podrías utilizar una lógica similar habilitando y deshabilitando las resistencias de pull-up (el pic 16F91X tiene para habilitar las pull-up en la patilla del portb que quieras, en tú caso, no se yo :?)
Esto son formas demasiado cutres de hacerlo. Yo no me atrevería a sacar ningún producto de esta forma tan chapucera, pero bueno, a lo mejor esto nos da pie a que tengamos ideas mejores (y más precisas! :mrgreen: :D)
Un saludo desde Alicante.
-
Azicuetano no opino igual que ti, simplemente porque no hay esquema del circuito ni nada por el estilo. No leí nada sobre un "pulsador". solamente habla de que la entrada será un pulso que estará activo durante aproxidamente el 50% del ciclo pero nada más.
En ese contexto no hay forma que sepamos que hay del otro lado. Pudiera ser un circuito con una resistencia en serie u otra cosa.
El pullup por si solo es cierto que lo sube al pin a 5V si no hay nada que modifique eso, pero no quiere decir que el pin esté a 5V!. Puede estar a una tensión intermedia, después de todo el pullup y una resistencia exterior estarían haciendo de un divisor resistivo.
Insisto que haría que buscar algo con un astable o similar que genere un pulso cuando la entrada cambie y ese pulso sea leído por el pic... pero bueno, lleva tiempo diseñar algo así.
Saludos
-
OK, esperaremos entonces a que el colega paco1980 nos explique un poquito mejor que son esas cosas que están en el portb y que yo he llamado pulsadores :D.
Un saludo desde Alicante.
-
Lo que tengo conectado al port_b, son pulsadores, excepto en el pin que os comento, que es una ampolla reed, pero para el caso viene a ser como otro pulsador más.
Si necesitais alguna otra otra información, aqui estoy a la escucha.
Un saludo.
-
perdón, se me olvidaba, tienes razón, azicuetato. Es imposible que me llegue un nivel alto por cualquiera de esos pines.
-
¿Qué tiempo de respuesta necesitas? Porque sigo pensando en que podrías hacer un astable o similar. Es un circuito que ante un "cambio" o una cierta tensión genera una salida que pudiera ser un pulso.
Por ejemplo en el cambio de bajo a alto , se generaría un pulso de x mseg que podrías sensar.
Saludos
-
con un máximo de 5msg, me sobra (creo).
¿A que componentes te refieres para crear el astable?
Es que esa palabra solo me suena cuando oigo hablar del 555.
A ver si me das una idea de como implementarlo maunix.
Muchas gracias.
-
con un máximo de 5msg, me sobra (creo).
¿A que componentes te refieres para crear el astable?
Busca en google y verás muchos circuitos!, debe hacer más de 10 años que no hago uno... no sería tu mejor consejero en esto :? :?
Es que esa palabra solo me suena cuando oigo hablar del 555.
Si, bueno, un 555 también sirve para hacer pulsos y esas cuestiones. También está lleno internet de circuitos para este hermoso, económico y versátil integrado
A ver si me das una idea de como implementarlo maunix.
Te he dicho lo que se me ocurrió aplicando sentido común, como te dije antes hace años que no armo un astable y sería irresponsable indicarte cómo hacerlo. Como para hacerlo yo tendría que buscarlo en google es que te pido a tí que hagas lo mismo.
Saludos
-
ok maunix. muchas gracias.
Estoy mirando y creo que el circuito que me propones no es un astable, sino un multivibrador monostable.
lo malo es que el pulso que da, ahora tengo que invertirlo, y ya veremos si al final no es peor el remedio que la enfermedad, refiriendome al consumo. Sabes, dándole vueltas, se me ocurrió implementar mi circuito con otro pic, de tal manera que la alimentación de este pic, venga de el pulsador(ampolla reed), y al encenderse el pic, diera un solo pulso, pero me he dado cuenta, que al desconectar la alimentación del pic, tengo que descargar esa patilla para poder conectarlo inmediatamente, y que funcione, porque sino lo hago, al abrir el circuito de alimentación y volver a conectarlo en poco tiempo, es como si no se hubiera desconectado. El problema, es que al ponerle a Vcc una resistencia a tierra, me obtengo un consumo mayor que el que tenia. Si esto se pudiera solventar de alguna forma, no me importaría gastar otro pic para esto.
Un saludo
-
A ver si lo entiendo o por el contrario me he perdido.
1.- Tu circuito ya funciona de lujo, con un consumo de 400 uA que pretendes disminuir.
2.- Ese consumo se produce porque la entrada tira a GND las pullups internas
3.- Tu circuito sólo debe detectar que la entrada está a masa o a alta impedancia; jamás llega un pulso alto.
4.- La entrada está el 50% del tiempo a GND
Si todas estas afirmaciones son correctas, yo sugeriría que probases la opción de Azicuetano, haciendo un polling del pin (cambiando de entrada a salida o activando/desactivando la pullup). Si ese polling es lo suficientemente rápido y mantienes las pullups sólo un 5% del tiempo, por ejemplo, podrías reducir el consumo a la décima parte.