Hola, buenas tardes
LLevo unos días con un proyecto sobre contadores de agua, y a las primeras me encuentro con un problema. Uno de los componentes claves, el sensor para contar los litros de agua, me está dando problemas.
Es este:
http://www.ebay.es/itm/271890571576?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649
Al parecer , al contar genera una serie de impulsos proporcionales a la cantidad de agua que le atraviesa.
El problema es que no cuenta igual dependiendo del flujo de agua. Si abro medio grifo me genera muchos impulsos. Si abro el grifo a tope genera mucho menos impulsos.
No se si es debido :
--A la velocidad de repuesta del arduino uno. Pienso que poco probable. Cuando abro el grifo
a la mitad pueden ser 10 impulsos por segundo. Estando a tope calculo unos 30 por egundo
-- El sensor pone que es de efecto hall. No se si habra algun problema de incompatibilidad con arduino, o no ofrece suficiente potencia.
-- Hay algún error en el programa
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
int subida=0;
int bajada=1;
int pulso=0;
int contador=0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
lcd.backlight();
lcd.init();
pinMode(7,INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
lcd.setCursor(0,0);
int entrada= digitalRead(7);
lcd.print("CONTADOR =");
lcd.setCursor(12,0);
lcd.print(contador);
lcd.setCursor(0,1);
lcd.print("pulso");
lcd.setCursor(8,1);
lcd.print(pulso);
lcd.setCursor(0,2);
lcd.print("bajada");
lcd.setCursor(9,2);
lcd.print(bajada);
lcd.setCursor(0,3);
lcd.print("subida");
lcd.setCursor(9,3);
lcd.print(subida);
if ((digitalRead(7)== HIGH)&& bajada==1)
{
pulso=1;
bajada=0;
subida=1;
contador++;
}
if ((digitalRead(7)==LOW)&& subida==1)
{
pulso=0;
bajada=1;
subida=0;
}
{
}
}
Es bastante sencillo. Una entrada de impulsos en la 7, y he realizado un filtro para que solo sume cuando hay un flaco ascendente.
Espero vuestros consejos