网站必须做可信认证,南山网站制作,沧州做企业网站,建设网站一般多少钱文章目录 简介线性电压转换模块51单片机读取DO接线方式51代码实验效果 32单片机读取AO接线方式32代码实验效果 总结 简介 FSR薄膜压力传感器是可以将压力变化转换为电阻变化的一种传感器#xff0c;单片机可以读取然后作为粗略测量压力#xff08;仅提供压力变化#xff0c;… 文章目录 简介线性电压转换模块51单片机读取DO接线方式51代码实验效果 32单片机读取AO接线方式32代码实验效果 总结 简介 FSR薄膜压力传感器是可以将压力变化转换为电阻变化的一种传感器单片机可以读取然后作为粗略测量压力仅提供压力变化不适合做绝对值的具体数值计算、压力检测等应用压力越大电阻越小。从外观上看可以分为两种类型梳装和全面银梳装顾名思义就是外观像梳子一样全面银就是正反面都是一样的表面没有纹路。本文使用的是梳装FSR薄膜压力传感器。 不同的型号所测量的量程不同在量程、尺寸上有多种可选具体可参考下图长短尾只是引脚线长度的区别其他参数没有区别。本文用到的型号是RP-C18.3-ST、外径18mm短尾。最大能测量6kg。
只用一个压力传感器还不能被单片机直接读取还要结合线性电压转换模块输出模拟量/数字量。
线性电压转换模块 模块引脚定义和电位器说明如下
①VCC供电电压正极5V②GND供电电压负极③DO高电平信号输出④AO模拟电压信号输出0-3.3VAO-RES放大倍数调节电位器DO-RES比较阈值调节电位器
使用单片机读取AO引脚可以做有无压力、压力趋势变化和粗略测量压力值的应用AO-RES可以调节输出模拟电压值的范围增益灵敏度AO引脚的都是通过这个AO_RES去调整输出精度。
使用单片机读取DO引脚可以做是否有压力的应用DO-RES可以调节DO输出的阈值当压力大于调节阈值时DO引脚输出高电平DO_LED点亮。当压力小于设定的阀值时候DO引脚输出低电平DO_LED熄灭。
//下面4项内容需要根据实际型号和量程修正//最小量程 根据具体型号对应手册获取,单位是g这里以RP-18.3-ST型号为例最小量程是20g
#define PRESS_MIN 20
//最大量程 根据具体型号对应手册获取,单位是g这里以RP-18.3-ST型号为例最大量程是6kg
#define PRESS_MAX 6000//以下2个参数根据获取方法
//理论上
// 1.薄膜压力传感器不是精准的压力测试传感器只适合粗略测量压力用不能当压力计精确测量。
// 2. AO引脚输出的电压有效范围是0.1v到3.3v而实际根据不同传感器范围会在这个范围内并不一定是最大值3.3v也可能低于3.3v要实际万用表测量
// 例程只是给出理论值想要精确请自行万用表测量然后修正以下2个AO引脚电压输出的最大和最小值
//调节方法
//薄膜压力传感器的AO引脚输出的增益范围是通过板载AO_RES电位器调节实现的
//想要稍微精准点需要自己给定具体已知力然后调节AO_RES电位器到串口输出重量正好是自己给定力就可以了
#define VOLTAGE_MIN 100
#define VOLTAGE_MAX 3300下面演示用51单片机读取DO做压力检测使用32单片机读取AO做测量压力应用。
51单片机读取DO
接线方式
STC89C52FSR5VVCCGNDGNDP1.1DO
STC89C52LCD1602P2.0-P2.7DB0-DB7P0.5RSP0.6RWP0.7EN
51代码
#include main.h
#include LCD1602.h//定义变量
unsigned char KEY_NUM 0;
int count 0;
int state 0;//****************************************************
//主函数
//****************************************************
void main()
{Init_LCD1602();LCD1602_write_com(0x80);LCD1602_write_word(welcome to use!);while(1){scanSensor();if(KEY_NUM 1){KEY_NUM 0;LCD1602_write_com(0x800x40);LCD1602_write_word(count );LCD1602_write_data(count%10000/10000x30);LCD1602_write_data(count%1000/1000x30);LCD1602_write_data(count%100/100x30);LCD1602_write_data(count%100x30);count;if(state 2)state 0;}}
}void scanSensor()
{
// SENSOR 1;if(SENSOR 1){Delay_ms(10);if(SENSOR 1) {while(SENSOR 1);KEY_NUM 1;} }
}//****************************************************
//MS延时函数
//****************************************************
void Delay_ms(unsigned int n)
{unsigned int i,j;for(i0;in;i)for(j0;j123;j);
}
实验效果 每按压一次薄膜压力传感器按压次数加1显示在LCD屏幕上。
32单片机读取AO
接线方式
STM32FSR5VVCCGNDGNDPA1AO
STM32USB转TTL3.3VVCCGNDGNDTXDRXDRXDTXD
32代码
#include stm32f10x.h
#include delay.h
#include FSR.h
#include usart.h
#include adc.h//下面4项内容需要根据实际型号和量程修正//最小量程 根据具体型号对应手册获取,单位是g这里以RP-18.3-ST型号为例最小量程是20g
#define PRESS_MIN 20
//最大量程 根据具体型号对应手册获取,单位是g这里以RP-18.3-ST型号为例最大量程是6kg
#define PRESS_MAX 6000//以下2个参数根据获取方法
//理论上
// 1.薄膜压力传感器不是精准的压力测试传感器只适合粗略测量压力用不能当压力计精确测量。
// 2. AO引脚输出的电压有效范围是0.1v到3.3v而实际根据不同传感器范围会在这个范围内并不一定是最大值3.3v也可能低于3.3v要实际万用表测量
// 例程只是给出理论值想要精确请自行万用表测量然后修正以下2个AO引脚电压输出的最大和最小值
//调节方法
//薄膜压力传感器的AO引脚输出的增益范围是通过板载AO_RES电位器调节实现的
//想要稍微精准点需要自己给定具体已知力然后调节AO_RES电位器到串口输出重量正好是自己给定力就可以了
#define VOLTAGE_MIN 150
#define VOLTAGE_MAX 3300u8 state 0;
u16 val 0;
u16 value_AD 0;long PRESS_AO 0;
int VOLTAGE_AO 0;long map(long x, long in_min, long in_max, long out_min, long out_max);int main(void)
{ delay_init(); NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级2位响应优先级uart_init(9600); //串口初始化为9600Adc_Init();delay_ms(1000);printf(Test start\r\n);while(1){value_AD Get_Adc_Average(1,10); //10次平均值VOLTAGE_AO map(value_AD, 0, 4095, 0, 3300);if(VOLTAGE_AO VOLTAGE_MIN){PRESS_AO 0;}else if(VOLTAGE_AO VOLTAGE_MAX){PRESS_AO PRESS_MAX;}else{PRESS_AO map(VOLTAGE_AO, VOLTAGE_MIN, VOLTAGE_MAX, PRESS_MIN, PRESS_MAX);}printf(AD值 %d,电压 %d mv,压力 %ld g\r\n,value_AD,VOLTAGE_AO,PRESS_AO); delay_ms(500);}}long map(long x, long in_min, long in_max, long out_min, long out_max) {return (x - in_min) * (out_max - out_min) / (in_max - in_min) out_min;
}
实验效果 按压薄膜压力传感器在串口助手可以读取到AD值、电压值、压力值等参数。使用的是外径18mm短尾的型号压力值最大显示为6000g。
总结
本文介绍了通过两种单片机即STC89C52单片机和STM32F103单片机来读取FSR薄膜压力传感器压力变化进行测量压力、压力检测。