称重压力传感器HX711AD模块电路+程序
HX711电子秤称重模块配送资料(加中值滤波的单片机源码)
HX711电子秤称重模块配送资料(加中值滤波的单片机源码)电子秤注意1.程序中采用P16、P17口作为HX711的数据口。
2.每个传感器的系数不一样,第一次测量必须修正传感器的系数。
(修正系数HX711_xishu)修正方法:例如1000g砝码称出来是934g,则HX711_xishu=(原值)*1000/934;电路原理图如下:电子称 LCD1602(加中值滤波)单片机源程序如下:#include //调用单片机头文件#include#define uchar unsigned char //无符号字符型宏定义变量范围0~255#define uint unsigned int //无符号整型宏定义变量范围0~65535#define ulong unsigned longsbit rs=P0^5 //寄存器选择信号 H:数据寄存器 L:指令寄存器sbit rw=P0^6; //寄存器选择信号 H:数据寄存器 L:指令寄存器sbit e =P0^7; //片选信号下降沿触发sbit hx711_dout=P1^7;sbit hx711_sck =P1^6;sbit beep = P3^0; //蜂鸣器sbit K1 = P3^5; //加sbit K2 = P3^6; //长按去皮键sbit K3 = P3^7; //减uchar K2_num;uint time1;uint time2;uint time3;long weight; //实际重量值long qi_weight; //皮重ulong warn_weight;ulong HX711_xishu=35386; //这是一个修正系数,例如1000g砝码称出来是934g,则HX711_xishu=原数据*1000/934;#define MEDIAN_LEN 5 //中值滤波的滤波长度,一般取奇数#define MEDIAN 3 //中值在滤波数组中的位置ulong buffer[MEDIAN_LEN]; //中值滤波的数据缓存int medleng = 0; //一组中值滤波数据中,进入滤波缓存的数据个数ulong xd,xd1; //数据对比大小中间变量/***************删除键去皮价格清零***************//******1ms延时函数***11.0592M晶振**************/void delay_1ms(uint q){ulong i,j;for(i=0;i<>< p=""><>for(j=0;j<11;j++);}/************************************************************** ******* 名称 : delay_uint()* 功能 : 小延时。
hx711转换公式
hx711转换公式HX711转换公式是一种常见的模拟数字转换(ADC)电路,用于测量物理量并将其转化为数字信号。
本文将介绍HX711转换公式的原理和应用。
一、HX711转换公式的原理HX711是一种高精度、低功耗的模拟数字转换芯片,常用于称重传感器和压力传感器等测量设备中。
它采用差分式输入,通过调整增益和偏移量,将模拟信号转换为数字信号。
HX711转换公式的原理可以简单描述为:输入电压经过放大和采样后,通过内部的数模转换器(ADC)转化为数字信号。
转换公式可以表示为:Digital Output = (Analog Input - Offset) / Scale其中,Analog Input是传感器输入的模拟信号,Offset是偏移量,Scale是比例因子。
通过调整偏移量和比例因子,可以实现对输入信号的校准和量程调节。
二、HX711转换公式的应用1. 称重传感器:HX711转换公式常用于称重传感器中,通过测量传感器的变形或压力,将物体的重量转换为数字信号。
在工业生产、商业交易和家庭使用中都有广泛应用。
2. 压力传感器:HX711转换公式也可以应用于压力传感器中,测量压力大小并转换为数字信号。
压力传感器广泛应用于工业控制、环境监测和医疗设备等领域。
3. 温度传感器:HX711转换公式还可以用于温度传感器中,将温度变化转换为数字信号。
温度传感器在气象观测、环境监测和工业自动化等领域有重要的应用。
通过HX711转换公式,可以实现传感器信号的精确测量和数字化处理,提高测量的准确性和稳定性。
三、HX711转换公式的优势1. 高精度:HX711芯片具有高分辨率和低噪声特性,可实现高精度的模拟数字转换。
2. 低功耗:HX711采用低功耗设计,可满足电池供电和节能要求。
3. 强抗干扰能力:HX711芯片内部采用滤波和抗干扰技术,能有效抑制外部干扰信号,提高测量的稳定性和可靠性。
4. 简单易用:HX711芯片集成度高,具有简单的接口和配置,方便使用和集成到各种测量设备中。
HX711电路
HX711电路HX711电路优点及特性:HX711是一款专为高精度秤重传感器而设计的24位A/D转换器芯片。
与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点、降低了电子秤的整机成本,提高了整机的性能和可靠性。
该芯片与后端MCU芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。
输入选择开关可任意选取通道A或通道B,与其内部的低噪声可编程放大器相连。
通道A的可编程增益为128或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。
通道B则为固定的64增益,用于系统参数检测。
芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D转换器提供电源,系统板上无需另外的模拟电源。
芯片内的时钟振荡器不需要任何外接部件。
上电自动复位功能简化了开机的初始化过程。
HX711引脚功能及电器特性表1HX711引脚功能名秤性能描述管脚号1 VSUP 电源稳压电路供电电源:2.6-5.5V(不用稳压电路时接AVDD)2 BASE 模拟输出稳压电路控制输出(不用稳压电路时为无连接)3 AVDD 电源模拟电源:2.6-5.5V4 VFB 模拟输入稳压电路控制输入(不用稳压电路时应接地)5 AGND 地模拟地6 VBG 模拟输出参考电源输入7 INA 模拟输入通道A负输入端8 INA+ 模拟输入通道A正输入端9 INB 模拟输入通道B负输入端10 INB+ 模拟输入通道B正输入端11 PD-SCK 数字输入断电控制(高电平有效)和串口时钟输入12 DOUT 数字输出串口数据输出13 X0 数字输晶振输入(不用晶振时为无连入输出接)14 X1 数字输入外部时钟或晶振输入,0:使用片内振荡器15 RATE 数字输入输出数据速率控制,0:10Hz;1:80Hz16 DVDD 电源数字电源:2.6-5.5V表2 主要电气参数参数条件及说明最小值典型值最大值单位满额度差分输入范围V(inp)-V(inn) ±0.5(AVDD/GAIN)V输入共模电压范围AGND+0.6 AVDD-0.6V输出数据速率使用片内振荡器,RATE=010Hz 使用片内振荡器,RATE=DVDD80外部时钟或晶振,RATE=0fclk/1,105,920外部时钟或晶振,RATE=DVDDfclk/138,240输出数据编二进制补码800000码7FFFFF(HEX)输出稳定时间(1)RATE=0 400 mv RATE=DVDD 50输入零点漂移增益=128 0.2 增益=64 0.8输入噪声增益=128,RATE=0 50 nV(ms)增益=128,RATE= DVDD90温度系数输入零点漂移(增益=128)±7 nV/℃输入共模信号抑制比增益=128,RATE=0100 dB电源干扰抑制比增益=128,RATE=0100 dB输出参考电压(VBG)1.25 V外部时钟或晶振频率11.0592 30 MHz 电源电压DVDD 2.6 5.5 VAVDD,VSUP 2.6 5.5模拟电源电路(含稳压电路)正常工作1600 uA 断电0.3数字电源电路正常工作100 uA 断电0.2表3 输入通道和增益选择PD-SCK 脉冲数输入通道增益25 A 12826 B 6427 A 6432..3HX711管脚说明模拟输入通道A模拟差分输入可直接与桥式传感器的差分输出相接。
模数转换芯片hx711 c驱动程序
while(GPIO_ReadInputDataBit(ADIO,DATA));
delay_us(1);
for(i=0;i<24;i++)
{
GPIO_SetBits(ADIO,CLK);
val=val<<1;
delay_us(1);
long double SUM; //定义存放采样值之和的全局变量。
int i=0; //定义指向队列当前位置的数组下标变量。
void ADInit(void) //初始化AD芯片使用的I/O端口。
{
GPIO_InitTypeDef GP2PeriphClockCmd(ADCLK,ENABLE);
while(1)
{
IntToStr(filter(),str); //IntToStr()函数在进行形参传递时,把filter()函数返回的浮点数转化为了整型数,
//所以,此处调用IntToStr()函数不会出错。
for(i=0;str[i]!='\0';i++); //计算数字是几位数。
/*******************************************************
本文件中,是操作称重传感器专用AD芯片 HX711 的程序。
********************************************************/
#include "stm32f10x.h"
这两句来替代,因为,这样会改变SUM的值,越减越小,到最后,会出现负数了。*/
hx711传感器工作原理
hx711传感器工作原理
HX711传感器是一种重量测量模块,常用于称重、压力传感器和力传感器等领域。
其工作原理基于压阻效应和示值放大器的原理。
具体步骤如下:
将被测物体放置在称重传感器上,压缩应变片,使电阻值发生变化。
传感器输出微弱信号,通过微处理器或单片机读取。
读取的数据信号需要经过放大器进行放大,使得其变得更加稳定和准确。
放大后的信号被转换为数字信号,并通过串行通信接口传输给控制器,进行数据处理和显示。
HX711传感器内部集成了放大器和模数转换器,可以直接将模拟电压信号转换为数字信号输出,精度高、稳定性好、噪声低,因此在重量测量领域得到广泛应用。
简易电子秤电路设计
摘要随着计量技术和电子技术的发展,传统纯机械结构的杆秤、台秤、磅秤等装置逐步被淘汰。
而电子秤是将传感器技术、信息处理、电子技术等技术综合一体的现代新型称重仪器。
电子秤计量准确、快速方便,并且能实现自动称重和数字显示。
本作品主要以STC89C52单片机为控制核心,针对电子秤的自动称重、单价设置、金额计算与累加和去皮功能进行设计。
电子秤由六个功能模块组成,传感器模块、信号调理模块、单片机控制模块、报警模块、显示模块和按键模块。
本设计由电阻应变片桥式传感器进行数据采集,所得差模信号经HX711型芯片的放大和转换,再由单片机的控制和处理,最后在显示屏上显示重量、单价和金额等。
该设计很好的完成了设计要求,效率高,误差较小。
关键词:电子秤;STC89C52单片机;电阻应变片桥式传感器;HX711目录1 方案论证与比较......................................................................................................................1.1传感器模块方案....................................................................................................................1.2信号调理模块方案................................................................................................................1.3单片机控制模块方案............................................................................................................1.4显示模块方案........................................................................................................................1.5按键模块方案........................................................................................................................1.6报警模块方案........................................................................................................................ 2理论分析与计算.......................................................................................................................2.1电阻应变片传感器................................................................................................................2.2 HX711信号处理模块 ............................................................................................................2.3 STC89C52单片机控制模块...................................................................................................2.4 LCD1602显示 ........................................................................................................................2.5 4矩阵键盘........................................................................................................................3系统硬件设计...........................................................................................................................3.1 电阻应变片电桥电路...........................................................................................................3.2 HX711信号调理电路 ............................................................................................................3.3 单片机控制系统电路...........................................................................................................3.4显示电路与单片机接口电路................................................................................................3.5 按键电路与单片机接口电路...............................................................................................3.6蜂鸣器超重报警系统电路.................................................................................................... 4系统软件设计........................................................................................................................... 5系统调试...................................................................................................................................5.1测试方法与仪器....................................................................................................................5.1.1测试方法...........................................................................................................................5.1.2测试仪器...........................................................................................................................5.2数据测试与分析.................................................................................................................... 6总结........................................................................................................................................... 参考文献......................................................................................................................................1 方案论证与比较1.1传感器模块方案采用电阻应变片桥式传感器。
专用型高精度24位AD转换器芯片HX711说明
HX711称重传感器专用模拟/数字(A/D)转换器芯片简介:HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。
与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。
降低了电子秤的整机成本,提高了整机的性能和可靠性。
该芯片与后端MCU芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。
输入选择开关可任意选取通道A或通道B,与其内部的低噪声可编程放大器相连。
通道A的可编程增益为128或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。
通道B则为固定的32增益,用于系统参数检测。
芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D转换器提供电源,系统板上无需另外的模拟电源。
芯片内的时钟振荡器不需要任何外接器件。
上电自动复位功能简化了开机的初始化过程。
特点:两路可选择差分输入片内低噪声可编程放大器,可选增益为64 和128片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟上电自动复位电路简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程可选择10Hz 或80Hz 的输出数据速率同步抑制50Hz 和60Hz 的电源干扰耗电量(含稳压电源电路):典型工作电流:<1.7mA, 断电电流:<1μA工作电压范围:2.6 ~ 5.5V工作温度范围:-20 ~ +85℃16 管脚的SOP-16 封装管脚说明模拟输入通道A模拟差分输入可直接与桥式传感器的差分输出相接。
由于桥式传感器输出的信号较小,为了充分利用A/D 转换器的输入动态范围,该通道的可编程增益较大,为128或64。
这些增益所对应的满量程差分输入电压分别±20mV或±40mV。
完整版电子秤解决方案 51MCUHX711
单片机电子秤设计报告秤是一种在实际工作和生活中经常用到的测量器具。
随着计量技术和电子技术的发展,传统纯机械结构的杆秤、台秤、磅秤等称量装置逐步被淘汰,电子称量装置电子秤、电子天平等以其准确、快速、方便、显示直观等诸多优点而受到人们的青睐。
和传统秤相比较,电子秤利用新型传感器、高精度AD 转换器件、单片机设计实现,具有精度高、功能强等特点。
本课题设计的电子秤具有基本称重、键盘输入、计算价格、显示、超重报警功能。
该电子秤的测量范围为0-10Kg ,测量精度达到5g ,有高精度,低成本,易携带的特点。
电子秤采用液晶显示汉字和测量记过,比传统秤具有更高的准确性和直观性。
另外,该电子秤电路简单,使用寿命长,应用范围广,可以应用于商场、超市、家庭等场所,成为人们日常生活中不可少的必需品。
一、功能描述1、采用高精度电阻应变式压力传感器,测量量程0-10kg ,测量精度可达5g。
2、采用电子秤专用模拟/数字(A/D )转换器芯片hx711 对传感器信号进行调理转换,HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24 位A/D 转换器芯片。
3、采用STC89C52 单片机作为主控芯片,实现称重、计算价格等主控功能。
4、采用128*64 汉字液晶屏显示称重重量、单价、总价等信息。
5、采用4*4 矩阵键盘进行人机交互,键盘容量大,操作便捷。
6、具有超量程报警功能,可以通过蜂鸣器和LED 灯报警。
7、系统通过USB 电源供电,单片机程序也可通过USB 线串行下载二、硬件设计1、硬件方案单片机电子秤硬件方案如图1所示:图1单片机电子秤硬件方案称重传感器感应被测重力,输出微弱的毫伏级电压信号。
该电压信号经过电子秤专用模拟/数字(A/D)转换器芯片hx711对传感器信号进行调理转换。
HX711采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24位A/D转换器芯片,内置增益控制,精度高,性能稳定。
基于HX711自动计价数显电子秤设计
嘲 样电 ■
3定 义与 使 用 先定义4 * 4 矩 阵 键 盘 :键 0 — 9 为 数字 键 ,用 于 单 价 设 定 ,键 1 O 为 小 数 点 ,也 用 于单 价 设定 。键 i i 为删 除 键 ,逐 位删 除 敲错 的 单价 。键 1 2 为清 零 键 ,每次 测量之 前 ,请 先按 清零 键 ,以使重 量和 价格 回零 。键 1 3 为单价确 定 键 ,按下 该键则 设定 的单价 有效 ,开 始计算 总价 。再根 据压 力传感 器量程 定 义 超量 程 报警 范 围 , 因采 用 1 2 8 . 6 4 汉字L C D 显 示屏 单 价 设定 范 围为 0 . 0 1 元一 9 9 9 9 . 9 9 元 ,总金 额显 示范 围为0 元一 9 9 9 9 . 9 9 元 。超 过量 程声光报 警 。 下载 完成 后程 序 自动 运行 , 打开 电源 ,屏幕 显 示 电子秤 初始 化成 功 , 此 时重 量 和 单价 为 0 , 金额 为 空 ;通 过 数 字 键和 小 数 点键 键 入 单价 ,完 成
3 )4 * 4 矩 阵键 盘 可 以显 示 0 — 9 数 字 、小 数 点 和五 个 功 能键 。矩 阵键 盘
主要 用 于计 算 金额 。 当被 测 物体 重 量得 到 后 ,通过 键 盘 输入 单价 ,电 子秤
京:北京航空航天大学 出版社 ,2 0 0 4 . [ 4 ] 谭浩 强著 , 《 c 序设计 ( 第三版 )》. [ 5 ] 高峰著 , 《 单 片微 型计 算机 与接 E l 技术》[ M ] . 北京 :科 学 出版 社 ,
近 年 来 电子衡 器产 品 发展趋 势 是 小型化 、模 块化 、集 成化 、智能 化 。 速 率 、准 确度 、稳 定性 、可 靠 性 是评 价 电子 秤 的主 要指 标 ,而 具有 自动 计 价 、超 量程 报 警功 能 的电子 秤倍 受青 睐 。 1硬 件 方案 图
专用型高精度24位AD转换器芯片H711说明
HX711称重传感器专用模拟/数字(A/D)转换器芯片简介:HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。
与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。
降低了电子秤的整机成本,提高了整机的性能和可靠性。
该芯片与后端MCU芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。
输入选择开关可任意选取通道A或通道B,与其内部的低噪声可编程放大器相连。
通道A的可编程增益为128或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。
通道B则为固定的32增益,用于系统参数检测。
芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D转换器提供电源,系统板上无需另外的模拟电源。
芯片内的时钟振荡器不需要任何外接器件。
上电自动复位功能简化了开机的初始化过程。
特点:两路可选择差分输入片内低噪声可编程放大器,可选增益为64 和128片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟上电自动复位电路简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程可选择10Hz 或80Hz 的输出数据速率同步抑制50Hz 和60Hz 的电源干扰耗电量(含稳压电源电路):典型工作电流:<1.7mA, 断电电流:<1μA工作电压范围:2.6 ~ 5.5V工作温度范围:-20 ~ +85℃16 管脚的SOP-16 封装管脚说明模拟输入通道A模拟差分输入可直接与桥式传感器的差分输出相接。
由于桥式传感器输出的信号较小,为了充分利用A/D 转换器的输入动态范围,该通道的可编程增益较大,为128或64。
这些增益所对应的满量程差分输入电压分别±20mV或±40mV。
基于单片机的电子秤设计HX711
目录引言................................................................ - 1 -第一章系统地组成及工作原理....................................... - 2 -1.1 系统地组成.................................................... - 2 - 1.2系统地工作原理................................................ - 3 -第二章系统硬件设计............................................... - 4 -2.1主控芯片STC89C52单片机基本系统................................. - 4 -2.1.1 STC89C52单片机性能介绍................................... - 4 -2.1.2 STC89C52单片机引脚功能................................... - 4 -2.1.3 复位电路 ................................................. - 5 -2.1.4 晶振电路 ................................................. - 6 -2.2 A/D转换芯片HX711接口电路地设计................................ - 6 -2,2.1 HX711引脚功能............................................ - 7 -2.2.2 HX711管脚说明............................................ - 8 -2.3 压电传感器地设计 .............................................. - 12 -2.3.1 应变式电阻传感器 ......................................... - 12 -2.3.2 应变片式电阻传感器地结构和原理 ........................... - 12 -2.3.3 全桥测量电路 ............................................. - 13 -2.4 显示电路设计 .................................................. - 14 -2.4.1 LCD1602命令及时序......................................... - 17 -2.5 键盘输入...................................................... - 19 -第三章系统软件设计.............................................. - 20 -3.1 C语言在单片机中地应用........................................ - 20 -3.2 系统主程序流程图 ............................................. - 21 -3.3 子程序设计.................................................... - 22 -3.3.1 A/D数据采集子程序........................................ - 22 -3.3.2 显示子程序 ............................................... - 22 -3.3.3 键盘扫描子程序 ............................................ - 23 -第四章系统地调试................................................. - 24 -4.1 AD值反向转换重力值地参数计算.................................. - 24 -4.2 误差分析...................................................... - 24 -总结............................................................... - 25 -致谢............................................................... - 25 -参考文献........................................................... - 26 -附录1 系统原理图 ....................................... 错误!未定义书签。
hx711传感器工作原理
hx711传感器工作原理
hx711传感器是一种高精度的AD转换芯片,可用于称重传感器、压力传感器等多种应用场景。
它的工作原理是:将待测信号经过放大之后,再进行AD转换输出数字信号。
具体来说,hx711利用串联的前置放大器和差分放大器,将待测信号放大到合适的范围内,然后通过高精度的Δ-Σ调制器进行AD转换,最终将结果输出为数字信号。
hx711传感器采用双路数据接口,能够与多种微控制器进行通信,具有高精度、低功耗、体积小、易于集成等优点,广泛应用于电子秤、智能家居、物联网等领域。
- 1 -。
hx711芯片资料
HX711称重传感器专用模拟/数字(A/D)转换器芯片简介HX711 是一款专为高精度称重传感器而设计的24位A/D 转换器芯片。
与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。
降低了电子秤的整机成本,提高了整机的性能和可靠性。
该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。
输入选择开关可任意选取通道A 或通道B,与其内部的低噪声可编程放大器相连。
通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV 或±40mV 。
通道B 则为固定的64 增益,用于系统参数检测。
芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D 转换器提供电源,系统板上无需另外的模拟电源。
芯片内的时钟振荡器不需要任何外接器件。
上电自动复位功能简化了开机的初始化过程。
特点两路可选择差分输入片内低噪声可编程放大器,可选增益为64 和128片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟上电自动复位电路简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程可选择10Hz 或80Hz 的输出数据速率同步抑制50Hz 和60Hz 的电源干扰耗电量(含稳压电源电路):典型工作电流:< 1.7mA, 断电电流:< 1μA工作电压范围:2.6 ~ 5.5V工作温度范围:-20 ~ +85℃16 管脚的SOP-16 封装管脚说明。
压力传感器 HX711 程序
#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define ulong unsigned longuchar code table[]="0123456789";uchar code table1[]=".Kg";sbit lcden=P3^4;sbit lcdrs=P3^5;sbit ADDO=P2^3;sbit ADSK=P2^4;sbit beep=P2^2;uint shiqian,qian,bai,shi,ge;ulong zhl;void delay(uint ms){uint i,j;for(i=ms;i>0;i--)for(j=110;j>0;j--);}void write_com(uchar com){lcdrs=0;P1=com;delay(10);lcden=1;delay(5);lcden=0;}void init(){lcden=0;write_com(0x38);//0011 1000 显示模式16*2显示,5*7点阵,8位数据接口write_com(0x0c);//0000 1100 开显示不显示光标光标不闪烁write_com(0x06);//0000 0110 当读或写一字符后地址指针加一且光标加一,显示不移动write_com(0x01);//0000 0001 显示清零数据指针清零}void write_data(uchar date){P1=date;delay(10);lcden=1;delay(5);lcden=0;}void display(){ulong tamp,zhl;if(zhl>0||zhl<16777216)//进行判断是否满足条件{tamp=((zhl*298)/100000)-24714;//进行AD转换计算shiqian=tamp/10000; //进行计算qian=tamp%10000/1000;bai=tamp%10000%1000/100;shi=tamp%10000%1000%100/10;ge=tamp%10000%1000%100%10;write_com(0x80+0x05); //表示使用哪个1602中的地址显示write_data(table[shiqian]); // 显示值delay(50);write_com(0x80+0x06); //表示使用哪个1602中的地址显示write_data(table[qian]); // 显示值delay(50); //延时,主要是用来解决显示屏是否忙还是不忙write_com(0x80+0x07);write_data(table1[0]);delay(50);write_com(0x80+0x08);write_data(table[bai]);delay(50);write_com(0x80+0x09);write_data(table[shi]);delay(50);write_com(0x80+0x0A);write_data(table[ge]);write_com(0x80+0x0B);write_data(table[1]);delay(50);write_com(0x80+0x0C);write_data(table1[2]);delay(50);}else{uint z;for(z=0;z<=15;z++)//判断条件是否超出量程,报警。
称重压力传感器HX711AD模块电路+程序
称重压力传感器HX711AD模块电路+程序
1. 引言
HX711AD是一种高精度称重传感器,它可以将压力转化为数字信号,并且可
以通过微控制器读取这些信号。
这个模块非常的小巧,方便集成到不同的产品中,因此在工业自动化和仪器仪表等领域有着广泛的应用。
本文将会介绍如何通过一个HX711AD模块来获得压力传感器的数据,并且使
用Arduino编写的程序进行数据的处理和显示。
2. HX711AD模块电路连接
HX711AD模块包括一个压力传感器和一个称重模块,可以通过接线来完成与Arduino微控制器的连接。
接线图如下所示:
HX711AD模块Arduino
VCC 5V
GND GND
CLK D3
DAT D2
如上表所示,HX711AD模块的VCC引脚需要接到5V的电源上,GND接到GND上,CLK和DAT接到Arduino的D3和D2上。
HX711AD模块主要包括三个引脚:VCC、GND和OUT。
VCC是模块的正电源,需要连接到5V电源上。
GND是模块的负电源,需要接到GND上。
OUT是模块的
输出引脚,需要连接到Arduino的数字输入引脚上。
3. Arduino程序设计
HX711AD模块与Arduino微控制器的连接完成后,需要编写一个程序读取模
块的输出数据,并且将数据转化为压力值。
Arduino微控制器提供了一个HX711类,可以用来方便的读取HX711AD模块的数据。
以下是一个用于读取HX711AD模块的程序,包括了初始化和读取数据的代码:``` #include。
HX711_datasheet 中文资料
通道 B 负输入端
10 INB+ 模拟输入
通道 B 正输入端
11 PD_SCK 数字输入
断电控制(高电平有效)和串口时钟输入
12 DOUT 数字输出
串口数据输出
13
XO 数字输入输出 晶振输入(不用晶振时为无连接)
14
XI 数字输入
外部时钟或晶振输入,0: 使用片内振荡器
15 RATE 数字输入
输出数据速率控制,0: 10Hz; 1: 80Hz
进入正常工作状态。芯片从复位或断电状态进 入正常工作状态后,通道 A 和增益 128 会被自 动选择作为第一次 A/D 转换的输入通道和增 益。随后的输入通道和增益选择由 PD_SCK 的 脉冲数决定,参见串口通讯一节。
芯片从复位或断电状态进入正常工作状态 后,A/D 转换器需要 4 个数据输出周期才能稳 定。DOUT 在 4 个数据输出周期后才会从高电平 变低电平,输出有效数据。
AVIA SEMICONDUCTOR
4
HX711
当前转换周期
DOUT PD_SCK
MSB
T2 T1
1
2
PD_SCK PD_SCK
1
2
1
2
一个数据输出周期时间
下一个转换周期
T3
3
4
T4
3
4
3
4
LSB
24
25
下一次转换:通道A,增益128
24
25
26
下一次转换:通道B,增益32
24
25
26
27
下一次转换:通道A,增益64
PD_SCK 脉冲数 输入通道 增益
25
A
128
hx711芯片资料
HX711称重传感器专用模拟/数字(A/D)转换器芯片简介HX711 是一款专为高精度称重传感器而设计的24位A/D 转换器芯片。
与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。
降低了电子秤的整机成本,提高了整机的性能和可靠性。
该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。
输入选择开关可任意选取通道A 或通道B,与其内部的低噪声可编程放大器相连。
通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV 或±40mV 。
通道B 则为固定的64 增益,用于系统参数检测。
芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D 转换器提供电源,系统板上无需另外的模拟电源。
芯片内的时钟振荡器不需要任何外接器件。
上电自动复位功能简化了开机的初始化过程。
特点两路可选择差分输入片内低噪声可编程放大器,可选增益为64 和128片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟上电自动复位电路简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程可选择10Hz 或80Hz 的输出数据速率同步抑制50Hz 和60Hz 的电源干扰耗电量(含稳压电源电路):典型工作电流:< 1.7mA, 断电电流:< 1μA工作电压范围:2.6 ~ 5.5V工作温度范围:-20 ~ +85℃16 管脚的SOP-16 封装管脚说明。
使用Arduino开发板连接HX711称重传感器模块制作数字体重秤
使⽤Arduino开发板连接HX711称重传感器模块制作数字体重秤、称重传感器校准要使⽤称重传感器,⾸先需要校准它。
为此,请在Arduino开发板上上传以下代码。
等到读取消息显⽰在串⾏监视器上,然后在称重传感器上放置指定的重量物体。
使⽤A键,您可以将calibration_factor增加⼀个单位,您可以使⽤Z键减⼩它以获得正确的重量。
代码本篇⽂章的代码使⽤的是:/**** HX711 library for Arduino - example file* https:///bogde/HX711** MIT License* (c) 2018 Bogdan Necula***/#include "HX711.h"// HX711 circuit wiringconst int LOADCELL_DOUT_PIN = 4;const int LOADCELL_SCK_PIN = 5;HX711 scale;void setup() {Serial.begin(38400);Serial.println("HX711 Demo");Serial.println("Initializing the scale");// Initialize library with data output pin, clock input pin and gain factor.// Channel selection is made by passing the appropriate gain:// - With a gain factor of 64 or 128, channel A is selected// - With a gain factor of 32, channel B is selected// By omitting the gain factor parameter, the library// default "128" (Channel A) is used here.scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);Serial.println("Before setting up the scale:");Serial.print("read: \t\t");Serial.println(scale.read()); // print a raw reading from the ADCSerial.print("read average: \t\t");Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADCSerial.print("get value: \t\t");Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight (not set yet)Serial.print("get units: \t\t");Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight (not set) divided// by the SCALE parameter (not set yet)scale.set_scale(2280.f); // this value is obtained by calibrating the scale with known weights; see the README for details scale.tare(); // reset the scale to 0Serial.println("After setting up the scale:");Serial.print("read: \t\t");Serial.println(scale.read()); // print a raw reading from the ADCSerial.print("read average: \t\t");Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADCSerial.print("get value: \t\t");Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight, set with tare() Serial.print("get units: \t\t");Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight, divided// by the SCALE parameter set with set_scaleSerial.println("Readings:");}void loop() {Serial.print("one reading:\t");Serial.print(scale.get_units(), 1);Serial.print("\t| average:\t");Serial.println(scale.get_units(10), 1);// scale.power_down(); // put the ADC in sleep modedelay(20);// scale.power_up();}。
STM32读取HX711(AD)模块数据——压力传感器
STM32读取HX711(AD)模块数据——压⼒传感器背景:在⽆⼈机动⼒系统的选型时,为了测试⽆⼈机的动⼒系统所能提供的最⼤拉⼒,使⽤压⼒传感装置测量拉⼒。
链接:压⼒传感器tb链接:HX711模块是⼀个24位精度的AD模块。
另外还有⼀个固定压⼒传感器的⽀架,通过机械⽅式将螺旋桨产⽣的拉⼒加到拉⼒传感器上。
暂时找不到链接。
代码github连接:程序说明:使⽤STM32F103C8T6最⼩系统板连接HX711模块和⼀个OLED12864显⽰屏,读取HX7111模块的数据,经过处理后通过显⽰屏显⽰实际的拉⼒⼤⼩。
程序的初始化写在main.c⽂件中程序的主循环写在control.h⽂件中(包括读取拉⼒数据和液晶显⽰)代码:读取AD芯⽚数据,⼀般有两种⽅式,直接利⽤GPIO读写操作读取数据和使⽤STM32的SPI读取数据。
这⾥由于模块⾃带的资料中提供了使⽤51单⽚机读取HX711数据的例程,使⽤的直接操作IO⼝的⽅式,我直接根据例程移植到了STM32下。
GPIO配置:void Sensor_Init(void){GPIO_InitTypeDef gpio;RCC_APB2PeriphClockCmd(Sensor_Clock,ENABLE);//时钟线推挽输出gpio.GPIO_Pin = CLK;gpio.GPIO_Mode = GPIO_Mode_Out_PP;gpio.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(Sensor_Gpio,&gpio);//数据线浮空输⼊gpio.GPIO_Pin = DATA;gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;gpio.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(Sensor_Gpio,&gpio);}HX711数据读取函数(程序主要内容):unsigned long Sensor_Read(void){unsigned long value;unsigned char i;//每次读取数据前保证数据线电平稳定//此处只是为了稳定电平拉⾼或拉低效果相同// GPIO_ResetBits(Sensor_Gpio,DATA);GPIO_SetBits(Sensor_Gpio,DATA);//为了等待输出电平稳定//在每次⼀操作电平时加微⼩延时delay_us(2);//时钟线拉低空闲时时钟线保持低电位GPIO_ResetBits(Sensor_Gpio,CLK);delay_us(2);//等待AD转换结束while(GPIO_ReadInputDataBit(Sensor_Gpio,DATA));for(i=0;i<24;i++){//时钟线拉⾼开始发送时钟脉冲GPIO_SetBits(Sensor_Gpio,CLK);delay_us(2);//左移位右侧补零等待接收数据value = value << 1;//时钟线拉低GPIO_ResetBits(Sensor_Gpio,CLK);delay_us(2);//读取⼀位数据if(GPIO_ReadInputDataBit(Sensor_Gpio,DATA))value ++;}//第25个脉冲GPIO_SetBits(Sensor_Gpio,CLK);delay_us(2);//第25个脉冲下降沿到来时转换数据//此处说明:// HX711是⼀款24位的AD转换芯⽚// 最⾼位是符号位其余为有效位// 输出数组最⼩值0x800000// 最⼤值0x7FFFFF//异或运算:// 相同为0// 不同为1//数据处理说明:// 之所以会发⽣ INPA-INNA < 0mv 的情况// 是因为发⽣了零点漂移// 例如上⾯的数据就是初始状态INPA-INNA = -0.5mv// 然后随着重量的增加会发⽣过零点// 这时如果直接使⽤读取到的数据就会发⽣错误// 因为读取到的是⼩于0的⼆进制补码// 是不能直接使⽤的需要转换成其原码// ⽐较简单的处理⽅法就是读到的数据直接和0x800000进⾏异或 // 这时最⾼位可以看做是有效位// 不代表符号位⽽代表的下⼀位的进位// 这样数据会⼀直往上增长// 我们可以直接拿来进⾏使⽤value = value^0x800000;// value = value&0x7FFFFF;//第25个脉冲结束GPIO_ResetBits(Sensor_Gpio,CLK);delay_us(2);return value;}关于读取数据操作的说明都在以上代码中有详细注释。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
default : break;
}
}
if(KEY_NUM == 13)//数字D键,计算总价
{
Money = Price_Buffer[0] * 100 + Price_Buffer[1] * 10 + Price_Buffer[2];
Money = Money * Weight_Shiwu / 1000;
unsigned long Weight_Maopi = 0,Weight_Shiwu = 0;
char Price_Count = 0;
unsigned char KEY_NUM = 0;
unsigned char Price_Buffer[3] = {0x00,0x00,0x00};
unsigned long Money = 0;
switch(Price_Count)
{
case 0:
LCD1602_write_com(0x80+0x40+6);
LCD1602_write_data(Price_Buffer[0] + 0x30);
break;
case 1:
LCD1602_write_com(0x80+0x40+7);
LCD1602_write_data(Price_Buffer[1] + 0x30);
LCD1602_write_data('.');
LCD1602_write_data(Money%10 + 0x30);
Flag_OK = 1;
}
if(KEY_NUM >= 0 && KEY_NUM <= 9)//显示输入的价值
{
Price_Buffer[Price_Count] = KEY_NUM;
{
Price_Count--;
if( Price_Count < 0)
{
Price_Count = 0;
}
Price_Buffer[Price_Count] = 0;//清除上一个输入的数据
switch(Price_Count)
{
case 0:
LCD1602_write_com(0x80+0x40+6);
Get_Maopi();//称毛皮重量
while(1)
{
if( Flag_OK == 0)
{
Get_Weight();//称重
//显示当前重量
LCD1602_write_com(0x80+0x40);
LCD1602_write_data(Weight_Shiwu/1000 + 0x30);
LCD1602_write_data('.');
LCD1602_write_data(' ');
break;
case 1:
LCD1602_write_com(0x80+0x40+7);
LCD1602_write_data(' ');
break;
case 2:
LCD1602_write_com(0x80+0x40+9);
LCD1602_write_data(' ');
break;
case 2:
LCD1602_write_com(0x80+0x40+9);
LCD1602_write_data(Price_Buffer[2] + 0x30);
break;
default : break;
}
Price_Count++;
if( Pห้องสมุดไป่ตู้ice_Count >= 3)
{
Price_Count = 3;
}
}
}
}
}
//****************************************************
//矩阵键盘扫描
称重模块电路+程序(测试通过)
总体电路
电源+串口通讯
单片机最小系统:
存储模块+下载模块+蜂鸣器+矩阵键盘
称重模块:
淘宝链接:
主程序:
#include "main.h"
#include "LCD1602.h"
#include "HX711.h"
unsigned long HX711_Buffer = 0;
LCD1602_write_com(0x80);//指针设置
LCD1602_write_word("Welcome to use! ");//开机画面第一行
Delay_ms(2000);//延时2s
loop:Price_Count = 0;
Price_Buffer[0] = 0;
Price_Buffer[1] = 0;
if( KEY_NUM != 0x55)//当返回的不是初值时候,确认按键按下。
{
if(KEY_NUM == 16)//数字A键,去皮功能
{
Get_Maopi();//去皮
}
if(KEY_NUM == 15)//数字B键清除键,二次测量
{
goto loop;
}
if(KEY_NUM == 12)//数字C输入单价错误时返回上一步
LCD1602_write_data(Weight_Shiwu%1000/100 + 0x30);
LCD1602_write_data(Weight_Shiwu%100/10 + 0x30);
LCD1602_write_data(Weight_Shiwu%10 + 0x30);
}
KEY_NUM = KEY_Scan();
bit Flag_OK = 0;
//****************************************************
//主函数
//****************************************************
void main()
{
Init_LCD1602();//初始化LCD1602
Price_Buffer[2] = 0;
Flag_OK = 0;
LCD1602_write_com(0x80);//指针设置
LCD1602_write_word("+WEI |PRI | MON ");
LCD1602_write_com(0x80+0x40);//指针设置
LCD1602_write_word("0.000| . | . ");
LCD1602_write_com(0x80+0x40+11);
LCD1602_write_data(Money/1000 + 0x30);
LCD1602_write_data(Money%1000/100 + 0x30);
LCD1602_write_data(Money%100/10 + 0x30);