TODOPIC

Microcontroladores PIC => - Flowcode - => Mensaje iniciado por: manuel gómez en 18 de Noviembre de 2018, 05:29:18

Título: Nivel para líquidos.
Publicado por: manuel gómez 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...
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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. 
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez 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.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 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.
Título: Re:Nivel para líquidos.
Publicado por: Robert76 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.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez 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
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 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.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 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.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 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í.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 20 de Noviembre de 2018, 22:14:46
Le falta mucho pero espero que pueda ser de ayuda. Está en Flowcode 5

Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 22 de Noviembre de 2018, 13:32:23
Como ayuda si le va a servir.
Ahora solo tendría que añadir y/o cambiar algunas cosas. Por ejemplo según esta el máximo y mínimo se actualizarían bien al inicio de dar tensión al programa o después de un reset del micro, pero hay que partir con el deposito vacío y llenarlo hasta el máximo (salvo que se conozcan los valores iniciales).

¿Pero que pasa si estando el tanque a la mitad de la capacidad y se pierde la alimentación y/o se produce un reset?. Los valores iniciales habría que volver a introducirlos teniendo que vaciar el deposito y empezar de nuevo el proceso anterior.

Por tanto si dispone de algún pin adicional mas, lo utilizaría como entrada para detectar si se va a calibrar el proceso o no. La primera vez se programan el mínimo y el máximo y yo los guardaría en unas posiciones de la memoria EEprom de forma que si detecta que es la primera vez (con la entrada de calibración activa, de forma manual) los valores se guardan y si es por una falta de alimentación o reset al no activarse de forma manual el bit de calibración, se tomarían los valores guardados y listo.

Con esto ya tiene para ir practicando.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 23 de Noviembre de 2018, 08:06:38
Si, hay que, como dije, acomodar algunas cosas, por ejemplo antes de tomar datos de maximo (minimo se puede hacer 0 y descartarlo) con el pulsador fijar un tiempo en el que se espere esa acción, así si se cortó la energía y se resetea no se pulsará el switch durante ese tiempo y saltará a la ejecución del programa manteniendo los valores anteriores. Esto dejaría el reset en todos los casos supeditados al corte de tensión sin necesidad de pulsador a tal fin. ademá se debe programar el modo de determinar el led a visualizar, en un comparativo o como se desee. Pero hay
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 14 de Enero de 2019, 13:06:01
Buenas tardes Santiago, no queriendo molestar he intentado por mi cuenta realizar el programa para el nivel de líquidos, pero sin resultados, no soy capaz y no tengo mas ideas de como hacer aquello que hace unos meses estuvimos comentando en el foro.
Mi pregunta... ¿me podrías echar una mano?


Saludos para todos....
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 14 de Enero de 2019, 16:37:32
Por mi parte también puedo ir echándote una mano pero para eso se necesitaría saber:

1º Version de flowcode que dispones
2º Tu proyecto realizado hasta el momento.
3º En que parte te has quedado y/o las dudas que encuentras.
4º Si va a ser una construccion fisica, entonces conocer de forma clara la asignacion de señales a cada una de las variables que vas a usar: pulsador, interruptor, sensor,.....

5º A ser posible un pequeño esquema eléctrico del mismo para descartar que el fallo/error no es de hardware y que sea posible corresponder el hardware con el software.


P.D.: Te respondí al tema de la activación de las resistencias de pull-up del puerto B en su tema correspondiente.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 14 de Enero de 2019, 17:05:06
Hola Fer_TACA, la verdad que poco mas de lo que presenté es lo que he podido avanzar, ya que incluso he intentado servirme de lo que publicó Santiago y no he podido llegar mas lejos.
La versión de flowcode es la 5.
Por lo demás poco puedo contar.
Se que es mucho pedir pero utilizaría cualquier Pic que me aconsejaras, por lo demas en cuanto a esquemas o diseño de la pcb no tengo problemas. Es que no manejo bien flowcode y estos temas se me hacen imposibles.

Te agradezco que me respondieras sobre las resistencias pull-.. pero ando muyliado con el trabajo y no pude agradecertelo en su moomento.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 15 de Enero de 2019, 08:24:34
Bueno, mira yo últimamente estoy trabajando con la versión 8, por tanto los ficheros que te haga no los podrías abrir con tu versión pero te mandaría la captura de pantalla de todos los bloques para que los implementases tu en tu versión. Después si necesitas que lo revisase yo si podría abrirlos y por tanto ese problema se solventaría de esa manera.

Ahora, se necesita que me adjuntes exactamente el fichero flowcode con el que hayas trabajado, independientemente si es exactamente el adjuntado por Santiago.
También como dije en el anterior es conveniente que adjuntes los dispositivos que vas a necesitar: pulsadores, sensores,... y si es en un esquemático mejor..
Y para finalizar y por no leer todo el tema entero, descartando cosas que se hayan supuesto mal pues sería conveniente, por ejemplo, que en un pequeño "Word" o similar, detallases un poco que es lo que necesitas exactamente para evitar también de ese modo el tener que estar realizando multitud de respuestas- contrarespuesta que alargarían el tema.

Pero de todas formas una cosa si hay que tener clara que una cosa es que te vaya a guiar a que consigas lo que pretendes y otra que te haga el proyecto entero. ¡¡¡ No aprenderías nunca ni a programar ni a usar el software correctamente !!!

Por este motivo es necesario antes de empezar plasmar (pensar) en un papel todo lo que voy(VAS) a necesitar incluidas las posibles causas de error/defecto que se puedan dar en el funcionamiento real(fallo de tensión, ruidos eléctricos que le puedan afectar,....) y poder desde un principio tenerlas en cuenta. Es la base de todo inicio de un proyecto.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 15 de Enero de 2019, 17:48:02
Gracias Fer_TACA, se que pido demasiado, por mi solo no soy capaz de aprender a programar, es cierto que con los ejemplos que a veces publicais me sirven de mucho por que luego puedo modificarlos, ampliarlos sustituirlos etc... ahora bien, no pretendo que me hagais el programa completo, solo necesito que me podais decir como puedo crear un nivel minimo y un nivel maximo, y que en ese espacio se puedan encender 24 leds (tambien me valdrían 12 leds) me da igual el pic que se pueda usar, lo unico que pido es me inicieis la formula.

Por supuesto si puede ser.... luego el circuito a donde tenga que aplicarlo no me es dificil.

Muchisimas gracias y perdonar si pido mucho.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 15 de Enero de 2019, 22:26:07
Ante todo el deseo de un 2019 mejor al año anterior y con muchos logros.
Pido disculpas porque no leí antes el hilo, no estoy mucho en el tema y, de hecho mañana me voy al campo unos días, no podré ayudarte por el momento. A mi regreso, y si aún es necesario intentaré hacerlo. Como dice Fermín, quien realmente creo que sacará la pelusa del durazno, lo importante es ver que has hecho para entender por donde va el equivoco si lo hubiese, y como ayúdate de modo efectivo. Espero logres tu objetivo. Un abrazo a ambos.
Nota: releyendo la descripción de lo que necesitas pregunto: ¿el nivel mínimo puede ser cero? Ello te dejaría una sola variante. Por otro lado tendrías que dejar más definido que sistema de lectura de nivel tendrás, no es lo mismo uno mecánico (y entre ellos también difieren) a un analógico, con lo que el sensor debe quedar especificado. Un abrazo
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 16 de Enero de 2019, 15:57:23
Hola Manuel,
Pues vamos a empezar: Mira la base de todo programa software es el realizarlo en pequeños modulos, subrutinas o como prefieras llamarlos. Asi de esta forma se puede ir chequeando poco a poco y se pueden encontrar los errores mas facilmente. Por lo tanto para que también puedas ir cohiendo el truquillo a lo de programar lo iremos realizando de este modo.
Independientemente de que al final se pueda modificar, depurar, cambiar, etc vamos a ir trazanndo un programa en base a los datos que has posteado por aqui.
Por tanto, el proyecto es:
Tenemos un(os) tanque(s) en el que hay que controlar su nivel(s) y se quiere visualizar su nivel(es) mediante una serie de leds, en principio 24 leds. Para ello disponemos de unos sensores de presión que me van a detectar el nivel máximo y el nivel mínimo.

A partir de aquí:
 1º Me supongo que estos sensores dan una respuesta analógica. ¿Sabes la respuesta de los mismos?. O bien si pasas el modelo podremos después afinar los ajustes  

2º En principio dado el elevado número de leds a controlar vamos a utilizar el pic18F887. Al finalizar dependiendo de como quede el proyecto se podrá ajustar a cualquier otro que sea mas adecuado.

3º Supongo que en la primera puesta en marcha estará presente un operario para realizar el proceso de calibración de los niveles máximo y mínimo. Por lo tanto vamos a necesitar una entrada digital para habilitar el proceso de calibración, en este caso RA5. Así mismo como no sabremos los valores iniciales por defecto necesitaríamos otra entrada digital, un pulsador que pondremos en RA4

4º Vamos a suponer que el nivel mínimo, según la altura no es =0. Si después si lo es ya modificaríamos el programa.

Como iremos probando el programa por bloques vamos a utilizar 3 leds como testigos, pero solo para eso. Los vamos a asignar a los pies RE0, RE1 y RE2. Los iremos cambiando según el transcurso del desarrollo.

6º Para simular los sensores de presión vamosa asignar 2 entradas analógicas, usando para simulación 2 potenciómetros, que asignaremos a nivel mínimo=RA0 y nivel máximo=RA1
 
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 16 de Enero de 2019, 16:07:04
Con los datos anteriores, puntos 1 al 6 te propongo el que intentes implementar lo siguiente:
Al inicio u bucle que nada mas empezar deteccte si esta accionado el interrruptor de calibración; si no lo está se ilumine RE0 y espere a que se pulse.
Si se pulsa se apague RE0, se ilumine RE1 y que se compruebe si se ha validado el valor mínimo del nivel pongamos a 0,5. Si  no se valida se quede esperando a validar y si se valida pues se guarda el valor en la variable "Minimo", se apague RE1 y se ilumine RE2.
A continuacion se compruebe si se ha validado el valor de nivel maxomo, pongamos por ejemplo 4,5. Si no se valida esperamos a que se valide y si se valida pues se guarda el valor en la variable "Maximo", se iluminen RE0, RE1 yRE2.
De momento nada mas.
¿puuedes ir realizandolo y lo adjuntas mientras yo lo voy realizando en mi version y te lo paso para que compruebes las diferencias.

Ánimo que no es dificil.

Esto es un ejemplo para ir implementarlo en tu proyecto aunque se tendran que hacer modificaciones y adaptaciones hasta llegar al final.

Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 16 de Enero de 2019, 17:23:58
Hola Fer_TACA agradezco el interés que os tomáis.

Los sensores de presión que se suelen utilizar ofrecen una tensión de 0 a 5V. Lógicamente 0V vaciado completamente, 5V para el llenado completo, por ello siempre he mantenido que el sensor no es importante a la hora de desarrollar este programa (programa que por supuesto yo no sé hacer)

Entiendo que se podría decir que en lugar de 0V fuera 1V y que en lugar de 5V fueran 3V, y que internamente los 24 leds pudieran dividirse entre estas 2 tensiones (1V mín. 3V máx.), pero ya digo que no tengo formación para poder iniciar este desarrollo.

Lo que comento es porque en el mercado existen indicadores de nivel que funcionan de esta manera.

Muchas gracias.

Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 16 de Enero de 2019, 17:49:16
Bueno ya me suponia lo de las salidas de los sensores,  por eso he elegido, para empezar los valores  de 0.5v y 4.5v.
Para el comienzo viene bien ya que 4.5-0.5=4 que ademas es submultiplo de 24.
Me imagino que los niveles minimos  no sera iguales en todos los tanques no seran los mismos.
 De todas formas ya tienes algo  para empezar.  Manana te  adjuntare la  primera base,  pero t e aconsejo que empezases tu a realizacion de lo que te he propuesto.  Aunque no te salga,  ¡Hazlo!  Ya lo  iremos corrigiendo  y explicando.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 16 de Enero de 2019, 18:12:15
Gracias Fer_TACA.
Los niveles mínimos casi siempre son los mismos, pueden variar en pocas ocasiones, por ello lo de contemplar también este parámetro.

Si lo crees mas oportuno se pueden utilizar solo 12 leds.


Saludos.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 16 de Enero de 2019, 18:28:00
El utilizar 12 o 24 solo va  a influir mas en la parte hardware,  al software le afecta poco.
Auntie varien poco  me supongo que el valor de los minimos no va  a serious =0
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 17 de Enero de 2019, 11:30:05
Hola Fer_TACA, el valor minimo nuca es cero, casi siempre esta entre 0.3V y 0.6V, esto es para que el depósito tenga siempre algo de agua y no perjudique a el motor bomba con el que se trabaja en dichos depósitos.

ÇSaludos
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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...……...
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez 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.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez 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.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez 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.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 19 de Enero de 2019, 18:18:29
Mañana te pondré la parte de la visualización.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez 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.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez 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?
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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?


Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez 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.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez 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?
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA 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.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 20 de Enero de 2019, 17:52:56
Si Fer_TACA, solo se utiliza un sensor, lo mismo no lo expresé bien.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 20 de Enero de 2019, 18:26:27
De momento si te parece seguimos el desarrollo con los 2 sensores y al finalizar cambiamos/modificamos todo lo que se te ocurra.

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.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 21 de Enero de 2019, 05:54:11
Si, la idea es ir llenando y al llegar al mínimo elegido memorizar este parámetro, esperar a que el depósito llegue al máximo elegido y volver a memorizar.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 21 de Enero de 2019, 13:58:37
Recién regreso y me puse a leer, todavía no a trazar el programa, y en principio se me ocurre que los parámetros de máximo y mínimo se pueden pasar desde ambos presets, los cuales contienen los valores y se leen periódicamente o al inicio del programa, esto es de fácil realización y permite que, ante un reset, el programa no necesite intervención del operador constante. Acá aplica la temporización para modificarlos al iniciar, sin lo cual pasaría automáticamente a la ejecución. Los preset se pueden calibrar para que se modifique el valor según una escala. Así la cosa los valores se cambiarían tras un reset del sistema.
Apenas pueda lo pongo en un programa.
Con esto queda para el sensor la función única de lectura para comparación del valor actual.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 21 de Enero de 2019, 14:20:51
Adjunto el fichero con el añadido de guardar los valores de calibración en la EEPROM.
De este modo al inicio del programa ante un reset o corte de alimentación sino se necesita una nueva calibración (no se activa el interruptor de calibración y por tanto  no necesitaria en este caso la presencia de ningun operador), después de 5sg (ahora, se puede modificar) automáticamente se lee el valor guardado en la EEPROM y el programa continua normalmente.

A partir de ahora, Manuel, ya podemos realizar las correcciones que estimes oportunas. De momento voy a ir cambiando la validación del máximo y mínimo con un solo pulsador.

IMPORTANTE: Recuerda que el programa esta realizado para que entiendas el proceso de realización de un proyecto, pero que este programa se puede optimizar mucho. Eso ya dependerá de ti.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 21 de Enero de 2019, 15:15:18
Gracias Fer_TACA, si..., uno de los cambios es utilizar un solo sensor, quizá para mi ese sea el mas importante. De momento y hasta que tu puedas realizar ese cambio voy a estudiar a fondo esta ultima actualización para así poder tener mas conocimiento acerca de como está desarrollado.

Saludos.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 21 de Enero de 2019, 17:16:48
Aca ya es tarde.
Esta casi cambiado. Me falta probarlo.
 Mañana lo adjunto.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 21 de Enero de 2019, 17:47:50
Gracias Fer_TACA, mañana lo vemos.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 21 de Enero de 2019, 20:14:06
Acá empecé hace un rato pero falta un montón, configuraciones y pulido en general. Veo que es medio como que ya lo tienen en el lazo, pero lo dejo como idea si sirve. Está en Flow 5 porque no he instalado otro.Un abrazo.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 22 de Enero de 2019, 04:28:39
Gracias lucegiar2005 tambien por tu aporte.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 22 de Enero de 2019, 14:51:51
Adjunto el fichero de actuación con solo una de las entradas analógicas.
Espero tus comentarios al respecto.


P.D.: Recuerda que todo lo que hace referencia al puerto E está colocado como test y si no lo vas a utilizar al final debes de borrarlo.



Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 22 de Enero de 2019, 14:53:16
Acá empecé hace un rato pero falta un montón, configuraciones y pulido en general. Veo que es medio como que ya lo tienen en el lazo, pero lo dejo como idea si sirve. Está en Flow 5 porque no he instalado otro.Un abrazo.

Gracias Santiago siempre se aprende algo de los demás. Yo también lo voy a revisar.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 22 de Enero de 2019, 17:12:59
Hola Fer_TACA, estoy viendo el ultimo archivo y creo que no se puede pedir mas, ahora solo falta llevarlo a físico y ver la realidad del funcionamiento.
Vi que que al memorizar el máximo no lucían todos los leds y he visto que en la pestaña de Visualiza_leds en el puerto C estaba marcado "Utilizar Enmascarado", lo he quitado y ya lucen todos los leds y aquí me gustaría consultarte porque en el "Variable o Valor" la cifra es 240.
 
También quería consultarte sobre algo que no tengo muy claro, y es sobre el switch calibración (PORTA_5) en la simulación si coloco la velocidad al máximo no hace falta tocarlo, ¿es así?

Se me olvidaba preguntarte si con este nuevo archivo podré usar el PIC16F882.
 
Muchas gracias.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 23 de Enero de 2019, 09:44:29
Vi que que al memorizar el máximo no lucían todos los leds y he visto que en la pestaña de Visualiza_leds en el puerto C estaba marcado "Utilizar Enmascarado", lo he quitado y ya lucen todos los leds y aquí me gustaría consultarte porque en el "Variable o Valor" la cifra es 240.

Cierto, se me olvido deshabilitar el enmascaramiento que activé para realizar pruebas.
Con respecto al valor de 240 en la variable. Es muy simple cuando seleccionas el puerto completo y en la variable pones "1" no significa que ese valor se transmita a todo el puerto, solo lo hace al primer bit, si pones "2" se encenderá el 2º bit y si colcas la variable a 255 entonces es cuando se activan los 7 bits. Asi que si sea puesto el valor de "240" en la variable es porque se van a activar los 4 bits mas altos del puerto C que se han utilizado para completar los 12 leds a usar= 8 del puerto B+4 del puerto C
Esto tenlo en cuenta porque no está muy bien explicado en el Help y Wiki de Flowcode. Como ejemplo lo siguiente:

Port B (Pins)   7       6      5     4    3   2   1   0
Value          128    64     32    16    8   4   2   1

Port B Value        Pins High
1                            B0
2                            B1
3                            B1 & B0
4                            B2
5                            B2 & B0
6                            B2 & B1
7                            B2, B1 & B0
8                            B3
9                            B3 & B0
....
254                        B7, B6, B5, B4, B3, B2 & B1
255                        B7, B6, B5, B4, B3, B2, B1 & B0 = All of port B



También quería consultarte sobre algo que no tengo muy claro, y es sobre el switch calibración (PORTA_5) en la simulación si coloco la velocidad al máximo no hace falta tocarlo, ¿es así?

Esto es simulación, a mi particularmente ese efecto no me lo hace. Hay que ver y depurar el programa funcionando en realidad. Con la simulación lo único que te aseguras es que el programa está bien estructurado y que los pasos se cumplen de acuerdo a lo pensado. Luego en físico puede haber pequeñas influencias que es preciso depurar.



Se me olvidaba preguntarte si con este nuevo archivo podré usar el PIC16F882.

Perfectamente date cuenta que ahora tienes utilizados: el puerto B completo, 4 pines del puerto C y 3 del puerto A y por tanto te quedan libres 4 pines del puerto C + 2 pines del puerto A pero si utilizas el oscilador interno y no usas la entrada de reset entonces tienes 2 pines mas del puerto A y el pin de reset(pin 1)

Cuando te hice la asignación de señales procure hacerlo con el fin de poder cambiar del 887 al 882 y de que en ambas formas todas las salidas utilizadas (12 leds) quedan en un lado del micro y las entradas (1analogica +3 digitales ) al otro lado del micro. Esto te facilitará el rutado del pcb y si además necesitas mas salidas puedes utilizar las otras 4 del puerto C que aunque están al lado de las entradas, aquellas se encuentra en el borde inferior izquierdo del micro y te sigue facilitando el rutado del mismo.


Bueno ya nos iras contando o consultando cosas nuevas.


F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 23 de Enero de 2019, 13:36:07
Hola Fer_TACA, gracias por explicarme el valor 240 de la variable.

He pasado las salidas del puerto E al puerto C y en la simulación va bien, pero al compilarlo me da Error. Se supera la capacidad disponible de la ROM.

Aunque mañana voy a realizar las pruebas físicas con el 16F887 me gustaría que me aconsejaras de otro Pic de 28 patillas que no sea muy difícil de manipular y entender el tema de los Fuses.

Saludos.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 23 de Enero de 2019, 15:22:55
Hola, mira he comprobado a compilar el fichero nº6 que adjunté ayer y a mi me funciona perfectamente. Puedes verlo en el fichero Word en negrita que también adjunto. Es el fichero que da Flowcode del resultado de la compilación. Es mas la capacidad de memoria usada es solo aproximadamente la mitad del total.

Por otra parte adjunto otro fichero, compilado perfectamente también, en este solo he borrado todos los accesos al puerto E que pusimos como testigos y he pasado el pic del 16F887 al 882 y no hay problema.

Puedes adjuntar el fichero que tu has compilado para revisarlo?

Respecto a los fuses si tienes dudas necesito que me digas exactamente cuales son.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 23 de Enero de 2019, 15:51:57
He vuelto a revisarlo y a modificar algo, pero me sigue dando error, te paso el fichero a ver si hay algo que no esté bien.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 23 de Enero de 2019, 16:00:37
A mi me compila bien.
Ver Word.

F.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 23 de Enero de 2019, 16:06:12
Ojo con el tema de los fuses si vas a pasar el programa al micro.

Actualmente tienes seleccionado un oscilador externo realizado con una Resistencia y un condensador; la velocidad del micro esta a 19260MHz y además tienes activado el Watcgdog.

C.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 23 de Enero de 2019, 16:13:34
El mismo archivo que me has reenviado lo he vuelto a compilar y sigue dando error, ¿puede ser la version de Flowcode?
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 23 de Enero de 2019, 16:15:38
Puede ser, yo también tuve una versión 6 que me daba problemas.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 23 de Enero de 2019, 16:22:28
Pruebo lo comentado y te digo.....
Gracias.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 23 de Enero de 2019, 17:10:29
Correcto Fer_TACA, he probado lo comentado y ha compilado perfectamente. Mañana hago pruebas y te comento, sobre tema de los fuses y velocidad del micro lo tengo claro.

De nuevo mil gracias, me cuesta mucho enterarme de flowcode pero con esta ayuda que me brindas empiezo a entender muchas cosas. Te agradezco infinitamente tu colaboración.

Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 23 de Enero de 2019, 17:27:11
  :mrgreen: :mrgreen: :mrgreen:
 :) :) :)
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 24 de Enero de 2019, 13:48:17
Hola Fer_TACA, ahora creo que empieza lo complicado, que es afinar el programa, por el momento no va bien, hace cosas raras, pero antes de decirte los síntomas que presenta me gustaría que revisaras el archivo y me digas si pudiera haber algún problema con los fuses.

Estoy utilizando el 16F882, velocidad 4Mhz, oscilador y reset internos.... miralo y dime si hay algo raro.


Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 24 de Enero de 2019, 18:09:07
He revisado los fuses y no veo nada que pueda estar afectando al programa.

Si veo que vas a usar el oscilador interno con salida de la frecuencia de oscilación por uno de los pines y que tienes declarado el pin 1 como digital en vez de usar dicho pin como entrada de reset. Me imagino que lo has declarado así.

Respecto al oscilador como interno de fabrica sale calibrado a 8Mhz mientras que en la configuración de la velocidad de oscilación esta a 4MHz.

Pero solo eso. Espero que me vayas comentando el funcionamiento erróneo.
¿Dónde lo estas probando sobre un pcb o una protoboard? Me supongo que tendrás colocados los condensadores de desacoplo en la alimentación y que esta será estable y sin rizado.


F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 24 de Enero de 2019, 18:53:29
Para una primera prueba lo tengo en protoboard, pero mañana haré la pcb, en cuanto a la alimentación es correcta, es la que suelo utilizar para otros montajes.

Mañana modificaré la velocidad del oscilador y comprobaré la entrada de reset.

Ya te iré diciendo lo que vaya surgiendo.

Saludos.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 25 de Enero de 2019, 08:20:19
Te comento Fer_TACA, he realizado una pequeña PCB para el montaje del nivel, por supuesto he colocado las resistencias pull_down de 10k tanto para el interruptor de calibarción como para los pulsadores de minimo y maximo. La alimentacion es de 5V totalmente limpios de impurezas y he colocado un condensador de 1uF lo mas cercano al micro.

Pues bien, inserto el pic con la velocidad programada a 8Mh y con el master clear interno y no va bien, te explico lo que hace con pruebas que he ido realizando:

. activo el interruptor de calibración
. conecto la alimentacion de los +5V
. regulo la tensión del sensor y la coloco en 1V
. pulso sobre la tecla de minimo RA3
. se enciende el led RC0
. subo la tension del sensor a 4V
. pulso sobre la tecla de maximo y solo se enciende el led RC1
. y es solo lo que hace
 
ahora bien me dio por seguir tocando y te explico:
. al pulsar nuevamente en la tecla de minimo RA3
. el led RC1 se apaga
. si pulso nuevamente en la tecla de maximo RA4
. se encienden todos los leds RC0 RC1 RC2 (el led RC3 no lo he utilizado porque me faltaron leds) y todos los de la barra del nivel
. desactivo el interruptor de calibracion RA5
. bajo el nivel de tension del sensor y sigue todo encendido
. desconecto y vuelvo a conectar la alimentacion de +5V
. y todo aparece apagado.

Esto es todo lo que hace.

He probado con cristal de 8Mhz y condensadores de 27pF, por supuesto declarandolos
He probado con master clear interno y externo colocando 4K7 a +5V

y nada, no va...

Te garantizo que la pcb está correcta, la he revisado varias veces.
Título: Re:Nivel para líquidos.
Publicado por: Robert76 en 25 de Enero de 2019, 12:06:28
No sé que modelo de PIC usas pero si hablamos de gama baja, por ejem. 16FXXXX. La velocidad que siempre usé es de 4Mhz, por encima de ese valor no tuve credibilidad de correcto funcionamiento.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 25 de Enero de 2019, 15:19:37
Hola Manuel,

Mira según lo veo la secuencia de prueba debería ser la siguiente:
Conectar la alimentación de +5V.
Activar antes de 5sg el interruptor de calibración. Si no lo pasas antes de 5sg se salta el proceso de calibración ya que se lo que va a realizar es el leer el valor de la EEPROM que estuviera almacenado, en este saco sería FF si no lo he has grabado antes nada a mano y se debe de encender el led de C0. Una vez activado el interruptor y pasar 1-2 sg. lo puedes desactivar.

Debes de mover un poco (si lo pruebas con un potenciómetro) la entrada analógica del sensor de nivel.
Accionar el pulsador de validar el valor mínimo conectado A3, el valor se guarda en el registro correspondiente y se debe de encender el led de A2.

A continuación, mueves el potenciómetro del sensor a un nivel cercano al máximo, deja algo de margen para poder realizar la prueba correctamente.

Ahora accionas el interruptor de validación del nivel máximo conectado en A4, el valor se guarda en el correspondiente registro y se debe de encender el led de C1.

IMPORTANTE: Debes bajar rápidamente el potenciómetro del sensor a 0, ya que el tanque inicialmente estará vacío. Con esto los leds de C2 y C3 deben de parpadear. Si no te da tiempo a bajar el valor, el micro va muy rápido, prueba a insertar un bloque de retraso de algún segundo justo al final de la macro de validar el máximo para que te dé tiempo a realizarlo.
A partir de ahí debes de ir subiendo lentamente el valor del potenciómetro para pasar por todos lo niveles. Al pasar el primer nivel se iluminará B7 y se apagará C3. Así hasta llegar a pasar el nivel máximo que estarán todos los leds de la columna iluminados y se apagará C2 (apagar bomba).

El siguiente paso es ir bajando el nivel lentamente y comprobando que pasas por todos los niveles y que justo al bajar del nivel mínimo parpadearán de nuevo C2 y c3.

Por otra parte, si eliges la frecuencia de 8MHz entonces en la macro de interrupción del TMR0 que va a contar segundos debes de aumentar el valor de la comparación ya que al ir al doble de velocidad se tiene menos tiempo para actuar sobre el interruptor de calibración. Puedes poner el valor a 30.

Otra cosa que puedes hacer es aumentar un poco los valores de los retrasos que hay después de la comprobación de activación de cada uno de los pulsadores. Por ejemplo = 50milisegundos.

F..
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 25 de Enero de 2019, 15:31:53
. regulo la tensión del sensor y la coloco en 1V
. pulso sobre la tecla de minimo RA3
. se enciende el led RC0

Según las conexiones del programa se debe encender A2. C0 según programa solo lude cuando ha acabado el tiempo de espera a la activación del interruptor de calibración y no se ha realizado.

T. subo la tension del sensor a 4V
. pulso sobre la tecla de maximo y solo se enciende el led RC1
. y es solo lo que hace
 

Según el programa RC1 no debe lucir nunca solo debe lucir con A2. Mínimo(A2)+máximo(C1)


ahora bien me dio por seguir tocando y te explico:
. al pulsar nuevamente en la tecla de minimo RA3
. el led RC1 se apaga
. si pulso nuevamente en la tecla de maximo RA4
. se encienden todos los leds RC0 RC1 RC2 (el led RC3 no lo he utilizado porque me faltaron leds) y todos los de la barra del nivel

Aquí ya me pierdo porque en la versión que me mandaste si aparece C3. Creo que algo de la parte física no está de acuerdo al programa.

Otra cosa si has probado con el cristal externo, ¿me imagino que cambiarias las opciones de los fuses en la parte de la oscilación al menos a "HS"?


F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 25 de Enero de 2019, 16:08:01
Hola Fer_TACA el tema de no utilizar RC3 es porque no tenia mas leds para utilizar y me pareció oportuno prescindir de este diodo al menos para las pruebas, pero por lo demás si coloqué en HS el oscilador y puse la declaración antes de poner en marcha el programa.

Hoy he dedicado todo el día a intentar de hacer funcionar este diseño pero no hay manera, necesito mucho que esto funcione.

Por el tema físico lo he revisado cien veces, tampoco es muy complejo pero tengo tantas ganas de que sea un proyecto real que ya no sé que mas ver.

Si tu tienes a bien poder probarlo en físico con cualquier pic que a ti mejor te venga te lo agradecería.   


Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 25 de Enero de 2019, 16:09:30
Intenta realizar las pruebas como te indique, añadiendo y cambiando los tiempos en los bloques que te comenté Luego me dices el resultado.
Pero hazlo paso a paso.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 25 de Enero de 2019, 16:18:49
Así lo haré, ya mañana te comento...

Gracias
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 26 de Enero de 2019, 05:36:20
He realizado un pequeño cambio en el programa y te puedo decir que funciona casi perfectamente, puedo ajustar el minimo y el maximo y cuando vario la tension del sensor los leds de visualizacion lo hacen perfectamente, pero digo "casi" porque el unico problema que tiene ahora es que no guarda la calibración, osea, siempre que se vuelve a alimentar hay que realizar
una nueva calibracion. Te paso el archivo modificado a ver que te parece.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 26 de Enero de 2019, 09:03:55
Hola,
Tal como lo veo, la modificación que has realizado no influye en toda la secuencia de funcionamiento que explicaste ayer.

Y con respecto a que necesitas realizar la calibración siempre tiene lógica porque en ningún momento estas guardando el valor en la EEPROM. Una vez que el circuito esté calibrado, quita la tensión, después de esperar unos segundos vuelve a darla y no actives el interruptor de calibrar. Espera 5-7 segundos y comprueba a ver si el funcionamiento es el mismo que con el calibrado. Se debe haber leído el valor de la EEPROM.

Te adjunto los comentarios en la figura del Paint y el fichero modificado para que lo compruebes.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 26 de Enero de 2019, 09:26:59
Probaré este nuevo archivo que adjuntas y comentaré los resultados. Ya tendrá que ser el lunes, debido a que el grabador de Pic está en mi trabajo.

Saludos.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 28 de Enero de 2019, 12:45:24
Hola Fer_TACA, he probado el ultimo archivo que adjuntaste y la verdad que el funcionamiento de calibración tanto en el mínimo como en el máximo lo hace perfecto, ademas al bajar o subir la tensión del sensor los leds de visualización lucen perfectamente. La calibración la hago tal como me indicas pero he de decirte que no memoriza, al volver a alimentar el circuito aparecen todos los leds apagados.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 28 de Enero de 2019, 14:58:50
Hola no se porque no funciona. En simulación si guarda el valor puedes verlo en el fichero adjunto.

También he realizado un pequeño cambio y no se si puedes volver a probar.


F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 28 de Enero de 2019, 15:14:29
Mañana volveré a seguir con las pruebas con esto nuevo que subes, la verdad es que por lo demás si que funciona muy bien y que se adapta perfectamente a cualquier nivel que se ajuste.

Podrías echar un vistazo a los fuses? he estado leyendo un poco y no entiendo bien sobre este apartado; DATA EE READ PROTEC (Bit_7).
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 28 de Enero de 2019, 16:10:24
Hola,

El fuse:  DATA EE READ PROTEC (Bit_7). Se utiliza para que una vez terminado tu programa si tienes guardado algo en la EEPROM que no quieres que sea visualizado se colca en ON y queda protegida contra lectura la EEPROM.

No obstante seguiré mirando a ver porque puede ser ese efecto de que no funcione la escritura-lectura de la EEPROM en físico cuando en la simulación si parece funcionar.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 28 de Enero de 2019, 16:24:46
Gracias Fer_TACA.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 28 de Enero de 2019, 18:58:24
Hola estimados amigos. Meto un bocadillo y digo: si declaramos 2 entradas analógicas, que lean 2 preset, nos ahorramos el problema de la re calibración con esperas de tiempo de llenado y escritura de eeprom, y creo que es mucho más fácil de recalibrar si tenemos graduado los presets. Así directamente leemos los valores de ellos al iniciar y, de ser necesario en funcionamiento, corregimos el que deseamos modificar y un reset pone el nuevo valor en la ecuación. La certeza de este método está en calidad de los presets y capacidad  para actuar sobre ellos.
Apenas pueda subo algo al respecto.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 28 de Enero de 2019, 20:50:41
Gracias Fer_TACA.

No hace falta que pruebes el último fichero que adjunté. El resultado va a ser el mismo.
Ya se dónde está el problema, falta un bloque.
¡La edad no perdona!
Dentro de unà horas lo añado, pruebo y te lo adjunto.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 29 de Enero de 2019, 04:54:37
De acuerdo, espero  para poder probar esto ultimo que subas.

Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 29 de Enero de 2019, 07:44:32
Hola,
adjunto el fichero modificado.
Ahora debe de funcionar la escritura y la lectura de EEPROM.
El problema radicaba en que después de la lectura de la EEPROM no se actualizaban los valores a los que debía de actuar cada uno de los leds.

Ya me dices como fue.

F.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 29 de Enero de 2019, 07:48:04
Hola estimados amigos. Meto un bocadillo y digo: si declaramos 2 entradas analógicas, que lean 2 preset, nos ahorramos el problema de la re calibración con esperas de tiempo de llenado y escritura de eeprom, y creo que es mucho más fácil de recalibrar si tenemos graduado los presets. Así directamente leemos los valores de ellos al iniciar y, de ser necesario en funcionamiento, corregimos el que deseamos modificar y un reset pone el nuevo valor en la ecuación. La certeza de este método está en calidad de los presets y capacidad  para actuar sobre ellos.
Apenas pueda subo algo al respecto.

Santiago, siempre es bien recibida cualquier aportación. La cuestión radica en que solo se dispone de un solo sensor tanto para el valor máximo como para el valor mínimo. Además la situación del mismo dentro de los distintos tanques donde puede ir montado pueden variar tanto en altura como el diámetro de los mimos. Por tanto las presiones medidas nunca van a ser iguale, parecidas si pero nunca iguales. Con esto no se pueden establecer unos valores de preset concretos.

Si se supieran esos valores, evidentemente el desarrollo de la calibración sería muy distinta y mucho mas simple.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 29 de Enero de 2019, 08:12:05
Hola de nuevo,

Y este tiene mayor precisión a la hora de la lectura y decisión para cada paso de nivel.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 29 de Enero de 2019, 08:26:18
Fer_TACA, algo pasa, no funcionan en físico ninguno de los 2 archivos últimos que has adjuntado, sin embargo cargo el código de cualquiera de los anteriores y si funcionan.

Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 29 de Enero de 2019, 08:37:25
Raro, solo he añadido/modificado el bloque de escritura en la EEPROM.
¿En concreto que les pasa?
Ahora a cabo de salir de casa. Regreso como en una hora- hora y media. Lo reviso y comento.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 29 de Enero de 2019, 08:43:29
Pues que no hace nada, es como si no tuviera tensión, sin embargo con códigos anteriores si que va. Me acabo de dar cuenta que has colocado el Master Clear y el oscilador externo, y que tambien está activa el Watchdog Timer, lo cambio y te vuelvo a comentar
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 29 de Enero de 2019, 08:49:36
He colocado el oscilador y el master clear interno y he deshabilitado el Watchdog Timer, pero haciendo esos cambios tampoco va.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 29 de Enero de 2019, 10:02:12
Pues que no hace nada, es como si no tuviera tensión, sin embargo con códigos anteriores si que va. Me acabo de dar cuenta que has colocado el Master Clear y el oscilador externo, y que tambien está activa el Watchdog Timer, lo cambio y te vuelvo a comentar

No he cambiado nada en la configuración solo añadí un par de bloques detrás de la lectura de la EEPROM dentro del main.
No me has explicado el efecto que pasa cuando no funciona.
Te adjunto de nuevo los ficheros y dime mas o menos que le pasa.
También como tengo un monton de ficheros, mándame uno (el ultimo que te mande que funciona), y si estos no van ya hago la misma corrección en el a ver si pasa lo mismo. No tenia que haber cambio, ya que la modificación afecta solo a la parte del reinicio cunado hay un reset o se va la tensión para que se lea bien la eeprom y se realicen bien los cálculos de nivel.
La configuracion la he dejado con oscilador interno y el reset tambien.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 29 de Enero de 2019, 10:15:29
Antes de probar esto que nuevamente adjuntas te comento:
cuando digo que no hace nada, es totalmente literal, osea, no hace nada, cuando activas el interruptor de calibracion y posteriormente pulsas sobre la tecla de minimo no hay nada que encienda, ningun led funciona, es como si no estuviera alimentado con los +5V, sin embargo vuelvo a cargar cualquier código de los generado de los anteriores archivos y si que vuelven a lucir los leds, por supuesto sin guardar memoria.

Ahora en un rato vuelvo a probar y te mando lo que si me funciona.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 29 de Enero de 2019, 10:51:20
Te comento Fer_TACA, con estos ultimos archivos que has subido vuelve a funcionar, osea, puedo calibrar el mínimo y el máximo, los leds suben y bajan cuando manipulo el sensor, pero sigue sin guardar memoria.

Al al calibrar el minimo y el maximo espero unos 10 segundos antes de quitar la alimentacion, cuando vuelvo a conectar los +5V (con el interruptor de calibracion desactivado) no aparece ningun led encendido.

Tengo que decirte que los archivos estan con el oscilador externo, pero yo lo he cambiado a interno ya que es el que uso.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 29 de Enero de 2019, 11:25:05
Pues no se porque habrá sido porque lo único que he visto es que se han cambiado los fuses  :shock: :shock: :shock: :shock:

El problema radicaba en que estaba habilitada la programación en bajo nivel: "Low Voltage Program".

Respecto a que no se guarda o lee el valor de la eeprom voy a seguir investigando ya que ahora parece estar todo correctamente.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 29 de Enero de 2019, 11:42:07
Gracias Fer_TACA, la verdad que una vez que consigas que se guarden los datos quedará un indicador de nivel bastante perfecto, ya que la calibración mínimo/máximo lo hace estupendamente.

Espero a que me adjuntes novedades.

Saludos.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 29 de Enero de 2019, 11:45:55
 Mira te adjunto un nuevo fichero solo para comprobar.
He estado mirando los ejemplos que trae Flowcode de como leer y grabar la eeprom y son exactamente iguales. No se que puede pasar.
 :oops: :oops: :oops: :oops: :oops: :oops: :oops:

He añadido una secuencia de encendido de unos leds para ver que después de calibrar y quitar la tensión, al volver a darla se debe de producir la siguiente secuencia:
C0->C2->C3-> A2-> A3 con un tiempo aproximado de retardo de medio segundo entre unos y otros.

Si puedes colocar un led, aunque sea de forma provisional en A3 mejor y si no no pasa nada, no se encenderia el ultimo A3 de la secuencia.

Te repito que es solo de prueba ya que no puedo comprobarlo de forma fisica.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 29 de Enero de 2019, 12:20:11
En A3 es donde está el pulsador de minimo, por lo que creo no debería de colocarse un led, de todas forma sin este led te digo... cuando caliblars el minimo lo hace bien, pero cuando calibro el maximo los leds C2 y C3 se ponen a parpadear y tambien los ultimos leds de visualizacion, y cuando apago espero un poco y vuelvo a encender no lucen ningun led.

He eliminado A3 como salida del programa y vuelto a compilar y ahora el minimo/maximo lucen bien los leds, pero esa secuencia despues de haber calibrado no la hace.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 29 de Enero de 2019, 12:58:00
Fer_TACA tienes algún pic con el que pudieras probar en físico?

Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 29 de Enero de 2019, 13:16:48
En A3 es donde está el pulsador de minimo, por lo que creo no debería de colocarse un led, de todas forma sin este led te digo... cuando caliblars el minimo lo hace bien, pero cuando calibro el maximo los leds C2 y C3 se ponen a parpadear y tambien los ultimos leds de visualizacion, y cuando apago espero un poco y vuelvo a encender no lucen ningun led.

He eliminado A3 como salida del programa y vuelto a compilar y ahora el minimo/maximo lucen bien los leds, pero esa secuencia despues de haber calibrado no la hace.

Cierto no había caído que A3 se estaba utilizando como entrada. Si no hace esa secuencia es que la parte de la lectura no la hace o no llega a ella. Voy a seguir revisando.


Fer_TACA tienes algún pic con el que pudieras probar en físico?

No, No dispongo de ninguno


Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 29 de Enero de 2019, 13:30:39
De acuerdo, gracias....
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 29 de Enero de 2019, 13:33:47
Prueba este que encontré porque no leía la eeprom.

La secuencia que te indique se debe realizar y al final apagarse, continuando con el desarrollo normal del programa.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 29 de Enero de 2019, 15:03:31
Mañana lo pruebo y te comento. Gracias...
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 30 de Enero de 2019, 06:09:32
 :-/ :-/ :) :)

Buenos días Fer_TACA, comprobaras mi alegría solo con el inicio de este post.

Esto funciona perfectamente y guarda la memoria en el ultimo nivel que se deje el sensor. Te comento el proceso completo .... conecto alimentación activo el interruptor de calibración, memorizo el nivel mínimo y a continuación subo un poco el sensor y memorizo el nivel máximo, desactivo el interruptor de calibración, desconecto los +5V, a continuación vuelvo a alimentar sin el interruptor de calibración y aparecen todos los leds apagados, pero espero un poco y a los 10 segundos comienza la secuencia de encendido de C0, C2, C3 y A2, y al momento se encienden los leds de visualización presentando el nivel que había en el momento de apagar la alimentación.

He repetido esta acción un montón de veces y no falla, siempre funciona correctamente.

No sabes la alegría que me das con haber podido conseguir este programa, imagino que se podrá pulir, pero tal como está realiza aquello que te pedí.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 30 de Enero de 2019, 06:30:26
Me gustaría si puedes me dijeras cual era el problema de porqué no memorizaba, estoy comparando el último archivo que no iba con este ultimo que si que funciona y la verdad es que solo veo la diferencia en unos retardos.

Saludos.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 30 de Enero de 2019, 07:25:32
Hola Manuel,
Cuanto me alegro de que funcione.
Mira el problema de no memorizar es que, y no se porqué, al igual que se desconfiguraron los fuses, la configuración de la interrupción del TMR0 también se cambio. Se había colocado para contar los pulsos provenientes de un pin de entrada en vez de contar los pulsos internos del reloj. Por eso puse esa secuencia, en distintos puntos del programa para ver donde se perdía. Como me dijiste que no lucía ninguno, supuse que error estaría al principio.
Me dices que esperas 10sg y comienza la secuencia. Ese tiempo es el que se tiene para poder accionar el interruptor para calibrar después de un reset o corte de alimentación. Si no se actúa es cuando se recupera el valor guardado en la EEprom. Si te parece mucho tiempo puedes acortarlo cambiando en la macro "ContadorTiempoInicio" en valor de comparación de 30, bajándolo tendrás menos tiempo.

Te adjunto el fichero modificado sin esos "testigos" que es como debe de estar. Luego ya tu utiliza el que desees.
Pero una cosa si te aconsejo es que pierdas un poco de tiempo más y comentes y describas que hace el programa y cada bloque. De esa forma pasado un tiempo si tienes que cambiar algo, puedas recordar que es lo que hacia cada cosa.

F.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 30 de Enero de 2019, 07:29:43
Por cierto una cosa mas que se me olvidó.
Dices que el tiempo de retardo era de 10segundos. ¿el oscilador es interno y has colocado la frecuencia a 4MHz o 8MHz?
Lo digo porque los cálculos con 8MHz son de un retraso de 5segundos. Pero si la frecuencia es de 4MHz entonces si que salen los 10 segundos.

F.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 30 de Enero de 2019, 07:48:42
Otra cosa adicional:

Dentro de la lista de variables hay 2 que puedes eliminar son: LSB_xxx y MSB_xxx. No se utilizan.
Además hay otros testigos colocados en C0, C1, y A2 que se colocaron para ver el proceso de calibración. Puedes prescindir de ellos si lo estimas oportuno. De esas formas te quedan libres unos pines mas para cualquier otra función que necesites implementar.

Por otra parte es bueno que una vez finalizado y comentado el programa le digas que te cree un informe. Tendrás de forma impresa con todo detalle como es tu proyecto.


F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 30 de Enero de 2019, 08:14:15
Estupendo así lo haré, iré modificando a mis necesidades y guardaré en todo momento el funcionamiento por bloque. Decirte que el tiempo del oscilador interno está en 8Mhz.

Ahora con tiempo probaré este ultimo que adjuntas y lo puliré hasta obtener el resultado final que deseo.

Comentarte nuevamente lo agradecido que te estoy.

Muchas gracias Fer_TACA.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 30 de Enero de 2019, 10:50:41
Buenos días. Una alegría que hayan solucionado todo y logrado lo propuesto.
Fermín: solo se necesitaba un sensor, porque los valores de máximo y mínimo los toma de los variables que comenté, y los puede leer y modificar en cualquier momento, la diferencia es que no hay espera entre lectura y lectura, por ejemplo coloco el variable de máximo un 10% por debajo del voltaje y el mínimo 10% por encima de 0, solo necesitas 2 entradas analógicas que lean esos valores y los guarden, el sensor solo se usará para el valor actual de nivel. A ello se refería la idea. Por estar de vacaciones y saliendo seguido al campo no les pude colaborar, pero haré el proyecto, solo que adaptado a la placa de prueba de 18 pines que poseo, por ver si estaba en lo cierto de realizar. Un abrazo grande a ambos.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 30 de Enero de 2019, 13:25:07
Buenos días. Una alegría que hayan solucionado todo y logrado lo propuesto.
Fermín: solo se necesitaba un sensor, porque los valores de máximo y mínimo los toma de los variables que comenté, y los puede leer y modificar en cualquier momento, la diferencia es que no hay espera entre lectura y lectura, por ejemplo coloco el variable de máximo un 10% por debajo del voltaje y el mínimo 10% por encima de 0, solo necesitas 2 entradas analógicas que lean esos valores y los guarden, el sensor solo se usará para el valor actual de nivel. A ello se refería la idea. Por estar de vacaciones y saliendo seguido al campo no les pude colaborar, pero haré el proyecto, solo que adaptado a la placa de prueba de 18 pines que poseo, por ver si estaba en lo cierto de realizar. Un abrazo grande a ambos.

Gracias Santiago, espero verlo. Siempre es bueno ver las cosas desde 2 puntos de vista distintos.
Por mi parte, solo intenté hacerlo lo más simple posible, aunque quizás mas largo, y claro para que las personas que no entiendan mucho de programación.

F.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 30 de Enero de 2019, 16:13:18
Hola Fermín, Manuel. Me puse con el Flowcode 5 y salió esto que, en el Flow corre correctamente según veo. No lo he compilado aún pues no he preparado la placa de prueba, estoy buscándola ya que me la escondió la edad, jajajja, pero para ver lo que decía va como trompada. Un abrazo y veo que puedo hacer hoy.
 - Tienes que ingresar para ver archivos adjuntos -  
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 30 de Enero de 2019, 17:36:11
Este está terminado y compila. Para reingresar valores de máximo y mínimo debe pulsarse mientras esté encendido el led, lo que registrará ambos niveles a su nuevo valor. Hasta acá llego por el momento, un abrazo.

  - Tienes que ingresar para ver archivos adjuntos -  
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 30 de Enero de 2019, 18:44:38
Gracias Santiago, como dice Fer_TACA, todo apoyo es bueno, he descargado tu aporte para echar un vistazo y así poder aprender mas de ambos, hoy he seguido haciendo pruebas con lo ultimo  que adjuntó Fer_TACA y la verdad que en físico funciona muy pero que muy bien.

Saludos.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 30 de Enero de 2019, 19:27:29
Ok Manuel, este no se si funciona en placa porque, como dije, las de prueba no las tengo a mano. Están los archivos de la compilación, pero son de un 88, que no es el que estás usando y solo puse 8 niveles. Por lo demás es funcional aparentemente.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 31 de Enero de 2019, 10:49:42
Otra vez sopa. Acá te dejo en Flow 8 y Proteus 8 su simulación, Gana Alzhéimer 1 a 0 en lo de la placa, Y funciona muy bien. Creo que está lo más sencillo posible, cualquier cosa me comentas y vemos. Un abrazo a ambos.



Nota: para cambiar máximo y mínimo varia los valores de los potenciómetros y pulsá el switch mientras está encendido el led, se puede tener pulsado antes que se encienda, pero no conviene mucho tiempo después de que se apague o indicará que actualice nuevamente máximo y mínimo innecesariamente, aunque no perturbará el funcionamiento más allá de releer esos valores.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 31 de Enero de 2019, 14:21:14
Una pregunta Santiago sobre lo adjuntado.

¿Qué pasa si el resultado de la resta entre el valor actual-mínimo y dividido por la escala da como resultado un número mayor de 8?

Lo digo porque desde mi punto de vista ese resultado puede ser mayor y en ese caso no entraría dentro de ninguna opción del switch-case.
¿Qué es lo que no veo?

Por lo demás, el resto lo veo bien a parte de tener que conocer con aproximación los valores máximo y mínimo para poder ser seleccionados.

F.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 31 de Enero de 2019, 16:34:43
Hola Fermín.
La respuesta es que mantendría el valor anterior, que seguramente será el de mayor alcance en la escala(8 en este caso) pues saldría de la comparación sin hacer nada. En un momento pensé en poner un led por rebase de escala pero no lo creí necesario en este caso, y el switch no me dejo poner >=9 porque no acepta esa sintaxis, además de puede colocar en el false del switch y apagarlo al pasar por los valores aceptados, con ello tendrías un indicador de valores máximos y mínimos fuera de escala. Al menos eso creo.

Nota: el switch-case da distintas acciones para varios valores definidos de una variable, si los valores de la misma no se corresponden con los estipulados sale sin realizar una acción o realizando una común al resto de valores no definidos.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 31 de Enero de 2019, 17:27:23
Acá lo implementé, indica fuera de escala si sale del rango establecido por la diferencias máximo-mínimo.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 31 de Enero de 2019, 17:28:26
Acá taaaaaaa

  - Tienes que ingresar para ver archivos adjuntos -  
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 01 de Febrero de 2019, 07:08:11
Hola Santiago,

Mira he revisado lo ultimo adjunto y he observado que el led de rebose en A7 no se ilumina hasta que el valor no es:

Valor actual+ Escala. En este caso 235.

¿Es así como lo habías pensado?

F.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 01 de Febrero de 2019, 08:14:57
Buenos días Fermín.
No he calculado en lo fino los valores, momento en que pasa a ser otro valor, pero lo pensé para que cuando indique "0" o "9 o más" se encienda el led indicando la posibilidad de error, si dejas en 0 los presets y relees el valor de la diferencia será 0 y el led encenderá pues no será del rango 1 - 8 leds, lo mismo ocurrirá si el volumen actual supera el máximo, al corresponderse con 9 o mayor, se encenderá. Eso es lo que pensé. De todos modos se puede poner un par de comparaciones y cubrir más aún esta premisa, o trabajar con integer en vez de bite, logrando mayor resolución, esto solo fue para ver si servía a Manuel, o quien sea, esta solución. Un abrazo.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 02 de Febrero de 2019, 05:52:57
Hola Fer_TACA, ayer instalé el primer nivel de líquidos en un deposito de manera provisional, para ver si funciona correctamente. La verdad es que si que va muy bien, pero veía que el led que indica siempre el máximo estaba en constante parpadeo, le añadí una demora de 400ms al inicio de "Visualiza_leds" y ese problema a quedado casi corregido.

Pero me gustaría saber si esto se puede hacer de otra manera que no fuera añadiendo esta demora.

Por otra parte, como digo el nivel va perfecto y me gustaría añadirle algo en lo que me lleve ayer un rato y no lo pude conseguí, que es que si desconecto el cable del sensor automáticamente luzca solo el primer led, supongamos que tenemos el depósito totalmente lleno y la barra de leds está totalmente encendida, y que en ese momento cortamos el cable del sensor, pues bien ahora mismo lo que hace es bajar los leds con el escalón de demora que se coloco, y yo lo que pretendo que si es por rotura del cable la indicación se encuentre en el nivel que sea este baje al momento al nivel mínimo.

Se podría hacer Fer_TACA?
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 02 de Febrero de 2019, 06:33:56
Acabo de corregir el tema de la desconexión del cable del sensor, pero si que me gustaría saber como puedo hacer que no parpadee el led que vaya indicando el máximo nivel, ya sea por el propio oleaje del interior del depósito o por movimiento de estos depósitos, ya que en ocasiones están instalados en vehículos industriales.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 02 de Febrero de 2019, 09:22:58
Hola Manuel,

ya te dije que el proyecto necesitaba pulirse. Ese efecto es claro que pase dado que si estas llenando el depósito justo cuando alcance el valor de máximo lucirá el ultimo led y cualquier pequeña fluctuación en cuanto baje de ese valor máximo volverá a provocar que el led se apague.

No sé si lo mejor será poner un retraso como has realizado o colocar una pequeña histéresis para que una vez que alcance ese valor máximo y se ilumine el led, si baja el nivel un poco no vuelva a iluminarse. Te adjunto una pequeña corrección dentro de la macro de visualización justo al inicio. No la he probado y no sé si va a funcionar. Si te funciona y ves que la histéresis es grande puedes jugar con el valor del cociente de la división de la comparación (escala/5) que es lo que he colocado.

De todas formas, ese mismo efecto te va a pasar con el resto de las comparaciones de los niveles cuando los valores se encuentren muy próximos al valor de la decisión por lo que me imagino que lo que hagas para un nivel tendrías que hacerlo para el resto.


[archivo adjunto borrado por el administrador]
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 02 de Febrero de 2019, 17:53:24
Los archivos, no se porque han sido borrados.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 03 de Febrero de 2019, 06:09:16
Gracias Fer_TACA, mañana lo probare con este cambio y ya comento, pero de todas formas quiero que sepas que este indicador de nivel que has diseñado va perfecto, incluso he probado con un sensor que solo ofrecía 1,2V al máximo de llenado y la calibración y posteriormente el funcionamiento es correcto.

Muchas gracias.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 03 de Febrero de 2019, 09:12:59
Gracias Fer_TACA, mañana lo probare con este cambio y ya comento, pero de todas formas quiero que sepas que este indicador de nivel que has diseñado va perfecto, incluso he probado con un sensor que solo ofrecía 1,2V al máximo de llenado y la calibración y posteriormente el funcionamiento es correcto.

Muchas gracias.

Claro que vale para todos, lo único que al tener menos tensión los pasos entre niveles son mas pequeños.
Se puede utilizar para cualquier sensor que de una salida de 0 a 5V.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 03 de Febrero de 2019, 17:50:25
Algunas soluciones más, no he podido ir a pescar y estoy aburrido, de niveles con visualización de errores. Como el anterior hay lecturas de 1 sensor y 2 preset, o de 1 sensor únicamente para determinar máximos y mínimos y el nivel actual. Indicación de nivel debajo o por encima de los límites, limites mal cargados. Un abrazo.

  - Tienes que ingresar para ver archivos adjuntos -  
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 04 de Febrero de 2019, 08:04:22
Gracias Santiago por el aporte.
Otra forma de hacer las cosas.

 :mrgreen: :mrgreen: :mrgreen:
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 04 de Febrero de 2019, 14:44:09
Algunas soluciones más, no he podido ir a pescar y estoy aburrido, ………………………….
  - Tienes que ingresar para ver archivos adjuntos -  

¡¡¡ Qué suerte poder estar aburrido y perderse yendo a pescar !!!

Yo cunado sea mayor también me apunto a esa vida.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 04 de Febrero de 2019, 23:24:21
 :D  :D  :D No creas, se me fueron casi 40 días de vacaciones con la jefa enferma, nada más difícil que aguantarlas así, pero el cielo sabrá recompensarme.  :D
En fin, sigo aburrido y terminé lo que empecé, lo dejo acá, solo está simulado, si alguien lo prueba en placa avise el resultado por favor.

  - Tienes que ingresar para ver archivos adjuntos -  
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 05 de Febrero de 2019, 14:51:52
Hola Santiago, quería al igual que Fer_TACA agradecerte tu aporte, en cuanto tenga algo de tiempo quiero probarlo en físico y comentaré resultados.

Saludos para ambos.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 05 de Febrero de 2019, 16:03:38
Probaste lo último que adjunté?
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 05 de Febrero de 2019, 18:17:53
Si, se me paso comentar. Va perfecto, no he tenido que me modificar nada, bastó con tu ejemplo e implantarlo en todos los niveles.

Muchas gracias Fer_TACA.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 05 de Febrero de 2019, 18:36:23
Me alegro que  funcionase.
¿Lo dejaste con la  histeresis de 5?
Ya tienes  para currar.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 05 de Febrero de 2019, 18:40:32
Pues si, ahora tengo varios circuitos que montar. Si, la histeresis la deje tal como tu la pusiste.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 05 de Febrero de 2019, 20:41:46
Hola Manuel, Fermín, un abrazo. Gracias por tu interés Manuel, y estaré a la espera de ese comentario, yo no trabajo mucho con pics de más de 18 pines y no puedo ponerlo en placa. Es solo una primera parte pendiente de las modificaciones acorde a la necesidad del uso. Saludos
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 06 de Febrero de 2019, 01:41:47
Sigo aburrido. Cambié el modo de visualizar por uno en el que se van encendiendo leds uno a uno, resolución matemática y menor cantidad de iconos. Además omite la operación si la cantidad de leds siguen siendo la misma y renueva al cambiar. Por si te sirve alguna vez.


  - Tienes que ingresar para ver archivos adjuntos -  
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 06 de Febrero de 2019, 06:47:24
Sigo aburrido. Cambié el modo de visualizar por uno en el que se van encendiendo leds uno a uno, resolución matemática y menor cantidad de iconos. Además omite la operación si la cantidad de leds siguen siendo la misma y renueva al cambiar. Por si te sirve alguna vez.

¡Que suerte tener un poco de tiempo para aburrirse! :D
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 06 de Febrero de 2019, 09:44:13
No amigo, no es suerte, sobre todo cuando estás deseoso de salir a algún lado. Lo bueno es tener un hobbie y poder defender un poco de ese tiempo.  ;-)
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 09 de Febrero de 2019, 16:07:02
Hola Fer_TACA, tal como me dijiste en su momento el programa habría que ir puliéndolo, pues bien, acabo de ver un pequeño problema y te lo quería comentar por si se te ocurre alguna otra solución.

Te explico, recuerdas la histeresis que se ha colocado?

Resulta lo siguiente;
el funcionamiento es totalmente correcto si la subida de nivel o bajada del mismo se hace gradualmente tal como es el llenado o vaciado del depósito, pero si desconectamos el cable de la señal del sensor y volvemos a conectarla hay veces que se queda encendido solo la primera linea de leds. Ahora si movemos ligeramente el nivel bien hacia arriba o hacia abajo entonces comienza a funcionar perfectamente.

De esto me he dado cuenta porque estando el deposito con agua mas o menos a la mitad tuve que desconectar el sensor y cuando volví a conectarlo este indicaba solo la primera linea encendida.

He eliminado la histeresis y ese efecto ya no lo hace,  pero entonces vuelve a parpadear el led que va indicando el máximo.

Saludos Fer_TACA.

Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 09 de Febrero de 2019, 21:51:40
............, pero si desconectamos el cable de la señal del sensor y volvemos a conectarla hay veces que se queda encendido solo la primera linea de leds. Ahora si movemos ligeramente el nivel bien hacia arriba o hacia abajo entonces comienza a funcionar perfectamente.

No entiendo  a que primera linea  de leds te  refieres.
Porque no pruebas a poner la histereis mas pequeña? Para ello debes  de hacer  el resultado de la comparacion mas pequeño,  es decir  hacer  los  divisores mas  grandes de los  5 actuales.
Mientras, por si eso no functiona, que no entiendo porque hace ese efecto, revisare el programa  para ver que se  pudiera  hacer.

F.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 09 de Febrero de 2019, 22:22:55
Si no te funciona lo de reducir el valor de la histéresis, tengo una pregunta adicional que hacerte:
¿Cuándo retiras la señal del sensor, la señal analógica de entrada es =0 ?

Si la respuesta es afirmativa y según lo que me explicas que al volver a conectarlo si se mueve ligeramente el nivel el programa vuelve a funcionar, creo que debe ser porque el micro al ir muy rápido, el convertidor A/D interno hace la lectura del nuevo valor quizás antes de que la señal se haya estabilizado.
Como con respecto al fichero que te mandé, realizaste unas modificaciones añadiendo la histéresis en todos los niveles, adjúntalo para trabajar los 2 con el mismo fichero y después en él te adjunto una pequeña modificación que pienso que puede corregir ese efecto.

F.
   
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 10 de Febrero de 2019, 05:14:20
Hola Fer_TACA, la histeresis la probé mas pequeña y sigue haciéndolo, en cuanto al retirar la señal del sensor de la entrada analógica ésta es 0, ya que tengo colocado una resistencia de 2k2 entre la entrada analógica y masa.

La linea de leds a la que me refiero es la que siempre va marcando el nivel máximo.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 10 de Febrero de 2019, 08:37:16
Manuel,

Te adjunto una pequeña modificación que detecta si la señal del sensor es =0.
Cuando se produce esa situación solo debe de quedar encendido el led de C3, igual que cuando el nivel actual es menor que el nivel mínimo. Cosa lógica porque es =0. Luego se queda en esa situación esperando a que se reciba de nuevo la señal.
Después cuando se vuelve a conectar la señal, introducimos un pequeño retraso para dar tiempo a que el valor de la señal de entrada se estabilice, se vuelve a realizar una nueva lectura y se continua con el desarrollo del programa de forma normal.

Si, se me paso comentar. Va perfecto, no he tenido que me modificar nada, bastó con tu ejemplo e implantarlo en todos los niveles.
Muchas gracias Fer_TACA.

Pero una cosa si me he dado cuenta en el fichero que has adjunto y es que no tiene la histéresis colocada en todos los niveles. Me dijiste que si la habías añadido para que no se produjeran fluctuaciones en ninguno de los niveles. Según esto ¿no me has mandado el ultimo con el que has trabajado.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 10 de Febrero de 2019, 09:05:44
Te he enviado el archivo con la histeresis que tu me enviaste como ejemplo porque es el que tengo en el ordenador de mi casa, pero en el que tengo montado si están todas las histeresis programadas en cada nivel y ese archivo lo tengo en el taller que trabajo.

Ya mañana lunes probaré esta modificación que me envías y ya te comento.

Que grabador de Pics me aconsejas? yo utilizo el PicKit2 y me gustaría tener algo mas profesional.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 10 de Febrero de 2019, 09:10:38
Pues si funciona lo que te he mandado te agradecería que me pasases el que tiene tosas las histéresis porque es el mas completo.

Respecto al grabador, el Pickit2 no es mal grabador, yo particularmente utilizo el GTP-USB+ con el software Winpic800.
https://www.winpic800.com/?page_id=455

Pero el la web puedes encontrar otros muchos igual de fiables.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 10 de Febrero de 2019, 09:13:58
En cuanto lo pruebe y vea los resultados te paso el archivo completo.

Gracias.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 10 de Febrero de 2019, 09:53:21
Fer_TACA, me he acercado un momento al taller y he implantado la modificación que has subido y no va bien, osea, si el nivel sube o baja de manera lineal si que lo hace bien, pero si pasas desde cualquier altura de nivel a 0 de manera brusca, lo que seria desconectando el cable esto hace que los leds que estén encendidos en ese momento sigan encendidos.

Lo he hecho con el simulador y ese efecto es el produce.

Te paso el archivo con todas las histeresis en cada nivel.

De todas formas mañana lo probaré en físico.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 10 de Febrero de 2019, 10:01:34
Perdona, con las prisas se me olvido añadir un bloque, el que apaga todos los leds cuando se quita la señal del sensor y solo deja C3 que es el que dice que el valor actual es mas bajo que el mínimo.

te lo adjunto corregido y perdona las molestias.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 10 de Febrero de 2019, 10:09:12
De todas formas debería de estudiar un poco el funcionamiento que quieres tener.
Fíjate que si tienes por ejemplo el tanque a la mitad, quizás fuera conveniente que se quedaran iluminados los leds que indican ese nivel (en vez de quedarse apagados) y que a la vez luzca o mejor parpadee el led de C3 que es el que dice que el valor actual es mas bajo que el mínimo.
De esa forma tienes las 2 indicaciones el nivel actual justo antes de perder la señal (sigue existiendo realmente liquido  en el deposito) y además la señal de avería.
En fin tu decides.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 11 de Febrero de 2019, 15:21:33
Hola Fer_TACA, con esta ultima modificación no va, a veces cuando ajustas el mínimo ya no deja ajustar el máximo, pero no te preocupes, he eliminado esta parte del programa y le he colocado un condensador de 1000uF 10V en la entrada de señal paralelo con el sensor y va muy bien. Creo que con esto queda resuelto. Sinceramente, funciona perfectamente. 

Saludos.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 11 de Febrero de 2019, 17:20:58
 :shock: :shock: :shock:   :shock:

Hola Fer_TACA, con esta ultima modificación no va, a veces cuando ajustas el mínimo ya no deja ajustar el máximo, pero no te preocupes, he eliminado esta parte del programa y le he colocado un condensador de 1000uF 10V en la entrada de señal paralelo con el sensor y va muy bien. Creo que con esto queda resuelto. Sinceramente, funciona perfectamente. 

Saludos.


No lo entiendo.  No se porque pasa eso con los ajustes. La parte añadida no tiene nada que ver con los ajustes. Estos se hacen solo al principio del programa y luego ya no vuelve a pasar por alli.
A no ser que el sensor se desconecte justo antes de realizar el ajuste.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 11 de Febrero de 2019, 19:00:22
Hola, buenas tardes. ¿1000 microfaradios? Huauuu, es una fuente sobrela señal, debiera tardar mucho en alcanzar el valor estable creo.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 12 de Febrero de 2019, 04:43:21
Hola Fer_TACA, referente a la parte añadida el programa siempre pasa por ahí, por eso si el ajuste mínimo es muy bajo o cero este se queda en el bucle añadido y de ahí no sale. He probado con el nivel al mínimo para poder estar seguro del funcionamiento , y es ahí donde una vez ajustado el mínimo ya no da opción a nada mas. De hecho si lo haces en el simulador verás que es así.

Muchas gracias.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 12 de Febrero de 2019, 08:02:50
Hola Fer_TACA, referente a la parte añadida el programa siempre pasa por ahí, por eso si el ajuste mínimo es muy bajo o cero este se queda en el bucle añadido y de ahí no sale. He probado con el nivel al mínimo para poder estar seguro del funcionamiento , y es ahí donde una vez ajustado el mínimo ya no da opción a nada mas. De hecho si lo haces en el simulador verás que es así.

Muchas gracias.


Esta  tarde voy a intentar  repasarlo. Lo de la deteccion de la  señal =0 esta dentro del while y una vez que sea realiza la calibracion ya no vuelve a pasar  por alli (no debe de pasar nunca). Por eso  no lo  entiendo,  no tiene  sentido.

F.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 12 de Febrero de 2019, 08:04:24
Hola, buenas tardes. ¿1000 microfaradios? Huauuu, es una fuente sobrela señal, debiera tardar mucho en alcanzar el valor estable creo.


Tambien pienso lo mismo.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 12 de Febrero de 2019, 09:10:42
Sobre el condensador de 1000uF va perfecto, esto retiene tanto en subida como en bajada y lo hace de manera perfecta, hay que tener en cuenta que en paralelo hay colocada una resistencia de 2K2, y esto hace que la descarga sea un poco mas rápido, esta resistencia está colocada para que en el caso de que el cable del sensor rompiera por algún motivo en la entrada de señal tengamos 0V. Os puedo garantizar que va a la perfección.

Fer_TACA, tengo un nuevo proyecto para consultarte, abro un nuevo hilo? es solo una pregunta.

Saludos a ambos...
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 12 de Febrero de 2019, 09:55:15
...................
Fer_TACA, tengo un nuevo proyecto para consultarte, abro un nuevo hilo? es solo una pregunta.

Saludos a ambos...

Mejor aparte para no mezclar.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 12 de Febrero de 2019, 10:48:41
Buenos días. Ok Manuel, entiendo su funcionamiento y la constante de tiempo que se construye entre el condensador y la resistencia pull down asociada al mismo, solo que me llama la atención pues en un circuito de rapida respuesta seguiría siendo enorme, solo eso.
Un abrazo a ambos.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 12 de Febrero de 2019, 13:45:15
Hola Santiago, en este caso responde muy bien, porque se necesita que la presentación del nivel no tenga oscilaciones en el led que va indicando el máximo, con esto retiene esas oscilaciones y queda muy bien.

Saludos.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 12 de Febrero de 2019, 13:48:03
Manuel,

Llevo toda la tarde simulando el proyecto y en ningún momento me ha realizado el problema que indicas. Es mas lo he simulado alguna vez paso a paso y una vez que se guarda el mínimo, siempre va a buscar el valor máximo y permite almacenarlo.
Hecho lo cual ya el programa ya no vuelve a pasar por esa zona de código, ya que se encuentra dentro de un ciclo While infinito.

He probado colocando incluso la señal a =0 y nunca, pasa por el proceso de calibración, se queda siempre en el while esperando que cambie el valor y siempre después va al nuevo valor.

No sé puede pasarte.

F.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 12 de Febrero de 2019, 13:51:04
Te adjunto un nuevo fichero
¿puedes comprobarlo?
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 12 de Febrero de 2019, 14:51:56
Gracias Fer_TACA, mañana lo pruebo físicamente y te comento.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 12 de Febrero de 2019, 18:24:47
Fer_TACA, me gustaría que hicieras una prueba con el simulador y que me dijeras si pudiera ser este el problema cuando es pasado a físico.

En el simulador coloca el cursor del potenciómetro en el centro del recorrido y calibralo como mínimo, luego pon el cursor al máximo de la derecha y memorizalo como máximo.

Ahora lo normal sería que al ir bajando el cursor hacia el mínimo los leds irían apagándose hasta llegar al centro donde fue memorizado como mínimo, pues veras que cuando llegas a esta posición aun quedan 2 o 3 leds encendidos, para que se apaguen todos tienes que bajar aún mas desde donde se calibró como mínimo.

Ademas observaras que cuando memorizas el máximo no luce ningún leds, lucerán cuando manipules un poco el potenciómetro.

Pruebalo y me dices  al menos porque lo hace así en el simulador.

Gracias.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 13 de Febrero de 2019, 04:45:47
Buenos días Fer_TACA, hay un problema probado físicamente que lo presenta con cualquier archivo de los que hemos ido probando, y es lo que mas o menos lo que indiqué ayer en el post anterior.

Te comento;

Imagina que el nivel mínimo que queremos en el depósito es justamente la mitad, pues bien, con una fuente de alimentación de 0 a 5V (las divisiones de esta fuente es de 0.01V) sustituyo al sensor para realizar las pruebas en el taller, la pongo en 2.5V y memorizo el mínimo, bien, ahora coloco la fuente de alimentación en 5V y memorizo el máximo. Pues una vez calibrada si colocas nuevamente 2,5V se quedan encendidos 4 leds y para que lleguen a apagarse tengo que bajar la señal del sensor, osea la fuente utilizada a 1,5V.

De esto no me había dado cuenta hasta hace un rato que he hecho esta prueba, pero como te decía da igual el archivo que utilices porque todos los probados dan  este síntoma.

Se me olvidaba decirte que esto lo hace también en el simulador.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 13 de Febrero de 2019, 05:08:43
Creo que he dado con problema te envío fotos a ver que opinas, veo que las variables de Valor_maximo y Valor_minimo varian, una es "UInt" y la otra es "Byte". Las he colocado las 2 en "UInt" y en el simulador ya va bien, ahora lo pruebo en físico y te comento.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 13 de Febrero de 2019, 05:23:06
Buenas de nuevo Fer_TACA lo acabo de probar en físico y ahora si que va perfecto. Tiene otro pequeño problema que solo lo hace a veces, y es que cuando memorizas el máximo el ultimo led que debe indicar el llenado completo no luce, pero si repites el ajuste hay veces que si enciende.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 13 de Febrero de 2019, 12:38:19
Creo que he dado con problema te envío fotos a ver que opinas, veo que las variables de Valor_maximo y Valor_minimo varian, una es "UInt" y la otra es "Byte". Las he colocado las 2 en "UInt" y en el simulador ya va bien, ahora lo pruebo en físico y te comento.

Esto de debe de haber producido debido a las pruebas que hemos ido realizando y que en alguna de ellas se que cambié el tipo de las variables, auque al ser los 2 numeros positivos y no muy altos no deberia de pasar. No se como lo trata el compilador.


Buenas de nuevo Fer_TACA lo acabo de probar en físico y ahora si que va perfecto. Tiene otro pequeño problema que solo lo hace a veces, y es que cuando memorizas el máximo el ultimo led que debe indicar el llenado completo no luce, pero si repites el ajuste hay veces que si enciende.

Este ultimo efecto creo que debe ser porque en las preguntas que se hacen para saber el valor de cada nivel está puesto por ejemplo:
"NivelLiquido > Nivel12"
Porque no pruebas a colocarlo de la forma siguiente:  NivelLiquido >= Nivel12". Es decir añade el signo "  =  "

Es posible que al estar el valor se encuentre muy cerca, si no supera el valor por eso no encienda el led correctamente (si no se mueve el sensor, el valor como mucho siempre sera igual al anterior). Añadiendo el signo " =" ahora si son iguales si lo detectaría y se debería eliminar ese caso que por solo se produce algunas veces.

De todas fromas te adjunto el fichero corregido.


Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 13 de Febrero de 2019, 12:51:30
Gracias Fer_TACA, lo pruebo tal como tu dices y comento los resultados.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 13 de Febrero de 2019, 13:53:57
Ahora va bien, estoy haciendo pruebas en físico y el resultado es muy bueno.

Gracias de nuevo.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 13 de Febrero de 2019, 13:56:24
Esperemos que no salga nada nuevo.
Y si sale ya vemos como depurarlo. :mrgreen:
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 13 de Febrero de 2019, 13:59:46
No te me imaginas como te lo agradezco, a salido un indicador de nivel que por ahora considero perfecto, y como tu dices si aparece algo nuevo ya se solucionará.

Por ahora va muy bien.

Saludos.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 15 de Febrero de 2019, 03:22:45
Buenos días Fer_TACA, como la mente no deja de funcionar, esta noche se me ocurrió consultarte lo siguiente;
se podría hacer un doble programa en el mismo Pic que en lugar de realizar la calibración de mínimo a máximo, que fuera de máximo a mínimo?
Por supuesto habría que utilizar uno de los pines para decir que programa queremos utilizar. Esta duda sale de que ayer fui a instalar un nivel y el depósito estaba totalmente lleno y hubo que vaciarlo para poder realizar el ajuste de mínimo a máximo.

Pero en esto no quiero robarte mucho tiempo, solo si tu ves algo sencillo.

Saludos y gracias.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 15 de Febrero de 2019, 06:47:32
Claro que sea puede y no necesitas hacer in doble programa.
Solo necesitas un pin mas de entrada. Dependiendo de su estado vas  por un camino o por otro.
Evidentemente necesitas cambiar/modificar el programa.
Pero date cuenta que si esta lleno y calibras el  maximo tambien vas a necesitar vaciar casi el deposito  para ajustar el minimo.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 15 de Febrero de 2019, 08:37:50
Si, esa es la idea. Hacer el calibrado al contrario, solo que en esta ocasión se aprovecharía el agua para cualquier operación de riego o limpieza y tener precaución de que cuando llegue al mínimo deseado realizar la calibración.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 15 de Febrero de 2019, 10:47:37
Que pin te queda libre para implementarlo?

¿A2?

Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 15 de Febrero de 2019, 10:57:41
El A1.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 15 de Febrero de 2019, 11:22:47
Dentro de un par de horas me pongo con ello.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 15 de Febrero de 2019, 12:53:54
Creo que con lo adjuntado te podría valer.
Ahora bien recuerda que si ya está funcionando el sistema y necesitas recalibrar tienes que:
1º Quitar y poner de nuevo la alimentación y seguir todo el proceso desde el inicio. Cosa no muy aconsejable o no muy elegante.
2º Y mas profesional es el utilizar el reset del equipo colocando un pulsador al pin RE3 (MCLR).

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 15 de Febrero de 2019, 13:26:49
Hola Fer_TACA, algo pasa con este archivo, lo puedo descargar pero no se puede abrir.  creo que está vacío.
Lo puedes volver a subir?
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 15 de Febrero de 2019, 13:28:20
Hecho
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 15 de Febrero de 2019, 13:30:17
Gracias.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 15 de Febrero de 2019, 13:49:33
No lo acabo de entender, lo he probado en el simulador y faltaba el interruptor sobre A1, lo he colocado y cuando hago la calibración del máximo los leds quedan apagados, luego hago la calibración del mínimo y al actuar sobre el potenciometro lo hace igual que con la calibración de mínimo a máximo.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 15 de Febrero de 2019, 14:02:09
A ver, tanto cuando haces la calibración de minimo a máximo como de máximo a minimo, SIEMPRE quedan apagados todos los leds hasta que no se produzca la calibración completa del sistema. No vale que se haga solo una calibración.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 15 de Febrero de 2019, 15:12:20
Manuel, cuando te venga bien mira a ver si puedes comprobar la versión que te adjunto.
He intentado paliar un poco ese efecto que comentabas al calibrar primero el nivel máximo.
Por otra parte, y es importante he realizado una modificación ya que los programas anteriores tenían un pequeño fallo dado que al cambiar, hace unos días, el tipo de la variable ValorMinimo, este valor podía ser mayor de 255, dos bytes, en algunos casos, solo se guardaba en la eeprom el primer byte y por tanto si alguna vez se necesitaba recuperarlo no lo iba realizar de forma correcta.

Ya me dices.

F.

Ahora tengo que salir, podré continuar en un par de horas.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 15 de Febrero de 2019, 15:23:48
De acuerdo Fer_TACA, en esta versión si hace el ajuste al contrario de mínimo a máximo, mañana lo pruebo y te comento, de todas formas y antes de probarlo en físico creo que funcionará correctamente.

Mañana te digo.....


Muchas gracias.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 15 de Febrero de 2019, 15:32:57
A este paso va a quedar un control muy profesional.

 :-/ :-/ :-/
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 15 de Febrero de 2019, 15:46:55
Si que es verdad, tengo que decirte que no me había dado cuenta de lo siguiente;

cuando memorizamos el máximo se encienden todos los leds, que deben quedarse encendidos hasta memorizar el mínimo, pues bien, si el mínimo es 0 si se apagan todos los leds, pero si el mínimo está algo por encima de 0 entonces los leds quedan todos encendidos, luego al tocar un poco sobre el cursor el efecto lo hace bien.

Esto no creo que sea importante, imagino que también deberían de apagarse todos los leds cuando el mínimo tenga cualquier valor.

De todas formas como te decía mañana lo probare en físico, esto me dado cuenta ahora haciendo pruebas sobre el simulador.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 15 de Febrero de 2019, 16:00:23
Creo que he dado con la solución... te subo imagen de los cambios que he hecho y ahora en el simulador si que va bien...

Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 16 de Febrero de 2019, 09:42:12
Hola Fer_TACA, la nueva modificación va perfecto, lo he probado esta mañana sobre el circuito y calibra perfectamente en ambos sentidos.

Saludos.
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 16 de Febrero de 2019, 16:56:53
Cuanto me alegro.
A ver si no salen mas cosas.

¿Al final veremos una foto de todo el sistema?

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 17 de Febrero de 2019, 07:44:34
Si, en cuanto lo tenga en su correspondiente PCB haré fotos, por ahora el circuito lo hice de manera artesanal y no está para mostrar, pero en cuanto me lleguen las PCB´s no dudes que subiré imágenes.
Título: Re:Nivel para líquidos.
Publicado por: lucegiar2005 en 18 de Febrero de 2019, 07:50:45
Buenos dias, ¿como andan? Me ausento un par de dias y veo 2 o 3 nuevas versiones con mejores, esto va sobre rieles. La proxima semana vuelvo al campo, tengo por seguro que ya estará modificado con un modulo para programarlo desde el teléfono,  ((:-)) ((:-))
Un abrazo.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 18 de Febrero de 2019, 09:29:41
 Buenos días, un par de fotos.... Son iguales pero con el flash hay una que no se ve muy bien, utilizo estas matrices de leds y coloco 2 lineas para cada división. La verdad es que queda muy bien.

Se ve la fuente con la que hago las pruebas ya que la división del voltaje es de 0.01V.


Saludos. 


Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 18 de Febrero de 2019, 09:37:05
No llega a verse bien, ocupan mucho espacio y he intentado bajar resolución...
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 18 de Febrero de 2019, 15:51:33
No llega a verse bien, ocupan mucho espacio y he intentado bajar resolución...

Siempre podras dejarlas en un alojamiento externo al for.

F.
Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 19 de Febrero de 2019, 15:46:31
Hola Fer_TACA, como puedo hacer eso?
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 19 de Febrero de 2019, 15:57:54
Hay muchos alojamientos  en la web,  es cuestion de mi buscar el que mas te Gusta.
Luego todo es cuestion de seguir las instrucciones para adjuntar las imagines.
Incluso creo que aqui dentro del foro hay un tema sobre ello. Voy a buscarlo.

Por ejempo: imageShack

Título: Re:Nivel para líquidos.
Publicado por: manuel gómez en 21 de Febrero de 2019, 15:53:03
Fer_TACA, no estoy muy preparado en esta forma de subir imagenes pero no quería que te quedaras sin ver alguna imagen del nivel.

El circuito esta aprovechado de los que montaba antes, en esta ocasión tuve que utilizar el 16F887, ahora estoy esperando PCBs nuevas en donde utilizaré el 16F882.
Es un doble circuito, delante utilizo las matrices de leds y detrás está la electrónica, de esta manera puedo utilizar el display a una cierts distancia colocando conectores con cinta plana.

(http://www.todopic.com.ar/foros/imgtiny/b5rxv8.jpg)
(http://www.todopic.com.ar/foros/imgtiny/k13q85.jpg)
Título: Re:Nivel para líquidos.
Publicado por: Fer_TACA en 21 de Febrero de 2019, 16:02:51
 ((:-)) ((:-)) ((:-)) ((:-)) ((:-)) ((:-))
Título: Re:Nivel para líquidos.
Publicado por: emiro99 en 09 de Marzo de 2019, 20:44:59
excelente proyecto.  ((:-))
Título: Re:Nivel para líquidos.
Publicado por: cicloide2 en 19 de Marzo de 2019, 20:22:42
Que bueno que se ve, Felicitaciones :)