Autor Tema: guardar valores previo apagon equipo  (Leído 2464 veces)

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

Desconectado xenam

  • PIC10
  • *
  • Mensajes: 18
guardar valores previo apagon equipo
« en: 25 de Noviembre de 2020, 08:16:09 »
Hola,

Llevo poco tiempo trabajando con Niple y estoy modificando un programa realizado por un antiguo compañero con un PIC18F46K22.

Os explico en que consiste el programa.
1)El sistema trabaja dependiendo si queremos que trabaje durante un tiempo definido o durante una definida cantidad de impulsos recibidos desde el exterior.
2)Una vez transcurrido el tiempo o los impulsos definidos, el sistema pasa a un modo de pausa el cual se basa en un tiempo o cantidad de impulsos,como en el modo de trabajo pero con parámetros independientes.
3)El operario puede combinar el modo de trabajo con el de pausa tal y como desee,es decir, puede configurar el modo de trabajo por tiempo y el modo de pausa por eslabones. Asi en todas las posibles combinaciones.

Ahora viene mi pregunta, antes cuando apagabamos el controlador y lo volvíamos a encender el sistema estaba programado para que empezase con los ajustes realizados previamente pero iniciándolos desde el principio.
Es decir, si el operario configuraba 100 impulsos para modo trabajo daba igual que durante el trabajo esos impulsos disminuyeran ya que el programa se iniciaría otra vez desde 100.
Lo mismo sucede si esta programado por tiempo.
Por mi parte, he modificado el programa haciendo lo siguiente he conseguido guardar la cantidad de impulsos( Los contabilizados, no los ajustados como parámetro) que llevaba en el mismo momento antes de apagar el equipo.
Para ello, cada vez que recibimos un impulso lo descontamos en el contador que tenemos para saber el numero de impulsos restantes que quedan para pasar al mode de trabajo o pausa. Despues de esa instruucion cargo el valor actual a una variable y la guardo en la eeprom.
Eso cada vez que recibimos un impulso,asi cuando arranquemos la maquina desde los valores de la eeprom cargaremos el valor que llevaba el contador.
Esto funciona sin problemas, pero veis alguna otra alternativa que me evite tener que guardar en la eeprom cada vez que reciba un impulso.
El desafío viene ahora, cuando la maquina esta programada para trabajar con tiempo como podía dejar guardado el tiempo antes de que apagase sin tener que ir guardándolo cada segundo?
No me va a realizar muchas escrituras en la eeprom??


Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4034
Re:guardar valores previo apagon equipo
« Respuesta #1 en: 25 de Noviembre de 2020, 09:10:57 »
Lo que puedes realizar siempre en ambos casos antes de guardar  los nuevos valores es leer primero la EEPROM y comprobar si el nuevo valor es igual al guardado, si es distinto grabas y si no lo es pues no grabas.
Como la cantidad de lecturas de la eeprom  no se ve afectada no importa el número de veces que la leas y  de todas formas seguro que habrá veces que los valores coincidan y no será necesario grabar. De ese modo te durará más tiempo.
F.
Todos los días se aprende algo nuevo.

Desconectado xenam

  • PIC10
  • *
  • Mensajes: 18
Re:guardar valores previo apagon equipo
« Respuesta #2 en: 25 de Noviembre de 2020, 12:13:23 »
Lo que puedes realizar siempre en ambos casos antes de guardar  los nuevos valores es leer primero la EEPROM y comprobar si el nuevo valor es igual al guardado, si es distinto grabas y si no lo es pues no grabas.
Como la cantidad de lecturas de la eeprom  no se ve afectada no importa el número de veces que la leas y  de todas formas seguro que habrá veces que los valores coincidan y no será necesario grabar. De ese modo te durará más tiempo.
F.
Y la cantidad de grabaciones en la eeprom tiene alguna restricción o limitacion?
Me estoy planteando incorporar la posibilidad de que el usuario antes de apagar el equipo pueda guardar los valores actuales(como si hiciera un pause) y posteriormente apagar el equipo.Asi solo se veria perjudicado el arranque en cortes de tension y solo en los parametros de tiempos.
Aunque para el tiempo podria establecer una copia cada minuto,segun el tiempo que establezca, y  ese caso imaginate que el usuario establece un tiempo de trabajo o pausa de 1 hora y si hay un corte de tension pues al arrancar el programa el tiempo comenzaria desde el ultimo minuto guardado en la eeprom.
No es perfecto,pero para un caso tan excepcional que el tiempo varie unos segundos respecto a lo que tenia antes de apagarse pues no conllevaria ningun riesgo.
Lo que me comentas de comparar los datos de la eeprom antes de guardarlo,esta opcion no me hace falta ya que hasta que no recibo un nuevo impulso exterior el programa no pasa por esa linea y no guardaria el mismo valor.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4034
Re:guardar valores previo apagon equipo
« Respuesta #3 en: 25 de Noviembre de 2020, 12:30:30 »
La capacidad de guardado de la eeprom creo que está en torno al 1000000 de veces de escritura. Este dato lo puedes ver en el datasheet del poco.

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

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re:guardar valores previo apagon equipo
« Respuesta #4 en: 25 de Noviembre de 2020, 22:49:22 »
Desde mi desconocimiento pienso en la carga de un capacitor importante en la fuente, y mediate un diodo alimentar el pic, es decir fuente->diodo->capacitor->diodo->PIC, con una A/D leo latensión de la fuente y determino su valor, al corte de la tensión de la fuente caerá por debajo del valor normal de funcionamiento y el A/D le dirá al PIC que guarde los valores que se definan. Cre que se soluciona el problema de interrupción de suministro y el apagado. El capacitor mantiene unos milisegundos al PIC para realizar el trabajo necesario como una UPC. Un abrazo
- Santiago -

Desconectado xenam

  • PIC10
  • *
  • Mensajes: 18
Re:guardar valores previo apagon equipo
« Respuesta #5 en: 26 de Noviembre de 2020, 04:51:49 »
Desde mi desconocimiento pienso en la carga de un capacitor importante en la fuente, y mediate un diodo alimentar el pic, es decir fuente->diodo->capacitor->diodo->PIC, con una A/D leo latensión de la fuente y determino su valor, al corte de la tensión de la fuente caerá por debajo del valor normal de funcionamiento y el A/D le dirá al PIC que guarde los valores que se definan. Cre que se soluciona el problema de interrupción de suministro y el apagado. El capacitor mantiene unos milisegundos al PIC para realizar el trabajo necesario como una UPC. Un abrazo

Buenas, soy totalmente nuevo en este tema y adjuntado los esquemas que me dejo el antiguo compañero como implementarías los cambios que me sugieres?
El tema es que las tarjetas las van a fabricar pronto y en caso de que haya algún cambio se lo tendría que enviar para implementarlo en la nueva fabricación.
Por otro lado, la tensión llegaría al A/D del pic18F46K22Aunque en el esquema veais un (pic16f887)y entonces según el valor pues ya ejecutaria el programa.
Para ello deberia de liberar alguna entrada de un pulsador puesto para futuras ocasiones

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re:guardar valores previo apagon equipo
« Respuesta #6 en: 26 de Noviembre de 2020, 10:37:05 »
Te muestro mi idea más o menos, no puedo detenerme a calcular pero es simple. Con un divisor resistivo hacés llegar 5V a un analógico que se debe leer seguido, un diodo para evitar la descarga del capacitor en la fuente, el capacitor como fuente al corte, otro diodo para que no se descargue el regulador (no sé que tan necesario sea según valores que se usen, y al regulador. Cn energía se carga el capacitor y se alimenta el regulador, si falta el capacitor debe sostener el sistena un tiempo determinado por el consumo del sistema, el A/D "avisa la" caida de tensión en el divisor y se guardan los datos instantaneos en la eeprom. Más o menos es eso.  Algo más complicado sería con una pila recargable.

* Por corte chico.jpg
(95.89 kB, 859x528 - visto 218 veces)
- Santiago -

Desconectado xenam

  • PIC10
  • *
  • Mensajes: 18
Re:guardar valores previo apagon equipo
« Respuesta #7 en: 26 de Noviembre de 2020, 13:50:05 »
Te muestro mi idea más o menos, no puedo detenerme a calcular pero es simple. Con un divisor resistivo hacés llegar 5V a un analógico que se debe leer seguido, un diodo para evitar la descarga del capacitor en la fuente, el capacitor como fuente al corte, otro diodo para que no se descargue el regulador (no sé que tan necesario sea según valores que se usen, y al regulador. Cn energía se carga el capacitor y se alimenta el regulador, si falta el capacitor debe sostener el sistena un tiempo determinado por el consumo del sistema, el A/D "avisa la" caida de tensión en el divisor y se guardan los datos instantaneos en la eeprom. Más o menos es eso.  Algo más complicado sería con una pila recargable.  - Tienes que ingresar para ver archivos adjuntos -

Entiendo basicamente lo que me explicas,lo que si veo es que el A/D puede enviarme directamente la señal digital al PIC informándome de una caída de tensión y de esa manera no tengo porque utilizar una entrada analogica en el PIC. En ese caso supongo que no deberia de utilizar el D2 y llevar la señal al PIC
El problema es que nunca he utilizado un A/D y estoy realizando alguna prueba en el proteus con el MCP3001 y stoy un poco perdido.
Cual es el tipo mas utilizado normalemente para este tip de circuito?
« Última modificación: 26 de Noviembre de 2020, 13:54:24 por xenam »

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4034
Re:guardar valores previo apagon equipo
« Respuesta #8 en: 26 de Noviembre de 2020, 15:11:14 »
Creo que no has cogido bien la idea que te ha sugerido Santiago.
Si optas por esa opción SI o SI tienes que utilizar una entrada analógica del pic. Según su esquema, del condensador C1 o del cátodo del diodo D2 debes de llevar esa línea al pin de alimentación del pic.
Además tienes que llevar la unión de las resistencias R1 y R2 a la entrada analógica.

Si la alimentación del circuito propuesto es de 5V, en la unión R1 y R2 tendrás aproximadamente la mitad, es decir 2,5V que variara un poco dependiendo de la tolerancia de las resistencias. Este es el valor que tiene que leer el pic y cuyo valor usando el A/D del pic (si dispone de esa función) será guardado en un registro (el que desees).
 Luego el valor de este registro lo debes de comparar con un valor determinado, deberás probar cual es el más idóneo para tu aplicación y si ese valor es menor que el de comparación debes escribir rápidamente en la eeprom.
Digo rápidamente porque si desaparece la alimentación, el condensador C1 te va a mantener durante unos instantes la alimentación del pic y así dar tiempo a que guardes los datos necesarios.
El valor de la capacidad de C1 dependerá del tiempo que necesites para el guardado de datos. También si el tiempo estimas que es grande puedes sustituir el condensador c1 por un componente llamad "Supercondensador" que tiene una alta capacidad de almacenamiento y de faradios. Aunque eso si son un poco carillos.

F.

Todos los días se aprende algo nuevo.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re:guardar valores previo apagon equipo
« Respuesta #9 en: 26 de Noviembre de 2020, 16:25:31 »
Como te dice Fermín la idea es anticipar en el A/D la ausencia de alimentación, lo que se hace en la tensión que brinda la fuente principal, la que alimenta al regulador. El divisor resistivo es a modo de adaptar una tensión mayor (12V por ejemplo) al valor aceptable a la entrada sensora. Los diodos evitan el "retroseso", cuando la fuente sea tambien una carga al no tener tensión, y descarga del capacitor, lo que dá duración mayor a la descarga y solo puede ser alimentando al circuito. Es solución económica.
- Santiago -

Desconectado xenam

  • PIC10
  • *
  • Mensajes: 18
Re:guardar valores previo apagon equipo
« Respuesta #10 en: 27 de Noviembre de 2020, 03:44:29 »
Buenas,

Pues al haber leido Al (habia interpretado Analog Input) PIC y ¿necesario?, habia pensado que se descartaba la opcion de llevar la señal analogica al PIC y pasarla por un Analogico/Digital y que esta enviase la señal al PIC informando que habia una bajada o corte de tension para poder guardar los datos en la eeprom.

Sin entrar en conceptos de programacion,ya capto la idea que me habeis planteado. Solo me faltaria decidir el valor del condensador para saber cuanto tiempo tendria para guardar los datos antes de que se descargue y no llegue tension al PIC.

Muchas gracias por vuestra ayuda y seguiremos en contacto

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:guardar valores previo apagon equipo
« Respuesta #11 en: 27 de Noviembre de 2020, 09:11:07 »
1- Es mas sencillo usar un comparador que el A/D, Usen el comparador interno del PIC, necesitas el divisor resistivo y configurar en el PIC la referencia de tension y el comparador, podes usar una interrupcion para cuando se detecte para asi ejecutar lo del grabado de la EEPROM

2- Es muy probable que esto NO funcione, todo depende de que tan rápido descargue la fuente respecto a la alimentación del micro.

Si ambos caen por igual (porque no hay demasiado consumo) en la fuente, entonces no tiene sentido plantearse esta solución, a no ser que uno ponga un capacitor muy grande para el micro.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re:guardar valores previo apagon equipo
« Respuesta #12 en: 27 de Noviembre de 2020, 11:38:11 »
Buenos dias. El capacitor debe ser acorde al consumo según decís y ya habiamos comentado, encontrando su valor casi en modo empírico. Creo más manejable el A/D, podés variar el divisor y llevarlo hasta casi el suspiro en el disparo, eso dependerá de la fuente usada y lo estable que sea. Pero el comparador es una buena solución tambien. El diodo impide que la fuente sea carga del capacitor, aún en estado de falta de tención por lo que creoo que el capacitor aguantaría el Pic, habrá que ver el tema de enviarlo a dormir o no para que no continúe ejecutando el programa, en eso quizá aventaje el comparador. En fin, 2 soluciones a estudiar y probar.
- Santiago -

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:guardar valores previo apagon equipo
« Respuesta #13 en: 27 de Noviembre de 2020, 14:11:26 »
El comparador tiene mas ventajas.

Si usas el AD, tambien tenes que poner una referencia externa de tension, ya que si el VCC baja y estas usando este valor como refencia de tension, entonces  tu lectura en vez de bajar, se mantendra aproximadamente en el mismo lugar.

Pero con el comparador podes activar la referencia fija de 0.6V que posee y usar esa, que es independiente de VCC (siempre en un rango por supuesto).
Solo necesitas ajustar el divisor para que a la salida te de aproximadamente superior a 0.6V. El comparador no consume mucha corriente de entrada si es lo que te preocupa.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re:guardar valores previo apagon equipo
« Respuesta #14 en: 28 de Noviembre de 2020, 02:35:47 »
La verdad que no veo ese problema, ya que lees el valor A/D y si es menor a Xv determinás que ha caido la tensión debajo del nivel critico fijado, solo necesitás 1 pin A/D pues la referencia es el 0V de masa. lo interesante de este sistema es que podés variar el punto sin programar denuevo.
- Santiago -