0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

力敏电阻的使用

454398 来源:网络整理 作者:网络整理 2019-11-27 11:46 次阅读

概述

FSR是传感器,可让您检测物理压力,挤压和重量。它们易于使用且成本低廉。这是FSR(特别是Interlink 402模型)的照片。直径为1/2“的圆形部分是敏感位。

力敏电阻的使用

FSR由2组成

FSR基本上是一个电阻,其电阻值会根据变化而变化(以欧姆Ω为单位)这些传感器的成本相当低廉,易于使用,但精确度极低。每个传感器之间的误差也可能相差10%,因此,基本上,当您使用FSR时,您应该只期望得到响应范围。尽管FSR可以检测体重,但对于准确检测体重是多少,这是一个错误的选择。

但是,对于大多数触摸感应应用,例如“这被挤压了吗或推高了多少”,这笔钱真是物超所值!

一些基本统计信息

这些统计信息专门针对Interlink 402,但几乎所有FSR都是相似的。检查数据表将始终发现任何差异

尺寸:直径为1/2英寸(12.5毫米)的有效区域乘以0.02英寸厚(Interlink确实有一些大小为1.5“ x1.5”)

价格 $ 7.00来自Adafruit商店

电阻范围:无限/开路(无压力),100K Ω(轻压力)至200Ω(最大压力)

力范围:0到20磅(0到100牛顿)均匀地施加在0.125平方米的表面积上

电源:任何!使用小于1mA的电流(取决于使用的任何上拉/下拉电阻器和电源电压)

数据表(请注意,此处存在一些数学上的矛盾之处) )

如何使用FSR测量力/压力 我们已经说过,随着施加更大的压力,FSR的阻力会发生变化。当没有压力时,传感器看起来就像一个无限电阻(开路),随着压力的增加,电阻会降低。该图表明在不同的力测量下传感器的电阻。 (请注意,力不是以克为单位,而是真正意义上的牛顿* 100!)

重要的是要注意该图并不是真正的 linear (它是一个对数/对数图),并且在极低的力测量下,它迅速从无穷大变为100KΩ。

测试FSR

确定FSR工作方式的最简单方法是将万用表以电阻测量模式连接到传感器的两个选项卡,并查看电阻如何变化。由于电阻变化很大,因此自动量程仪表在这里可以很好地工作。否则,只需确保在“放弃”之前尝试在1 Mohm和100 ohm之间的不同范围。

连接到FSR

由于FSR本质上是电阻器,因此它们是无极性的。这意味着您可以将它们“以任何一种方式”连接起来,它们就可以正常工作!

,或使用诸如鳄鱼夹或阴头的夹子连接器

FSR通常是丝网印刷导电材料的聚合物。这意味着它们是塑料的,连接接线片压在有些精致的材料上。最好的连接方法是将它们插入面包板。

接线端子,例如 Phoenix#1881448

可以焊接到突舌上,但是 您必须非常快 ,因为如果您的熨斗质量不好或者您甚至会发硬几秒钟,您将熔化塑料并破坏FSR! 除非您绝对确定自己有技能,否则不要尝试直接将其焊接到FSR。

使用FSR

模拟电压读数方法 测量电阻传感器的最简单方法是将一端连接到电源,另一端连接到下拉电阻器到地面。然后,将固定下拉电阻器和可变FSR电阻器之间的点连接到诸如Arduino之类的微控制器的模拟输入(如图所示)。

在此示例中,我显示的是5V电源,但请注意,您可以将其与3.3v电源一样容易地使用。在这种配置下,模拟电压读数的范围为0V(接地)至大约5V(或与电源电压大致相同)。

工作原理是,随着FSR的电阻减小,电容FSR和下拉电阻的总电阻从大约100Kohm降低到10Kohm。这意味着流过两个电阻器的电流增加,这又导致固定的10K电阻器两端的电压增加。

力(磅)力(N)FSR电阻(FSR + R)ohm流过FSR + RR两端的电压的电流》无无无限无限!0 mA0V

0.04磅0.2 N30 Kohm40 Kohm0.13 mA1.3 V

0.22磅1 N6 Kohm16 Kohm0.31 mA3.1 V

2.2 lb10 N1 Kohm11 Kohm0.45 mA4.5 V

22磅100 N250欧姆10.25 Kohm0.49 mA4.9 V

该表根据传感器力/电阻(带5V电源和10K下拉电阻)显示了近似模拟电压。

请注意,我们的方法采用的电阻率有些线性,但不提供线性电压!这是因为电压等式为:

Vo = Vcc(R/(R + FSR))

即电压成比例到FSR电阻的 倒 。

简单的使用演示与上面的示例相同,将FSR接线,但是这次允许在引脚11上添加一个LED

此草图将采用模拟电压读数,并以此来确定红色LED有多亮。按下FSR的力度越大,LED将会越亮!请记住,LED必须连接到PWM引脚才能正常工作,在此示例中,我使用引脚11。

这些示例假定您知道一些基本的Arduino编程。如果您不愿意,也许花一些时间在Arduino教程中复习基础知识?

下载:file

复制代码

/* FSR testing sketch.

Connect one end of FSR to 5V, the other end to Analog 0.

Then connect one end of a 10K resistor from Analog 0 to ground

Connect LED from pin 11 through a resistor to ground

For more information see www.ladyada.net/learn/sensors/fsr.html */

int fsrAnalogPin = 0; // FSR is connected to analog 0

int LEDpin = 11; // connect Red LED to pin 11 (PWM pin)

int fsrReading; // the analog reading from the FSR resistor divider

int LEDbrightness;

void setup(void) {

Serial.begin(9600); // We‘ll send debugging information via the Serial monitor

pinMode(LEDpin, OUTPUT);

}

void loop(void) {

fsrReading = analogRead(fsrAnalogPin);

Serial.print(“Analog reading = ”);

Serial.println(fsrReading);

// we’ll need to change the range from the analog reading (0-1023) down to the range

// used by analogWrite (0-255) with map!

LEDbrightness = map(fsrReading, 0, 1023, 0, 255);

// LED gets brighter the harder you press

analogWrite(LEDpin, LEDbrightness);

delay(100);

} /* FSR testing sketch.

Connect one end of FSR to 5V, the other end to Analog 0.

Then connect one end of a 10K resistor from Analog 0 to ground

Connect LED from pin 11 through a resistor to ground

For more information see www.ladyada.net/learn/sensors/fsr.html */

int fsrAnalogPin = 0; // FSR is connected to analog 0

int LEDpin = 11; // connect Red LED to pin 11 (PWM pin)

int fsrReading; // the analog reading from the FSR resistor divider

int LEDbrightness;

void setup(void) {

Serial.begin(9600); // We‘ll send debugging information via the Serial monitor

pinMode(LEDpin, OUTPUT);

}

void loop(void) {

fsrReading = analogRead(fsrAnalogPin);

Serial.print(“Analog reading = ”);

Serial.println(fsrReading);

// we’ll need to change the range from the analog reading (0-1023) down to the range

// used by analogWrite (0-255) with map!

LEDbrightness = map(fsrReading, 0, 1023, 0, 255);

// LED gets brighter the harder you press

analogWrite(LEDpin, LEDbrightness);

delay(100);

}

用于模拟FSR测量的简单代码 这是用于测量模拟引脚上FSR的代码示例。

此代码不进行任何计算,只是以定性的方式打印出其解释为压力的大小。对于大多数项目,这几乎就是所有需要的东西!

下载:file

复制代码

/* FSR simple testing sketch.

Connect one end of FSR to power, the other end to Analog 0.

Then connect one end of a 10K resistor from Analog 0 to ground

For more information see www.ladyada.net/learn/sensors/fsr.html */

int fsrPin = 0; // the FSR and 10K pulldown are connected to a0

int fsrReading; // the analog reading from the FSR resistor divider

void setup(void) {

// We‘ll send debugging information via the Serial monitor

Serial.begin(9600);

}

void loop(void) {

fsrReading = analogRead(fsrPin);

Serial.print(“Analog reading = ”);

Serial.print(fsrReading); // the raw analog reading

// We’ll have a few threshholds, qualitatively determined

if (fsrReading 《 10) {

Serial.println(“ - No pressure”);

} else if (fsrReading 《 200) {

Serial.println(“ - Light touch”);

} else if (fsrReading 《 500) {

Serial.println(“ - Light squeeze”);

} else if (fsrReading 《 800) {

Serial.println(“ - Medium squeeze”);

} else {

Serial.println(“ - Big squeeze”);

}

delay(1000);

} /* FSR simple testing sketch.

Connect one end of FSR to power, the other end to Analog 0.

Then connect one end of a 10K resistor from Analog 0 to ground

For more information see www.ladyada.net/learn/sensors/fsr.html */

int fsrPin = 0; // the FSR and 10K pulldown are connected to a0

int fsrReading; // the analog reading from the FSR resistor divider

void setup(void) {

// We‘ll send debugging information via the Serial monitor

Serial.begin(9600);

}

void loop(void) {

fsrReading = analogRead(fsrPin);

Serial.print(“Analog reading = ”);

Serial.print(fsrReading); // the raw analog reading

// We’ll have a few threshholds, qualitatively determined

if (fsrReading 《 10) {

Serial.println(“ - No pressure”);

} else if (fsrReading 《 200) {

Serial.println(“ - Light touch”);

} else if (fsrReading 《 500) {

Serial.println(“ - Light squeeze”);

} else if (fsrReading 《 800) {

Serial.println(“ - Medium squeeze”);

} else {

Serial.println(“ - Big squeeze”);

}

delay(1000);

}

用于模拟FSR测量的深度代码 该Arduino草图假定您已将FSR像上面一样以10K接线?下拉电阻,并在模拟0引脚上读取传感器。它相当先进,可以测量FSR测得的近似牛顿力。这对于校准您认为FSR会受到的作用力非常有用。

下载:文件

复制代码

/* FSR testing sketch.

Connect one end of FSR to power, the other end to Analog 0.

Then connect one end of a 10K resistor from Analog 0 to ground

For more information see www.ladyada.net/learn/sensors/fsr.html */

int fsrPin = 0; // the FSR and 10K pulldown are connected to a0

int fsrReading; // the analog reading from the FSR resistor divider

int fsrVoltage; // the analog reading converted to voltage

unsigned long fsrResistance; // The voltage converted to resistance, can be very big so make “long”

unsigned long fsrConductance;

long fsrForce; // Finally, the resistance converted to force

void setup(void) {

Serial.begin(9600); // We‘ll send debugging information via the Serial monitor

}

void loop(void) {

fsrReading = analogRead(fsrPin);

Serial.print(“Analog reading = ”);

Serial.println(fsrReading);

// analog voltage reading ranges from about 0 to 1023 which maps to 0V to 5V (= 5000mV)

fsrVoltage = map(fsrReading, 0, 1023, 0, 5000);

Serial.print(“Voltage reading in mV = ”);

Serial.println(fsrVoltage);

if (fsrVoltage == 0) {

Serial.println(“No pressure”);

} else {

// The voltage = Vcc * R / (R + FSR) where R = 10K and Vcc = 5V

// so FSR = ((Vcc - V) * R) / V yay math!

fsrResistance = 5000 - fsrVoltage; // fsrVoltage is in millivolts so 5V = 5000mV

fsrResistance *= 10000; // 10K resistor

fsrResistance /= fsrVoltage;

Serial.print(“FSR resistance in ohms = ”);

Serial.println(fsrResistance);

fsrConductance = 1000000; // we measure in micromhos so

fsrConductance /= fsrResistance;

Serial.print(“Conductance in microMhos: ”);

Serial.println(fsrConductance);

// Use the two FSR guide graphs to approximate the force

if (fsrConductance 《= 1000) {

fsrForce = fsrConductance / 80;

Serial.print(“Force in Newtons: ”);

Serial.println(fsrForce);

} else {

fsrForce = fsrConductance - 1000;

fsrForce /= 30;

Serial.print(“Force in Newtons: ”);

Serial.println(fsrForce);

}

}

Serial.println(“--------------------”);

delay(1000);

} /* FSR testing sketch.

Connect one end of FSR to power, the other end to Analog 0.

Then connect one end of a 10K resistor from Analog 0 to ground

For more information see www.ladyada.net/learn/sensors/fsr.html */

int fsrPin = 0; // the FSR and 10K pulldown are connected to a0

int fsrReading; // the analog reading from the FSR resistor divider

int fsrVoltage; // the analog reading converted to voltage

unsigned long fsrResistance; // The voltage converted to resistance, can be very big so make “long”

unsigned long fsrConductance;

long fsrForce; // Finally, the resistance converted to force

void setup(void) {

Serial.begin(9600); // We’ll send debugging information via the Serial monitor

}

void loop(void) {

fsrReading = analogRead(fsrPin);

Serial.print(“Analog reading = ”);

Serial.println(fsrReading);

// analog voltage reading ranges from about 0 to 1023 which maps to 0V to 5V (= 5000mV)

fsrVoltage = map(fsrReading, 0, 1023, 0, 5000);

Serial.print(“Voltage reading in mV = ”);

Serial.println(fsrVoltage);

if (fsrVoltage == 0) {

Serial.println(“No pressure”);

} else {

// The voltage = Vcc * R / (R + FSR) where R = 10K and Vcc = 5V

// so FSR = ((Vcc - V) * R) / V yay math!

fsrResistance = 5000 - fsrVoltage; // fsrVoltage is in millivolts so 5V = 5000mV

fsrResistance *= 10000; // 10K resistor

fsrResistance /= fsrVoltage;

Serial.print(“FSR resistance in ohms = ”);

Serial.println(fsrResistance);

fsrConductance = 1000000; // we measure in micromhos so

fsrConductance /= fsrResistance;

Serial.print(“Conductance in microMhos: ”);

Serial.println(fsrConductance);

// Use the two FSR guide graphs to approximate the force

if (fsrConductance 《= 1000) {

fsrForce = fsrConductance / 80;

Serial.print(“Force in Newtons: ”);

Serial.println(fsrForce);

} else {

fsrForce = fsrConductance - 1000;

fsrForce /= 30;

Serial.print(“Force in Newtons: ”);

Serial.println(fsrForce);

}

}

Serial.println(“--------------------”);

delay(1000);

}

奖金!读取没有模拟引脚的FSR测量值。由于FSR基本上是电阻器,因此即使您的微控制器上没有任何模拟引脚(或者说您想连接的数量超过模拟输入引脚),也可以使用它们我们这样做的方法是利用电阻器和电容器的基本电子特性,事实证明,如果您使用最初不存储电压的电容器,然后通过电阻器将其连接到电源,则它将充电电压越大,电阻就越大。

示波器捕获的图像显示了数字引脚上发生的情况(黄色),蓝线表示草图何时开始计数以及完成计算的时间,大约1.2毫秒后。

这是因为电容器的作用就像桶,电阻的作用就像一根细管。足够的时间,您可以通过计时将桶装满一半所需的时间来确定管道的宽度。

在这种情况下,我们的“桶”是一个0.1uF的陶瓷电容器。您几乎可以随意更改电容器,但时序值也会改变。对于这些FSR,0.1uF似乎是一个不错的起点。

下载:文件

复制代码

/* FSR simple testing sketch.

Connect one end of FSR to power, the other end to pin 2.

Then connect one end of a 0.1uF capacitor from pin 2 to ground

For more information see www.ladyada.net/learn/sensors/fsr.html */

int fsrPin = 2; // the FSR and cap are connected to pin2

int fsrReading; // the digital reading

int ledPin = 13; // you can just use the ‘built in’ LED

void setup(void) {

// We‘ll send debugging information via the Serial monitor

Serial.begin(9600);

pinMode(ledPin, OUTPUT); // have an LED for output

}

void loop(void) {

// read the resistor using the RCtime technique

fsrReading = RCtime(fsrPin);

if (fsrReading == 30000) {

// if we got 30000 that means we ’timed out‘

Serial.println(“Nothing connected!”);

} else {

Serial.print(“RCtime reading = ”);

Serial.println(fsrReading); // the raw analog reading

// Do a little processing to keep the LED blinking

fsrReading /= 10;

// The more you press, the faster it blinks!

digitalWrite(ledPin, HIGH);

delay(fsrReading);

digitalWrite(ledPin, LOW);

delay(fsrReading);

}

delay(100);

}

// Uses a digital pin to measure a resistor (like an FSR or photocell!)

// We do this by having the resistor feed current into a capacitor and

// counting how long it takes to get to Vcc/2 (for most arduinos, thats 2.5V)

int RCtime(int RCpin) {

int reading = 0; // start with 0

// set the pin to an output and pull to LOW (ground)

pinMode(RCpin, OUTPUT);

digitalWrite(RCpin, LOW);

// Now set the pin to an input and.。.

pinMode(RCpin, INPUT);

while (digitalRead(RCpin) == LOW) { // count how long it takes to rise up to HIGH

reading++; // increment to keep track of time

if (reading == 30000) {

// if we got this far, the resistance is so high

// its likely that nothing is connected!

break; // leave the loop

}

}

// OK either we maxed out at 30000 or hopefully got a reading, return the count

return reading;

} /* FSR simple testing sketch.

Connect one end of FSR to power, the other end to pin 2.

Then connect one end of a 0.1uF capacitor from pin 2 to ground

For more information see www.ladyada.net/learn/sensors/fsr.html */

int fsrPin = 2; // the FSR and cap are connected to pin2

int fsrReading; // the digital reading

int ledPin = 13; // you can just use the ’built in‘ LED

void setup(void) {

// We’ll send debugging information via the Serial monitor

Serial.begin(9600);

pinMode(ledPin, OUTPUT); // have an LED for output

}

void loop(void) {

// read the resistor using the RCtime technique

fsrReading = RCtime(fsrPin);

if (fsrReading == 30000) {

// if we got 30000 that means we ‘timed out’

Serial.println(“Nothing connected!”);

} else {

Serial.print(“RCtime reading = ”);

Serial.println(fsrReading); // the raw analog reading

// Do a little processing to keep the LED blinking

fsrReading /= 10;

// The more you press, the faster it blinks!

digitalWrite(ledPin, HIGH);

delay(fsrReading);

digitalWrite(ledPin, LOW);

delay(fsrReading);

}

delay(100);

}

// Uses a digital pin to measure a resistor (like an FSR or photocell!)

// We do this by having the resistor feed current into a capacitor and

// counting how long it takes to get to Vcc/2 (for most arduinos, thats 2.5V)

int RCtime(int RCpin) {

int reading = 0; // start with 0

// set the pin to an output and pull to LOW (ground)

pinMode(RCpin, OUTPUT);

digitalWrite(RCpin, LOW);

// Now set the pin to an input and.。.

pinMode(RCpin, INPUT);

while (digitalRead(RCpin) == LOW) { // count how long it takes to rise up to HIGH

reading++; // increment to keep track of time

if (reading == 30000) {

// if we got this far, the resistance is so high

// its likely that nothing is connected!

break; // leave the loop

}

}

// OK either we maxed out at 30000 or hopefully got a reading, return the count

return reading;

}

可以根据读数计算实际电阻,但是不幸的是,IDE和arduino板的变化会使其不一致。请注意,如果您更改OS的IDE版本,或者使用3.3V arduino而不是5V,或者从16mhz Arduino更改为8Mhz Arduino(例如lilypad),可能会有所不同由于读取引脚的值需要多长时间。通常这没什么大不了的,但是如果您不期望的话,它会使您的项目难以调试!

示例项目

这里仅是使用FSR的项目的一些示例!

控制LED(有点暗,但他按了FSR)。

FSR拇指摔跤(来自斯坦福大学课程的示例)

Tapper,一种音乐界面,可通过点击您的音乐手指
责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FSR
    FSR
    +关注

    关注

    0

    文章

    33

    浏览量

    6621
收藏 人收藏

    评论

    相关推荐

    材料有哪些

    材料,也称为压电材料,是一类能够将机械应力转换为电信号或将电信号转换为机械应力的材料。这种特性使得力材料在传感器、执行器、能量收集器等领域有着广泛的应用。
    的头像 发表于 09-25 09:56 268次阅读

    元件传感器中的元件在哪

    元件传感器的工作原理基于的变化引起电阻、电容或压电效应的变化。当外部力作用于元件时,
    的头像 发表于 09-25 09:50 271次阅读

    电阻与压力关系是什么

    电阻(也称为压敏电阻)与压力之间的关系主要体现在其电阻值随外部压力的变化而变化。具体来说,当外部压力施加在
    的头像 发表于 09-25 09:48 544次阅读

    什么是电阻的作用

    电阻是一种特殊的电阻元件,其电阻值会随着受到的或压力的变化而变化。这种特性使得力
    的头像 发表于 09-25 09:41 421次阅读

    电阻传感器应用有哪些?

    电阻传感器是一种将的变化转换为电阻变化的传感器,广泛应用于各种领域。 电阻
    的头像 发表于 09-25 09:36 412次阅读

    电阻器的应用有哪些

    电阻器,也称为压敏电阻器,是一种能够根据施加在其上的机械变化而改变电阻值的电子元件。这种
    的头像 发表于 09-25 09:34 431次阅读

    压敏电阻压力与电阻函数关系

    压敏电阻(也称为电阻)是一种将机械转换为电信号的元件,其电阻值随外部压力的变化而变化。这种
    的头像 发表于 09-25 09:30 629次阅读

    电阻器跟压敏电阻器的区别是什么

    电阻器和压敏电阻器是两种不同类型的电阻器,它们在电子电路中有着各自的应用。以下是关于这两种电阻
    的头像 发表于 09-25 09:27 402次阅读

    电阻器工作原理是什么

    电阻器是一种利用电阻值随机械应力变化而变化的特性来检测力的传感器。它广泛应用于各种测量和控制系统中,如压力、位移、加速度等的测量。
    的头像 发表于 09-25 09:23 418次阅读

    湿电阻程序编写方法。。。。。。。。。。。

    使用AD动态采样方法,用一个Rf电阻和湿电阻分压,然后用ADC进行采样,Rf电阻输入高电平时湿电阻
    发表于 09-21 15:20

    湿电阻的工作原理及电阻

    湿电阻是一种能够根据周围环境湿度变化而改变其电阻值的传感器。这种传感器广泛应用于气象监测、工业自动化、家用电器等领域。湿电阻的工作原理基
    的头像 发表于 09-21 09:35 1290次阅读

    电阻为什么要加热使用

    电阻,也称为气元件或气体传感器,是一种能够检测特定气体浓度变化的传感器。它们广泛应用于环境监测、工业安全、医疗设备、家用电器等领域。气电阻
    的头像 发表于 09-19 11:39 879次阅读

    湿电阻与湿电容的特点和区别

    湿电阻与湿电容的特点和区别  湿电阻和湿电容是常见的湿度传感器类型,用于检测周围环境的湿
    的头像 发表于 03-26 15:36 1828次阅读

    湿电阻的测量 湿电阻的种类与结构示意图

    湿电阻电阻值随环境相对湿度而变化的敏感元件,主要是由湿层、电极和具有一定机械强度的绝缘基体所组成。
    的头像 发表于 02-23 14:13 3495次阅读
    湿<b class='flag-5'>敏</b><b class='flag-5'>电阻</b>的测量 湿<b class='flag-5'>敏</b><b class='flag-5'>电阻</b>的种类与结构示意图

    如何分辨压电容和压敏电阻电容可以用压敏电阻代替吗

    如何分辨压电容和压敏电阻电容可以用压敏电阻代替吗  压电容和压敏电阻是两种不同的材料和
    的头像 发表于 02-04 10:25 1855次阅读