Go Down

Topic: Proyecto pecera: duda flujo agua (Read 3 times) previous topic - next topic

JRodrigo

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!

jorgepl

#6
Jun 13, 2012, 09:37 am Last Edit: Jun 13, 2012, 09:41 am by jorgepl Reason: 1
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: [Select]

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

PascuaL


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

PascuaL


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: [Select]

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 =)

curro92

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.

Go Up