xxkj2010 发表于 2025-2-18 13:20:13

这款气压(液压\水位)模块,有哪位大佬用过请指点迷津

手头有下面这款气压模块,从某宝上购买的。据说,可以用于水位测量(商家谓之为小水位模块)。



开始用商家提供的例程修改,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);
}请有用过的大神指点迷津,是气压传感器坏了,还是?

DebugLab 发表于 2025-2-18 13:43:37

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


xxkj2010 发表于 2025-2-18 14:03:31

DebugLab 发表于 2025-2-18 13:43
HX710 / HX711
试试这个程序
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=12349

好了,把delay_ms(1);去掉了,数据就能变化了,真想不到。谢谢!

xxkj2010 发表于 2025-2-18 14:07:54

施加气压,数据变化了

611

Lkck8210 发表于 2025-2-18 14:36:25

xxkj2010 发表于 2025-2-18 14:03
好了,把delay_ms(1);去掉了,数据就能变化了,真想不到。谢谢!

SCK的高电平时间(T3)不能太久

xxkj2010 发表于 2025-2-18 14:45:22

Lkck8210 发表于 2025-2-18 14:36
SCK的高电平时间(T3)不能太久
商家例程用的是arduino中的内置延时函数delayMicroseconds(1);,我直接改成delay_ms(1),开始的时候有怀疑,因为从来没有用过延时这么长的时序,但认为这不是关键,所以没有改成us或ns级的。

305444337 发表于 2025-2-18 14:45:53

学习一下

xxkj2010 发表于 2025-2-21 10:39:33

这模块用来 测水位,还需要进行复杂的换算,有坛友成功应用的范例吗?

cnos 发表于 2025-2-21 14:55:17

之前想自己做露营热水器,折腾过一下,发现灵敏度挺高的,用水杯测试都能明显数值变化。


#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());
        }
}

xxkj2010 发表于 2025-2-21 16:30:36

cnos 发表于 2025-2-21 14:55
之前想自己做露营热水器,折腾过一下,发现灵敏度挺高的,用水杯测试都能明显数值变化。




单独读取数据,这个不难
页: [1]
查看完整版本: 这款气压(液压\水位)模块,有哪位大佬用过请指点迷津