Pages: [1]   Go Down
Author Topic: Proyecto pecera: duda flujo agua  (Read 3862 times)
0 Members and 1 Guest are viewing this topic.
Alicante
Offline Offline
Sr. Member
****
Karma: 2
Posts: 413
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos:
De cara al verano, por fin con tiempo, me propongo a realizar un proyecto.
Posteo aquí porque está más a la vista,luego ya me gustaría llevar este tema a su sitio(proyectos).

El proyecto es un control totalmente automático de una pecera de agua caliente.
Por ahora mi primera duda, es respecto al vaciado- llenado automático del 30% de la pecera. Ésto es cada mes.
He visto eta válvula que controla el flujo:http://technolifeandmore.blogspot.com.es/2012/05/sensor-de-flujo-de-agua.html?m=1   (sale el código en la web)

Éste es el programa de vaciado-llenado

1 mes->inicio proceso->saca 30% de agua-> agua fuera-> llena otra vez 30%-> fin proceso

Mi duda es,¿que programación habría que llevar a cabo, para ir almacenando los litros que ha succionado?
Es decir, porque cuando lleva el 30% de 100 litros(por ejemplo) debe parar de sacar agua para volver a meterla.


Gracias por su atención!
=)
Logged

Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En el ejemplo de la válvula que pones calculan el flujo de agua (Litros/hora).

http://www.seeedstudio.com/wiki/index.php?title=G1/2_Water_Flow_sensor

Con ese ejemplo y un timer puedes saber que cantidad de agua estás desalojando (Litros/hora * horas = Litros)

Cuando llegues al 30% de la capacidad de la pecera (Pecera de x litros --> Cuando llegues a x * 0.30 litros) paras la válvula.
Logged

Alicante
Offline Offline
Sr. Member
****
Karma: 2
Posts: 413
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por tu respuesta.Pero eso ya estaba pensado, el problema que tengo es interpretar en código los litros que llevo sacados.
Quote
Cuando llegues al 30% de la capacidad de la pecera (Pecera de x litros --> Cuando llegues a x * 0.30 litros) paras la válvula.
Exactamente, esto busco.
No se con que estructura de código se hace(while...do, if..)
Gracias de nuevo, y a ver si puedes ayudarme.
=)
Logged

Castellon, España
Offline Offline
Sr. Member
****
Karma: 7
Posts: 362
OR ganizando
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Realmente se pueden utilizar varias estructuras de control como el if, while, do...while o incluso for. Todo depende de como plantees la cuenta de los litros que llevas sacados y de tu estilo programando.

Te puedo de ir como lo haría yo. Lo primero no usaría interrupciones, pues va a ser un proceso totalmente controlado. Contaría los pulsos del caudalimetro y los almacenaría en una variable (sabiendo cuantos litros corresponden a cada pulso). Por ultimo compararía los pulsos contados con un valor de referencia, el que correspondería a ese 30%, y seguramente lo haría con un if (si el numero de pulsos es mayor que el numero de referencia para la bomba y termina)... aunque tambien se puede hacer con un while (mientras el numero de pulsos sea menor que el numero de referencia mantén la bomba conectada).

En cualquier caso mi consejo es que antes de lanzarte a realizar el proyecto practiques algunos ejercicios de programación.
Logged


Alicante
Offline Offline
Sr. Member
****
Karma: 2
Posts: 413
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Claro! Eso siempre.. Cuando hago algún proyecto siempre practico por separado.
Ok muchas gracias. Creo que lo haré con while. Ya iré comentando mas cosas.
Logged

COM22
Offline Offline
God Member
*****
Karma: 6
Posts: 702
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Haber que te parece, podrías añadir algún sensor de ultrasonidos para medir el nivel de la pecera así junto al flujo tendrías más precisión en la medida, o incluso solo utilizar el ultrasonidos y no tienes que ir guardando los litros que llevas que seguramente tendrías que utilizar alguna EEPROM por si se resetea no perder la cuenta.

Un saludo!
Logged


Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Como ya te he dicho, en el ejemplo del sensor, se calcula el caudal. Solo necesitas saber el tiempo que ha pasado desde que empezaste a desalojar agua para calcular cuánta agua has sacado.

Para el caudal, utiliza el ejemplo (como te han comentado, yo tampoco lo haría por interrupción). Para el tiempo la función millis(). No necesitas ningún bucle para ello, ya tienes el loop(). "If's", por supuesto, es la única manera de comparar valores (tienes que comparar el tiempo que ha pasado con el necesario para sacar el 30% del agua, este valor lo calculas tu antes con la capacidad de tu pecera).

Si suponemos que el caudal que saca la válvula es más o menos constante (esto tendrías que probarlo, aunque supongo que sí) no necesitarías calcularlo en el código, sino comprobarlo antes en otro programa y en el tuyo utilizar el valor obtenido. De esta manera el código sería muy sencillo, un primer esquema podría ser:
Code:
loop()
{
  if(Ha_pasado_un_mes())
  {
    Inicio = millis();
    Poner_en_marcha_valvula(); 
  }
  if(millis()-Inicio >= TIEMPO_EN_VACIAR_30%)
  {
    Parar_valvula();
  }
}

En principio, no es necesario ningún sensor más, ya que con la válvula puedes obtener una lectura correcta del caudal.

En definitiva, prácticamente como te ha comentado josemanu
« Last Edit: June 13, 2012, 02:41:43 am by jorgepl » Logged

Alicante
Offline Offline
Sr. Member
****
Karma: 2
Posts: 413
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Haber que te parece, podrías añadir algún sensor de ultrasonidos para medir el nivel de la pecera así junto al flujo tendrías más precisión en la medida, o incluso solo utilizar el ultrasonidos y no tienes que ir guardando los litros que llevas que seguramente tendrías que utilizar alguna EEPROM por si se resetea no perder la cuenta.

Un saludo!
Está bien pensado pero no me parece buena idea. Lo veo más profesional haciéndolo con el sensor de caudal. Gracias
Logged

Alicante
Offline Offline
Sr. Member
****
Karma: 2
Posts: 413
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Como ya te he dicho, en el ejemplo del sensor, se calcula el caudal. Solo necesitas saber el tiempo que ha pasado desde que empezaste a desalojar agua para calcular cuánta agua has sacado.

Para el caudal, utiliza el ejemplo (como te han comentado, yo tampoco lo haría por interrupción). Para el tiempo la función millis(). No necesitas ningún bucle para ello, ya tienes el loop(). "If's", por supuesto, es la única manera de comparar valores (tienes que comparar el tiempo que ha pasado con el necesario para sacar el 30% del agua, este valor lo calculas tu antes con la capacidad de tu pecera).

Si suponemos que el caudal que saca la válvula es más o menos constante (esto tendrías que probarlo, aunque supongo que sí) no necesitarías calcularlo en el código, sino comprobarlo antes en otro programa y en el tuyo utilizar el valor obtenido. De esta manera el código sería muy sencillo, un primer esquema podría ser:
Code:
loop()
{
  if(Ha_pasado_un_mes())
  {
    Inicio = millis();
    Poner_en_marcha_valvula(); 
  }
  if(millis()-Inicio >= TIEMPO_EN_VACIAR_30%)
  {
    Parar_valvula();
  }
}

En principio, no es necesario ningún sensor más, ya que con la válvula puedes obtener una lectura correcta del caudal.

En definitiva, prácticamente como te ha comentado josemanu

Perfecto. Aunque creo que no hacen falta ni millis. Todo funcionará en torno al if,es decir, hasta que no se cumpla el 30% no para y no vuelve a llenar.¿ No?
Gracias de nuevo =)
Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 735
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
yo también usaría millis(), porque en el ejemplo
http://www.seeedstudio.com/wiki/index.php?title=G1/2_Water_Flow_sensor
se calcula el flujo (litros/hora), pero necesitas ir contando los litros que se van vaciando, y para eso lo más cómodo, como indica jorgepl, creo que es ir contando el tiempo.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola.

En mi opinión yo no haría el cambio parcial por medio de caudalímetro, mejor por sensores de nivel (boyas). No sé, no lo veo claro.
Pero por ejemplo sí lo utilizaría para que me avise de que hay poco caudal en el filtro y así sé que toca limpieza.
Pero es mi opinión, jeje.

Salu2.
Uraken.
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1414
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Haber que te parece, podrías añadir algún sensor de ultrasonidos para medir el nivel de la pecera así junto al flujo tendrías más precisión en la medida, o incluso solo utilizar el ultrasonidos y no tienes que ir guardando los litros que llevas que seguramente tendrías que utilizar alguna EEPROM por si se resetea no perder la cuenta.

Un saludo!
Está bien pensado pero no me parece buena idea. Lo veo más profesional haciéndolo con el sensor de caudal. Gracias

pues yo veo mas profesional poder medir en cualquier instante el nivel de agua, a depender de un valor que ha sido medido con anterioridad y que podria corromperse o borrarse. vamos es que creo que cualquier sistema industrial vas a encontrar esta configuración. no entiendo que ves mas profesional en tu opción.
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Intentar controlar el nivel mediante caudalímetro es lo que se llama un sistema inestable. Un pequeño error o cualquier influencia externa serán acumulativos y hará que con el tiempo el nivel vaya bajando o subiendo.
Logged


Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Como dicen Sergegsx y Cheyenne, hacerlo así es un problema ya que estás midiendo indirectamente la variable.
Para hallar el volumen de agua conociendo el caudal hay que integrar, y todo lo que sea integrar tiene imprecisiones, a parte de las ya dadas por las medidas del caudalímetro y estos errores, como dice Cheyenne, son acumulativos en el tiempo.

Mucho mejor un sensor capacitivo, ultrasonidos o cualquier cosa que mida directamente la altura.
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Pages: [1]   Go Up
Jump to: