ПОМОГИТЕ ПОДКЛЮЧИТЬ термопару Pt500 0+160C к arduino по 3х-4х проводной схеме

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем pshtettt, 13 май 2014.

  1. pshtettt

    pshtettt Нуб

    ПОМОГИТЕ ПОДКЛЮЧИТЬ термопару Pt500 0+160C к arduino по 3х-4х проводной схеме и как быть с нелинейностью?
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    почему "по 3х-4х проводной схеме ", если они двухпроводные?
    Подключаются к аналоговому входу, далее согласно таблице вычисляются показания в градусах: http://teplokom.com.ua/kamstrup-daniya/datchiki-temperatury-pt-100-pt-500-tablica-soprotivleniy.html
    вопрос непонятен, потому как "Платиновые термодатчики серии Pt обладают практически линейной зависимостью сопротивления от температуры с высокой стабильностью".
     
  3. pshtettt

    pshtettt Нуб

    3х или 4х проводная схема для измерения сопротивления на самой термопаре и сопротивление проводов для увеличения точности измерения. Меня интересует как подключить к МК и как програмно лучше реализовать такую таблицу.
     
  4. Tomasina

    Tomasina Сушитель лампочек Модератор

    сопротивление проводов измеряется тестером единоразово (при монтаже, либо за какую-то фиксированную длину, скажем, 10 метров) и задается как корректирующий коэффициент при расчетах.

    Расчет можно выполнять по разному: с использованием коэффициента (сенсор другой, но принцип тот же), с использованием формулы, либо по вышеуказанной таблице. В последнем случае можно ее загнать в двумерный массив и искать ближайшее совпадение.

    Если он действительно линейный, возможно получится и без таблицы, чисто "в лоб" считать пропорции:
    Код (Text):
    #define TEMP_PIN A0        // Указываем номер порта для датчика температуры (А0)
    // Калибровка датчика
    const int valueMin = 500;  // Полученное экспериментально значение на пине при температуре 0С
    const int valueMax = 822;  // Полученное экспериментально значение на пине при температуре 160С

    //  Описываем настройки программы
    void setup()
    {
      // Устанавливаем порт как вход
      pinMode(TEMP_PIN, INPUT);
      // Запускаем чтение данных с сериал порта со скоростью 9600 бод\сек (стандартная скорость)
      Serial.begin(9600);
    }

    //  Основной цикл программы
    void loop()
    {
      // Считываем значение с аналогового порта
      int value = analogRead(TEMP_PIN);
      // Проверка на корректность полученных данных: если нетипичные для сеносора показания, значит, где-то косяк
      if ((value < valueMin) || (value > valueMax)) Serial.println("Sensor error!");
      else
      {
        // Выводим на монитор считанное значение (ctrl+shift+M для просмотра консоли)
        Serial.print("Value: ");
        Serial.println(value);
        // Соотносим шкалы: при значении переменной value = 500 - значение temp будет равно 0, ну а при 822 равно 160.
        int temp = map(value, valueMin, valueMax, 0, 160);
        // Выводим на монитор преобразованное значение (ctrl+shift+M для просмотра консоли)
        Serial.print("\tTemp: ");
        Serial.print(temp);
        Serial.println("*C");
      }
      // Делаем задержку на 1 секунду
      delay(1000);
    }
     
    Последнее редактирование: 13 май 2014
  5. pshtettt

    pshtettt Нуб

    Спасибо за подробное описание! А на счет подключения к arduino как лучше это сделать?
     
  6. Tomasina

    Tomasina Сушитель лампочек Модератор

  7. pshtettt

    pshtettt Нуб

    Круто! Столько схем. Я где-то читал что можно подключить через операционный устелитесь и еще всякие хитрые схемы. Как повысить точность?
     
  8. pshtettt

    pshtettt Нуб