这款气压(液压\水位)模块,有哪位大佬用过请指点迷津
手头有下面这款气压模块,从某宝上购买的。据说,可以用于水位测量(商家谓之为小水位模块)。开始用商家提供的例程修改,MCU用STC8H,读取的数据一直不变,无论外加气压是多大。
后来改为,直接读取数据,于是一直都是0xffffff,源码如下:
unsigned long HX710_Read()//读取HX710
{
unsigned long count;
unsigned char i;
HX710_DT=1;
delay_ms(1);
HX710_SCK=0;
delay_ms(1);
count=0;
while(HX710_DT);
for(i=0; i<24; i++)
{
HX710_SCK=0;
delay_ms(1);
count=count<<1;
HX710_SCK=1;
delay_ms(1);
if(HX710_DT) count++;
}
return(count);
}请有用过的大神指点迷津,是气压传感器坏了,还是?
HX710 / HX711
试试这个程序
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=12349
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=12349&pid=128137
DebugLab 发表于 2025-2-18 13:43
HX710 / HX711
试试这个程序
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=12349
好了,把delay_ms(1);去掉了,数据就能变化了,真想不到。谢谢! 施加气压,数据变化了
611
xxkj2010 发表于 2025-2-18 14:03
好了,把delay_ms(1);去掉了,数据就能变化了,真想不到。谢谢!
SCK的高电平时间(T3)不能太久
Lkck8210 发表于 2025-2-18 14:36
SCK的高电平时间(T3)不能太久
商家例程用的是arduino中的内置延时函数delayMicroseconds(1);,我直接改成delay_ms(1),开始的时候有怀疑,因为从来没有用过延时这么长的时序,但认为这不是关键,所以没有改成us或ns级的。 学习一下 这模块用来 测水位,还需要进行复杂的换算,有坛友成功应用的范例吗? 之前想自己做露营热水器,折腾过一下,发现灵敏度挺高的,用水杯测试都能明显数值变化。
#include <reg52.h>
#include <stdio.h>
sfr AUXR= 0x8E; //Auxiliary RegisterT0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS0000,0000
sfr BRT = 0x9C; //S2 Baud-Rate Timer 0000,0000
sbit SDO = P1^1;
sbit SCK = P1^0;
signed int Get_TM7711_Val(void)
{
signed int Outval;
unsigned char i;
SDO=1; //非 51 类 MCU,略去此行
SCK=0;
while(SDO);
i=16;
do
{
SCK=1;
Outval<<=1;
SCK=0;
if(SDO){Outval|=0x01;}
}while(--i);
i=9;
do
{
SCK=1;
SCK=0;
}while(--i);
return(Outval);
}
void UartInit(void) //115200bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x04; //定时器时钟1T模式
BRT = 0xFD; //设置定时重载值
AUXR |= 0x01; //串口1使用独立波特率发射器为波特率发生器
AUXR |= 0x10; //启动独立波特率发射器
TI=1;
}
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 43;
j = 6;
k = 203;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
UartInit();
Delay1000ms();
printf("System on!\r\n");
while(1)
{
//Delay1000ms();
//printf("ADC Value is:%d,%X\r\n",res,res);
printf("$%d;\r\n",Get_TM7711_Val());
}
}
cnos 发表于 2025-2-21 14:55
之前想自己做露营热水器,折腾过一下,发现灵敏度挺高的,用水杯测试都能明显数值变化。
单独读取数据,这个不难
页:
[1]