压力传感器模块
- 格式:docx
- 大小:507.27 KB
- 文档页数:5
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. 压力变送器压力变送器是一种将机械变量-压力转化为电信号的装置,其信号输出为标准信号。
其主要由静压传感器模块、信号调理模块和输出模块构成。
静压传感器模块将压力作用在插接式传感器上,经过检测、线性化、卡尔曼滤波等算法后,转换为电信号输出。
输出信号可为电流或电压信号。
电容式压力传感器是利用压力作用于一个移动电极和一个静态电极之间的变化来测量压力的。
其主要由氧化锑、金属膜和胶膜构成。
当外力作用于金属膜上,会使电容器的电容值发生变化,根据电容值的变化计算出压力数值。
磁电式压力传感器是利用拉力对应于振动原子磁自旋的剧烈变化,从而引发压电效应的装置。
该传感器主要由铝酸铋钵状物、磁体、零件等构成。
当外压作用在铝酸盐压电片上时,会引起压电片内部结构的变化,从而形成电感,根据电感的变化来检测压力数值。
无论哪种压力传感器,都需要根据它们的工作原理进行正确的安装与使用。
压力传感器通常需要在不同的环境和条件下进行测试和校准,以确保其准确和稳定的测量结果。
压力传感器特性及应用实验1.了解压力传感器的特性;2.掌握压力传感器的测量方法;3.了解压力传感器模块的电路组成及原理。
1.分析压力传感器测量电路的原理;2.连接压力传感器物理信号到电信号的转换电路;3.软件观测压力变化时输出信号的变化情况;4.记录实验波形数据并进行分析。
1.开放式传感器电路实验主板;2.压力传感器压力测量模块;3.导线若干。
压力传感器(Pressure Transducer)是能感受压力信号,并能按照一定的规律将压力信号转换成可用的输出的电信号的器件或装置。
压力传感器通常由压力敏感元件和信号处理单元组成。
按不同的测试压力类型,压力传感器可分为表压传感器、差压传感器和绝压传感器。
实验板上装有1006015-1编号的压力传感器,采用悬臂压电薄膜封装,输出的类型为电压值。
其顶端附有的配重用来增加在低频振动时的灵敏度。
当薄膜来回动作时会产生交流电压(高达+ / - 90V的)。
通过使用一个的电阻使得的电压下降,令设备可以检测到其电压的变化。
这款传感器可以用于紧凑的传感系统或者复杂开关中。
如图8.1所示。
图8-1 压力传感器压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业。
具有量程大,精度高的特点。
重载压力传感器是压力传感器中常见的一种。
它通常被用于交通运输应用中,通过监测气动、轻载液压、制动压力、机油压力、传动装置、以及卡车或拖车的气闸等关键系统的压力、液力、流量及液位来维持重载设备的性能。
重载压力传感器是一种具有外壳、金属压力接口以及高电平信号输出的压力测量装置。
许多传感器配有圆形金属或塑料外壳,外观呈筒状,一端是压力接口,另一端是电缆或连接器。
这类重载压力传感器常用于极端温度及电磁干扰环境。
工业及交通运输领域的客户在控制系统中使用压力传感器,可实现对冷却液或润滑油等流体的压力测量和监控。
压力传感器变送器工作原理1. 概述在现代工业生产中,压力传感器变送器是一种常用的重要测量仪器。
它可以将被测物体的压力信号转换为标准的电信号输出,用于测量和控制系统中的压力参数。
本文将详细介绍压力传感器变送器的工作原理。
2. 压力传感器的基本原理压力传感器是一种将压力信号转换为电信号的传感器。
其工作原理主要基于两种类型的传感器:压阻式传感器和压电式传感器。
2.1 压阻式传感器压阻式传感器的工作原理是基于材料的电阻产生随压力变化的信号。
当外界施加压力时,被测物体的形变会导致传感器内部材料电阻的改变,从而产生电压信号。
通常,压阻式传感器由两种材料构成:一个是敏感材料,另一个是支撑材料。
敏感材料通常具有良好的弹性特性,能够产生相对较大的电阻值变化。
2.2 压电式传感器压电式传感器的工作原理基于压电材料的特性。
当外界施加压力时,压电材料会产生电位移,从而生成电荷并产生电压信号。
压电式传感器通常由压电材料制成的薄片和电极组成,外部压力导致压电材料内部发生形变,从而产生电信号。
3. 压力传感器变送器的基本结构压力传感器变送器主要由传感器模块、信号处理模块和输出接口模块构成。
3.1 传感器模块传感器模块是压力传感器变送器的核心部分,负责将被测压力转换为电信号。
传感器模块包括敏感元件和支撑结构。
敏感元件负责将压力信号转换为相应的物理量信号,而支撑结构则起到固定和保护敏感元件的作用。
3.2 信号处理模块信号处理模块主要用于对传感器模块输出的信号进行放大、滤波、线性化等处理。
常见的信号处理方法包括模拟信号处理和数字信号处理。
模拟信号处理采用模拟电路进行信号调理,而数字信号处理则通过数字电路将模拟信号转换为数字信号进行处理。
3.3 输出接口模块输出接口模块用于将信号处理后的电信号转换为标准的电气信号输出。
常见的输出接口包括模拟输出和数字输出。
模拟输出通常用于连接模拟测量仪表或控制系统,而数字输出则适用于连接数字设备、PLC等。
柔性薄膜压力传感器数字转换模块MY2901使用说明书版本号:V1.1执行日期:2019-05-16苏州能斯达电子科技有限公司Suzhou Leanstar Electronic Technology Co.,ltd声明本说明书版权属于苏州能斯达电子科技有限公司(以下称本公司)所有,未经书面许可,本说明书任何部分不得复制、翻译、存储于数据库或检索系统内,也不可电子、翻拍、录音等任何手段进行传播。
感谢您使用苏州能斯达电子的产品。
为使您更好地使用本公司的产品,减少因使用不当造成的产品故障,使用前请务必仔细阅读本说明书并按照所建议的使用方法进行使用。
如果用户不依照本说明书使用或擅自去除、拆解、更换产品组件,本公司不承担由此造成的任何损失。
您所购买产品的颜色、款式和尺寸以实物为准。
本公司秉承科技进步的理念,不断致力于产品改进和技术创新。
因此,本公司保留任何产品改进而不预先通知的权利。
使用本说明书时,确认其属于有效版本。
同时,本公司鼓励使用者根据使用情况,探讨本产品更优化的使用方法。
请妥善保管本说明书,以便在您需要时能及时查阅并获得帮助。
苏州能斯达电子科技有限公司MY2901是苏州能斯达电子自主研发的多通道压力转换模块,可将柔性薄膜传感器模拟信号转换为数字量。
将苏州能斯达电子的柔性压力传感器接到MY2901,可直接从通讯接口读取信号转换后的数字值。
本模块适配苏州能斯达电子DF9-40系列、SF15系列、MD30系列、ZNX 鞋垫传感器和ZNS 手套传感器等多种柔性薄膜压力传感器系列产品;可用于测量柔性薄膜压力传感器表面压力。
4个输入通道,最多可支持4路信号同时测量; 提供UART 方式输出信号; 4路数字开关信号输出; 小尺寸,易于集成; 低功耗;用于柔性薄膜压力传感器测试及应用、可穿戴电子产品、智能家居电子产品、消费类电子产品等多种场合。
产品型号 MY2901工作电压 3.3V~5.0V (无电压反接保护)输出数据 UART (3.3V 电平)模拟输入接口数量 4个 数字开关输出接口数量 4个模拟信号采样频率20Hz 工作电流 ≤30mA 工作温度 -10℃~55℃ 尺寸20mm*29mm产品描述产品特点主要应用技术参数典型应用引脚序号名称功能1~2 Vin 供电电压输入(3.3V~5.5V )3~4GND 供电电压接地端5~6 NC 保留 7 GND 接地8 VCC 模块正常工作电压3.3V 9 Rx UART (RXD) 0V ~3.3V 数据输入 10 Tx UART (TXD) 0V ~3.3V 数据输出11~14 A0~A3 模拟信号输入 15 GND 模拟信号输入公共端 16~19 D0~D3 数字开关信号输出 20 GND数字开关信号输出公共端尺寸规格管脚定义模块功能图示为MY2901同时测量4个柔性薄膜压力传感器的连接电路图。
传感器应用归纳总结初中传感器是一种能够感知和测量现实世界中各种物理量的装置,其应用十分广泛。
在初中的学习中,我们也接触了一些常见的传感器,并学习了它们的原理和应用。
本文将对初中阶段常见的传感器进行归纳总结。
一、光敏传感器光敏传感器是一种能够感知光强度的传感器,常见的有光敏电阻和光敏二极管。
光敏传感器可以应用于自动控制灯光的系统中,当周围光线强度发生变化时,传感器会检测到光线的变化并发出信号,从而控制灯光的开关和亮度。
二、温度传感器温度传感器是一种能够感知温度的传感器,常见的有热敏电阻和温度传感器模块。
温度传感器可以广泛应用于温度测量和控制系统中,如气象站、温室控制、空调等。
通过温度传感器,我们可以准确地测量环境的温度,并对温度进行相应的控制。
三、声音传感器声音传感器是一种能够感知声音信号的传感器,常见的有声音传感器模块和麦克风。
声音传感器可以应用于声音识别、噪声监测以及语音控制等领域。
通过声音传感器,我们可以将声音信号转化为电信号,并进行相应的处理和分析。
四、压力传感器压力传感器是一种能够感知压力变化的传感器,常见的有压敏电阻和压力传感器模块。
压力传感器可以应用于气体或液体的压力测量和控制系统中,如汽车胎压监测、液位监测等。
通过压力传感器,我们可以实时地监测物体的压力变化,并进行相应的反馈和控制。
五、触摸传感器触摸传感器是一种能够感知触摸信号的传感器,常见的有触摸开关和触摸传感器模块。
触摸传感器可以应用于触摸屏、智能家居以及电子设备中的触摸控制等领域。
通过触摸传感器,我们可以实现对物体的触摸操作,并转化为相应的电信号进行处理。
六、运动传感器运动传感器是一种能够感知物体运动的传感器,常见的有红外线传感器和加速度传感器。
运动传感器可以应用于安防监控、智能门禁等系统中,通过检测物体的运动,我们可以进行相应的预警和控制。
总结:传感器在我们的日常生活中扮演着十分重要的角色,它们能够感知并测量不同的物理量,并将其转化为电信号进行处理。
30种常见传感器模块简介及工作原理传感器是物理、化学或生物特性转换成可测量信号的设备。
它们在各个领域中起着重要的作用,从智能家居到工业自动化,从医疗设备到汽车技术。
本文将介绍30种常见的传感器模块及它们的工作原理。
1. 温度传感器:温度传感器是测量环境温度的常见传感器。
它们根据温度的影响来改变电阻、电压或电流。
2. 湿度传感器:湿度传感器用于测量空气中的湿度水分含量。
根据湿度的变化,传感器可能改变电阻、电容或输出电压。
3. 压力传感器:压力传感器用于测量液体或气体的压力。
它们可以转换压力为电阻、电流或电压的变化。
4. 光敏传感器:光敏传感器用于测量光照强度。
它们的响应基于光线与其敏感部件之间的相互作用。
5. 加速度传感器:加速度传感器用于测量物体的加速度或振动。
它们可以检测线性或旋转运动,并将其转换为电压或数字信号。
6. 接近传感器:接近传感器用于检测物体与传感器之间的距离。
它们可以使用电磁、超声波或红外线等技术来实现。
7. 声音传感器:声音传感器用于检测环境中的声音级别或频谱。
它们可以将声波转换为电信号以进行进一步的处理。
8. 姿势传感器:姿势传感器用于检测物体的倾斜、角度或方向。
它们可以使用陀螺仪、加速度计等技术来实现。
9. 指纹传感器:指纹传感器用于检测和识别人体指纹。
它们通过分析指纹的纹理和特征来实现身份验证。
10. 光电传感器:光电传感器使用光电效应或光电测量原理进行工作。
它们通常用于检测物体的存在、颜色或距离。
11. 气体传感器:气体传感器用于检测和测量空气中的气体浓度。
它们可以用于检测有害气体、燃气泄漏等。
12. 液位传感器:液位传感器用于测量液体的高度或压力。
它们可以使用压力、浮球或电容等技术来检测液位变化。
13. 磁场传感器:磁场传感器用于测量、检测和方向磁场强度。
它们通常用于指南针、地磁测量等应用。
14. 触摸传感器:触摸传感器用于检测触摸或接近物体。
它们可以使用电容、电感或红外线等技术来实现。
实验二扩散硅压阻式压力传感器实验模块2.1实验目的:实验 2.1.1:了解扩散硅压阻式压力传感器测量压力的原理和方法。
工作原理:是指利用单晶硅材料的压阻效应和集成电路技术制成的传感器。
单晶硅材料在受到力的作用后,电阻率发生变化,通过测量电路就可得到正比于力变化的电信号输出。
压阻式传感器用于压力、拉力、压力差和可以转变为力的变化的其他物理量(如液位、加速度、重量、应变、流量、真空度)的测量和控制。
转换原理:在具有压阻效应的半导体材料上用扩散或离子注入法,,形成4个阻值相等的电阻条。
并将它们连接成惠斯通电桥,电桥电源端和输出端引出,用制造集成电路的方法封装起来,制成扩散硅压阻式压力传感器。
平时敏感芯片没有外加压力作用,内部电桥处于平衡状态,当传感器受压后芯片电阻发生变化,电桥将失去平衡,给电桥加一个恒定电压源,电桥将输出与压力对应的电压信号,这样传感器的电阻变化通过电桥转换成压力信号输出。
压阻效应:当力作用于硅晶体时,晶体的晶格产生变形,使载流子从一个能谷向另一个能谷散射,引起载流子的迁移率发生变化,扰动了载流子纵向和横向的平均量,从而使硅的电阻率发生变化。
这种变化随晶体的取向不同而异,因此硅的压阻效应与晶体的取向有关。
硅的压阻效应不同于金属应变计(见电阻应变计),前者电阻随压力的变化主要取决于电阻率的变化,后者电阻的变化则主要取决于几何尺寸的变化(应变),而且前者的灵敏度比后者大50~100倍。
实验 2.1.2:了解利用压阻式压力传感器进行差压测量的方法。
2.2实验设备和元件:2.2.1 实验设备:实验台所属各分离单元和导线若干。
2.2.2 其他设备:2号扩散压阻式压力传感器实验模块,14号交直流,全桥,测量,差动放大实验模块,数显单元20V,直流稳压源+5V,+_12V电源。
2.3实验内容:2.3.1扩散压阻式压力传感器一般介绍:单晶硅材料在受到外力作用产生极微小应变时(一般步于400微应变),其内部原子结构的电子能级状态会发生变化,从而导致其电阻率剧烈变化(G因子突变)。
压力传感器的使用功能与原理:
称重传感器测出人的体重,然后将重量的数据传给单片机,根据传给单片机皮带走过的路程,运用公式计算出消耗了多少热量,进而用显示屏显示输出消耗热量的数值。
体重的数据采集部分由称重传感器、信号放大和A/D转换部分组成,信号放大和A/D转换部分主要由专用型高精度24位AD转换芯片HX711实现;
HX711 是一款专为高精度称重传感器而设计的24位A/D 转换器芯片。
HX711管脚说明如图3所示:
图二 HX711管脚图
HX711管脚描述如表1所示:
HX711是一款专为高精度称重传感器而设计的24位A/D 转换器芯片。
与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。
该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。
输入选择开关可任意选取通道A 或通道B,与其内部的低噪声可编程放大器相连。
通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV 或±40mV 。
通道B 则为固定的64 增益,用于系统参数检测。
芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D 转换器提供电源,系统板上无需另外的模拟电源。
芯片内的时钟振荡器不需要任何外接器件。
上电自动复位功能简化了开机的初始化过程。
高精度高增益24位A/D芯片HX711具有以下特点:
1)两路可选择差分输入;
2)片内低噪声可编程放大器,可选增益为64 和128;
3)片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源;
4)片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟;
5)上电自动复位电路;
6)简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需
编程;
7)可选择10Hz 或80Hz 的输出数据速率;
8)同步抑制50Hz 和60Hz 的电源干扰;
9)耗电量(含稳压电源电路):典型工作电流:< 1.7mA, 断电电流:< 1μA ;
10)工作电压范围:2.6 ~ 5.5V ;
电路设计:
该方案使用内部时钟振荡器(XI=0),10Hz的输出数据速率(RATE=0)。
电源(2.7~5.5V)直接取用与AT128芯片相同的供电电源。
片内稳压电源电路通过片外PNP管S8550和分压电阻R1、R2向传感器和A/D转换器提供稳定的低噪声模拟电源。
通道A与传感器相连,通道B通过片外分压电阻(未在图一中显示)与电池相连,用于检测电池电压。
参考驱动程序(汇编)
/*-------------------------------------------------------------------
在ASM中调用: LCALL ReaAD
可以在C中调用: extern unsigned long ReadAD(void);
unsigned long data;
data=ReadAD();
----------------------------------------------------------------------*/
PUBLIC ReadAD
HX711ROM segment code
rseg HX711ROM
sbit ADDO = P1.5;
sbit ADSK = P0.0;
/*--------------------------------------------------
OUT: R4, R5, R6, R7 R7=>LSB
如果在C中调用,不能修改R4,R5,R6,R7
---------------------------------------------------*/
ReadAD:
CLR ADSK // 使能AD(PD_SCK 置低)
SETB ADDO //51CPU 准双向I/0 输入使能
JB ADDO,$ // 判断AD转换是否结束,若未结束则等待否则开始读取MOV R4,#24
ShiftOut:
SETB ADSK //PD_SCK 置高(发送脉冲)
NOP
CLR ADSK //PD_SCK 置低
MOV C,ADDO // 读取数据(每次一位)
XCH A,R7 // 移入数据
RLC A
XCH A,R7
XCH A,R6
RLC A
XCH A,R6
XCH A,R5
RLC A
XCH A,R5
DJNZ R4,ShiftOut // 判断是否移入24BIT
SETB ADSK
NOP
CLR ADSK
RET END
参考C程序:
Sbit ADDO=P1^5;
Sbit ADSK=P0^0;
Undsigned long ReadCount(void){
Unsigned long Count;
Unsigned char i;
ADDO=1;
ADSK=0;
Count=0;
While(ADDO);
for(i=0;i<24;i++){ ADSK=1;
Count=Count<<1; ADSK=0;
if(ADDO)Count++; }
ADSK=1;
Count=Count^0x800000; ADSK=0;
return(Count);。