为什么Arduino模拟输出值总是错误的?显着关闭
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Arduino模拟输出值总是错误的?显着关闭相关的知识,希望对你有一定的参考价值。
发生了什么事情,无论我把什么类型的传感器放到我的Arduino Elegoo R3板上,我的价值都是错误的。
发生了什么:
模拟温度传感器 - 读取400多摄氏度
火焰检测传感器 - 根据火焰距离读取0,1023(挖掘)或0,1(模拟)之间的编号。
详情:Board - Elegoo Uno R3
面包板
传感器来自Elegoo 37传感器套件 - https://github.com/josejuansanchez/37-in-1-arduino-sensor-kit
基本代码:
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(A0, INPUT);
}
void loop() {
int reading = analogRead(A0);
// converting that reading to voltage, for 3.3v arduino use 3.3
float voltage = reading * 5.0;
voltage /= 1024.0;
// print out the voltage
Serial.print(voltage); Serial.println(" volts");
// now print out the temperature
float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset
//to degrees ((voltage - 500mV) times 100)
Serial.print(temperatureC); Serial.println(" degrees C");
// now convert to Fahrenheit
float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
Serial.print(temperatureF); Serial.println(" degrees F");
delay(1000);
}
我尝试过其他传感器并遇到类似的问题。
这让我相信我做错了布线。但是,有一张照片可以显示引脚连接,我使用面包板完全按照照片所示连线
我在这里找到的教程正是我如何为火焰检测设置我的电路板:http://www.instructables.com/id/Arduino-Modules-Flame-Sensor/
我或本教程缺少什么会导致传感器读数错误?
要尝试的一件事是“现实检查”:将已知的正电压连接到A0,将另一端连接到地。一个已知良好的1.5V电池应该没问题...它应该返回大约1024 * 1.5 / 5 = 307的读数。如果是这样,你就知道你的Uno和代码都没问题;如果没有,请再次检查传感器和接线。
另一个简单的测试是使用万用表(他们经常免费赠送的那些Harbor Freight工作之一),并在有和没有火焰的情况下测量传感器输出电压。
假设Elegoo Uno R3使用atmega328,这里是ADC的一个示例代码。通常读取传感器涉及将传感器连接到控制器上的模拟通道之一(如果控制器内置ADC)。然后,您需要在控制器中配置ADC。配置完成后,为了读取通道,您需要发出信号以启动转换(基本上在那个时刻什么是模拟值并转换为数字值)并等待转换完成。然后,您可以从控制器的ADC寄存器中读取数字值。以下链接中atmega328的示例
在您提到的火焰传感器中,您需要连接Adreno板的任何模拟通道的A0模拟信号。 D0是一个数字通道,根据温度是否达到某个阈值,只给你0或1。
我拿了你的确切代码,并将其下载到Arduino。
通过插入从A0到GND,3.3V和5V的跳线,您的代码似乎正常工作,因为正确的值出现在电压上。
顺便说一下,你的setup()例程中不需要'pinMode(A0,INPUT)'行。
如果此设置不起作用,则可能意味着通道A0混乱。 Boggyman建议的现实检查是您所需要的,Arduino板可以轻松提供其中三个值。顺便说一句,这些是模拟输入,而不是输出;您的帖子标题在技术上是不正确的。
0.00 volts
-50.00 degrees C
-58.00 degrees F
3.33 volts
282.52 degrees C
540.54 degrees F
5.00 volts
449.51 degrees C
841.12 degrees F
5.00 volts
以上是关于为什么Arduino模拟输出值总是错误的?显着关闭的主要内容,如果未能解决你的问题,请参考以下文章