我有一个Arduino Uno R3板。我正在尝试连接一个“拉伸传感器”,这是DIY与导电纤维,我得到它的阻力读取它。当我呼吸时,读数很好,是线性的,等等。但是,当我从SparkFun连接LilyPad温度传感器时,它很乱。即使我不移动或呼吸(屏住呼吸),阻力也会上下跳动超过10k欧姆。这只发生在我连接我的温度传感器时。
让我告诉你,我不是任何电子方面的专家。第一次使用Arduino板。
我的Arduino已连接到我的笔记本电脑。这也是他获得电力供应的方式。
简单的电气原理图如何连接元素:
我的代码看起来像这样:
// Temperature analog pin
const int tempPin = A0;
int num_samples = 10; // Number of samples before measure temperature!
// Stretch pins
const int stretchPin = A5;
const long int R1_resistor = 593000; // Resistor 600k ohm (593k ohm measured with Ohm-meter)
void setup() {
Serial.begin(9600);
}
void loop() {
temperature();
delay(200);
stretch();
delay(500);
}
/*
LEGENDs :
S = stretch
T = temperature
*/
void sendData(char symbol, float number) {
Serial.print(symbol);
Serial.println(number);
}
//Stretch sensor
void stretch () {
int raw = 0;
int V_in = 5;
float V_out = 0;
float R2_resistor = 0;
float buffer = 0;
raw = analogRead(stretchPin);
if(raw) {
buffer = raw * V_in;
V_out = (buffer) / 1023.0;
buffer = (V_in / V_out) -1;
R2_resistor = R1_resistor * buffer;
sendData('S', R2_resistor);
}
}
// Temperature measure!
void temperature () {
int total = 0;
float temp;
for(int i = 0; i < num_samples; i++) {
total += analogRead(tempPin);
delay(5);
}
float v = total * 4.9 / 1024.0; // 4.93 volt measure
temp = ((v - 0-5) * 100) / num_samples
sendData('T', temp);
} // End of Temperature
你能帮助我完成我的项目吗?我已经坚持了一段时间了。谢谢。
编辑: 我会提供一些图表,以便您看得更清楚。
这就是没有温度传感器连接到Arduino的“图形”的样子。它显示出呼吸。
此图显示连接温度传感器的“图表”。它很乱,在某些时候你可以说我正在呼吸,即使我不是。当我做的时候用红色标记。
问候。
马尔科
答案 0 :(得分:2)
在250K时,担架传感器的输出阻抗过高,您会在通道之间遇到“泄漏”。 ATMega只有一个ADC,有8个通道,并且拉伸传感器阻抗非常高,它不能使ADC的输入足够快地恢复,以获得良好的读数。
建议的ATMega ADC信号阻抗最大为10k。您必须使用单电源,轨到轨,高输入阻抗运算放大器(如OPA341)来缓冲拉伸传感器的输入。
以防万一,这是缓冲器或电压跟随器的连线方式:
http://buildasynth.josephfosco.com/wp-content/uploads/2012/06/follower.gif
使用此原理图作为基础,将拉伸传感器的输出连接到vIn,并直接或通过1K到4.7K电阻连接到A5。您应该在运算放大器电源引脚之间添加一个小的0.1nF电容,并尽可能靠近它们。