找回密码
 立即注册
查看: 723|回复: 9

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:531
  • 最近打卡:2025-05-12 07:52:19

109

主题

1944

回帖

5392

积分

论坛元老

积分
5392
发表于 2025-2-18 13:20:13 | 显示全部楼层 |阅读模式
手头有下面这款气压模块,从某宝上购买的。据说,可以用于水位测量(商家谓之为小水位模块)。

001.jpg

开始用商家提供的例程修改,MCU用STC8H,读取的数据一直不变,无论外加气压是多大。
小水位模块.rar (235.38 KB, 下载次数: 12)



后来改为,直接读取数据,于是一直都是0xffffff,源码如下:

  1. unsigned long HX710_Read()  //读取HX710
  2. {
  3.     unsigned long count;
  4.     unsigned char i;
  5.     HX710_DT=1;
  6.     delay_ms(1);
  7.     HX710_SCK=0;
  8.     delay_ms(1);
  9.     count=0;
  10.     while(HX710_DT);
  11.     for(i=0; i<24; i++)
  12.     {
  13.         HX710_SCK=0;
  14.         delay_ms(1);
  15.         count=count<<1;
  16.         HX710_SCK=1;
  17.         delay_ms(1);
  18.         if(HX710_DT)      count++;
  19.     }
  20.     return(count);
  21. }
复制代码
请有用过的大神指点迷津,是气压传感器坏了,还是?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:434
  • 最近打卡:2025-05-12 09:01:08
已绑定手机

77

主题

4900

回帖

8564

积分

超级版主

DebugLab

积分
8564
发表于 2025-2-18 13:43:37 | 显示全部楼层
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:531
  • 最近打卡:2025-05-12 07:52:19

109

主题

1944

回帖

5392

积分

论坛元老

积分
5392
发表于 2025-2-18 14:03:31 | 显示全部楼层

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:531
  • 最近打卡:2025-05-12 07:52:19

109

主题

1944

回帖

5392

积分

论坛元老

积分
5392
发表于 2025-2-18 14:07:54 | 显示全部楼层
施加气压,数据变化了



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2025-2-18 14:36:25 | 显示全部楼层
xxkj*** 发表于 2025-2-18 14:03
好了,把delay_ms(1);去掉了,数据就能变化了,真想不到。谢谢!

SCK的高电平时间(T3)不能太久
2025-02-18_143519.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:531
  • 最近打卡:2025-05-12 07:52:19

109

主题

1944

回帖

5392

积分

论坛元老

积分
5392
发表于 2025-2-18 14:45:22 | 显示全部楼层
Lkck*** 发表于 2025-2-18 14:36
SCK的高电平时间(T3)不能太久

商家例程用的是arduino中的内置延时函数delayMicroseconds(1);,我直接改成delay_ms(1),开始的时候有怀疑,因为从来没有用过延时这么长的时序,但认为这不是关键,所以没有改成us或ns级的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:170
  • 最近打卡:2025-05-12 06:26:36
已绑定手机

12

主题

191

回帖

717

积分

高级会员

积分
717
发表于 2025-2-18 14:45:53 | 显示全部楼层
学习一下
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:531
  • 最近打卡:2025-05-12 07:52:19

109

主题

1944

回帖

5392

积分

论坛元老

积分
5392
发表于 2025-2-21 10:39:33 | 显示全部楼层
这模块用来 测水位,还需要进行复杂的换算,有坛友成功应用的范例吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-05-12 13:10:17
已绑定手机

8

主题

139

回帖

1081

积分

金牌会员

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


  1. #include <reg52.h>
  2. #include <stdio.h>
  3. sfr AUXR  = 0x8E; //Auxiliary Register  T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS  0000,0000
  4. sfr BRT = 0x9C; //S2 Baud-Rate Timer                                                    0000,0000
  5. sbit SDO = P1^1;
  6. sbit SCK = P1^0;
  7. signed int Get_TM7711_Val(void)
  8. {
  9. signed int Outval;
  10. unsigned char i;
  11. SDO=1; //非 51 类 MCU,略去此行
  12. SCK=0;
  13. while(SDO);
  14. i=16;
  15. do
  16. {
  17. SCK=1;
  18. Outval<<=1;
  19. SCK=0;
  20. if(SDO){Outval|=0x01;}
  21. }while(--i);
  22. i=9;
  23. do
  24. {
  25. SCK=1;
  26. SCK=0;
  27. }while(--i);
  28. return(Outval);
  29. }
  30. void UartInit(void)                //115200bps@11.0592MHz
  31. {
  32.         PCON &= 0x7F;                //波特率不倍速
  33.         SCON = 0x50;                //8位数据,可变波特率
  34.         AUXR |= 0x04;                //定时器时钟1T模式
  35.         BRT = 0xFD;                        //设置定时重载值
  36.         AUXR |= 0x01;                //串口1使用独立波特率发射器为波特率发生器
  37.         AUXR |= 0x10;                //启动独立波特率发射器
  38.         TI=1;
  39. }
  40. void Delay1000ms()                //@11.0592MHz
  41. {
  42.         unsigned char i, j, k;
  43.         i = 43;
  44.         j = 6;
  45.         k = 203;
  46.         do
  47.         {
  48.                 do
  49.                 {
  50.                         while (--k);
  51.                 } while (--j);
  52.         } while (--i);
  53. }
  54. void main()
  55. {
  56.         UartInit();
  57.         Delay1000ms();
  58.         printf("System on!\r\n");
  59.         while(1)
  60.         {
  61.                 //Delay1000ms();
  62.                 //printf("ADC Value is:%d,%X\r\n",res,res);
  63.                 printf("$%d;\r\n",Get_TM7711_Val());
  64.         }
  65. }
复制代码


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:531
  • 最近打卡:2025-05-12 07:52:19

109

主题

1944

回帖

5392

积分

论坛元老

积分
5392
发表于 2025-2-21 16:30:36 | 显示全部楼层
cn*** 发表于 2025-2-21 14:55
之前想自己做露营热水器,折腾过一下,发现灵敏度挺高的,用水杯测试都能明显数值变化。

单独读取数据,这个不难
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-13 00:17 , Processed in 0.479803 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表