1.由于世面上面普及HX711,单HX720有更大的优势!

2.驱动源码

//管脚定义
#define HX720_RCC   RCC_APB2Periph_GPIOB     //HX720时钟引脚
#define HX720CLK_Port   GPIOB           //HX720时钟引脚
#define HX720CLK_Pin    GPIO_Pin_15         //HX720时钟引脚
#define HX720_RCC   RCC_APB2Periph_GPIOB    //HX720数据引脚
#define HX720Read_Port  GPIOB           //HX720数据引脚
#define HX720Read_Pin   GPIO_Pin_14         //HX720数据引脚
//定义
#define HX720_CLK_H()   (GPIO_SetBits(HX720CLK_Port,HX720CLK_Pin)) //时钟线置高电平
#define HX720_CLK_L()   (GPIO_ResetBits(HX720CLK_Port,HX720CLK_Pin))//时钟线置低电平
#define GetDataPinState()  (GPIO_ReadInputDataBit(HX720Read_Port,HX720Read_Pin))//获取引脚状态//管脚初始化
// 称引脚初始化
void BalancePortInit(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(HX720_RCC, ENABLE);GPIO_InitStructure.GPIO_Pin = HX720CLK_Pin; //时钟             GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(HX720CLK_Port, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = HX720Read_Pin;//数据GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(HX720Read_Port, &GPIO_InitStructure);
}//机器周期延时 __NOP(); 1个us
void DelayHX720us()
{__NOP();__NOP();
}//获取HX720数据
uint32_t GetHX720Data(void)
{ volatile uint32_t Count= 0;uint8_t i;HX720_CLK_L(); //使能AD(SCK置低)Count=0;while(GetDataPinState()); //AD转换未结束则等待。否则开始读取for (i=0;i<24;i++){HX720_CLK_H();  //SCK 置高(脉冲)//DelayHX720us();Count=Count<<1; //下降沿来时变量Count左移一位,右侧补HX720_CLK_L();  //PD_SCK 置低//DelayHX720us();if(GetDataPinState()) Count++;//最右侧补1}//测量128增益 10HZHX720_CLK_H();Count = Count^0x800000;//第25个脉冲下降沿来时,转换数据 异或//Count = Count & 0x7FFFFF; //恢复//DelayHX720us();HX720_CLK_L();//DelayHX720us();//测量VBAT-VOUTHX720_CLK_H();//DelayHX720us();HX720_CLK_L();//DelayHX720us();//128增益 40HZ    HX720_CLK_H();//DelayHX720us();HX720_CLK_L();//DelayHX720us();return(Count);//输出的数据是带符号的输出,处理数据的时候需要把符号去掉
}

3.数据分析

  • 数据手册写 输出数据在0x800000 - 7FFFFF之间。

  • 这个数据大家很迷惑估计,上面说的是 是以二进制补码的方式输出的
  • 0x800000 BIT=‭1000 0000 0000 0000 0000 0000‬  (24位)
  • 0x7FFFFF BIT=‭‭011111111111111111111111‬  (24位)
  • 那下面看下 补码的定义:在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理,符号位都是用0表示“正”,用1表示“负”
  • 这样就不难理解了,0x800000 最高位代表负数,这样 会出现1111 1111 1111 1111 1111 1111 - 7FFFFF 到 + 7FFFFF,这就出现一个问题 最小不是 0X800000,而是 带符号的 FFFFFF。这是我对数据的理解
  • 有个Blog也有讲数据分析的  传送门 可以看一下
  • 这样数据如果 异或  ^0x800000   (相同为0 相异为1)  这样数据就会从 0x000000 ---  FFFFFF;
  • 数据这样分析就应该理解了

4.数据的处理

  • 由于 数据 ^0x800000,这样处理数据的时候最高位 就要小心处理,避免过零点,如果 INP<INN,这样数据是相反的,具体

  • 因此想数据直接转换为 采集的电压就必须注意这一点,如果 INP > INN 简单的去掉符号位,保留有效位就得到实际值了;反之就要去掉符号位,拿7FFFFF去减有效位,得到的是实际值

5.数据的计算方式

  • 看手册是增益128  手册分辨率24bit,实际无噪声是 16bit,不过算的话还是 24bit。如果采集的数据小的话 这样可以用 16bi以下的数据就可以了,数据会准确很多吧
  • 理论精度:
  • 计算方式:
  • 例 :INP - INN = 2Mv  (Vref单位也是Mv)

6.测量的数据转化为温度,误差还是可以接受的

HX720/HX711 数据采集及处理姿态解析(公式及源码)相关推荐

  1. 基于OpenPose和Human segmentation的游戏人物解析(附源码)

    基于OpenPose和Human segmentation的游戏人物解析(附源码) --基于PaddleHub的真人街霸游戏 Github AI studio 街霸(Street Fighter)是大 ...

  2. SpringBoot各类型参数解析原理(源码)

    上次那篇我们只分析了doDispatch中的getHandler方法(获取执行链,执行链里包括当前请求URL对应的 handler 以及拦截器(Controller.method绑定关系)),今儿继续 ...

  3. php发卡8.0源码_素材资源解析平台PHP源码 V8.0运营版+会员功能+代理功能+卡密充值...

    源码预览 源码介绍 V8版本.最新更新,全新的解析架构. 小白问题一:为什么我不能解析? 答:解析是需要开通目标站VIP的. 小白问题二:竟然要开通VIP,要你这源码干嘛?有毛病.[这个问题真的有人问 ...

  4. 什么是Mybatis配置解析?(源码+图文)

    什么是Mybatis配置解析?(源码+图文) 1. 核心配置文件 mybatis-config.xml configuration(配置)properties(属性)settings(设置)typeA ...

  5. 源码解析:Spring源码解析笔记(五)接口设计总览

    本文由colodoo(纸伞)整理 QQ 425343603 Java学习交流群(717726984) Spring解析笔记 启动过程部分已经完成,对启动过程源码有兴趣的朋友可以作为参考文章. 源码解析 ...

  6. 百度SEO站群素材资源解析平台系统源码V8.0

    素材资源解析平台系统源码V8.0 第三方平台下载站程序千图网千库网等素材网站下载网站 下载地址: http://www.bytepan.com/SkCylUCcHaR 小白问题一:为什么我不能解析? ...

  7. 【易语言模块】MP3信息标签解析V1.0[源码]分享

    最近下载了许多MP3歌曲,好多歌曲的信息不是乱码就是空白,在车载播放器中显示不正常,一个个修改起来很麻烦,就想做一个简便的信息修改器.   在网上找了好久,没有特别合适的mp3标签信息的模块,有一个m ...

  8. HTML——全网VIP影视解析单页源码 自适应

    文章目录[隐藏] 全网VIP影视解析单页源码+自适应 全网VIP影视解析单页源码+自适应 上传源码到服务器,访问即可使用,无需数据库,php版本没有限制 为了界面美观,不添加播放器,跳转到解析接口页面 ...

  9. 解析Linux内核源码中数据同步问题丨C++后端开发丨Linux服务器开发丨Linux内核开发丨驱动开发丨嵌入式开发丨内核操作系统

    剖析Linux内核源码数据同步 1.pdflush机制原理 2.超级块同步/inode同步 3.拥塞及强制回写技术 视频讲解如下,点击观看: 解析Linux内核源码中数据同步问题丨C++后端开发丨Li ...

最新文章

  1. R语言常用线性模型特征筛选(feature selection)技术实战:基于前列腺特异性抗原(PSA)数据
  2. 全球IP地址数周内用完,或现无法上网情况
  3. 51nod 1073 约瑟夫环
  4. UIImageView加上圆角
  5. JavaScript存在的原因
  6. Eclipse打JAR包引用的第三方JAR包找不到 问题解决
  7. java 添加等待时间_Java中线程等待特定时间的最有效方法 - java
  8. [转载] python中字符串编码形式及其所占字节
  9. openlayers添加按钮_OpenLayers3加载常用控件使用方法详解
  10. 2005年计算机课程,2005年暑期非计算机专业计算机基础课程教学研讨会成功举办...
  11. 时刻记住要做合格的程序员——一次高性能程序设计实验课后的反思
  12. Sql Server 2005如何导入DBF文件?
  13. BZOJ2281 [SDOI2011]黑白棋 【dp + 组合数】
  14. NYOJ题目48-小明的调查作业
  15. 手机上python编程工具3h是_qPython 3h下载
  16. 微信营销十一(微信公众号吸粉技巧)
  17. 暴躁兔melody避坑记
  18. 细说pc端微信扫码登录
  19. python sort函数
  20. Cisco语音专业认证CCVP

热门文章

  1. MySQL 配置文档
  2. haproxy 作为反向代理被攻击
  3. perf之sched
  4. mysqlshow命令的用法介绍
  5. 一步一步学动画[1]:Silverlight中Animation的应用
  6. H3C 基于IP的限速
  7. Effective C# 原则34:创建大容量的Web API(译)
  8. Eclipse异常关闭启动不了的问题
  9. 《精通J2EE网络编程》中讲的JNDI 6.2 使用JNDI
  10. c语言编译机器码,[转载]单片机C语言到机器码的全过程