首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Arduino AnalogOutput的值总是错误的?显著减少

为什么Arduino AnalogOutput的值总是错误的?显著减少
EN

Stack Overflow用户
提问于 2017-12-15 19:27:39
回答 3查看 322关注 0票数 0

发生的事情是,无论我在Arduino Elegoo R3板上放置什么类型的传感器,我的值都读错了。

发生了什么:

模拟温度传感器-读取400+摄氏度

火焰检测传感器-根据火焰距离读取0,1023 (dig)或0,1(模拟) no。

详情: Board - Elegoo Uno R3

面包板

传感器来自Elegoo 37-传感器套件- https://github.com/josejuansanchez/37-in-1-arduino-sensor-kit

基本代码:

代码语言:javascript
复制
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/

我或本教程遗漏了哪些会导致传感器读数错误的内容?

EN

回答 3

Stack Overflow用户

发布于 2017-12-16 23:15:17

可以尝试的一件事是“现实检查”:将一个已知的正电压连接到A0,另一端连接到地。已知良好的1.5V电池应该没问题...它应该返回大约1024 * 1.5 /5= 307的读数。如果是这样,您知道您的Uno和代码是正常的;如果不是,请再次检查您的传感器和布线。

另一个简单的测试是使用万用表(他们经常免费提供的港口货运工作之一是很好的),并测量有无火焰的传感器输出电压。

票数 2
EN

Stack Overflow用户

发布于 2017-12-16 06:07:29

假设Elegoo Uno R3使用atmega328,下面是一个ADC示例代码。通常,读取传感器包括将传感器连接到控制器上的一个模拟通道(如果控制器内置了ADC)。然后,您需要在控制器中配置ADC。配置完成后,为了读取通道,您需要发出信号以开始转换(基本上在该时刻,什么是模拟值并转换为数字值),然后等待转换完成。然后,您可以从控制器的ADC寄存器中读取数字值。以下链接中的atmega328示例

Example code

在您提到的火焰传感器中,A0模拟信号指示您需要连接ADRENO板的任何模拟通道。D0是一个数字通道,根据温度是否达到一定的阈值,它只会给你0或1。

票数 1
EN

Stack Overflow用户

发布于 2017-12-17 05:46:01

我把你的代码下载到了Arduino上。

通过插入从A0到GND、3.3V和5V的跳线,您的代码似乎工作正常,因为出现了正确的电压值。

顺便说一句,您不需要在setup()例程中使用'pinMode(A0,INPUT)‘行。

如果此设置不起作用,则可能意味着通道A0被搞乱了。Boggyman建议的现实检查是您需要的,Arduino董事会可以很容易地提供其中的三个值。顺便说一下,这些是模拟输入,而不是输出;你帖子的标题在技术上是不正确的。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47831428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档