Интернет-магазин

Просмотр корзины
В корзине:

товаров - 0 шт.



§ 22. Подключение датчика KTS-1 к входу АЦП

Дмитрий Иванов, 20 Декабря 2012

У некоторыхз модулей KernelChip не предусмотрено прямое подключения датчика температуры KTS-1. Однако иммется возможность подключения этого датчика ко входу АЦП и самостоятельного расчета температуры по показаниям АЦП.


При подключении датчика через вход АЦП потребуется использование дополнительного схемного элемента - резистора. Также потребуется рассчитать значение температуры по показаниям АЦП используя специальную формулу, представленную ниже.

Рис.1 Схема подключения датчика температуры KTS-1 к входу АЦП модулей KernelChip


Величина сопротивления Rm, показанного на схеме ниже: порядка 3 кОм, хотя вполне допустимо выбрать любое доступное сопротивление из диапазона 2 - 10 кОм. Настоятельно рекомендуется использовать прецензионное сопротивление с точностью 1 %. Порядок (полярность) подключения выводов датчика KTS-1 к входу АЦП значения не имеет. Vпит - источник постоянного опорнго напряжения. Его величина не должна выходить за границы допустимого входного напряжения для АЦП конкретного модуля.


Для расчета температуры датчика в градусах Цельсия необходимо воспользоваться формулой, приведенной ниже.

где:
Vadc - показания АЦП в вольтах к которому подключен датчик
β - коэффициент температурной чувствительности датчика, равен 3988
Ro - сопротивление датчика при 25 oC, равно 3 кОм


Рассмотсрим пример подключения датчика KTS-1 к модулю Ke-USB24A. На рисунке ниже представлена схема подключения датчика к модулю:

Рис.2 Схема подключения датчика температуры KTS-1 к модулю Ke-USB24A

В качестве источника опорного напряжения для датчика выбрано напряжение питания USB величиной 5 В. Ниже представлен листинг простой консольной программы, написанной на языке С++, иллюстрирующий процесс рассчета значения температуры по показаниям АЦП. В данном примере значение сопростивления Rm выбрано равным 4.3 кОм.

#include <iostream>
#include "windows.h"
#include <conio.h>
#include <math.h>

// Параметры датчика и схемы его подключения
double betta = 3988;  
double Rm = 4300;     
double R0 = 3000;

int main(int argc, char *argv[])
{  
  if( argc < 2 )
  {
    printf("Error! No arguments.");
    return 0;
  }	

  // Входной аргумент - цифровое значение АЦП в диапазоне 0-1023
  int ADC_Value  = atoi(argv[1]);     
  
  // Расчет напряжения АЦП в вольтах
  double inVolt = (((double)ADC_Value)/1023.0)*5.09;  // 5.09 - см. Дополнения ниже
  printf("InVolt: %f\r\n", inVolt);

  // Расчет сопротивления терморезистора
  double RT = (Rm*inVolt)/(5.0 - inVolt);
  printf("RT: %f\r\n", RT);

  // Расчет температуры в градусах Цельсия
  double Temper = (betta/(log(RT/R0) + betta/298.0)) - 273;
  printf("Temperature: %f\r\n", Temper); 

  return 0;
}

Дополнения:

  • В качестве Rm рекомендуется применять прецензионный резистор с точностью 1 %. Использование резистора обычной штатной точности (5%) может оказать ощутимое влияние на результирующую точность измерений температуры. Ошибка в таком случае может достигать 1-2 oC.

  • При использовании шины USB в качестве источника питания цепи термодатчика необходимо обратить внимание на тот факт, что номинально напряжения питания USB не равно 5 В а несколько больше или меньше этой величины. Обычно оно составляет 5.09 В для PC с внешним питанием и 4.8 - 4.9 В для ноутбука, работающего от внутренней батареи. Рекомендуется учитывать это в формуле для расчета напряжения АЦП. Пренебрежение этой особенностью может повлиять на точность измерения температуры (ошибка может достигать 0.5 - 1.0 oC)

© Дмитрий Иванов
20 Декабря 2012 года
http://www.kernelchip.ru



© KERNELCHIP 2006 - 2017