2.0 KiB
2.0 KiB
HX711 模块说明
HX711是一款24位ADC(模数转换器)芯片,主要用于数字量程的应用,常用于压力传感器、应力传感器、称重传感器等数字量程应用中。
HX711常与应力传感器或其他模拟传感器组合,采集传感器的模拟电平信号,通过内置的ADC转换为数字信号输出。它可以放大微小的模拟信号,提高采集精度。在电子秤、计量设备等应用中应用广泛。
注册HX711
int mr_hx711_register(struct mr_hx711 *hx711, const char *name, int sck_pin, int dout_pin);
| 参数 | 描述 |
|---|---|
| hx711 | HX711模块 |
| name | HX711模块名 |
| sck_pin | SCK管脚 |
| dout_pin | DOUT管脚 |
设置滤波位数
滤波位数:舍弃ADC低位数据,例如24bit ADC 设置4位滤波,ADC数据低4位将恒定为0。
#define FILTER_BITS 4
mr_dev_ioctl(desc, MR_CTL_HX711_SET_FILTER_BITS, mr_make_local(int, FILTER_BITS));
自校准
自校准零点,使用前请确保输入值稳定。
mr_dev_ioctl(desc, MR_CTL_HX711_SET_SELF_CAL, MR_NULL);
读取数据
uint32_t data = 0;
mr_dev_read(desc, &data, sizeof(data));
使用示例
#define HX711_SCK_PIN 0
#define HX711_DOUT_PIN 1
#define HX711_FILTER_BITS 4
struct struct mr_hx711 hx711;
int main(void)
{
/* 注册hx711 */
mr_hx711_register(&hx711, "hx711", HX711_SCK_PIN, HX711_DOUT_PIN);
/* 打开hx711 */
int desc = mr_dev_open("hx711", MR_OFLAG_RDONLY);
if (desc < 0)
{
mr_log("HX711 error %d", desc);
return 0;
}
/* 设置滤波位数 */
mr_dev_ioctl(desc, MR_CTL_HX711_SET_FILTER_BITS, mr_make_local(int, HX711_FILTER_BITS));
/* 自校准 */
mr_dev_ioctl(desc, MR_CTL_HX711_SET_SELF_CAL, MR_NULL);
/* 读取数据 */
uint32_t data = 0;
mr_dev_read(desc, &data, sizeof(data));
}