Autor Tema: como preguntar por el estado de una salida?  (Leído 5015 veces)

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

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
como preguntar por el estado de una salida?
« en: 24 de Julio de 2020, 13:48:46 »
cordial saludo,  tan amables requiero ayuda...
tengo un circuito del cual utilizo 2 salidas del pic para alimentar una bobina, lo que quiero es comprobar que al conmutar las 2 salidas no vayan a estar ambas en alto así sea por corto tiempo.
pienso que antes de habilitar la otra salida estar seguro que la primera no este pasando de 1 a 0 quiero estar seguro que ya la otra salida esta completamente en 0.
había pensado en utilizar la propiedad de tri-state para colocar el pin en alta impedancia osea ni entrada ni salida (no se como).
Básicamente necesito tener energizada una bobina (activada por un pin del pic) y al quitar la alimentación (pata del pic)  con otro pin invertir su polaridad por 100 mili-segundos... espero se entienda.

gracias de antemano...
Si algo parece complicado... es por que esta mal explicado.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como preguntar por el estado de una salida?
« Respuesta #1 en: 24 de Julio de 2020, 13:57:33 »
Citar
había pensado en utilizar la propiedad de tri-state para colocar el pin en alta impedancia osea ni entrada ni salida (no se como).

El estado de "alta impedancia" lo vas a lograr poniendolo como entrada.
Y si... al momento de cambiar, hacete dos funciones, por ejemplo... enalto() y enbajo(), dentro te aseguras de que si lo activas, si o si te aseguras de que el otro desactive.

No se como estas manejando la bobina, si es con un rele o lo que sea.. Recorda que estos componentes tienen tiempos tambien. Por ejemplo si lo manejas con un rele y este tarda 10ms en abrir, entonces asegurarte que en el cambio exista esa proteccion de 10ms mas un extra de seguridad, por ejemplo 15ms/20ms.

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como preguntar por el estado de una salida?
« Respuesta #2 en: 24 de Julio de 2020, 17:08:49 »
 KILLERJC gracias por tu respuesta,
la bobina la estoy manejando con mosfet, lo que se trata es de eliminar la remanencia pues la bobina actúa de electroiman y para eliminarla solo es necesario invertir la polaridad unos 100 milisegundos, como se maneja con 4 mosfet esto hace de puente "H" entonces como hago pues generalmente se pregunta por una entrada si esta en alto o en bajo, como puedo preguntar por la salida ? luego de preguntar por la salida le daria un tiempo que como bien dices  es lo que se demora la electrónica en actuar y luego invertiría la señal.
o podría enfocarlo como se maneja en un puente "H"?
Si algo parece complicado... es por que esta mal explicado.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como preguntar por el estado de una salida?
« Respuesta #3 en: 24 de Julio de 2020, 17:18:28 »
Depende del compilador que estes usando.

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:como preguntar por el estado de una salida?
« Respuesta #4 en: 24 de Julio de 2020, 18:23:42 »
Yo para esas cosas utilizo un registro de desplazamiento con lath controlado como el 74HC4094.

  Tiene un pin de data y otro de clock para enviarle vía serial 8 bits con los 8 estados que quieres pasar a sus salidas.

    Luego activas un tercer pin que se llama “Strobe” que lo que hace es colocar efectivamente esos 8 valores en la salida del integrado.

  Esto lo uso por ejemplo para codificar los niveles de las 2 bobinas de los motores stepper necesarios para generar cada micro paso.

 Genero un array con los códigos de todas las posiciones de los micropasos y lo que hago para avanzar o retroceder 1 micropaso es leer el siguiente o anterior valor y enviarlo al 4094, luego doy pulso a strobe y el integrado pone los niveles correctos para que el motor se mueva un paso o micropaso.  Es parecido a codificar los números y letras de un display de 7 segmentos.

    Para un puente H también creo que te vendría mejor que usar pines del micro directamente

   

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como preguntar por el estado de una salida?
« Respuesta #5 en: 25 de Julio de 2020, 13:18:53 »
,,, gracias por sus respuestas, les dejo el diagrama que tome de muestra de un circuito que trabaja, ademas del control que deseo implementar (replicar en este caso) solo que desconozco el programa que tiene el pic, estoy observando que que al liberar la corriente  solo un extremo de la bobina se descarga por el diodo del mosfet pero la otra punta no tiene retorno para cerrar el circuito.
como se esta protegiendo entonces de la corriente inversa?

 
« Última modificación: 25 de Julio de 2020, 13:26:34 por johenrod »
Si algo parece complicado... es por que esta mal explicado.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como preguntar por el estado de una salida?
« Respuesta #6 en: 25 de Julio de 2020, 15:07:06 »
Citar
solo que desconozco el programa que tiene el pic,

Pero esto es lo ideal... implementarlo en el PIC. O buscas una solucion por hardware, y sin modificar el programa del PIC ?

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como preguntar por el estado de una salida?
« Respuesta #7 en: 25 de Julio de 2020, 16:31:59 »
Citar
solo que desconozco el programa que tiene el pic,

Pero esto es lo ideal... implementarlo en el PIC. O buscas una solucion por hardware, y sin modificar el programa del PIC ?
acotando...
tengo un modulo microcontrolado que realiza el proceso de apertura de una puerta y la cerradura es un electroiman, pero como es de esperarse el código esta protegido (en realidad no me interesa copiarlo pues quiero hacerlo yo mismo CCS), el diagrama que coloque corresponde a la salida para ese electroiman, como podrán darse cuenta al activar una de las 2 salidas del pic se polariza el gate de un mosfet este deja pasar el negativo a una pata de la bobina y este negativo a la vez polariza la base del transistor PNP el cual provee el positivo a la otra pata de la bobina. este tipo de cerraduras quedan con remanencia magnética la cual al momento de des-energizar la bobina queda con un grado de magnetismo, para resolver el problema lo que hacen es por un periodo de unos 100 mili-segundos invierten la polaridad del electroiman y con eso quita la remanencia.
Es por eso que ahí es donde se activa la otra salida del pic para este propósito.
analizando... luego de desenergizar el primer mosfet que tiene una transicion de nano-segundos  yo esperaría unos 10 mili-segundos (creo que es suficiente ) luego aplicaría 100 mili-segundos a la segunda salida  y estaría el proceso terminado.

el detalle es que las bobinas generan una inversión de corriente al desconectarlas y esto podría dañar los elementos asociados, si solo fuera una conmutación bastaría con un diodo pero acá son 2 transiciones  entonces no serviría.
de ahí la pregunta al deconectarse veo que se proteje por el diodo de uno de los mosfet pero la otra pata quedaría al aire, entonces como se cierra el circuito para descargar la bobina y no dañe mosfet o transistor.
espero se entienda
« Última modificación: 25 de Julio de 2020, 16:34:29 por johenrod »
Si algo parece complicado... es por que esta mal explicado.

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
Re:como preguntar por el estado de una salida?
« Respuesta #8 en: 26 de Julio de 2020, 02:30:46 »
Igual te podría servir esto aguanta bastante creo 1 o 2 A.



https://www.st.com/content/st_com/en/search.html#q=L293B%20-t=products-page=1

« Última modificación: 26 de Julio de 2020, 02:36:59 por Sispic »

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como preguntar por el estado de una salida?
« Respuesta #9 en: 26 de Julio de 2020, 12:59:07 »
Sispic cordial saludo,  me acabas de dar una idea con el circuito que me compartes.
el l293 realiza el trabajo de polarización y los 4 diodos me protegen el circuito, en el que yo expuse no tiene los diodos pero resulta que el circuito trabaja a 12 voltios pero los mosfet aguantan 75 voltios y los transistores 100 voltios, es por eso que yo los veía sobre-dimensionados para manejar esa bobina de 12 voltios y que solo consume 250mA. Entonces asumo que al liberar la bobina con el pico de voltaje que se produce con las características de los mosfet(75v) y los transistores(100v) son suficiente para que no se quemen. los L293 manejan 600mA y 1 Amp. como necesito unos 2 Amp (pensando en bobinas mas grandes)  entonces creo que voy a realizar  un montaje de 4 transistores y le agrego los 4 diodos basándome en tu circuito.
solo me falta aclarar lo siguiente.
- como puedo graficar los tiempos de las 2 señales que tome del pic (no tengo osciloscopio) dejo el diagrama.
- como pregunto por una salida del pic si esta activada(CCS)
de antemano gracias..
parece que hay problemas para subir la imagen

deje el link mientras me la deja subir
https://drive.google.com/file/d/1kTeVs5O6yqQoa_bRcxEfA7UyGfMMZwFv/view?usp=sharing

« Última modificación: 26 de Julio de 2020, 14:49:33 por johenrod »
Si algo parece complicado... es por que esta mal explicado.

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:como preguntar por el estado de una salida?
« Respuesta #10 en: 26 de Julio de 2020, 14:35:33 »
No he tenido que leer el valor de un pin que está configurado como salida, porque al estar configurado como salida es el programador el que decide qué valor tiene, y por lo tanto se mantiene ese valor hasta que el programador en su algoritmo decida el cambio.
Un pin que está configurado como salida pertenece a un puerto, ese puerto está representado por una dirección de memoria que se puede tanto leer como escribir, el problema que se plantea es que si se realiza una lectura de un pin que está configurado como salida, el valor de lectura será el que se escribió en última instancia, si dicho pin por motivos externos fuera forzado al valor contrario se podría producir un daño en el puerto, y por supuesto este valor no quedaría reflejado en la dirección de memoria del puerto.  El tiempo que tarda un puerto en cambiar de valor mediante su instrucción interna asociada tan solo es la de 4ciclos de reloj, y posiblemente haya que sumar el tiempo que la puerta de salida cambia de valor, que será un tiempo muy inferior a 100nSeg. posiblemente estará sobre los 20nSeg.
Para saber realmente el valor que tiene el pin de salida puedes unirlo a otro configurado como entrada para así leer el valor.
Si lo lees por medio del CCS y no lo tienes configurado, por defecto seguramente al compilar el lenguaje te configurar el pin como entrada y posteriormente se devolverá el valor de su lectura, por lo tanto el pin durante ese tiempo estará configurado como entrada o estado de alta impedancia, aunque el tiempo sea muy pequeño esto podría causar problemas en tu circuito.

De todas formas tengo curiosidad por saber si hay otro método si es que entendí correctamente la pregunta.
« Última modificación: 26 de Julio de 2020, 14:40:35 por dogflu66 »
Saludos desde Granada, España.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como preguntar por el estado de una salida?
« Respuesta #11 en: 26 de Julio de 2020, 14:42:06 »
En CCS podes usar:

input_state(PIN)

Te devuelve el estado del pin, sin cambiarle la direccion.
No se como funcionara con los PICs que poseen los registros LATx y PORTx

Igual si haces el programa si o si vas a tener que ponerlo en bajo a uno de los pines, demora y luego en alto al otro... Asi que no tiene ningun sentido preguntar por el mismo.

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como preguntar por el estado de una salida?
« Respuesta #12 en: 26 de Julio de 2020, 15:00:58 »
sii... comprendo todo lo que me exponen.
la importancia en este caso de leer el estado del pin es por lo siguiente: hay 2 transistores uno npn y otro pnp unidos en sus colectores ya que en un momento tendrán los 12 voltios de la fuente y en otro tierra, si realizo el cambio muy rápido se encontraría el voltaje de la fuente en los colectores y se quemarían los transistores, entonces para desactivar una salida con cristal de  4 Mhz 4 ciclos lo que seria 4 Microsegundos + (turn-Off Delay Time, del mosfet) de 90 ns, es un tiempo muy reducido entonces podría hacer el cambio a 1 milisegundo y creo que seria suficiente,, o que opinan donde puedo estar mal?
Si algo parece complicado... es por que esta mal explicado.

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:como preguntar por el estado de una salida?
« Respuesta #13 en: 26 de Julio de 2020, 15:32:34 »
De todas formas, aunque sé encuentren por un instante el positivo y el negativo,’el consumo que se genera es absorbido por las resistencias de 1 ohmio por ese instante. No tiene por qué suceder nada a los transistores si hablamos de unos ms.

  Si no, lo que puedes hacer es conectar las bases de los pnp a dos puertos del pic y así ya puede saber el programa si efectivamente está en conducción o no cada transistor antes de ejecutar cambios.

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como preguntar por el estado de una salida?
« Respuesta #14 en: 26 de Julio de 2020, 16:21:45 »
De todas formas, aunque sé encuentren por un instante el positivo y el negativo,’el consumo que se genera es absorbido por las resistencias de 1 ohmio por ese instante. No tiene por qué suceder nada a los transistores si hablamos de unos ms.

  Si no, lo que puedes hacer es conectar las bases de los pnp a dos puertos del pic y así ya puede saber el programa si efectivamente está en conducción o no cada transistor antes de ejecutar cambios.

si es cierto, hacer algo como una realimentacion para determinar cuando se fue el pulso, lo que pasa es que lo estaba haciendo con un pic de 8 pines y no tenia uno disponible y por un puerto tener que pasarme a uno de 14 es lo que trato de evitar.
 voy a armar un circuito con arduino y la funcion millis para que me envié por el puerto serie los tiempos transcurridos y así voy mas a la fija.

gracias a todos por la info que tan amablemente veo, me han brindado. Creo poder construir mi circuito a partir de esto.
Si algo parece complicado... es por que esta mal explicado.