初期使用笔记
注意事项:
- 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);
}