重量 I2C Unit

Weight I2C Unit 是一款称重采集变送器单元,采用 “STM32+HX711 chip” 方案,通过 I2C 通信实现 24-bit 精度的重量测量,且不包含称重传感器(load cell sensor)。该单元能够测量重量,并且还包含多种滤波器。

支持以下产品:

WEIGHT I2C

MicroPython 应用示例

import os, sys, io
import M5
from M5 import *
from hardware import *
from unit import WEIGHT_I2CUnit
import time

i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000)
weight_i2c0 = WEIGHT_I2CUnit(i2c0)
print(weight_i2c_0.get_adc_raw)
print(weight_i2c_0.get_weight_float)
time.sleep_ms(100)

UiFlow2 应用示例

example.png

weight-i2c-demo.m5f2

class WEIGHT_I2CUnit

Constructors

class WEIGHT_I2CUnit(i2c0, 0x26)

创建一个 WEIGHT_I2CUnit 对象。

  • I2C0 是 I2C 端口。

  • 0x26 是默认 I2C 地址

UiFlow2

init_i2c_address.png

Methods

WEIGHT_I2CUnit.get_adc_raw()

获取原始 ADC 值。

UiFlow2

get_adc_raw.png

WEIGHT_I2CUnit.get_weight_float()

获取以克为单位的重量浮点值。

UiFlow2

get_weight_float.png

WEIGHT_I2CUnit.get_weight_int()

获取以克为单位的重量整数值。

UiFlow2

get_weight_int.png

WEIGHT_I2CUnit.get_weight_str()

获取以克为单位的重量字符串值。

UiFlow2

get_weight_str.png

WEIGHT_I2CUnit.set_reset_offset()

重置偏移值(去皮)。

UiFlow2

set_reset_offset.png

WEIGHT_I2CUnit.set_calibration(weight1_g, weight1_adc, weight2_g, weight2_adc)

校准 Load 传感器。

  • weight1_g:以克为单位的 Weight1。

  • weight1_adc:Weight1 的 ADC 值。

  • weight2_g:Weight2 的单位为克。

  • weight2_adc:以 ADC 值表示的 Weight2。

校准步骤:

1.Reset offset(Tare). 2.Get the raw ADC value at no-load weight, this is the Raw ADC of zero weight in 0g. 3.Put some weight on it, then get adc, this is the load weight adc value and the gram weight you put on it.

UiFlow2

set_calibration.png

WEIGHT_I2CUnit.set_lowpass_filter(Enable)

启用或禁用低通滤波器。

UiFlow2

set_lowpass_filter.png

WEIGHT_I2CUnit.get_lowpass_filter()

返回低通滤波器的状态(启用或禁用)。

UiFlow2

get_lowpass_filter.png

WEIGHT_I2CUnit.set_average_filter_level(level)

设置平均滤波器的级别。

  • level:平均滤波器的级别(0 - 50)。数值越大结果越平滑,但延迟也越高。

UiFlow2

set_average_filter_level.png

WEIGHT_I2CUnit.get_average_filter_level()

返回平均滤波器的等级。

UiFlow2

get_average_filter_level.png

WEIGHT_I2CUnit.set_ema_filter_alpha(alpha)

设置 EMA 滤波器的 alpha 值。

EMA(指数移动平均)滤波器相比平均滤波器对数据变化更敏感。

  • alpha:EMA 滤波器的 Alpha 值(0 - 99)。值越小结果越平滑,但延迟越大

UiFlow2

set_ema_filter_alpha.png

WEIGHT_I2CUnit.get_ema_filter_alpha()

返回 EMA 滤波器的 alpha 值。

UiFlow2

get_ema_filter_alpha.png

WEIGHT_I2CUnit.set_i2c_address(address)

i2c 地址可由用户更改,该地址应在 0x01 到 0x7F 之间。

  • address:地址范围(0x01 - 0x7F)。

UiFlow2

set_i2c_address.png

WEIGHT_I2CUnit.get_device_spec(info)

获取该设备的固件版本详细信息以及 I2C 地址。

  • info:(0xFE, 0xFF)

UiFlow2

get_device_spec.png