4X4矩阵薄膜压力传感器控制器教程
薄膜压力传感器16路模块和控制器教程
汇总资料下载地址
https://pan.baidu.com/s/1Ap3CaOiAVWNXnm30NLBMuw 提取码:3333 【如果百度云盘下载地址无效,请联系本店铺客服更改】
4*4多通道扩展模块
大部分单片机都没有16个单独ADC,因此本店设计了一款,可以扩展ADC通道加运放于一体的板子,降低对单片机的要求,
模块功能是可以把一路ADC,扩展成16路,通过4个数字IO去选择通道,加EN开关,配合单片机的一路ADC,实现采集16个点的数据。
引脚说明:
引脚名称 | 功能 |
---|---|
VCC | 供电3.3-5v,常用5v,如果是3.3v单片机可以供电3.3v |
GND | 地线 |
AO | 接单片机的ADC通道 |
EN | 使能模块引脚 |
S0-S3 | 选通0-15总共16组传感器 |
0-15 16组传感器接口 | 接4*4薄膜压力传感器的对应接口,对插 |
arduino例程接线方式
AD扩展模块 ARDUINO
VCC 5V
GND GND
AO A0
EN 2
S0 3
S1 4
S2 5
S3 6
接好arduino和模块之间的线,模块接4*4薄膜压力传感器后,可以从arduino的串口读取数据,如下图
源码
/************************************************************************************
店铺:ILOVEMCU.TAOBAO.COM
作者:神秘藏宝室
接线方式:
AD扩展模块 ARDUINO
VCC 5V
GND GND
AO A0
EN 2
S0 3
S1 4
S2 5
S3 6
程序功能:读取0-16总共16个通道的AD值,从ARDUINO的一个A0模拟引脚读取,然后换算压力输出
*************************************************************************************/
//下面4项内容需要根据实际型号和量程修正
//最小量程 根据具体型号对应手册获取,单位是g,这里以IMM00092A-10KG型号为例,最小量程是500g
#define PRESS_MIN 500
//最大量程 根据具体型号对应手册获取,单位是g,这里以IMM00092A-10KG型号为例,最大量程是20kg
#define PRESS_MAX 20000
#define VOLTAGE_MIN 150
#define VOLTAGE_MAX 3300
#define DEBUG_Serial Serial
#define MUL_EN 2
#define MUL_S0 3
#define MUL_S1 4
#define MUL_S2 5
#define MUL_S3 6
#define MUL_AO A0
//传感器通道号
unsigned char sensor[]=
{
0,4,11,15,
1,5,10,14,
2,6,9,13,
3,7,8,12,
};
int buffer = 0;
void setup()
{
DEBUG_Serial.begin(9600); //设置通讯的波特率为9600
DEBUG_Serial.println("Welcome to use!"); //发送的内容
DEBUG_Serial.println("made by waaax!"); //发送的内容
DEBUG_Serial.println("https://ilovemcu.taobao.com"); //发送的内容
pinMode(MUL_S0, OUTPUT);
pinMode(MUL_S1, OUTPUT);
pinMode(MUL_S2, OUTPUT);
pinMode(MUL_S3, OUTPUT);
pinMode(MUL_EN, OUTPUT);
digitalWrite(MUL_EN, HIGH);
digitalWrite(MUL_S0, LOW);
digitalWrite(MUL_S1, LOW);
digitalWrite(MUL_S2, LOW);
digitalWrite(MUL_S3, LOW);
}
void loop()
{
DEBUG_Serial.print("*****************************\r\n");
for(int i = 0 ; i < 16 ; i++)
{
DEBUG_Serial.print(getPressValue(sensor[i]));
DEBUG_Serial.print(",\t");
if((i+1)%4==0)
DEBUG_Serial.print("\r\n");
}
DEBUG_Serial.print("*****************************\r\n");
delay(200);
}
int readChannel(int ch)
{
int buf = 0;
buf = ch&0x01;
for(int i = 0 ; i < 4 ;i++)
{
buf = ch&0x01;
switch(i)
{
case 0:digitalWrite(MUL_S0, buf);break;
case 1:digitalWrite(MUL_S1, buf);break;
case 2:digitalWrite(MUL_S2, buf);break;
case 3:digitalWrite(MUL_S3, buf);break;
}
ch >>= 1;
}
digitalWrite(MUL_EN, LOW); //低电平有效,使能模块
delay(1);
buf = analogRead(MUL_AO);
digitalWrite(MUL_EN, HIGH); //关闭模块
return buf;
}
long getPressValue(int ch)
{
long PRESS_AO = 0;
int VOLTAGE_AO = 0;
int value = readChannel(ch);
VOLTAGE_AO = map(value, 0, 1023, 0, 5000);
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);
}
return PRESS_AO;
}
16路控制器功能
读取16路模块+4*4薄膜压力传感器的数据后,串口实时输出,并且TFT液晶显示,压力越大点颜色越深
串口数据格式:
每组数据以中括号开始和结束
4个数据一行,相当于后面有c语言的“\r\n”
数据是ASCII码显示的,直接可以看