كيفية الحصول على درجة الحرارة المحيطة من استشعار درجة الحرارة اردوينو lilypad

StackOverflow https://stackoverflow.com/questions/1664707

  •  12-09-2019
  •  | 
  •  

سؤال

أنا توصل lilypad استشعار درجة الحرارة إلى أ Lilypad Arduino 328 المجلس الرئيسي بهدف قراءة قراءات درجة حرارة دقيقة بدقة إلى حد ما. يستقبل المستشعر السلطة وإعطاء ردود قادرة على القراءة عبر المسلسل.

المشكلة التي أتواجهها هي أن القراءة من المستشعر تعطيني غير عادية للغاية - على الرغم من أن أرقام متسقة. أنا أقرأ مدخلات الاستشعار التناظرية وتحويلها إلى فولت مثل هذا ...

loop(){
    float therm;   
    therm = analogRead(2); // Read from sensor through Analog 2
    therm *= (5.0/1024.0); // 5 volts / 1024 units of analog resolution
    delay(100);
}

هذا ينتج عنه قراءة متسقة لنحو 1.1 فولت التي تشير وثائق الاستشعار إلى أن تكون درجة حرارة محيطة تبلغ حوالي 60 درجة مئوية مئوية عندما تبلغ درجة الحرارة المحيطة الحقيقية حوالي 23 درجة. المستشعر ليس قريبا من أي إلكترونيات أخرى حتى لا أستطيع التنبؤ بأنه يمثل المشكلة.

هل الرمز الخاص بي لقراءة المستشعر غير صحيح؟ هل يمكن أن يكون مستشعري معيبا؟

هل كانت مفيدة؟

المحلول

ليس LilyPad Arduino 3.3V، بحيث يعني أنه يجب أن يكون (3.3/1024.0), ، والتي ستكون 0.726V، أو 22.6 ج؟

نصائح أخرى

جرب هذا. كان لدي نفس المشكلة بالضبط. قراءة المزيد هنا: http://www.ladyada.net/learn/sensors/tmp36.html.

//TMP36 Pin Variables
int sensorPin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to
                        //the resolution is 10 mV / degree centigrade with a
                        //500 mV offset to allow for negative temperatures

#define BANDGAPREF 14   // special indicator that we want to measure the bandgap

/*
 * setup() - this function runs once when you turn your Arduino on
 * We initialize the serial connection with the computer
 */
void setup()
{
  Serial.begin(9600);  //Start the serial connection with the computer
                       //to view the result open the serial monitor 
  delay(500);
}

void loop()                     // run over and over again
{
  // get voltage reading from the secret internal 1.05V reference
  int refReading = analogRead(BANDGAPREF);  
  Serial.println(refReading);

  // now calculate our power supply voltage from the known 1.05 volt reading
  float supplyvoltage = (1.05 * 1024) / refReading;
  Serial.print(supplyvoltage); Serial.println("V power supply");

  //getting the voltage reading from the temperature sensor
  int reading = analogRead(sensorPin);  

  // converting that reading to voltage
  float voltage = reading * supplyvoltage / 1024; 

  // 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 ((volatge - 500mV) times 100)
  Serial.print(temperatureC); Serial.println(" degress C");

  // now convert to Fahrenheight
  float temperatureF = (temperatureC * 9 / 5) + 32;
  Serial.print(temperatureF); Serial.println(" degress F");

  delay(1000);                                     //waiting a second
}

وفقا لهذا توثيق, ، إرجاع Analgroad عدد صحيح. هل حاولت إلقاءها إلى تعويم مثل ذلك:

therm = (float)analogRead(2);

ماذا تقرأ الجهد الاستشعار على الفولتميتر؟ هل تغير القراءة عند تغيير درجة حرارة المستشعر؟ (عقد يدك على ذلك يجب أن يكون كافيا لتغيير القراءة.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top