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

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

Desconectado manuel gómez

  • PIC16
  • ***
  • Mensajes: 109
Nivel para líquidos.
« en: 18 de Noviembre de 2018, 05:29:18 »
Buenos días para todos, desde hace algún tiempo vengo practicando con un indicador de nivel para líquidos, y como sensor se utilizo un detector de presión que proporciona de 0 a 5V y que en verdad funciona muy bien, pero me surge el siguiente inconveniente:

El nivel se muestra con 24 leds y en cada montaje hay que programar el nivel al que se debe de encender cada uno de los 24 leds, porque en ocasiones el depósito donde se utiliza es mas alto o a veces mas bajo. Entonces lo que necesito y que de verdad no se como hacer es que de alguna manera pudiera memorizar o bien con pulsadores o con potenciometros cual sería el mínimo nivel y cual el máximo, de esta manera no tendría que realizar tantas divisiones para que cada led luzca según la señal del sensor.

Lo que tengo hecho lo subo para ver si me pueden orientar.


Muchas gracias...
« Última modificación: 18 de Noviembre de 2018, 07:19:58 por manuel gómez »

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3434
Re:Nivel para líquidos.
« Respuesta #1 en: 19 de Noviembre de 2018, 13:27:46 »
Como bien dices la respuesta del sensor de presión va a cambiar su valor de respuesta dependiendo de la altura sobre la que tenga que trabajar.

Indicas que llevas ya tiempo trabajando con el mismo sistema y me supongo que quizás hayas tenido que repetir alguna vez los valores y me supongo que los tendrás archivados o que habrás guardado el programa con distintas versiones pasa según se la aplicación.

Para lo que consultas solo se me ocurre que, como dependiendo de la altura vas a tener distintos valores de máximo, mínimo y de saltos entre cada grupo de leds intermedios a lucir, pues que los asignases (todos en tu programa) a variables con distintos nombres y agrupados por grupos de forma que si conectas algún tipo de selector/pulsador puedas preguntar/seleccionar, al inicio, que grupo de variables vas a utilizar en el programa según sea la altura del deposito. 

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3434
Re:Nivel para líquidos.
« Respuesta #2 en: 19 de Noviembre de 2018, 14:01:33 »
Otra opcion, quizas mas costosa, seria el utilizar  un teclado  y al inicio  preguntar por los valores, guardarlos en la  memoria  eeprom y despues utilizar  dichos valores.

Desconectado manuel gómez

  • PIC16
  • ***
  • Mensajes: 109
Re:Nivel para líquidos.
« Respuesta #3 en: 19 de Noviembre de 2018, 16:02:23 »
Hola Fer_taca, la primera opción podría servir, pero son bastantes modelos con medidas de altura en los depósitos.

Saludos.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3434
Re:Nivel para líquidos.
« Respuesta #4 en: 20 de Noviembre de 2018, 06:56:11 »
De todas formas por lo que dices y veo en el programa que has adjuntado cada vez de una altura distinta tienes que cambiar todos lod valores en cada uno de los bloques de comparación y para ello tienes que recorrer todo el programa.
¿No seria mejor y mas legible el colocar todos los valores asignándolos a sus respectivas variables en un solo bloque al inicio antes del ciclo "While"?

Me explico, supongamos que tienes 8 valores y por tanto tendrías 8 comparaciones así que lo que haría seria lo siguiente:

Crearía 8 variables: valor_1; valor_2;valor_3;...…..
A cada una de ellas le asignaría su valor de comparación. Ejemplo:Valor_1=1; valor_2=1,5; valor_3:2;...
Luego ya en los bloques de comparación se podría hacer de la forma; valor_ADC>valor_1;  valor_ADC>valor_2; valor_ADC>valor_3;...

De esta forma la parte del bucle "While" siempre seria el mismo para todos los tipos de alturas/valores de presión de todos los programas y en caso de tener que cambiar los valores los tendrías localizados todos dentro de un mismo bloque al inicio del programa y no tendría que recorrer todo el para actualizar los distintos valores con las consiguiente duda de si los cambiaste en todos y a cada uno le pusiste el que se debería.

Desconectado lucegiar2005

  • PIC18
  • ****
  • Mensajes: 446
Re:Nivel para líquidos.
« Respuesta #5 en: 20 de Noviembre de 2018, 09:12:51 »
Hola, buenos dias gente.
Leyendo el hilo se me ocurre que se podría automatizar el escalado de los valores mediante la medida del valor maximo y el minimo por su diferencia, la que dividiendola en 24 daría el valor de ventana para que se encienda el anterior o el posterior. Con ingresar poco líquido y un pulsador se guardaría el registro menor, llenando y otro pulsador el valor maximo y , operando matemáticamente el pic, la división establecerá la diferencia para cada led. ¿Que opinan, sería posible?
Un abrazo.
- Santiago -

Desconectado Robert76

  • PIC18
  • ****
  • Mensajes: 256
Re:Nivel para líquidos.
« Respuesta #6 en: 20 de Noviembre de 2018, 10:58:52 »
Hola, la solución es más o menos la idea de lo que comenta lucegiar2005.
Una vez obtenido el margen entre máximo-minimo, llamemosle (delta N).
Ahora sólo queda tomar la muestra del nivel actual, restar ese valor al valor mínimo, luego multiplicar por 24 y dividir por delta N.
El resultado será la cantidad de LEDs que deben encender.
« Última modificación: 20 de Noviembre de 2018, 11:03:00 por Robert76 »

Desconectado manuel gómez

  • PIC16
  • ***
  • Mensajes: 109
Re:Nivel para líquidos.
« Respuesta #7 en: 20 de Noviembre de 2018, 11:08:27 »
Buenas tardes, veo que disponen de soluciones, y que yo no sabría realizar, se que el foro está para compartir y aprender, pero en esta ocasión necesito saber si pueden pasarme un ejemplo. Luego lo modificaría a mis necesidades.

¿Podría ser? por favor...

Muchas gracias

Desconectado lucegiar2005

  • PIC18
  • ****
  • Mensajes: 446
Re:Nivel para líquidos.
« Respuesta #8 en: 20 de Noviembre de 2018, 12:47:33 »
No tengo instalado los programas necesarios, ni conosco que versión de Flowcode utilizás, pero basicamente es al iniciar tras un reset leo un pulsador, si es uno guardo el valor analógico en "minimo" (menor nivel de agua), continua leyendo al segundo pulsador y si es uno guarda el valor en "maximo" que pasa a ser el nivel superior. Con estos dos valores determino su diferencia y divido a esta en 24 (con lo que siempre tendré escala de 24 leds independiente de valores en los extremos. Ya he determinado la diferencia que corresponde a cada led y con la división de la ventana de extremos por la correspondiente a la entre leds determino el led que prendo.
- Santiago -

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3434
Re:Nivel para líquidos.
« Respuesta #9 en: 20 de Noviembre de 2018, 13:42:08 »
Pero al  tener tanques de distinta altura los niveles maximo  y minimo variaran al tener  distnta presion en su respuesta
Es decir los valores que dara el sensor de presion seran distintos tanto para el valor maximo y minimo segun  sea la altura sobre la que sea aplique.
Vamos es mi humilde opinion.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3434
Re:Nivel para líquidos.
« Respuesta #10 en: 20 de Noviembre de 2018, 13:49:09 »
Una vez obtenido el margen entre máximo-minimo, llamemosle (delta N).

El margen maximo -minimo no sera igual nunca,  salvo que las alturas de los depositos fueran iguales. Creo que eso  solo sirve si los sensores fueran micro-interruptores.

Desconectado lucegiar2005

  • PIC18
  • ****
  • Mensajes: 446
Re:Nivel para líquidos.
« Respuesta #11 en: 20 de Noviembre de 2018, 16:14:00 »
ciertamente serán distintos para diferentes tanque y densidades. por eso se toma al instalar o en un reset el mínimo y máximo. Ahora supongamos una máxima que da una presión máx de 80% (unos 4 volts) se divide en 24 y es el valor de la diferencia entre LEDs, si se instala el otro tanque donde el máx sea 70% (3,5 volts) ahora dividiendo este valor cambiará el valor la diferencia entre LEDs acorde a la nueva situación. Sólo habrá que tomar 1 lectura del maximo cuando lo encendemos. Siempre la escala será de 24 puntos para cualquier recipiente.
- Santiago -

Desconectado Fer_TACA

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3434
Re:Nivel para líquidos.
« Respuesta #12 en: 20 de Noviembre de 2018, 17:26:13 »
ciertamente serán distintos para diferentes tanque y densidades. por eso se toma al instalar o en un reset el mínimo y máximo. Ahora supongamos una máxima que da una presión máx de 80% (unos 4 volts) se divide en 24 y es el valor de la diferencia entre LEDs, si se instala el otro tanque donde el máx sea 70% (3,5 volts) ahora dividiendo este valor cambiará el valor la diferencia entre LEDs acorde a la nueva situación. Sólo habrá que tomar 1 lectura del maximo cuando lo encendemos. Siempre la escala será de 24 puntos para cualquier recipiente.

Cierto, pero  al hacer las comparaciones se tienen que modificar igualmente cada uno de los valores.
Salvo que en las comparaciones en vez de realizar las mismas sober unos numeros fijos se realice sobre los multiplos de la diferencia entre leds.
Es decir, por ejemplo para el 80% la comparacion para el primer led seria 4/24, para el  segundo (4/24)*2, el  tercero (4/24)*3, y asi sucesivamente hasta los 24.
De hecho, despues  de leer el maximo,  las  comparaciones podian  ser una cosa a si:

Primer led: valor_leido > valor_max/24 siendo valor_leido el valor actual de la lectura de la presion.
Segundo led: valor_leido > (valor_max/24)*2
Tercer led: valor_leido > (valor_max/24)*3
.......................
Ultimo led: valor_leido > (valor_max/24)*24

Resumiendo no hacer las comparaciones sobre un  valor fijo  que hallamos calculado,  sino mas  bien sobre  la  formula de calculo  directamente.  No se si me he explicado.
« Última modificación: 20 de Noviembre de 2018, 17:57:20 por Fer_TACA »

Desconectado lucegiar2005

  • PIC18
  • ****
  • Mensajes: 446
Re:Nivel para líquidos.
« Respuesta #13 en: 20 de Noviembre de 2018, 19:29:22 »
El valor de la diferencia entre leds  (máximo - mínimo)/24 se puede guardar en un registro, así solo queda dividir el valor leído en el analógico por ese registro, 0,17 aprox. para 4, y determina el led que debe encender, ejemplo: se lee 3 volts, 3 / 0,17 = 17.6, se enciende el led 18. Al menos lo pienso así.
- Santiago -

Desconectado lucegiar2005

  • PIC18
  • ****
  • Mensajes: 446
Re:Nivel para líquidos.
« Respuesta #14 en: 20 de Noviembre de 2018, 22:14:46 »
Le falta mucho pero espero que pueda ser de ayuda. Está en Flowcode 5

- Santiago -


 

anything