Skip to main content

Meadow.Foundation.Sensors.LoadCell.Hx711

Hx711
StatusStatus badge: working
Source codeGitHub
Datasheet(s)GitHub
NuGet packageNuGet Gallery for Meadow.Foundation.Sensors.LoadCell.Hx711

Code Example

Hx711 loadSensor;

publicint CalibrationFactor {get;set;}=0;//9834945 - 8458935; // TODO: change this based on your scale (using the method provided below)
publicdouble CalibrationWeight {get;set;}=1.6;// TODO: enter the known-weight (in units below) you used in calibration

publicoverrideasyncTaskInitialize()
{
Resolver.Log.Info("Initialize...");

loadSensor =newHx711(Device.Pins.D04, Device.Pins.D03);

if(CalibrationFactor ==0)
{
GetAndDisplayCalibrationUnits(loadSensor);
}
else
{// wait for the ADC to settle
await Task.Delay(500);

// Set the current load to be zero
loadSensor.SetCalibrationFactor(CalibrationFactor,newMass(CalibrationWeight, Mass.UnitType.Grams));
loadSensor.Tare();
}

loadSensor.Updated +=(sender, values)=> Resolver.Log.Info($"Mass is now returned {values.New.Grams:N2}g");
}

publicoverrideTaskRun()
{
loadSensor.StartUpdating(TimeSpan.FromSeconds(2));

return Task.CompletedTask;
}

publicvoidGetAndDisplayCalibrationUnits(Hx711 sensor)
{// first notify the user we're starting
Resolver.Log.Info($"Beginning Calibration. First we'll tare (set a zero).");
Resolver.Log.Info($"Make sure scale bed is clear. Next step in 5 seconds...");
Thread.Sleep(5000);
sensor.Tare();
Resolver.Log.Info($"Place a known weight on the scale. Next step in 5 seconds...");
Thread.Sleep(5000);
var factor = sensor.CalculateCalibrationFactor();
Resolver.Log.Info($"Your scale's Calibration Factor is: {factor}. Enter this into the code for future use.");
}

Sample project(s) available on GitHub

close