在这个项目中,我们将使用力传感器和Arduino Uno开发有趣的电路。该电路产生与施加在传感器上的力线性相关的声音。为此,我们将FORCE传感器与Arduino Uno接口。在UNO中,我们将使用8位ADC(模数转换)功能来完成这项工作。
力传感器或力敏电阻
力传感器是一种传感器,当在表面施加压力时会改变其电阻。力传感器有不同的尺寸和形状。我们将使用较便宜的版本之一,因为我们在这里不需要太多的准确性。FSR400是市场上最便宜的力传感器之一。 FSR400的图片如下图所示。它们也称为力敏电阻器或FSR,因为其电阻会根据施加到其上的力或压力而变化。当向该力感测电阻器施加压力时,其电阻减小,即,该电阻与所施加的力成反比。因此,当不施加压力时,FSR的电阻将非常高。
现在需要注意的是,FSR 400沿长度方向很敏感,力或重量应集中在传感器眼睛中部的迷宫中,如图所示。如果在错误的时间施加力,则设备可能会永久损坏。
要知道的另一件事是,传感器可以驱动高范围的电流。因此,在安装时请记住驱动电流。此外,传感器的力极限为10牛顿。因此,我们只能施加1kg的重量。如果施加的重量大于1Kg,则传感器可能会出现一些偏差。如果增加超过3Kg。传感器可能会永久损坏。
如前所述,该传感器用于感应压力变化。因此,当将重量施加在FORCE传感器的顶部时,电阻会急剧变化。FS400超重的电阻如下图所示,
如上图所示,传感器两个触点之间的电阻随重量而减小,或者传感器两个触点之间的电导率增加。纯导体的电阻由下式给出:
哪里,
p-导体电阻率
l =导体长度
A =导体面积。
现在考虑电阻为“ R”的导体,如果在导体顶部施加一定的压力,则由于压力的作用,导体上的面积会减小,导体的长度会增加。因此,根据公式,导体的电阻应增加,因为电阻R与面积成反比,也与长度l成正比。
因此,对于处于压力或重量下的导体,导体的电阻会增加。但是与总阻力相比,这种变化很小。为了进行重大更改,许多导体被堆叠在一起。这就是上图所示的力传感器内部发生的情况。仔细观察,可以看到传感器内部有多条线。这些线中的每条线都代表一个导体。传感器的灵敏度以导体号表示。
但是在这种情况下,电阻将随着压力而减小,因为此处使用的材料不是纯导体。这里的FSR是坚固的聚合物厚膜(PTF)器件。因此,这些不是纯导体材料设备。它们由一种材料制成,随着施加到传感器表面的力的增加,电阻会降低。该材料具有FSR曲线所示的特性。
除非我们能读懂它们,否则这种抵抗力的改变是没有用的。控制器只能读取电压的机会,因此,我们将使用分压器电路,从而可以得出电阻随电压变化的变化。
分压器是一个电阻电路,如图所示。在这种电阻网络中,我们有一个恒定电阻和另一个可变电阻。如图所示,R1是恒定电阻,R2是用作电阻的力传感器。分支的中点被测量。随着R2的变化,我们在Vout有了变化。因此,随着电压的变化,我们会随着重量的变化而变化。
现在要注意的重要一点是,控制器用于ADC转换的输入低至50µAmp。基于电阻的分压器的这种负载效应非常重要,因为从分压器的Vout汲取的电流会增加误差百分比,因此现在我们不必担心负载效应。
如何检查FSR传感器
可以使用万用表测试力感测电阻器。将FSR传感器的两个引脚不加力地连接到万用表,并检查电阻值,它会很高。然后在其表面施加一些力,然后观察电阻值的减小。
FSR传感器的应用
力感应电阻器主要用于创建压力感应“按钮”。它们用于各种领域,例如汽车占用传感器,电阻式触摸板,机器人指尖,假肢,小键盘,足内翻系统,乐器,嵌入式电子产品,测试和测量设备,OEM开发套件以及便携式电子产品,体育。它们还用于增强现实系统以及增强移动交互。
所需组件
硬件: Arduino Uno,电源(5v),1000 uF电容器,100nF电容器(3个),100KΩ电阻,蜂鸣器,220Ω电阻,FSR400力传感器。
软件:每晚Atmel Studio 6.2或Aurdino
电路图和工作说明
下图显示了用于将力敏电阻与Arduino接口的电路连接。
传感器两端的电压不是完全线性的。会很吵。为了滤除噪声,如图所示,在分压器电路中的每个电阻器上放置一个电容器。
在这里,我们将采用分压器提供的电压(线性表示重量的电压),并将其馈入UNO的ADC通道之一。转换后,我们将获取该数字值(表示权重),并将其与PWM值关联以驱动蜂鸣器。
因此,有了权重,我们就有了一个PWM值,该PWM值根据数字值改变其占空比。数字值越高,PWM的占空比越高,则蜂鸣器产生的噪声也越高。因此,我们将重量与声音相关联。
在继续之前,让我们谈谈Arduino Uno的ADC。如图所示,ARDUINO有六个ADC通道。在这些情况下,它们中的任何一个或全部都可用作模拟电压的输入。UNO ADC的分辨率为10位(所以(0-(2 ^ 10)1023)中的整数值)。这意味着它将映射0到5伏之间的输入电压到0到1023之间的整数。 (5/1024 = 4.9mV)每单位。
在这里,我们将使用UNO的A0。
我们需要知道的很少。
|
首先,UNO ADC通道的默认参考值为5V。这意味着我们可以在任何输入通道上为ADC转换提供5V的最大输入电压。由于某些传感器提供的电压范围为0-2.5V,使用5V基准电压时,我们获得的精度较低,因此我们有一条指令使我们能够更改该基准值。因此,对于更改参考值,我们有(“ analogReference();”),现在将其保留为。
默认情况下,我们获得的最大板载ADC分辨率为10位,可以使用指令(“ analogReadResolution(bits);”)更改此分辨率。在某些情况下,此分辨率更改可能会派上用场。现在,我们将其保留为。
现在,如果将上述条件设置为默认值,我们可以通过直接调用函数“ analogRead(pin);”从通道“ 0”的ADC读取值,这里的“ pin”代表我们连接模拟信号的引脚,在这种情况下将为“ A0”。ADC的值可以取为整数,例如“ int SENSORVALUE = AnalogRead(A0); ”,则该指令会将ADC之后的值存储在整数“ SENSORVALUE”中。
Arduino Uno的PWM可以在PCB板上标为“〜”的任何引脚上实现。UNO中有六个PWM通道。我们将使用PIN3作为我们的目的。
AnalogWrite(3,VALUE); |
从上述情况我们可以直接在相应的引脚上获得PWM信号。括号中的第一个参数用于选择PWM信号的引脚号。第二个参数用于写入占空比。
可以将UNO的PWM值从0更改为255。将最低“ 0”更改为最高“ 255”。当占空比为255时,我们将在PIN3上获得5V。如果占空比为125,则PIN3上将获得2.5V。
现在我们将0-1024的值作为ADC输出,将0-255的作为PWM占空比。因此ADC约为PWM比率的四倍。因此,将ADC结果除以4,我们将得出近似的占空比。
这样,我们将获得一个PWM信号,其占空比随重量线性变化。给蜂鸣器,我们有根据重量的发声器。