Autor Tema: Funcionamiento del pic 12F683 ¡¡¡ SOLUCCIONADO !!!  (Leído 4469 veces)

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

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Funcionamiento del pic 12F683 ¡¡¡ SOLUCCIONADO !!!
« en: 17 de Abril de 2021, 08:22:41 »
Amigos, ya se que no está bien el repetir preguntas o dudas en distintos apartados del foro, pero tengo una problemilla que me esta volviendo de los nervios.
Se trata de un comparador de tensión que estoy realizando con el software de Flowcode, allí planteé la duda (http://www.todopic.com.ar/foros/index.php?topic=50743.0), pero me he animado a duplicar el post por el motivo de quizás aquí haya mas gente que lo pueda leer y quizás aconsejar.
El problema básicamente es el siguiente

Si bien el proyecto paree que funciona, sobre todo simulándolo, pero en la realidad hay algo que no va bien. Cuando el valor de la tensión a comparar se acerca al valor de comparación la salida (de momento un led) empieza a oscilar durante una cantidad de 0,3V. Tanto al subir la tensión a comparar y sobrepasar el valor de comparación, como al descender. Pasados esos 0,3V la salida ya es estable.

Lo primero que se viene a la mente es el uso de una histéresis, al principio no la tenia puesta. Bien, diré que está implementada pero ahora el efecto es: He colocado una histéresis para cuando se supere el valor pre-ajustado y ahora, por ejemplo, programo un nivel de actuación a 2V, pues el led comienza a parpadea cuando supera los 2.2V, y no se apaga hasta no superar 2.5V mas, esto es cuando subo la tensión a comparar.

Luego a la inversa hace lo siguiente, cuando la tensión comienza a bajar el led parpadea al llegar a 2.5V, y no queda fijo hasta alcanzar los 2.2V.

Lo que ha hecho la histéresis es desplazar el punto del parpadeo los 0,2 voltios, pero sigue manteniendo la diferencia con el parpadeo en 0,3 voltios.

Creo que eso no es normal, dado que la aproximarse al llegar al punto de comparación, la histéresis reduce el nivel de comparación en 0,2 voltios  ( comprobado con las variables de forma paso a paso) y por lo tanto, al menos el parpadeo se debería de haber reducido solo a 0,1V.

También tengo que indicar que las tensiones son muy estables y no se produce ningún tipo de caída de tensión en ninguna parte del circuito, incluido al iluminarse el led.

¿Alguna idea de porque pasa eso?. Es la primera vez que me sucede.
« Última modificación: 19 de Abril de 2021, 11:59:38 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Funcionamiento del pic 12F683
« Respuesta #1 en: 17 de Abril de 2021, 08:58:41 »
Lo único que se me ocurre son pruebas para ver de qué lado se origina el problema (si software o hardware)  como ser:
- Poner una resistencia alta en el led de manera que apenas se vea.
  Si se modifica el comportamiento --> viene por ruido o fuente.
- Una vez que se encienda el led insertar un delay de un tiempo tal que desaparezca el problema.
  Si es un tiempo corto (ms) --> pinta ser hardware.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Funcionamiento del pic 12F683
« Respuesta #2 en: 17 de Abril de 2021, 09:09:51 »
Hice una prueba colocando un condensador en paralelo con el led y el problema desapareció.
¡¡¡Pero no creo que esa sea la solución más acertada!!!

Lo único que se me ocurre son pruebas para ver de qué lado se origina el problema (si software o hardware)  como ser:
- Poner una resistencia alta en el led de manera que apenas se vea.
  Si se modifica el comportamiento --> viene por ruido o fuente.
- Una vez que se encienda el led insertar un delay de un tiempo tal que desaparezca el problema.
  Si es un tiempo corto (ms) --> pinta ser hardware.

El resto de cosas las comprobaré, porque la verdad no se me ocurre que pueda ser. :? :oops:


F,
Todos los días se aprende algo nuevo.

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Funcionamiento del pic 12F683
« Respuesta #3 en: 17 de Abril de 2021, 09:50:45 »
Le metí una resistencia de 10k a tu circuito para simular un salto en la lectura del ADC por algun problema de tensión al conmutar.
 

* 683.jpg
(28.72 kB, 640x399 - visto 706 veces)


Como es de esperar así queda parpadeando en un intervalos de tensión y con un C de 470u en paralelo con el led lo deja de hacer.

Si viniera por este lado, la comprobación que podés hacer es invertir la salida del led (se invierte el signo de la realimentación) .
Es decir, cuando la tensión en GP0 supere el umbral --> GP1 pase a 1.     Y si querés que el led en esta condición se apague lo colgás de +5V


« Última modificación: 17 de Abril de 2021, 11:09:29 por Eduardo2 »

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Funcionamiento del pic 12F683
« Respuesta #4 en: 17 de Abril de 2021, 13:14:00 »
Eduardo,

........................
Si viniera por este lado, la comprobación que podés hacer es invertir la salida del led (se invierte el signo de la realimentación) .
Es decir, cuando la tensión en GP0 supere el umbral --> GP1 pase a 1.     Y si querés que el led en esta condición se apague lo colgás de +5V

Si hago lo que indicas de cambiar la lógica, entonces incluso con la histéresis es cuando si que veo, incluso en el simulador, que la salida oscila.
Con el programa como lo tengo inicialmente solo lo hace de modo físico.
Adjunto imagen de como está el diagrama de bloques de la parte de la comparación, por si se ve algo incongruente.

F.
Todos los días se aprende algo nuevo.

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Funcionamiento del pic 12F683
« Respuesta #5 en: 17 de Abril de 2021, 15:03:00 »
Que tal Fer_TACA, el modo comparador lo haces con el ADC  o a través del comparador?
« Última modificación: 17 de Abril de 2021, 15:07:27 por Robert76 »

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Funcionamiento del pic 12F683
« Respuesta #6 en: 17 de Abril de 2021, 15:07:56 »
A través del ADC.

Se leela entrada analógica y al accionar el pulsador se almacena como valor para la siguientes comparaciones.
Todos los días se aprende algo nuevo.

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Funcionamiento del pic 12F683
« Respuesta #7 en: 17 de Abril de 2021, 15:09:53 »
A través del ADC.

Se leela entrada analógica y al accionar el pulsador se almacena como valor para la siguientes comparaciones.
Entonces la hsteresis lo has aplicado por soft?

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Funcionamiento del pic 12F683
« Respuesta #8 en: 17 de Abril de 2021, 15:13:34 »
Si, claro
Todos los días se aprende algo nuevo.

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Funcionamiento del pic 12F683
« Respuesta #9 en: 17 de Abril de 2021, 15:22:13 »
Puedes subir sólo la línea de código dónde realizas la histeresis?
También puedes añadir un estado integrador para la salida.
Por ejem. Si el estado permanece X tiempo estable se da por válido. De lo contrario mantiene el estado anterior.

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Funcionamiento del pic 12F683
« Respuesta #10 en: 17 de Abril de 2021, 15:51:26 »
Puedes subir sólo la línea de código dónde realizas la histeresis?
También puedes añadir un estado integrador para la salida.
Por ejem. Si el estado permanece X tiempo estable se da por válido. De lo contrario mantiene el estado anterior.

 Está creo que es una buena solución.

  Ponderar la suma de varios resultados y tomar la decisión cuando el resultado sea estable.

  Y \ O exigir un tiempo mínimo que tiene que permanecer estable el estado para darlo por válido.

Y además, una histeresis si o si.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Funcionamiento del pic 12F683
« Respuesta #11 en: 17 de Abril de 2021, 15:54:23 »
En el zip que subí en un post anterior (comparador.zip) esta en pdf toda la parte de la comparación.
Básicamente, una vez establecido el valor de comparación, al subir el valor a comparar y hacerse mas grande, al valor de comparación se le resta 40 en decimal que se corresponde con un valor de 0,2V (ADC de 10bits).
Luego al descender el valor a comparar y llegar al valor de comparación, este valor se incrementa en 40 (0,2V).
Con esto se evita el que los valores se queden (en valor de bits) próximos el uno con el otro.

Como dije en uno post anterior el problema que observo es que al añadir la histéresis, esta parece no funcionar ya que lo único que me realiza es el desplazar el punto de comparación esos 0,2V, manteniéndose el margen de 0,3V durante el cual se producen las oscilaciones

F.
« Última modificación: 17 de Abril de 2021, 15:58:04 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Funcionamiento del pic 12F683
« Respuesta #12 en: 17 de Abril de 2021, 18:57:44 »
En el archivo  .ZIP veo un diagrama de flujo, pero no me resulta claro, exactamente cómo se aplica la hyst.
Un ejem. de cómo yo lo haría.

var=read_adc()

if(var>(comp+40)) ENCENDER LED
if(comp>(var+40)) APAGAR LED

También puedes añadir un promedio de muestras tomadas del ADC antes de comparar.
« Última modificación: 17 de Abril de 2021, 19:04:21 por Robert76 »

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Funcionamiento del pic 12F683
« Respuesta #13 en: 17 de Abril de 2021, 19:00:40 »
...
Si hago lo que indicas de cambiar la lógica, entonces incluso con la histéresis es cuando si que veo, incluso en el simulador, que la salida oscila.
Con el programa como lo tengo inicialmente solo lo hace de modo físico.

Que raro,  la inversión de la señal solo puede afectar la simulación cuando se agrega la R de 10k que puse, que no debe estar porque la metí para forzar el error en la simulación.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Funcionamiento del pic 12F683
« Respuesta #14 en: 18 de Abril de 2021, 08:02:24 »
Robert76,

Flowcode se programa con diagrama de bloques, por eso el diagrama en el zip. No obstante explico como esta el programa:
- Hay dos variables: Voltios que es el valor que quiero vigilar y Valor_Compara que es el valor de comparación.
- Si voltios <= Valor_compara entonces se activa la salida (led=1) y valor_compara=valor_compara+histeresis
Pero si:
-  Si voltios > Valor_compara entonces se desactiva la salida (led=0) y valor_compara=valor_compara-histeresis.

Aparte de eso por seguridad y para que en los siguientes pasos el valor de la variable valor_Compara se incremente o decremente de forma indefinida tengo un control por medio de un flag para evitar ese efecto.

Esta parte de la comparación funciona perfectamente incrementando y decrementado los valores de comparación de acuerdo al valor dado en "histeresis".  Pero.........

Por ejemplo, si  programo un nivel de 2V para realizar la comparación, pues el led comienza a parpadea cuando supera los 2V, y no se apaga hasta no superar 2.3V, esto es cuando subo la tensión del valor de la variable voltios.
Luego a la inversa hace lo siguiente, cuando la tensión comienza a bajar el led parpadea al llegar a 2.1V, y no queda fijo hasta alcanzar los 1.8V( que es el nuevo valor de la comparación.

Bien pues esa diferencia de 0,3V siempre se mantiene constante sea cual sea el valor que se ponga en la variable valor_compara.

La única forma que he visto de eliminar el efecto es colocando un condensador de 470uF en paralelo con el led. Pero no cre que esta sea una solución muy elegante.


...
Si hago lo que indicas de cambiar la lógica, entonces incluso con la histéresis es cuando si que veo, incluso en el simulador, que la salida oscila.
Con el programa como lo tengo inicialmente solo lo hace de modo físico.

Que raro,  la inversión de la señal solo puede afectar la simulación cuando se agrega la R de 10k que puse, que no debe estar porque la metí para forzar el error en la simulación.

Raro pero es cierto que sucede eso.


F.
Todos los días se aprende algo nuevo.


 

anything