2017-12-15 24 views
0

무슨 일이 벌어지고 있는지는 내 Arduino Elegoo R3 보드에 어떤 유형의 센서를 장착했는지에 관계없이 내 값이 잘못 읽혀지는 것입니다.Arduino AnalogOutput 값이 항상 잘못된 이유는 무엇입니까? 의미심장 한 off

무엇이 일어나는 :

아날로그 온도 센서 - 읽어 400+ 섭씨

불꽃 감지 센서 - 중 0 1023 (파기) 또는 0,1 (아날로그) 아니오 사이에서 화염의 거리에 따라 읽어들 .

세부 사항 : 보드 - Elegoo 우노 R3

브레드

센서가 Elegoo 37 센서 키트에서입니다 - https://github.com/josejuansanchez/37-in-1-arduino-sensor-kit

Basic 코드 : 나는 시도했다

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/

무엇 나 또는이 튜토리얼이 누락되면 센서 판독 값이 잘못 될 수 있습니까?

+0

ADC의 경우 ADC에 대한 변환 신호가 필요하지 않습니까? 'analogRead (A0);에 대한 코드를 줄 수 있습니까? 또한 스타터 키트에 정확한 컨트롤러 란 무엇입니까? – Sudhee

답변

1

Elegoo Uno R3은 atmega328을 사용한다고 가정하면 여기에 ADC에 대한 코드 예가 ​​나와 있습니다. 일반적으로 센서를 읽는 것은 컨트롤러의 아날로그 채널 중 하나에 센서를 연결하는 것입니다 (컨트롤러에 ADC가 내장 된 경우). 그런 다음 컨트롤러에서 ADC를 구성해야합니다. 구성이 완료되면 채널을 읽으려면 신호를 보내서 변환을 시작해야합니다 (기본적으로 아날로그 값은 무엇이며 디지털 값으로 변환됩니까). 변환이 완료 될 때까지 기다려야합니다. 그런 다음 컨트롤러의 ADC 레지스터에서 디지털 값을 읽을 수 있습니다. 는 Adreno는 기판의 아날로그 채널을 연결할 필요가 언급 불꽃 센서 A0 아날로그 신호 링크

Example code

다음의 atmega328하는 예. D0는 온도가 특정 임계 값에 도달했는지 여부에 따라 0 또는 1 만 제공하는 디지털 채널입니다.

2

"현실 확인"을 시도해보십시오. A0에 알려진 양의 전압을 접지에 연결하십시오. 잘 알려진 1.5V 배터리는 정상이어야합니다 ... 약 1024 * 1.5/5 = 307의 판독 값을 반환해야합니다. 그렇다면 Uno 및 코드가 정상임을 알고 있습니다. 그렇지 않다면 센서와 배선을 다시 점검하십시오.

또 다른 간단한 테스트는 멀티 미터 (종종 무료로 제공되는 항만화물 작업 중 하나 인)를 사용하여 화염 유무와 상관없이 센서 출력 전압을 측정하는 것입니다.

0

정확한 코드를 가져 와서 Arduino에 다운로드했습니다.

A0에서 GND, 3.3V 및 5V로 점퍼를 연결하면 올바른 전압 값이 표시되기 때문에 코드가 올바르게 작동하는 것으로 보입니다.

현재로서는 setup() 루틴에서 'pinMode (A0, INPUT)'행이 필요하지 않습니다.

이 설정이 작동하지 않으면 채널 A0이 엉망이 될 수 있습니다. Boggyman이 제안한 현실성 검사는 여러분이 필요로하는 것이며, Arduino 보드는 그 중 3 가지 값을 쉽게 제공 할 수 있습니다. 그건 그렇고, 이들은 입력 입력, 출력되지 않습니다; 게시물의 제목이 기술적으로 올바르지 않습니다.

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