Liquid level sensor

could you show me a quick schematic of this setup?

     ========                =======
     =Photon=                = Water
     =     D0----------------= Probe
     =     GND---------------= Probe

Something like this. If you made each of the probes come in at the same height on the bucket.

1 Like

thank you!

1 Like

Good luck with your project!

are you familiar with monitoring voltage from a 12V battery with a photon?

Not really, and you should keep that discussion on your other post.

Technically, it doesn't. Pure water is an insulator, and the conductivity varies wildly. Seeing as real life isn't perfect, it'll probably conduct though.

That said, why not use a float switch? They're cheap, easily accessible, and simply to use.

3 Likes

@Moors7 is correct about the conductivity of water. You might want to play around with your probes and a multimeter before getting too committed. You’d be surprised at how little clean water actually conducts.

1 Like

I am making the assumption that @jonmlewis is not using pure water. A float switch would probably be a better option.

You could also use one of these distance sensors to measure the height of the water from the top of the bucket. Just keep water off the sensor via some sort of rig which shouldn’t be too hard to figure out.

I don’t think the circuit provided by @nrobinson2000 is going to work; there’s no power source there so what would you be measuring? I have made a water level detector with a Photon, using a voltage divider circuit, like you have in your other post. The probes act as one of the resistors of the divider, and the actual resistor needs to be quite large, in the megohm range. I got a significant change in readings between the probes being in or out of my tap water. I just used some tinned connection wire as my probes.

@Ric You are correct. My circuit is wrong.

you could try an old spark plug mounted horizontally through the side of the tank.

could you send a link to that if you have it? This is what I have so far.

I’d also vote for the Float Switch. I’ve used Stainless Steel Float Switches that cost $5-$8.

But you can also use 2 wires connected to a Digital Pin and Ground.
The code below triggers when TAP Water reaches both wires, you would want to modify.

/*
Simple Script to monitor 2 wires instead of a float Switch for High Water Alarm   
INSTRUCTIONS:   Connect 1 wire to Ground and the other wire to Digital Pin 6.  You're Done!  Place both wires in the Container (say 1" apart).  Alarm condition when water reaches both wires.
*/

#define alarm_delay        2000    
unsigned long previousMillis;
unsigned int lastAlarm = 0;  
int Water = D6;   // 2 wire "Switch" will be connected to Ground and Digital Pin 6
int Switch = 1;   // Set to HIGH for startup (High Signal means the Switch is hanging in air- "no water".  We dont want a false alarm at system startup.

void setup() {
    pinMode(Water, INPUT_PULLUP);   // Bring the pin HIGH. The circuit will be grounded when the Switch CLOSES (when water reaches the 2-Wires) and pull D6 LOW.
    Serial.begin(9600);
}
 
void loop()  { 
    
    Switch = digitalRead(Water);
    if (Switch == 0)  { // 0 is LOW, so the circuit was grounded by the 2-Wire float switch (HIGH WATER Condition)
        unsigned long now = millis();
        if ((now - lastAlarm) > alarm_delay)  {
            Particle.publish("ALARM", "HIGHWATER"); // Water has reached the 2 wires.
            lastAlarm = now;
        }
    }
    delay(100);
}  
              

  
3 Likes
#define alarm_delay        2000    
unsigned long previousMillis;
unsigned int lastAlarm = 0;  
int Water = D6;   // 2 wire "Switch" will be connected to Ground and Digital Pin 6
int Switch = 0;   // Set to HIGH for startup (High Signal means the Switch is hanging in air- "no water".  We dont want a false alarm at system startup.

void setup() {
    pinMode(Water, INPUT_PULLUP);   // Bring the pin HIGH. The circuit will be grounded when the Switch CLOSES (when water reaches the 2-Wires) and pull D6 LOW.
    Serial.begin(9600);
}
 
void loop()  { 
    
    Switch = digitalRead(Water);
    if (Switch == 1)  { // 0 is LOW, so the circuit was grounded by the 2-Wire float switch (HIGH WATER Condition)
        unsigned long now = millis();
        if ((now - lastAlarm) > alarm_delay)  {
            Particle.publish("ALARM", "LOWWATER"); // Water has reached the 2 wires.
            lastAlarm = now;
        }
    }
    delay(100);
}

I changed your code to this and it seems to work great. I really appreciate the help!

Resistance and capacitance are both frequently used to detect liquids and are reliably used for that in the food industry. When applying a DC voltage to water however you are likely to see buildup on the sense electrodes as charged particles get attracted to them. To avoid it these resistance circuits usually use an AC signal, you can probably find a few examples online if you look hard enough.

Other methods include a load cell or liquid level eTapes both of which could tell you how much liquid is in your bucket. As could a pressure sensor…

As mentioned above there are also distance sensors both sonic and optical you could probably employ as well if you were feeling adventurous.

The simplest answer is always going to be a float however

You’re very welcome. I still suggest a $8 Float Switch. The Float Switch will work with the same code. Just use the “wires only” to get you started and testing. Also, these floats can be swapped from Normally Open/Closed by removing the ball and flipping it upside down on the shaft. They are extremely useful.

2 Likes

I am using this sensor just to notify me when the water in a tank is low and to not allow the pump to run dry. The photon will only wake up 2 times a day and check the water level those two time. With this small duty cycle, do you think I will still have noticeable issues with corrosion?

I doubt it, consider it an anecdote.
However I would be tempted in your use case to put the float switch independent of whatever the photon does so that the pump is stopped even if the photon goes nuts. Other may have other opinions...