jsp網(wǎng)站開(kāi)發(fā)教學(xué)視頻深圳網(wǎng)絡(luò)優(yōu)化seo
文章目錄
- 簡(jiǎn)介
- 線性電壓轉(zhuǎn)換模塊
- 51單片機(jī)讀取DO
- 接線方式
- 51代碼
- 實(shí)驗(yàn)效果
- 32單片機(jī)讀取AO
- 接線方式
- 32代碼
- 實(shí)驗(yàn)效果
- 總結(jié)
簡(jiǎn)介
FSR薄膜壓力傳感器是可以將壓力變化轉(zhuǎn)換為電阻變化的一種傳感器,單片機(jī)可以讀取然后作為粗略測(cè)量壓力(僅提供壓力變化,不適合做絕對(duì)值的具體數(shù)值計(jì)算)、壓力檢測(cè)等應(yīng)用,壓力越大電阻越小。從外觀上看可以分為兩種類(lèi)型:梳裝和全面銀,梳裝顧名思義就是外觀像梳子一樣,全面銀就是正反面都是一樣的表面沒(méi)有紋路。本文使用的是梳裝FSR薄膜壓力傳感器。
不同的型號(hào)所測(cè)量的量程不同,在量程、尺寸上有多種可選,具體可參考下圖,長(zhǎng)短尾只是引腳線長(zhǎng)度的區(qū)別,其他參數(shù)沒(méi)有區(qū)別。本文用到的型號(hào)是RP-C18.3-ST、外徑18mm短尾。最大能測(cè)量6kg。
只用一個(gè)壓力傳感器還不能被單片機(jī)直接讀取,還要結(jié)合線性電壓轉(zhuǎn)換模塊輸出模擬量/數(shù)字量。
線性電壓轉(zhuǎn)換模塊
模塊引腳定義和電位器說(shuō)明如下:
①VCC | 供電電壓正極(5V) |
---|---|
②GND | 供電電壓負(fù)極 |
③DO | 高電平信號(hào)輸出 |
④AO | 模擬電壓信號(hào)輸出(0-3.3V) |
AO-RES | 放大倍數(shù)調(diào)節(jié)電位器 |
DO-RES | 比較閾值調(diào)節(jié)電位器 |
使用單片機(jī)讀取AO引腳,可以做有無(wú)壓力、壓力趨勢(shì)變化和粗略測(cè)量壓力值的應(yīng)用,AO-RES可以調(diào)節(jié)輸出模擬電壓值的范圍增益靈敏度,AO引腳的都是通過(guò)這個(gè)AO_RES去調(diào)整輸出精度。
使用單片機(jī)讀取DO引腳,可以做是否有壓力的應(yīng)用,DO-RES可以調(diào)節(jié)DO輸出的閾值,當(dāng)壓力大于調(diào)節(jié)閾值時(shí),DO引腳輸出高電平,DO_LED點(diǎn)亮。當(dāng)壓力小于設(shè)定的閥值時(shí)候,DO引腳輸出低電平,DO_LED熄滅。
//下面4項(xiàng)內(nèi)容需要根據(jù)實(shí)際型號(hào)和量程修正//最小量程 根據(jù)具體型號(hào)對(duì)應(yīng)手冊(cè)獲取,單位是g,這里以RP-18.3-ST型號(hào)為例,最小量程是20g
#define PRESS_MIN 20
//最大量程 根據(jù)具體型號(hào)對(duì)應(yīng)手冊(cè)獲取,單位是g,這里以RP-18.3-ST型號(hào)為例,最大量程是6kg
#define PRESS_MAX 6000//以下2個(gè)參數(shù)根據(jù)獲取方法:
//理論上:
// 1.薄膜壓力傳感器不是精準(zhǔn)的壓力測(cè)試傳感器,只適合粗略測(cè)量壓力用,不能當(dāng)壓力計(jì)精確測(cè)量。
// 2. AO引腳輸出的電壓有效范圍是0.1v到3.3v,而實(shí)際根據(jù)不同傳感器范圍會(huì)在這個(gè)范圍內(nèi),并不一定是最大值3.3v,也可能低于3.3v,要實(shí)際萬(wàn)用表測(cè)量,
// 例程只是給出理論值,想要精確請(qǐng)自行萬(wàn)用表測(cè)量然后修正以下2個(gè)AO引腳電壓輸出的最大和最小值
//調(diào)節(jié)方法:
//薄膜壓力傳感器的AO引腳輸出的增益范圍是通過(guò)板載AO_RES電位器調(diào)節(jié)實(shí)現(xiàn)的,
//想要稍微精準(zhǔn)點(diǎn),需要自己給定具體已知力,然后調(diào)節(jié)AO_RES電位器到串口輸出重量正好是自己給定力就可以了
#define VOLTAGE_MIN 100
#define VOLTAGE_MAX 3300
下面演示用51單片機(jī)讀取DO做壓力檢測(cè),使用32單片機(jī)讀取AO做測(cè)量壓力應(yīng)用。
51單片機(jī)讀取DO
接線方式
STC89C52 | FSR |
---|---|
5V | VCC |
GND | GND |
P1.1 | DO |
STC89C52 | LCD1602 |
---|---|
P2.0-P2.7 | DB0-DB7 |
P0.5 | RS |
P0.6 | RW |
P0.7 | EN |
51代碼
#include "main.h"
#include "LCD1602.h"//定義變量
unsigned char KEY_NUM = 0;
int count = 0;
int state = 0;//****************************************************
//主函數(shù)
//****************************************************
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(0x80+0x40);LCD1602_write_word("count =");LCD1602_write_data(count%10000/1000+0x30);LCD1602_write_data(count%1000/100+0x30);LCD1602_write_data(count%100/10+0x30);LCD1602_write_data(count%10+0x30);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延時(shí)函數(shù)
//****************************************************
void Delay_ms(unsigned int n)
{unsigned int i,j;for(i=0;i<n;i++)for(j=0;j<123;j++);
}
實(shí)驗(yàn)效果
每按壓一次薄膜壓力傳感器,按壓次數(shù)加1,顯示在LCD屏幕上。
32單片機(jī)讀取AO
接線方式
STM32 | FSR |
---|---|
5V | VCC |
GND | GND |
PA1 | AO |
STM32 | USB轉(zhuǎn)TTL |
---|---|
3.3V | VCC |
GND | GND |
TXD | RXD |
RXD | TXD |
32代碼
#include "stm32f10x.h"
#include "delay.h"
#include "FSR.h"
#include "usart.h"
#include "adc.h"//下面4項(xiàng)內(nèi)容需要根據(jù)實(shí)際型號(hào)和量程修正//最小量程 根據(jù)具體型號(hào)對(duì)應(yīng)手冊(cè)獲取,單位是g,這里以RP-18.3-ST型號(hào)為例,最小量程是20g
#define PRESS_MIN 20
//最大量程 根據(jù)具體型號(hào)對(duì)應(yīng)手冊(cè)獲取,單位是g,這里以RP-18.3-ST型號(hào)為例,最大量程是6kg
#define PRESS_MAX 6000//以下2個(gè)參數(shù)根據(jù)獲取方法:
//理論上:
// 1.薄膜壓力傳感器不是精準(zhǔn)的壓力測(cè)試傳感器,只適合粗略測(cè)量壓力用,不能當(dāng)壓力計(jì)精確測(cè)量。
// 2. AO引腳輸出的電壓有效范圍是0.1v到3.3v,而實(shí)際根據(jù)不同傳感器范圍會(huì)在這個(gè)范圍內(nèi),并不一定是最大值3.3v,也可能低于3.3v,要實(shí)際萬(wàn)用表測(cè)量,
// 例程只是給出理論值,想要精確請(qǐng)自行萬(wàn)用表測(cè)量然后修正以下2個(gè)AO引腳電壓輸出的最大和最小值
//調(diào)節(jié)方法:
//薄膜壓力傳感器的AO引腳輸出的增益范圍是通過(guò)板載AO_RES電位器調(diào)節(jié)實(shí)現(xiàn)的,
//想要稍微精準(zhǔn)點(diǎn),需要自己給定具體已知力,然后調(diào)節(jié)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(); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)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;
}
實(shí)驗(yàn)效果
按壓薄膜壓力傳感器,在串口助手可以讀取到AD值、電壓值、壓力值等參數(shù)。使用的是外徑18mm短尾的型號(hào),壓力值最大顯示為6000g。
總結(jié)
本文介紹了通過(guò)兩種單片機(jī),即STC89C52單片機(jī)和STM32F103單片機(jī),來(lái)讀取FSR薄膜壓力傳感器壓力變化進(jìn)行測(cè)量壓力、壓力檢測(cè)。