ADC模块之HX711

news2024/9/25 15:28:29

        今天,回顾了HX711模数转换模块,HX711模块经常用于电子秤的设计。

        模数转换模块的输入有三种(HX711的输入为差分输入):

 

 

HX711的驱动程序

#include "HX711.h"


//****************************************************
//延时函数
//****************************************************
void Delay__hx711_us(void)
{
	_nop_();
	_nop_();
}

//****************************************************
//读取HX711
//****************************************************
unsigned long HX711_Read(void)	//增益128
{
	unsigned long count; 
	unsigned char i; 
  	HX711_DOUT=1; 
	Delay__hx711_us();
  	HX711_SCK=0; 
  	count=0; 
  	while(HX711_DOUT); 
  	for(i=0;i<24;i++)				
	{ 
	  	HX711_SCK=1; 
	  	count=count<<1; 
		HX711_SCK=0; 
	  	if(HX711_DOUT)
			count++; 
	} 
 	HX711_SCK=1; 
    count=count^0x800000;//第25个脉冲下降沿来时,转换数据
	Delay__hx711_us();
	HX711_SCK=0;  
	return(count);
}

  count=count^0x800000;

HX711的输入是差分输入,所以输入有正有负,其数字量以补码的方式存放在24位寄存器中,首位是符号位。

为什么要将count与0x800000异或,这其实是对补码进行偏移,便于处理数据。 如下图所示,偏移值是有序的。

其次,由于定义了count是无符号长整型的(32位),所以编译器对count最高位的解释是数值位,而不是符号位,而且24位并没有充满32位,初始化的时候,count=0,最高位是0,因此对于补码形式的24位,依次放到count内,编译器对count中的第24位并不会认为是符号位,只会觉得这就是2^23的权值。当输入为负数时,第24位是1,输入为正数,第24位为0,这样就会导致一个问题,输入为负值时,得到的count反而越大。所以才会使count与0x800000异或,当第24位为0时,代表正数,置为1,当第24位为1时,代表负数,置为0,这样当输入比如从-5V到5V,count的数值是逐步增长的。

附录:

ADC的单端输入、伪差分输入、差分输入区别?_学海无涯_come on的博客-CSDN博客

ADC的单端、伪差分和差分输入_adc差分输入原理图_小叶爱吃汤圆的博客-CSDN博客

全差分伪差分单端输入ADC理解 - 百度文库 (baidu.com)

浅谈ADC分辨率和精度的差异,别再混为一谈了 (baidu.com)

RA6T2的16位模数转换器操作[15]性能分析(上)-电子工程专辑 (eet-china.com)

浅谈ADC分辨率和精度的差异,别再混为一谈了 (baidu.com)

ADC的分辨率和最低有效位(LSB) - 知乎 (zhihu.com)

称重传感器的24位A/D模块——HX711_hx711ad模块_软件架构师-叶帅的博客-CSDN博客

ADC偏移二进制码与实际电压的换算_CCCMiyagi的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/935019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自考《00058 市场营销学》2023年4月历年真题答案

自考科目列表,自考本科,题库,自学考试,历年真题。 1.某汽车制造商宣称“我们的汽车唯一的缺点就是生产得不够快”,该公司秉持的营销哲学是 A.产品导向 B.推销导向 C.顾客导向 D.生产导向 2.LM公司故意不履行和中间商合同约定的相关义务&#xff0c;不按时支付供货商的货款&…

Java入职第十一天,深入了解静态代理和动态代理(jdk、cglib)

一、代理模式 一个类代表另一个类去完成扩展功能,在主体类的基础上,新增一个代理类,扩展主体类功能,不影响主体,完成额外功能。比如买车票,可以去代理点买,不用去火车站,主要包括静态代理和动态代理两种模式。 代理类中包含了主体类 二、静态代理 无法根据业务扩展,…

火山引擎 DataLeap:从短视频 APP 实践看如何统一数据指标口径

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 短视频正在成为越来越多人发现世界的窗口&#xff0c;其背后的创作者生态建设是各大短视频 APP 不可忽视的重要组成部分。 为了激励更多优质内容生产&#xff0c;某…

下一代存储解决方案:湖仓一体

文章首发地址 湖仓一体是将数据湖和数据仓库相结合的一种数据架构&#xff0c;它可以同时满足大数据存储和传统数据仓库的需求。具体来说&#xff0c;湖仓一体可以实现以下几个方面的功能&#xff1a; 数据集成&#xff1a; 湖仓一体可以集成多个数据源&#xff0c;包括结构…

exe打包工具(收录)

收录&#xff1a; Advanced Installation静默安装包的制作方法 Advanced Installer打包exe安装包教程 Advanced Installer使用指南 advanced installer 使用常见问题整理 exe打包工具&#xff1a;advanced installer介绍

使用飞桨实现的第一个AI项目——波士顿的房价预测

part1.首先引入相应的函数库: 值得说明的地方&#xff1a; &#xff08;1&#xff09;首先&#xff0c;numpy是一个python库&#xff0c;主要用于提供线性代数中的矩阵或者多维数组的运算函数&#xff0c;利用import numpy as np引入numpy&#xff0c;并将np作为它的别名 part…

这可能是你看过最详细的 [八大排序算法]

排序算法 前置知识 [排序稳定性]一、直接插入排序二、希尔排序三、直接选择排序四、堆排序五、冒泡排序六、快速排序七、归并排序八、计数排序&#xff08;非比较排序&#xff09;排序复杂度和稳定性总结 前置知识 [排序稳定性] 假定在待排序的记录序列中&#xff0c;存在多个…

Docker 将容器打包成镜像推送镜像到仓库

Docker 将容器打包成镜像&推送镜像到仓库 一、将容器打包成镜像 $ docker commit <容器ID> <镜像名称:标签>示例&#xff1a; $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS …

FreeSWITCH 1.10.10 简单图形化界面5 - 使用百度TTS

FreeSWITCH 1.10.10 简单图形化界面5 - 使用百度TTS 0、 界面预览1、注册百度AI开放平台&#xff0c;开通语音识别服务2、获取AppID/API Key/Secret Key3、 安装百度语音合成sdk4、合成代码5、在PBX中使用百度TTS6、音乐文件-TTS7、拨号规则-tts_command 0、 界面预览 http://…

JVM第一篇 认识java虚拟机

目录 1. 什么是java虚拟机 2. java虚拟机分类 2.1. 商用虚拟机 2.2. 嵌入式虚拟机 3.java虚拟机架构 4.java虚拟机运行过程 1. 什么是java虚拟机 传统意义上的虚拟机是一种抽象化的计算机&#xff0c;通过在实际的计算机上仿真模拟各种计算机功能来实现的&#xff0c;是操…

Python在电路课程中的应用

1 需求 课程中有大量的计算&#xff0c;电路方程、复数计算&#xff0c;之前都是用的MATLAB online&#xff0c;可现在要过期了&#xff0c;只能更换平台。 2 工具 https://www.online-python.com/ Python3 在线工具 | 菜鸟工具 (runoob.com) 3 Sinusoid 章节 涉及到复数计…

AI绘图(11)stable diffusion 如何写好prompt四

在最开始我写了三篇关于prompt的&#xff0c;具体的大家可以跳转来去看&#xff0c;以下给出来链接&#xff1a; AI绘图&#xff08;3&#xff09;stable diffusion如何写好prompt 一_牧子川的博客-CSDN博客 AI绘图&#xff08;4&#xff09;stable diffusion如何写好prompt …

无涯教程-聚类算法 - Mean-Shift

如前所述&#xff0c;它是在无监督学习中使用的另一种强大的聚类算法&#xff0c;与K均值聚类不同&#xff0c;它不做任何假设&#xff0c;因此&#xff0c;它是一种非参数算法。 均值平移算法基本上是通过将数据点移向最高密度的数据点(即群集质心)来迭代地将数据点分配给群集…

Modbus协议详解1:Modbus的简介

Modbus协议是应用非常广泛的一种通信协议规约&#xff0c;也是最早应用在工业现场的协议。 早在1979年出现工业串行链路以来&#xff0c;Modbus的应用就开始普遍起来&#xff0c;它使得各种自动化设备之间的互相通信得到实现&#xff0c;做嵌入式产品开发的朋友应该不会陌生&am…

RT1050的ADC

文章目录 1 ADC介绍2 ADC框图2.1 外部输入通道2.2 输入电压范围2.3 触发源2.4 时钟源2.5 偏移矫正功能2.5.1 校准 1 ADC介绍 RT1052 有 2 个 ADC&#xff0c;每个 ADC 有 12 位、10 位、8 位可选&#xff0c;每个 ADC 有 16 个外部通道。 ADC具有最高 1MS/s 采样率支持单次或…

ubuntu安装goland

下载并解压goland sudo tar -C /opt/ -xzvf goland-2023.1.3.tar.gz配置应用图标 新建文件&#xff1a; vim /usr/share/applications/goland.desktop文件中写入如下内容&#xff1a; [Desktop Entry] TypeApplication NameGoLand Icon/opt/GoLand/bin/goland.png Exec/op…

uni-app 分不清的全局变量this, uni, $u, vm, uni.$u, this.$u

项目引入了uview,并将uview所有模块指给uniapp全局变量uni uni.$u$u 在登录页面&#xff0c;或者APP.vue打印以下变量&#xff1a; this, uni, $u, vm, uni.$u, this.$u

软件测试之可靠性测试

CNAS标识 软件可靠性测试主要目的是通过在有使用代表性的环境中执行软件&#xff0c;以证实软件需求是否正确实现&#xff0c;为进行软件可靠性估计采集准确的数据&#xff0c;并找出所有对软件可靠性影响较大的错误。可靠性测试的特点是不同于硬件可靠性测试&#xff0c;主要…

TCP协议的重点知识点

TCP协议的重点知识点 TCP(传输控制协议)是一种面向连接、可靠的数据传输协议,工作在传输层,提供可靠的字节流服务。它是互联网协议栈中最重要、最复杂的协议之一,也是面试中常被问到的知识点。本文将详细介绍TCP协议的各个重要概念。 TCP基本特性 TCP主要具有以下基本特性: …

香橙派OrangePi zero H2+ 驱动移远EC200A

1 系统内核&#xff1a; Linux orangepizero 5.4.65-sunxi #2.2.2 SMP Tue Aug 15 17:45:28 CST 2023 armv7l armv7l armv7l GNU/Linux 1.1 下载内核头安装 下载&#xff1a;orangepi800 内核头rk3399链接https://download.csdn.net/download/weixin_37613240/87635781 1.1.1…