HrishitDas
Published © GPL3+

WeLeMeter

Calculate weight and water level and rotate 2 servo's to do a particular function.

IntermediateFull instructions provided133
WeLeMeter

Things used in this project

Hardware components

Arduino Mega 2560
Arduino Mega 2560
×1
SparkFun Load Cell Amplifier - HX711
SparkFun Load Cell Amplifier - HX711
×1
SparkFun Load Cell
×1
SparkFun Water Level Sensor
×1
SG90 Micro-servo motor
SG90 Micro-servo motor
×2

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Solder Wire, Lead Free
Solder Wire, Lead Free
Solder Flux, Soldering
Solder Flux, Soldering
PCB Holder, Soldering Iron
PCB Holder, Soldering Iron
Multitool, Screwdriver
Multitool, Screwdriver

Story

Read more

Schematics

Sensor connection

Code

Weight_water_sensor

C/C++
#include <HX711.h>
#include <Servo.h>

Servo my_servo1; //servo for weight sensor
Servo my_servo2; //servo for water sensor

int pos = 0;

const int ini_weight = 100; //100grams weight variable
const int water_level = 100; //100 water level variable

int x = 1; //change according to calibration
int y = 0; //change according to calibration

// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;

// water level sensor circuit wiring
const int sensorPower = 7;
const int sensorPin = A0;

int val = 0;

HX711 scale;

int calculate_weight();
int calculate_water();

void setup() {
  Serial.begin(57600);

  my_servo1.attach(8);
  my_servo2.attach(9);

  pinMode(sensorPower, OUTPUT);
  digitalWrite(sensorPower, LOW);

  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
}

void loop() {
  int weight = calculate_weight();
  Serial.print("Weight: ");
  Serial.print(weight);
  Serial.println(" g");
  if (weight >= ini_weight) {
    my_servo1.write(90);
  }
  else if (weight < ini_weight) {
    my_servo1.write(pos);
  }

  int level = calculate_water();
  Serial.print("Water level: ");
  Serial.print(level);
  if (level >= water_level) {
    my_servo2.write(90);
  }
  else if (level < water_level) {
    my_servo2.write(pos);
  }
}

int calculate_weight() {
  if (scale.is_ready()) {
    long reading = scale.read() * x;
    float grams = (float)reading / 100000.0;
    grams = grams - y;
    return grams;
  } else {
    Serial.println("HX711 not found.");
  }
  delay(1000);
}

int calculate_water() {
  digitalWrite(sensorPower, HIGH);
  delay(10);
  val = analogRead(sensorPin);
  digitalWrite(sensorPower, LOW);
  return val;
  delay(1000);
}

Credits

HrishitDas
1 project • 0 followers

Comments