基于STM32单片机的压力变送器的使用
基于STM32单片机的压力变送器的使用
1、使用原因
在一次项目中需要获取压力罐中的压力,在淘宝挑选了一款压力变送器。在没有学习《过程控制》这门课之前,我也分不清楚“传感器”与“变送器”的区别。后来才清楚,传感器是把非电量信号转换为电信号,而变送器是将电信号转换为标准电信号。根据课本上所写的,目前广泛使用的是4~20mA DC模拟电流与1~5V DC模拟电压信号是国际标准。那这就好办了,对接这款压力变送器,我只需要使用单片机的ADC采集去采集电压,再根据输出电压与实际压力之间的数学关系式计算出测得的压力即可。
2、传感器介绍
介绍下这款压力变送器,手感挺沉的,底部有一小孔,下端有螺纹可以用来固定安装。铭牌上标注有:
型号:PT210B-M20
量程:(-0.1-2)MPa
输出:0.2-3.2V
供电:DC3.5V
精度:0.5%FS
红:电源、黑:共地、蓝:输出
3、开发环境与工具
keil 5
STM32CubeMX
单片机型号:STM32F103VET6
串口烧录FlyMCU
串口监视软件:MicroLab
4、初始代码生成
打开STM32CubeMX,新建工程。
外部时钟,倍频至72MHz
串口打印配置
配置ADC采集+DMA
生成工程
5、编写代码
基本采用自己的框架,不做详细展示了。但是这里需要注意,找到压力变送器输出电压与压力的数学关系式。
量程:(-0.1-2)MPa
输出:0.2-3.2V
采用数学小工具:在线多项式曲线拟合
获得函数关系式:[F(x) = +0.7000000000000002x-0.24000000000000002](javascript:doPost(‘http://tools.jb51.net/jisuanqi/fun_draw’, {‘funval’:’%2b0.7000000000000002x-0.24000000000000002’,‘timestamp’:‘1621688541’,‘token’:‘6e34ef5c9a1186523e337aca544ef33e’}))
简化后为:F(x) = 0.7 * x - 0.24
压力传感器.c/.h编写:
#include "Mydrivers.h"static void Get_Pressure_Voltage(void); //获取压力电压
static void Get_Pressure_Value(void); //获取压力值Pressure_t Pressure =
{Get_Pressure_Voltage,0,0.0,Get_Pressure_Value,0.0
};/** @name Get_Pressure_Voltage* @brief 获取压力电压* @param None* @retval None
*/
static void Get_Pressure_Voltage(void)
{Pressure.Pressure_Voltage = (Pressure.usADC_Value * 3.3) / 4095;printf("AD转换原始值 = %d\r\n", Pressure.usADC_Value);printf("计算得出的电压值 = %.2fV\r\n", Pressure.Pressure_Voltage);
}/** @name Get_Temperature_Value* @brief 获取压力值* @param None* @retval None
*/
static void Get_Pressure_Value(void)
{Pressure.fPressure = 0.7 * Pressure.Pressure_Voltage - 0.24;printf("Pressure = %.1fMPa", Pressure.fPressure);
}
#ifndef __Pressure_Transmitter_H__
#define __Pressure_Transmitter_H__#include "Mydrivers.h"typedef struct
{void (*Get_Pressure_Voltage)(void); //获取压力电压uint16_t usADC_Value; //ADC采集值float Pressure_Voltage; //压力电压void (*Get_Pressure_Value)(void); //获取压力值float fPressure; //压力
}Pressure_t;extern Pressure_t Pressure;#endif
main.c
6、测试结果
7、总结
- 仔细阅读变送器的数据手册或者铭牌
- 计算出数学关系式
- 配置ADC采集+DMA
基于STM32单片机的压力变送器的使用相关推荐
- delphi 数字识别_基于STM32单片机的车牌识别
系统介绍 使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO).STM32进行了16倍频.识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配. 识别过程分 ...
- stm32车牌识别_基于STM32单片机的车牌识别
系统介绍 使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO).STM32进行了16倍频.识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配. 识别过程分 ...
- 基于STM32单片机智能RFID刷卡汽车位锁设计(论文
基于STM32单片机智能RFID刷卡汽车位锁设计(论文) 摘要 在车位日益紧张的今天,如何避免私家车位被他人抢占,是令人头痛的事.日前面市的一种新型车位锁,不仅有效解决了这一问题,还可对车辆起到防盗作 ...
- 基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告)
基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告) 文章目录 基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告) 一.课题的背景及意义 二.国内外研究状况: 三.系统功能分析及体系 ...
- 最简单DIY基于STM32单片机的WIFI智能小车设计方案
STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...
- 基于STM32单片机的步数测量系统(免费开源)
基于STM32单片机的步数测量系统 1.1设计要求 1.2设计所需器材 1.3 设计原理 1.4核心代码 1.5结果展示 1.6资源链接 1.7硬件电路图 1.1设计要求 设计一款基于STM32的步数 ...
- 最简单DIY基于STM32单片机的蓝牙智能小车设计方案
STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 文章目录 STM32库函数开发系列文 ...
- 基于STM32单片机的密码锁(Proteus仿真+程序+报告)
3-基于STM32单片机的密码锁 功能描述如下: 由STM32F103单片机最小系统+ 4*4矩阵键盘+LCD1602液晶显示+蜂鸣器+继电器模块: 1.采用STM32F103为主控芯片. 2.通过4 ...
- 基于STM32单片机环境光强度检测系统光敏电阻LCD1602
实践制作DIY- GC0011-环境光强度检测系统光敏电阻 一.功能说明: 基于STM32单片机设计-环境光强度检测系统光敏电阻 功能介绍: 1.基于STM32F103C系列,LCD1602,使用光敏 ...
最新文章
- 书评 | 你为什么成不了资深产品经理?
- 关于python语言、下列说法不正确的是-关于 Python字符串,下列说法错误的是_学小易找答案...
- mysql主从数据库怎么还口令,mysql数据库主从同步方法讲解
- jasig CAS实现单点登录(数据库认证)
- JVM之垃圾收集机制四种GC算法详解
- 人生需要往前看,一直回味过去只会迷失,如果已经开始迷失,请回想初心
- EF Core 实现读写分离的最佳方案
- bread是可数还是不可数_雅思官方语法教程之——这个名词到底可不可数?
- 【Flink】Zookeeper connection loss leads to Flink job restart
- 如何把门禁卡做成你用不起的样子?B站up主自制迷你卡片,公司小区通刷,还带墨水屏的那种...
- js 全国城市地区编码+拼音+大写首字母
- uva 11137	Ingenuous Cubrency
- 解线性方程组c语言实验报告,实验五线性方程组的迭代法实验
- 转:管理者必备技能之全局观:找出复杂环境中的秩序
- 【2021-09-16】最右app之websign
- C语言中如何定义字符串?
- matlab绘制散点拟合图
- iOS 左上角的返回按钮的几种设置
- Linux搭建迅搜( Xunsearch )
- 从科幻阅读到科幻写作,中国首位科幻博士一文讲清楚|附全年龄段书单