基于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,新建工程。

  1. 外部时钟,倍频至72MHz
    在这里插入图片描述

  2. 串口打印配置
    在这里插入图片描述

  3. 配置ADC采集+DMA
    在这里插入图片描述在这里插入图片描述

  4. 生成工程
    在这里插入图片描述

5、编写代码

基本采用自己的框架,不做详细展示了。但是这里需要注意,找到压力变送器输出电压与压力的数学关系式。

量程:(-0.1-2)MPa

输出:0.2-3.2V

采用数学小工具:在线多项式曲线拟合

在这里插入图片描述

获得函数关系式:[F(x) = +0.7000000000000002*x-0.24000000000000002]
简化后为: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、总结

  1. 仔细阅读变送器的数据手册或者铭牌
  2. 计算出数学关系式
  3. 配置ADC采集+DMA
  • 6
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
您好!对于使用STM32CubeMX和超声波传感器的问题,我可以给您一些指导。首先,您需要选择适合您项目的超声波传感器模块,并了解其通信接口(如UART、I2C或SPI)。接下来,您可以使用STM32CubeMX来配置您的STM32微控制器。 以下是一些步骤和提示: 1. 打开STM32CubeMX并创建一个新的工程。 2. 选择适合您的微控制器型号。 3. 在Pinout & Configuration选项卡上,配置您的引脚。确保为超声波传感器选择合适的引脚,并根据传感器的接口类型进行配置。 4. 在Configuration选项卡上,启用相应的串口或I2C/SPI外设,并进行必要的配置。 5. 在Middleware选项卡上,您可以选择添加HAL库或其他相关的软件包来帮助您与超声波传感器进行通信。如果有适配您传感器的软件包可用,建议添加它以简化开发过程。 6. 生成代码并导入到您喜欢的集成开发环境(IDE)中,如Keil、IAR或STM32CubeIDE。 7. 在生成的代码中,您可以使用HAL库或相关软件包提供的函数来与超声波传感器进行通信。根据传感器的规格和通信接口,您可能需要编写一些特定的驱动程序或库函数。 请注意,这只是一个基本的指导,具体步骤可能会因您选择的超声波传感器STM32微控制器型号而有所不同。确保阅读并遵循超声波传感器STM32微控制器的相关文档和数据手册,以获得更详细的信息。 希望这些信息对您有所帮助!如果您还有其他问题,请随时提问。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值