Autor Tema: Nivel para líquidos.  (Leído 6616 veces)

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

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3402
Re:Nivel para líquidos.
« Respuesta #30 en: 17 de Enero de 2019, 16:02:40 »
Hola,
Te adjunto un primer fichero de como seria la base para el calculo de los valores.
Esta realizado para que comprendas la mecánica.
No esta completo solo la parte del calculo, falta añadir la seccion de la activacion de los distintos reles. Ademas hay algunas cosas que modificar ya que esta realizado pensando en que en la primera puesta en marcha esta presente un operario para validar y calibra las medidas. Dado que el pic si no le dices de alguna forma los valores no sabrá nunca cuales son.
Lo mejoraremos mas adelanta. Si comprendes esto ya puedes añadir la parte de la activacion de los leds usando el valor "escalar".

Si al final decides colocar un valor mínimo por defecto, lo modificaremos y los calculos y programa se simplifica.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3402
Re:Nivel para líquidos.
« Respuesta #31 en: 19 de Enero de 2019, 08:51:50 »
Bueno, si has tenido tiempo en revisar el fichero adjunto, habrás podido observar que la secuencia del funcionamiento lo que realiza en un primer momento es nada mas dar tensión al equipo el esperar a que se active el interruptor de que se va a proceder a realizar la calibración, si no se activa no hace nada nada mas que esperar.
Una vez activado se pasa a comprobar el valor del nivel mínimo continuamente hasta que se valida el valor mediante la lectura de un pulsador. Después se pasa a la rutina de comprobar el nivel máximo de la misma forma, esperando su validación mediante la activación del mismo pulsador de validación. Para finalizar se realizar el calculo del rango de escala y las divisiones para la activación de los leds(sin implementar todavía).
Con esto ya se pasaría a la parte de la visualización.

Ahora bien esto solo es para que veas los pasos de la calibración, pero tiene algún defecto y es el siguiente:
Una vez que se realice la primera visualización el programa saltaría de nuevo al inicio y pediría otra calibración. Esto es debido a que todo el programa se encuentra dentro de un bloque "While" que se repetirá indefinidamente. Esto no puede ser a sí.
Por tanto te propongo dos cosas:
1º Para realizar un programa estructurado y realizado en pequeños bloques, debes de crear una nueva macro que le llames por ejemplo "calibrar"
2º Que todos los bloques anteriores los coloques dentro de la nueva macro "Calibrar"
3º Sacar del bucle del "While" la macro de "Calibrar" de esa forma la calibración solo se producirá una sola vez que dando el resto (la parte de visualización dentro del ciclo "While").

Después de comprendas estos pasos continuaremos...……...

Desconectado manuel gómez

  • PIC16
  • ***
  • Mensajes: 109
Re:Nivel para líquidos.
« Respuesta #32 en: 19 de Enero de 2019, 08:56:03 »
Muchas gracias Fer_TACA, de esta manera voy aprendiendo.
Sobre el nivel mínimo pienso que podria ser siempre el mismo, que solo se pueda calibrar el maximo, me parece bien.

Saludos.

Desconectado manuel gómez

  • PIC16
  • ***
  • Mensajes: 109
Re:Nivel para líquidos.
« Respuesta #33 en: 19 de Enero de 2019, 09:10:56 »
Fer_TACA, se me hace muy dificil, no tengo capacidad para hacer lo que me propones... veo lo que has hecho hasta ahora y voy entiendo, pero no alcanzo a implementar lo que me dices.

Muchas gracias.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3402
Re:Nivel para líquidos.
« Respuesta #34 en: 19 de Enero de 2019, 16:14:50 »
Muchas gracias Fer_TACA, de esta manera voy aprendiendo.
Sobre el nivel mínimo pienso que podria ser siempre el mismo, que solo se pueda calibrar el maximo, me parece bien.

Saludos.

Bueno en los ejemplos esta contemplado el poder elegir el valor mínimo. Al final de todo si quieres se puede cambiar, solo hay que habria ue eliminar la parte de validar en valor minimo dentro de la nacro de calibrar y sustituir el calculo por el valor fijo.
De momento es importante que hayas cogido el concepto.
¿Has revisado ya los 2 ejemplos?

F.

Desconectado manuel gómez

  • PIC16
  • ***
  • Mensajes: 109
Re:Nivel para líquidos.
« Respuesta #35 en: 19 de Enero de 2019, 17:06:13 »
Si, he estado viendo los 2 ejemplos y voy entendiendo el proceso, pero muy poco a poco.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3402
Re:Nivel para líquidos.
« Respuesta #36 en: 19 de Enero de 2019, 18:18:29 »
Mañana te pondré la parte de la visualización.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3402
Re:Nivel para líquidos.
« Respuesta #37 en: 20 de Enero de 2019, 08:33:54 »
Hola, te adjunto el programa con la parte de la visualización.

Ten en cuenta que esta se podrá realizar de tantas maneras como personas lo realicen. Por mi parte, aunque la macro resulte larga (evidentemente se puede simplificar bastante) he preferido realizarla de este modo para que entiendas todos los pasos. Funciona de la siguiente forma:

He supuesto como salida solo 12 leds (podrás poner los que quieras, solo tienes que cambiar en el bloque de cálculo el dividendo según el numero de leds usados). Estos los he colocado en el puerto B y en los 4 pines mas altos del puerto C. ¿Porque? Simple, dijimos que íbamos a utilizar el pic16F887 que tiene 40 pines y todas las salidas usadas se encuentran a un lado del pic. Ahora bien si te resulta el pic grande lo puedes cambiar por uno de 28 pines (pic16F882) y que también tiene esas líneas en el mismo lado. De esta forma conseguimos tener a un lado las salidas y a otro las entradas. Con esto a la hora de realizar el pcb se puede optimizar evitando las posibles influencias (interferencias) entre las entradas y las salidas.

Cuando pases a simular el proyecto, para que puedas seguirlo bien, te aconsejo que selecciones una velocidad de 2Hz. En la ventana que se te habrá abierto puedes visualizar los valores de todas las variables: Mínimo, Máximo, Escala, Niveles, etc.
Una vez que actives el interruptor de calibración gira un poco el potenciometro inferior (valor mínimo) y despues lo validas accionado el pulsador (recuerda mantenerlo pulsado hasta que pase por el bloque de comprobación de validación). A continuación gira el potenciometro superior hasta un valor cercano al máximo y lo validas.
Con esto en la ventana después de un poco de tiempo se te actualizaran todos los valores de los niveles, escala, rango, etc. Ahora puedes ir girando despacio el potenciometro inferior para que pases por cada uno de los valores de los respectivos niveles. Según lo vayas realizando verás como los respectivos leds se iran iluminando uno a uno gasta llegar al máximo. Puedes hacer lo mismo en forma descendente y los leds se iran apagando segun el nivel en que se encuentre.

Como ves, he supuesto que los  leds se vayan iluminado en forma de columna, pero si solo quieres que se ilumine el del nivel activo puedes intentar modificar la macro de visualizacion y si no me lo indicas y lo corregimos.

Por otra parte no has indicado que pasaria si el nivel baja del nivel minimo, ni tampoco como se produce el llenado de los tanques si es de forma manual o automática mediante activación de electrovalvulas o similar.
En el adjunto para simulación he colocado una nueva salida (pin C3) que se activa cuando el nivel del tanque baja del nivel 1 (para que haga la función de alarma). Debería ser cuando baje del minimo pero esto ya se puede corregir después.

Ademas de esto hay alguna cosa mas que realizar que será para la proxima entrega.
Como ves son bastantes las condiciones y variables que te puedes encontrar dentro del desarrollo fisico del proyecto.

F.
« Última modificación: 20 de Enero de 2019, 08:37:33 por Fer_TACA »

Desconectado manuel gómez

  • PIC16
  • ***
  • Mensajes: 109
Re:Nivel para líquidos.
« Respuesta #38 en: 20 de Enero de 2019, 09:31:38 »
Hola Fer_TACA, tengo que agradecerte toda tu ayuda. En la simulación el funcionamiento es en realidad el que necesito, el llenado de los depósitos es manual y cuando el nivel pasa por debajo del mínimo lo que vengo haciendo es poner en intermitencia el primer led y activar un pequeño rele para que el motor bomba deje de funcionar en caso de no tener agua, luego cuando el nivel comienza a subir el primer led luce fijamente y a un cierto nivel hago que el rele se desactive. Pero tal como lo presentas creo que yo podría realizar esa modificación, al menos lo intentaré.

Algo que no comprendo y me gustaría que me dijeras es la EEPROM.

Mil gracias....

**Le hecho una pequeña modificación, a ver que te parece o hay otra forma de hacerlo mejor.
« Última modificación: 20 de Enero de 2019, 09:58:14 por manuel gómez »

Desconectado manuel gómez

  • PIC16
  • ***
  • Mensajes: 109
Re:Nivel para líquidos.
« Respuesta #39 en: 20 de Enero de 2019, 10:02:44 »
Fer_TACA, se puede colocar un switch para memorizar el mínimo y otro para el máximo? o que no se pueda memorizar el máximo hasta haber programado el mínimo?
« Última modificación: 20 de Enero de 2019, 10:05:53 por manuel gómez »

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3402
Re:Nivel para líquidos.
« Respuesta #40 en: 20 de Enero de 2019, 11:33:16 »
Por partes.
Lo de la EEPROM era el siguiente paso en el desarrollo del programa y se debe a que el programa esta realizado para cuando se produce la 1ª puesta en marcha del equipo. pero ¿Que pasaría si en un momento determinado se va la tensión de alimentación del micro o se produce, por la causa que sea un reseteo del micro?
Respuesta: pues para que volviese a funcionar el sistema se tiene que desplazar una persona a realizar todo el proceso de calibración y además con el perjuicio de que si el tanque se encuentra a un nivel medio, por ejemplo, pues se tendría que retirar todo el liquido y empezar el relleno de nuevo desde 0.
Con la EEPROM lo que haremos será que después de realizar la calibración el ultimo bloque dentro de esta macro será guardar el valor de "Escala" dentro de la EEPROM. De esta forma al volver la alimentación lo 1º a realizar es la lectura de la EEPROM y guardarlo en la variable "Escala" de esa forma ya no seria necesario en estos casos el repetir la calibración desde 0.
Pero hay un pequeño detalle a añadir es que lo explicado en el punto anterior es que ese proceso se debe hacer durante un pequeño lapso de tiempo. Es decir, nada mas tener tensión esperar durante unos segundos si esta activado el interruptor de calibración, transcurrido el tiempo si no se ha activado es cuando se produce la lectura de la EEPROM y se activa antes de ese tiempo pues entonces es cuando se va a producir una calibración nueva.

......... Pero tal como lo presentas creo que yo podría realizar esa modificación, al menos lo intentaré.

**Le hecho una pequeña modificación, a ver que te parece o hay otra forma de hacerlo mejor.

Lo reviso y te digo.


Fer_TACA, se puede colocar un switch para memorizar el mínimo y otro para el máximo? o que no se pueda memorizar el máximo hasta haber programado el mínimo?

Segun esta el programa no se puede programar el maximo hasta que no se realizado la memorizacion del minimo.
Claro que puedes poner un switch para cada cosa. Lo unico que tienes que utilizar una entrada mas. Y en el programa las validaciones comprobarlas de forma distinta leyendo cada uno de los switch para cada cosa.
¿Quieres que lo implemente?



Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3402
Re:Nivel para líquidos.
« Respuesta #41 en: 20 de Enero de 2019, 12:08:30 »
Te adjunto una pequeña corrección a lo que has cambiado. Porque el primer led a iluminar no se ilumina cuando el nivel del liquido esta por debajo del mínimo. Se apagaba cuando el valor era mas bajo de: ValorMinimo+Escala.
Es decir un poco por encima del mínimo.
Dentro de la parte de oscilación que has adjuntado puedes añadir una salida mas para activar el rele que para la bomba.

En el proximo adjunto que te realice incluiré lo de la EEPROM y el añadir el segundo pulsador para validar el valor del máximo.

F.

Desconectado manuel gómez

  • PIC16
  • ***
  • Mensajes: 109
Re:Nivel para líquidos.
« Respuesta #42 en: 20 de Enero de 2019, 14:33:19 »
Muchas gracias, cuando comenté lo de la EEPROM no me había dado cuenta que la calibración no quedaría en memoria, me anime tanto que no vi que falta esta parte del programa.

Desconectado manuel gómez

  • PIC16
  • ***
  • Mensajes: 109
Re:Nivel para líquidos.
« Respuesta #43 en: 20 de Enero de 2019, 15:58:10 »
Estoy estudiando todo lo que puedo el programa y me surge una duda...

La entrada AN0 sería la entrada de señal proveniente del sensor, y la entrada AN1 imagino que sería un una resistencia ajustable para dar el nivel máximo como referencia, pero la duda es ¿como se a que nivel he de regular la entrada AN1?, para ello tendría que llenar el deposito y medir la tensión que ofrece el sensor. No sé si estoy equivocado.



Como lo ves Fer_TACA?
« Última modificación: 20 de Enero de 2019, 16:01:07 por manuel gómez »

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3402
Re:Nivel para líquidos.
« Respuesta #44 en: 20 de Enero de 2019, 17:37:02 »
Estoy estudiando todo lo que puedo el programa y me surge una duda...

La entrada AN0 sería la entrada de señal proveniente del sensor, y la entrada AN1 imagino que sería un una resistencia ajustable para dar el nivel máximo como referencia, pero la duda es ¿como se a que nivel he de regular la entrada AN1?, para ello tendría que llenar el deposito y medir la tensión que ofrece el sensor. No sé si estoy equivocado.

Como lo ves Fer_TACA?


En principio el programa lo pensé porque creí que había 2 sensores de presión uno para el mínimo y otro para el máximo. Así al menos lo expliqué en el post inicial cuando empezamos a desarrollar el proyecto.
Si solo lleva un sensor no hay problema en usar una sola entrada, confírmamelo y lo cambio.
Por lo demás en cualquier caso para saber el nivel máximo, SIEMPRE tendrás que llenar el tanque, SALVO que sepas el valor de la presión existente para ese caso.
De momento si te parece seguimos el desarrollo con los 2 sensores y al finalizar cambiamos/modificamos todo lo que se te ocurra.


F.


 

anything