Как читать спецификацию

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем hinotf, 3 фев 2013.

  1. hinotf

    hinotf Нуб

    Добрый день!

    Только начинаю работать с Arduino, кое-что уже почитал и не могу разобраться с термистором (http://files.amperka.ru/datasheets/B57164.pdf). Он возвращает аналоговые значения (это гораздо интереснее, чем цифровые). Но я не могу понять спецификацию - а точнее, выяснить, как на её основе превращать абстрактный показатель 0..255 в сопротивление. Следующий шаг - высчитать из сопротивления температуру наверное уже чуть-чуть легче, по крайней мере построить нелинейную зависимость каким-то способом можно.
    Честно листал во все стороны документ и долго гуглил, но так и не смог найти способа получения значения сопротивления. Подскажите, пожалуйста, как это описано в данной спецификации, откуда там выудить информацию. Дайте удочку, т.е.
    Заранее большое спасибо.
     
  2. Unixon

    Unixon Оракул Модератор

    Там есть такая таблица, в которой есть столбцы T и RT/R25, в первом сама температура, во втором отношение сопротивления термистора при температуре T к его номинальному сопротивлению при T=25C.
    Допустим, номинальное сопротивление 10кОм. Чтобы измерить сопротивление термистора с помощью АЦП ардуины, нужно его преобразовать в напряжение. Собираем делитель напряжения: термистор и постоянный резистор соединяем последовательно, концы бросаем на Vcc и GND, среднюю точку на вход АЦП. Посчитаем какой нужен постоянный резистор в делителе. Термистору на 10k соответствует характеристика №2904, при T=-55C отношение R/R25 будет 121.46, а при T=155C R/R25 будет 0.011754.
    Пробуем сделать шкалу симметричной: требуем Rmax/R2=R2/Rmin, получаем R2=12кОм. Сравнивая разрешение АЦП с отношением сопротивлений получаем, что 1/5 шкалы не будет использоваться, а все остальное - наше.
    thermistor.png
     
    nailxx нравится это.
  3. Unixon

    Unixon Оракул Модератор

    Остается только пересчитать показания АЦП. Сначала получаем сопротивление:
    Код (Text):
    int x = analogRead(A0);
    float R = R2*(x/512.0);
    Ну а потом уже из него температуру по таблице.
     
  4. hinotf

    hinotf Нуб

    Здорово. Я не всё понял с первого прочтения, но наверное пойму попозже. Большое спасибо. Как доедет моя посылка - до этого я экспериментировал с чужим оборудованием - буду пробовать.