初期使用笔记
注意事项:
- HX711供电电压要提供一个稳定的电压,推荐使用稳压芯片输出的3.3V,(不要用手机充电头直接供电)
- HX711数据输出时间典型值为10Hz(100ms输出一次)。读取数据时,不要采用定时方式读取,数据可能没有准备好,去读取就需要等待延时。会造成间断性数据读取错误的问题;
- 采用查询方式读取,读取完一次,开启下一次读取之后,采用查询DOUT为低电平作为读取的起始信号。
- PD_SCK保持低电平时模块才开始采集工作。
使用原理:
- 应变片差分电压转换增益值(HX711测量值) 记作 x
- 作用在传感器的实际物体重量(实际值) 记作 y
测量值x,被测重量y,满足一次函数,
- 空载时,获取测量值,重量及为0 ,得数据
- 负载重量 时,获取测量值 ,得数据
所以得,
使用时,得到测量值 ,带入公式就可得到实际重量
主函数
while(1){int measu = ReadCount();if(measu>0){cnt++;adc_value = measu;//采集成功}//其他程序}
读取一次数据
#define ADSK_0 SCK_GPIO_Port->BRR = SCK_Pin
#define ADSK_1 SCK_GPIO_Port->BSRR = SCK_Pin
#define ADDO (DT_GPIO_Port->IDR&DT_Pin)int ReadCount(void)//参考HX711芯片手册
{uint32_t Count = 0;if(ADDO){return -1;//数据没有准备好,退出去干其他事}for (uint8_t i=0; i<24; i++){ADSK_1;delay_us(1);ADSK_0;delay_us(1);Count=Count<<1;//变量左移一位,右侧补零if(ADDO) Count++;delay_us(1);}for(uint8_t i=0; i<1; i++)//启动下一次转换的信号{ADSK_1;delay_us(1);ADSK_0;delay_us(1);}//Count=Count^0x800000;//return(Count);
}