Точное измерение сопротивления

leshak
Offline
Зарегистрирован: 29.09.2011

Есть аналоговый датчик температуры (неизвестный, заменить его нельзя).

Меняет сопротивления в диапазоне 100-150 ом.

Характеристика линейна. Примерна такая R=0.375801*t+102.016

То есть, 1 градус меняет сопротивление на 0.3 ома.

Мои подсчеты сказали, что если соорудить из него и 100 Ом резистора делитель напряжения, то получим соотношение:

1 градус - ~0.0037V

Что, как я понимаю, далеко за рамками возможностей дефолтного analogRead() на atmega328.

Что-бы вы делали в этой ситуации?

Мне видятся такие направления:

1. Делать какой-то усилитель (сам не смогу его сочинить)
2. Пытатся перейти на внутренее опроное (не хочется, другие аналоговые входы тоже используются), плюс сам он, как понимаю, может плавать 15%-20%
3. Внешние опорное - а как соорудить "точное внешнее"?  (и опять-таки - другие аналоговые...)
4. Исползовать внешний АЦП. Что-то типа AD7706 (но трудно его в DIP-пе найти у нас, да и ног дефицитных много займет)

Что посоветуете? Может есть какие-то более типово-простые решения этой задачи? 

 

maksim
Offline
Зарегистрирован: 12.02.2012

ОУ

неинвертирующий усилитель.
Выглядит он следующим образом:

Неинвертирующий усилитель

Коэффициент усиления определяется так:

Формула

Ну как то так, вроде все просто. Резистор 100 Ом не стоит ставить ибо токи... надо больше.

maksim
Offline
Зарегистрирован: 12.02.2012

leshak
Offline
Зарегистрирован: 29.09.2011

Спасибо

>Ну как то так, вроде все просто.

Если бы.... :) Теперь еще больше вопросов.

>Резистор 100 Ом не стоит ставить ибо токи... надо больше.

В качестве R? Больше токи нужны ОУ? Но ведь он усиливает напряжение, а не ток? Или я не верно понял?

К тому же... если R сделать близким к нулю, то возникает риск, что если датчик замкнет мы получим КЗ между VCC-GND

Да и... на делителе (на входе усилителя) будут еще меньше колебания напряжения.

Вообщем можно чуть подробнее про "Резистор 100 Ом не стоит ставить"?

Предоположим, пока, что R у нас 100. И состояние датчика 100 Ом. Тогда, на входе усилителя мы имем 2.5V

Нагрели датчик на 1 градус, получили его сопротивление 100.375801, значит на входе усилителя у нас 2.5047V

Больше чем на K=2, усилить мы не можем. Так как выше VCC усилитель не усилит и обрежет (кстати, я в этом прав? он же не может исилить выше  VCC)

Что-бы позволить себе существенно большие K, нужно как-то вычесть константу из входного сигнала. Что-бы усиливать не 2.5047, а только 0.0047

Вместо функции усиления out(in,K)=K*in, нужно организовать функцию out(in,K,C)=K*in-C

Но что-то не могу сообразить как же эту константу подать усилителю, что-бы она вычлась.

 

 

 

leshak
Offline
Зарегистрирован: 29.09.2011

Возможно частично отвечу сам себе

Измерительные цепи | Электроника для всех

Там вот такой вариант предлагается:

Если я правильно понял - это на инвертирующем.

Вообщем статью нашел. Вроде есть ответы на мои вопросы. Но пока не понял. Буду медетировать. Идея понятна, а вот с конкретикой... какой все-таки номинал R выбрать, какой именно OP2  (какой подойдет, какие популярны-дешевы-легкодостать), что использоваться в качестве ИОН  (можно ли взять 3.3v выход дуины для этого?)

maksim
Offline
Зарегистрирован: 12.02.2012

При низком сопртивлении R будет большой ток на самом терморезисторе, (5/200 = 25 мА), что скорее всего приведет к его нагреву и может выходу из строя, R должно быть несколько килоом, например 10 кОм.

В качестве ИОН используется ИОН. Эта все таже неинвертирующая схема, но опять таки она безсмысленная, так как при колебании напряжения питания датчика будет колебаться и выходное значение, так что можно поставить вместо ИОН обычный делитель.

ОУ наверное любой подойдет, кстати на самой дуине стоит ОУ LM358, можно прям к нему припаяться.

maksim
Offline
Зарегистрирован: 12.02.2012

То есть теперь делитель R1-R3 служит источником опорного напряжения, это нужно чтобы "сдвинуть" напряжение относительно которого будет усиливаться сигнал.

 

leshak
Offline
Зарегистрирован: 29.09.2011

maksim пишет:

При низком сопртивлении R будет большой ток на самом терморезисторе, (5/200 = 25 мА), что скорее всего приведет к его нагреву и может выходу из строя, R должно быть несколько килоом, например 10 кОм.

Теперь ясно. Просто думал, что 25mA это безопасный ток. К тому же его действительно может хватить на "нагреть и исказить показания". Правда датчик находится  в жидкости, так что "может и пронесет", но.... 10кОм так десять :)  (ох... тогда изменения напряжение будет еще меньше :) 

maksim пишет:

 Эта все таже неинвертирующая схема, но опять таки она безсмысленная, так как при колебании напряжения питания датчика будет колебаться и выходное значение, так что можно поставить вместо ИОН обычный делитель.

А что превратит ее в "осмысленную"? Добавление еще одного ИОН-а для питания датчика? Контроль напряжения питания?

leshak
Offline
Зарегистрирован: 29.09.2011

maksim пишет:

То есть теперь делитель R1-R3 служит источником опорного напряжения, это нужно чтобы "сдвинуть" напряжение относительно которого будет усиливаться сигнал.

 

Спасибо, Максим.

Просто на easy у усилителя минус вверху нарисован, вот и не опознал что это так же схема что и у вас :)

Я правильно понимаю, что формула расчета коэфициента усиления, не изменяется из-за появления R3. По прежднему K=1+R2/R1? Остается такой же в сообщении #1? А при расчете делителя R1/R3 мы представляем тчто R2 остуствует?

maksim
Offline
Зарегистрирован: 12.02.2012

Попытаюсь расшифровать что я тут нарисовал.

Например R = 10 кОм, тогда при напряжении питания 5 вольт получаем падение напряжения на терморезистор от 0,05 В (при 100 Ом) до 0,075 В (при 150 Ом). Рассмотрим схему без R3. Тут все ясно нужно 0,075 В усилить до 5 В, то есть коэффицент усиления должен быть ~66 (5/0,075). Тогда R1 будет 1 кОм, а R2 65 кОм. То есть при 100 Ом на терморезисторе получаем на выходе 3,3 В, а при 150 Ом на терморезисторе 4,95 В.

Теперь рассмотрим схему с R3. Делитель R1-R3 даст возможность сдвинуть 0, то есть "растянуть" только изменяемый диапазон терморезистора (от 0,05 до 0,075 = 0,025 В) на диапазон от 0 до 5 В. Для этого нужно на делителе создать падение напряжения 0,05 вольта. Например R1 = 1кОм, а R3 = 100 кОм. Тогда коэффициент усиления нужен 200 и номинал R2 нужен 199 кОм (думаю и 200 кОм пойдет, некритично). Теперь должно получиться так: что при 100 Ом на терморезисторе на выходе будет 0 В, а при 150 Ом на выходе 5 В.

В общем все это теория, сам не проверял, ОУ пользовался только один раз при подключении к аналоговому входу PIR-сенсора и вроде как удачно, там конечно все проще так как не нужно конкретное значение, а только колебание сигнала.

maksim
Offline
Зарегистрирован: 12.02.2012

Если заработает, но значения будут скакать, то нужен ИОН, например этот, но подключать его надо и к терморезистору, и к "-" ОУ (как на вашей схеме), и к AREF дуины, да и сам ОУ можно тоже запитать от него же.

maksim
Offline
Зарегистрирован: 12.02.2012

Или же попробовать снизить сопротивление R , что бы увеличить входной диапазон напряжения.

jurok68
Offline
Зарегистрирован: 13.05.2011

Здравствуйте форумчане в посте 8 даной ветки форума есть схема измерения температуры с использованием операционного усилителя. Не подскажете скетч для просмотра реальной температуры на мониторе IDE после загрузки скетча в ардуину, при изменении значения термосопротивления значения на мониторе изменяются от 0 до 1023, а хотелось бы увидеть реальное изменение температуры от 0 до 100 градусов цельсия. Выход 0-5в. Извените за такую просьбу, нужно проверить работу ТСП через ардуину а в програмировании я профан. Программу брал из обучалки вот она:

int thermistor =3;

void setup(){
  Serial.begin(9600);
}

void loop(){
  Serial.println(analogRead(thermistor));
  delay(1000);
}

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

jurok68 пишет:

при изменении значения термосопротивления значения на мониторе изменяются от 0 до 1023, а хотелось бы увидеть реальное изменение температуры от 0 до 100 градусов цельсия. Выход 0-5в. Извените за такую просьбу, нужно проверить работу ТСП через ардуину

Если это настоящий ТСП - то у него есть специальная таблица, в которой указаны сопротивление и соответствующая ему температура. Остается только вывести соответствующие коэффициенты для пересчета (данных АЦП в сопротивление, сопротивления - в температуру) и добавить в скетч что-то вроде:

Serial.println( K1 * analogRead(thermistor));

Откалибровать по нескольким точкам в рабочем диапазоне.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Про  PT100 - куча схем и готовых преобразователей-усилителей....

Плохо что в связи с низким сопротивленим нельзя подавать высокое напряжение- саморазогрев начнётся,

да и провод к датчику - короткий и толстый....

 https://www.google.ru/search?q=pt100&newwindow=1&tbm=isch&tbo=u&source=univ&sa=X&ei=KVjcUtWcIqKC4gTm7ICQCQ&sqi=2&ved=0CCcQsAQ&biw=1288&bih=704#imgdii=_

StrangerM
Offline
Зарегистрирован: 02.11.2013

leshak пишет:

..

Характеристика линейна. Примерна такая R=0.375801*t+102.016

То есть, 1 градус меняет сопротивление на 0.3 ома.

.....
4. Исползовать внешний АЦП. Что-то типа AD7706 (но трудно его в DIP-пе найти у нас, да и ног дефицитных много займет)

Что посоветуете? Может есть какие-то более типово-простые решения этой задачи? 

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

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

leshak, а можно полюбопытствовать при каких температурах он 100 и 150 ом? А то бывают узкотемпературные датчики, они до 100 гр. почти не меняют сопротивление, а потом начинают резко увеличиваться, и на 200 градусах уже за мегаом. Мне такой попадался как-то в оргтехнике.. Может у вас такой-же?

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

StrangerM пишет:

Но если хочется, то используйте мост.

В приведенной Максимом схеме с ОУ и двумя делителями - как раз и есть мост. :)

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Раз Максим- так MAXIM

http://kit-e.ru/articles/measure/2011_7_61.php