TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Fer_TACA en 30 de Abril de 2024, 15:06:56
-
Hola,
Quiero realizarles una consulta para saber si a alguno de ustedes les ha ocurrido el problema que voy a describirles y en ese caso si lo han solucionado de alguna forma.
Creo que, el problema, no tiene nada que ver ni con el software usado ni con el código generado, sino más bien tiene que ver con el hardware.
Se trata de un proyecto en el que se utilizan, pongamos 8 entradas analógicas, un display LCD para visualizar los valores analógicos y 8 relés de salida que se activaran/desactivaran de acuerdo a la tensión analógica asociada.
Como yo he realizado unas pruebas tanto usando los 8 canales analógicos como uno solo y el problema se da en ambos, describiré el funcionamiento de un solo canal, siendo el mismo valido para el resto de canales.
Los valores representados en el LCD como el funcionamiento de los relés se prescinde de ello porque no interfieren en el problema detectado.
Problema:
Se tiene la placa de control alimentada bien a una fuente de alimentación o de una batería, es indistinto. Antes de llegar a la placa, la alimentación se hace pasar por un interruptor principal.
Por otra parte se tiene conectada una batería (independiente de la alimentación) conectada a la entrada analógica, con los negativos de ambas baterías unidos para controlar la descarga de esta última.
Llegados a este punto, se cierra el interruptor, con lo que la alimentación llega a la placa y en ese momento se debería de inicializar el LCD con un mensaje de bienvenida y luego al cabo de un momento presentar el valor leído de la batería a controlar.
Bien pues el LCD presenta caracteres blancos y extraños y por tanto no se puede saber ni el valor de la batería a controlar ni tampoco si el programa esta funcionando o se ha colgado.
Ahora bien, si interrumpo la señal analógica por medio de un relé, de forma que después de unos msg, después de dar alimentación, se active el relé y en ese momento le llegue la tensión de la batería a controlar al pic, el sistema funciona SIEMPRE correctamente.
Mi teoría es que la tensión de la batería a controlar como ya se encuentra presente a la entrada del pic antes de dar la alimentación esto no le sienta bien al pic y de ahí el funcionamiento erróneo al alimentar el sistema. Opino que esto también es válido para cualquier integrado de que no les sienta bien el tener alimentaciones por sus entradas sin tener la tensión de alimentación conectad.
¿Qué opinan ustedes, estoy en lo cierto con mi apreciación?
¿Se les ha presentado esta situación alguna vez? ¿Cómo la han resuelto?
Gracias de antemano por sus respuestas.
F.
-
Aparentemente, al estar sin alimentación y con tensión en un pin te conducen al sustrato los diodos de protección de la entrada.
Como consecuencia, tenés la tensión de la pila menos la caida en los diodos alimentando el chip.
-
Gracias por la respuesta.
Más o menos eso pensaba yo.
F.
-
Hola,
Quiero realizarles una consulta para saber si a alguno de ustedes les ha ocurrido el problema que voy a describirles y en ese caso si lo han solucionado de alguna forma.
Creo que, el problema, no tiene nada que ver ni con el software usado ni con el código generado, sino más bien tiene que ver con el hardware.
Se trata de un proyecto en el que se utilizan, pongamos 8 entradas analógicas, un display LCD para visualizar los valores analógicos y 8 relés de salida que se activaran/desactivaran de acuerdo a la tensión analógica asociada.
Como yo he realizado unas pruebas tanto usando los 8 canales analógicos como uno solo y el problema se da en ambos, describiré el funcionamiento de un solo canal, siendo el mismo valido para el resto de canales.
Los valores representados en el LCD como el funcionamiento de los relés se prescinde de ello porque no interfieren en el problema detectado.
Problema:
Se tiene la placa de control alimentada bien a una fuente de alimentación o de una batería, es indistinto. Antes de llegar a la placa, la alimentación se hace pasar por un interruptor principal.
Por otra parte se tiene conectada una batería (independiente de la alimentación) conectada a la entrada analógica, con los negativos de ambas baterías unidos para controlar la descarga de esta última.
Llegados a este punto, se cierra el interruptor, con lo que la alimentación llega a la placa y en ese momento se debería de inicializar el LCD con un mensaje de bienvenida y luego al cabo de un momento presentar el valor leído de la batería a controlar.
Bien pues el LCD presenta caracteres blancos y extraños y por tanto no se puede saber ni el valor de la batería a controlar ni tampoco si el programa esta funcionando o se ha colgado.
Ahora bien, si interrumpo la señal analógica por medio de un relé, de forma que después de unos msg, después de dar alimentación, se active el relé y en ese momento le llegue la tensión de la batería a controlar al pic, el sistema funciona SIEMPRE correctamente.
Mi teoría es que la tensión de la batería a controlar como ya se encuentra presente a la entrada del pic antes de dar la alimentación esto no le sienta bien al pic y de ahí el funcionamiento erróneo al alimentar el sistema. Opino que esto también es válido para cualquier integrado de que no les sienta bien el tener alimentaciones por sus entradas sin tener la tensión de alimentación conectad.
¿Qué opinan ustedes, estoy en lo cierto con mi apreciación?
¿Se les ha presentado esta situación alguna vez? ¿Cómo la han resuelto?
Gracias de antemano por sus respuestas.
F.
Deberías compartir un esquemático. "Una imagen vale más que mil palabras"
-
Hasta lo que entendi el micro se esta "semi-alimentando" por las entradas analogicas. Me parece que tendrias que poner un par de operacionales como buffer y que te sirvan para aislar.
-
Hasta lo que entendi el micro se esta "semi-alimentando" por las entradas analogicas. Me parece que tendrias que poner un par de operacionales como buffer y que te sirvan para aislar.
Ya comprendo, me recuerda a la anécdota con los fabricantes del primer procesador ARM, donde al hacerlo funcionar, medían un consumo de 0 mA y no entendían que pasaba.
Luego de revisar, se dieron cuenta que la alimentación llegaba por un pin GPIO, pasando por el diodo de protección y descubrieron que el consumo del núcleo ARM era tan bajo (ya que de lo contrario, ese diodo se hubiera dañado).
-
Sino usar diodos para que las tensiones que monitorean alimenten el regulador del micro, así el micro estaría siempre despierto. Capaz que la alimentación del display y de otras cosas las controlaría desde el micro.
-
DominusRR:
Adjunto la parte del esquema correspondiente a la parte de la alimentación y conexionado de una de las entradas analógicas.
Yoshua:
No entiendo muy bien lo de aislar la entrada con buffer a través de un operacional. Al final a la salida de ese buffer siempre se tendrá también un valor de la señal y por tanto seguirá estando presente aunque no tenga la alimentación del pic conectada.
Sino usar diodos para que las tensiones que monitorean alimenten el regulador del micro, así el micro estaría siempre despierto. Capaz que la alimentación del display y de otras cosas las controlaría desde el micro.
esto ya no lo entiendo porque la alimentación del pic no se monitorea nunca. La alimentación del pic es independiente de las tensiones a monitorear.
F.
-
A lo que me referia es a usar la misma tension que se monitorea para alimentar solo el micro. Eso lo vi en una ups china que me llego al taller.
-
y en el main no le has puesto un delay para que todo de ponga en su sitio antes de configurar todo ?.
por ejemplo delay_ms(200);
-
A lo que me referia es a usar la misma tension que se monitorea para alimentar solo el micro. Eso lo vi en una ups china que me llego al taller.
Es que la alimentación es independiente, si fuese de alguna de las baterías a controlar no habría ese problema, seguro ya que entonces el micro siempre estaría alimentado
-
y en el main no le has puesto un delay para que todo de ponga en su sitio antes de configurar todo ?.
por ejemplo delay_ms(200);
Si claro que esta puesto, pero aunque se ponga la tensión de las baterías a controlar siempre esta presente, antes de dar la alimentación del pic.
La única solución que veo es pasar la señal analógica a través de un contacto de un relé que se excite unos msg después de dar tensión de alimentación al micro. De esta forma inicialmente, en la entrada analógica no hay tensión,
-
No tendria el por que alimentarse el pic por cualquier pin E/S .
tengo alarmas que la batería por si falla la alimentación van al ADC directamente para medir si tensión y no hay problemas .
me huele a que no se reinicia correctamente al dar tensión al PIC .
hay una configuración de un bit MCLR/VPP /RE3 .
300005h CONFIG3H MCLRE
has jugado con el ?
Lo digo para que puedas ir descartando cosas .
-
Por qué no activás el Brown Out Reset ?
Que resetee cuando la tensión está por debajo de los 4.3V (BORV43), seguramente la "alimentación" que proporciona la pila es menor.
-
o si lo recuerdo perfecto como si fuera ayer, en mi ultimo año de técnico antes de entrar a la ingeniería, le realice un proyecto similar con celdas solares bombas de agua y baterías un sistema para los pozos en el campo para riego, la empresa se llama bonasa y fabrican bombas de agua, el sistema muy simple cargar las baterías con las celdas para posterior usar las baterías con la bomba y sacar agua del pozo, como comentas fer las baterías siempre están conectadas y de igual manera las celdas pero claro aquí el sistema siempre esta conectado pero al hacer el proyecto pasaba algo similar el censado de las baterías y de las celdas y la alimentación era el reto en esos años hoy en día parece resuelto ya con los módulos comerciales, bueno lo que en ese tiempo hice fue aislar totalmente todo el micro y como apenas empezaba descarte los operacionales por la fuente simétrica pero luego los ocupe mucho jeje mi solución muy sacada de la manga y aunque tampoco yo lo creía aunque después fue una bonita tesis, un simple y barato optoacoplador del lado del led el voltaje a censar y del lado del transistor al pin del analógico y curioso pero efectivo, esta de mas decir que se comercializo por mucho tiempo hasta que otros ingenieros mejoraron el producto y bueno solo como parte de la anécdota y si a mi me paso y así lo solucione.
-
Por qué no activás el Brown Out Reset ?
Que resetee cuando la tensión está por debajo de los 4.3V (BORV43), seguramente la "alimentación" que proporciona la pila es menor.
esto espero probarlo en el día de hoy.
o si lo recuerdo perfecto como si fuera ayer, en mi ultimo año de técnico antes de entrar a la ingeniería, le realice un proyecto similar con celdas solares bombas de agua y baterías un sistema para los pozos en el campo para riego, la empresa se llama bonasa y fabrican bombas de agua, el sistema muy simple cargar las baterías con las celdas para posterior usar las baterías con la bomba y sacar agua del pozo, como comentas fer las baterías siempre están conectadas y de igual manera las celdas pero claro aquí el sistema siempre esta conectado pero al hacer el proyecto pasaba algo similar el censado de las baterías y de las celdas y la alimentación era el reto en esos años hoy en día parece resuelto ya con los módulos comerciales, bueno lo que en ese tiempo hice fue aislar totalmente todo el micro y como apenas empezaba descarte los operacionales por la fuente simétrica pero luego los ocupe mucho jeje mi solución muy sacada de la manga y aunque tampoco yo lo creía aunque después fue una bonita tesis, un simple y barato optoacoplador del lado del led el voltaje a censar y del lado del transistor al pin del analógico y curioso pero efectivo, esta de mas decir que se comercializo por mucho tiempo hasta que otros ingenieros mejoraron el producto y bueno solo como parte de la anécdota y si a mi me paso y así lo solucione.
No se me ocurre como pasar un valor analogico por medio de un optoacoplador
-
...
No se me ocurre como pasar un valor analogico por medio de un optoacoplador
Usando optoacopladores lineales
- Tienes que ingresar para ver archivos adjuntos -
O un amplificador aislado como el ISO124
El "inconveniente" es que necesitás una alimentación aislada del resto del lado a medir.
Casi que hasta es mejor un microrelay que desconecte la entrada ;-)
-
...
No se me ocurre como pasar un valor analogico por medio de un optoacoplador
Usando optoacopladores lineales
- Tienes que ingresar para ver archivos adjuntos -
O un amplificador aislado como el ISO124
El "inconveniente" es que necesitás una alimentación aislada del resto del lado a medir.
Casi que hasta es mejor un microrelay que desconecte la entrada ;-)
Si es lo más fácil y seguro que más barato, si funciona el unir los negativos de 8 baterías y pasarlas a través de un contacto del relé.
Desde luego si fuese solo una batería cortando el positivo SI funciona (ya está probado). Pero como hay que quitar las 8 tensiones a la vez de ahí el probar si uniendo los negativos va bien. ¡¡ Espero que si !!
F.
-
DominusRR:
Adjunto la parte del esquema correspondiente a la parte de la alimentación y conexionado de una de las entradas analógicas.
Yoshua:
No entiendo muy bien lo de aislar la entrada con buffer a través de un operacional. Al final a la salida de ese buffer siempre se tendrá también un valor de la señal y por tanto seguirá estando presente aunque no tenga la alimentación del pic conectada.
Sino usar diodos para que las tensiones que monitorean alimenten el regulador del micro, así el micro estaría siempre despierto. Capaz que la alimentación del display y de otras cosas las controlaría desde el micro.
esto ya no lo entiendo porque la alimentación del pic no se monitorea nunca. La alimentación del pic es independiente de las tensiones a monitorear.
F.
Eso de colocar dos resistencias en serie a la batería para tomar una muestra, no es correcto, ya que estás colocando una carga que está consumiendo innecesariamente corriente.
Y tampoco podrías poner valores grandes, en megas para reducir esa corriente de fuga, ya que una impedancia tan grande con la impedancia de entrada del ADC, provocaría una caída de tensión en el valor a muestrear.
Lo que tienes que hacer es, primero colocar un amplificador operacional en modo seguidor de voltaje para un acople correcto de impedancias, obviamente esto es factible si puedes alimentar al OP con un voltaje superior al de la batería
Si tienes un voltaje igual o menor para alimentar al OP de arriba mencionado, debes crear un atenuador, en este caso pueden hacer el divisor de tensión con resistencias en el orden de los megas, para reducir la corriente de fuga al máximo y de ahí iría al seguidor de voltaje.
El seguidor aísla las impedancias, desde el lado de la batería, para cualquiera de los dos opciones, ve una carga con una impedancia grande, que la corriente de fuga es despreciable y desde el lado del ADC del microcontrolador, ver una fuente de voltaje variable (variable porque se irá descargando la batería) con una impedancia de salida baja.
Algo similar a este gráfico:
(https://i.stack.imgur.com/MMnpg.png)
Obviamente R1 y R2, yo lo intentara usar en resistencias de decenas de megohmios, R3 generalmente no se suele usar, creo que se conoce como de realimentación y es usada para estabilizar y linealidad en la carga.
-
De momento, este problema lo voy a dejar parado hasta solucionar otro problemilla que tengo con los tiempos del tmr1 y el LCD.
Además, creo que es fácil solucionarlo con el relé.
Cuando lo retome ya indicaré cual fue la solución definitiva.
F.
-
Puedes probar haciendo un reset a mano al micro, si el problema se soluciona, solo tienes que añadir un generador de reset, que suelen ser unos integraditos de 3 pin que generan un reset durante cierto tiempo al recibir la alimentación, su uso es muy común y muy fácil de implementar. Hace algún tiempo pedí unos cuantos para realizar una reparación, si encuentro la referencia la pondré por aquí. Creo que no llevan siquiera componentes Vcc-Gnd-Reset.
Fabrico desde hace más de 10años un supervisor de dos bloques de baterías y la verdad es que no he tenido problemas, eso si, hay un interruptor doble que corta la alimentación y el circuito se alimenta de las mismas baterías.
-
Gracias por la respuesta Carlos,
Si me puedes decir la referencia te lo agradezco.
Fermín
-
Si no recuerdo mal el que pedí fue este (supervisor de voltaje y reset para microcontrolador):
https://es.farnell.com/microchip/mcp102t-450e-tt/supervisory-circuit-sot-23-3-102/dp/8752850
Tienes que ver que la señal que te suministre tenga la polaridad correcta con el reset del pic.
Los hay de todo tipo, colector abierto o salida ttl, programables en tensión, programables en tiempo, etc.
Yo utilizaría el más simple.
De todas formas recomiendo que primero actives los módulos internos del pic que utiliza para esta misma función y funciona muy bien.
-
Si no recuerdo mal el que pedí fue este (supervisor de voltaje y reset para microcontrolador):
https://es.farnell.com/microchip/mcp102t-450e-tt/supervisory-circuit-sot-23-3-102/dp/8752850
Tienes que ver que la señal que te suministre tenga la polaridad correcta con el reset del pic.
Los hay de todo tipo, colector abierto o salida ttl, programables en tensión, programables en tiempo, etc.
Yo utilizaría el más simple.
De todas formas recomiendo que primero actives los módulos internos del pic que utiliza para esta misma función y funciona muy bien.
Gracias, los echaré un vistazo
-
Dejo una captura de los fuses implicados, es cuestión de que modifiques las tensiones hasta encontrar la buena.