При работе автоматической системой нам в подавляющем большинстве случаев будут нужны будут датчики, способные замерить разные величины. И хоть сейчас получают распространение цифровые датчики, вроде термометра DS1820, все же аналоговых датчиков намного больше. Постараюсь кратко описать как со всем этим хозяйством работать.
Выход с датчика может быть трех основных видов (если кто вспомнит еще, добавьте в комментах)
Напряженческий, токовый и резистивный. Как понятно из названия, тут выходная датчик превращает колебания измеренной величины в колебания напряжения, тока или сопротивления, осталось только эти величины привести к виду удобному для запихивания в АЦП микроконтроллера.
Выход по напряжению:
Например, токовый шунт замеряет ток, а падение напряжения на нем вычисляется по закону Ома U=I*R и его легко измерить.
Тут все просто АЦП замеряет напряжение, поэтому вроде бы ничего особенно и не надо, достаточно завести напрямую. Но обычно не все так просто. Проблем тут может быть три:
- Напряжение слишком больше
- Напряжение слишком маленькое
- Величина изменения очень мала
Разберем каждый из них.
Напряжение слишком велико.
Самый простой способ поделить напряжение на резистивном делителе:
Раз и пополам. Или в любом соотношении какое заблагорассудится, все зависит от отношения резисторов верхнего и нижнего плеча делителя.
Напряжение слишком мало.
Некоторые датчики выдают жалкие милливольты. Вот что с ними делать? Правильно! Усиливать! Для этих целей существуют операционные усилители. Эдакие аналоговые калькуляторы, заточенные под математические операции.
Входное сопротивление у операционного усилителя очень велико, близко к бесконечности. А коэффициент усиления составляет десятки тысяч. Чтобы его обуздать применяют отрицательную обратную связь.
Подбором резисторов можно очень гибко задавать коэффициент усиления.
В качестве операционного усилителя я обычно использую OP297, просто потому что они у меня есть, а новые покупать дорого прецезионные усилки это тебе не микроконтроллер, такая козявка стоит рублей 150.
Но надо помнить, что максимальное и минимальное выходное напряжение его будет ниже чем напряжение питания где то на 1вольт. Так что если запитаешь его от 5 вольт, то получишь максимальный диапазон изменения выходного напряжения от 1 до 3 вольт. Если тебя это не устраивает, то подбери усилитель у которого в характеристиках есть параметр rail-to-rail это означает что он может работать от минимума до максимума питания, а в идеале еще и с однополярным питанием так корректней.
Напряжение имеет малую величину изменения.
Простой пример температурный датчик LM335Z. Это термостабилитрон с характеристикой в 10мВ на градус Кельвина. Учитывая, что ноль по Цельсию это 273 по Кельвину, то напряжение выходящее с него при комнатной температуры будет:
(25+273)*0.01 = 2,98В
Нетрудно заметить, что на каждый градус у нас будет изменение всего на 0.01 вольт. Причем само выходное напряжение измеряется вольтами, так что и напрямую его не подашь все разряды АЦП будут забиты этими фоновыми 2.9 вольтами и не увеличишь, так как напряжение изначально большое. Остается только одно вычесть из этого напряжения излишки, а остаток умножить на нужное число. Излишек определяется просто берем минимальное значение которое нам нужно, скажем -25 градусов и считаем напряжение для этой температуры.
(273-25)*0.01 = 2.48
Вот эти 2.48 нам нужно вычесть.При этом минимальное значение температуры будет для нас показывать 0
Теперь надо определить нужный нам максимум, скажем 100 градусов Цельсия это предел выше которого замерять нет смысла. Вычисляем напряжение на 100 градусах.
(273+100)*0.01 = 3.73
Теперь вычитаем нашу нулевую поправку:
3.73-2.48 = 1.25.
Итак,
-25 градусов = 0 вольт
+100 градусов = 1.25 вольт.
Это уже кое что, но обычно АЦП замеряет от 0 до 5 вольт, глупо было бы забивать на 3/4 шкалы. Так что результат можно смело умножить на четыре и уже в таком виде можно загнать в АЦП.
Во сколько математики, осталось ее воплотить. Первым делом нам потребуется источник напряжения на 2.48 вольт.
Если задача не требует особой точности, то вполне сгодится стабилитрон, скажем на 3.3 вольта. Берем и получаем из пяти вольт наши 3.3, а потом прогоняем их через многооборотный потенциометр которым можно подстроить напряжение с точностью до тысячных долей вольта. Конечно, можно было бы стабилитрон вообще выкинуть и сразу же делить потенциометром 5 вольт для получения 2.48, но это менее точно и наше эталонное напряжение будет зависеть от колебаний питающего напряжения, а это не есть Good. Если хочется большей точности, то вместо стабилитрона можно будет подобрать какой нибудь ИОН (источник опорного напряжения) специализированная микросхемка, выдающая строго калиброваное напряжение. Я на вскидку модель не назову, но в комментах кто нибудь наверняка добавит пару замечаний на этот счет ,)
А особые извращенцы могут подать эталонное напряжение с R-2R цепи или иного ЦАП, тогда мы получим еще и программно расширяемый диапазон =)
Короче, не важно как мы задали опорное напряжение, гораздо интересней то как его вычесть.
Для этого применим наш операционный усилитель. У него же не зря входы подписаны как плюс и минус. Фишка ОУ в том, что он вначале из напруги положительного входа вычитает отрицательное, а лишь потом все это дело умножает на коэффициент. Так что загоняем на отрицательный вход наше опорное, а на положительный подаем напряжение с датчика.
Осталось только утихомирить буйный коэффициент усиления с диких тысяч до скромных четырех. Нам ведь надо на четыре умножить разность? Вот!
Добавляем обратную связь, а именно вгоняем выход на отрицательный вход. А отношение резисторов дадут нам нужный коэффициент.
Готово! Можно подавать на вход АЦП!
Вариант второй подать опорное и напряжение с датчика на дифференциальный вход АЦП. Многие контроллеры серии ATMega имеют такую возможность. Там происходит примерно то же самое из одного вычитается второе и, опционально, умножается на фиксированый коэффициент (х20 и х200, вроде такие). Подробней в даташите.
Токовый датчик.
Есть типы датчиков у которых выходная величина ток, скажем от 0 до 20мА в зависимости от измеряемого параметра. С ними поступают просто загоняют их на токовый шунт, а чего церемонится? Дальше по закону Ома вычисляется напряжение и все как было сказано выше.
Резистивный датчик.
На мой взгляд, самый мерзкий вид датчиков. Потому как у них обычно изменения величины бывают ну просто смешные, скажем тензорезистор меняет свое сопротивление на какие то жалкие миллиомы. Многие терморезисторы также не отличаются широким размахом. Как же быть? В делитель (чтобы менялся коэффициент деления эталонного напряжения) вставлять такой датчик не рационально слишком велика будет погрешность от плавания этого делителя из-за температурных колебаний. Тут применяют мостовое соединение.
Суть в чем. Через два плеча моста идет ток. Падение напряжения на резисторе зависит от сопротивления и тока. Два одинаковых чувствительных резистора ставят по диагоналям моста. Допустим в нормальных условиях Rs=R Считается просто:
I1 = U/(Rs + R)
I2 = U/(Rs + R)
UA = I1*Rs
UB=I2*R
UB-UA=0 мост сбалансирован.
Скажем что то случилось и два Rs уменьшили свое сопротивление, чуть чуть. При этом изменился I1 и I2 он стал чуточку выше.
Напряжение на точке А снизилось, так как UA больше зависит от Rs чем от I1
А напряжене на точке B возросло, так как UB зависит от I2, а ток возрос.
Как результат UB-UA>,0 мост разбалансирован и этот дисбаланс будет тем выше чем сильней изменит свое сопротивление Rs. Да, оно может быть и одно, только в одном плече моста, но тогда перекос будет не столь заметным.
На выходе моста у нас дифференциальное напряжение, UA и UB примерно равны половине напряжения U, отличаясь лишь незначительно, в какие то милливольты. Достоинство этой схемы еще в том, что она очень помехоустойчива. Если два провода с UA или UB идут вместе, то внешняя помеха наведется и в том и в другом одинаковое напряжение и будет там UA+Unoise и UB+Unoise, а поскольку нас интересует только разность, то Uout = (UB+Unoise) (UB+Unoise). Unoise автоматом сокращается и опа на выходе та же чистая разность что была снята с моста.
В принципе, можно смело применить прием с разностью двух этих величин и последующим умножением на коэффициент, но лучше доверить дело профессионалу инструментальному усилителю. Например AD627.
Коэффициент усиления в этом случае задается не сочетанием резисторов обратной связи, а навесом резистора на спец вход (суть естественно та же, но нам возни намного меньше). Таблица коэффициентов усиления в зависимости от резистора выглядит примерно так:
Повышение точности токовых шунтов.
Как было уже сказано выше, для превращения тока в напряжение используют токовые шунты. Проще говоря, резистор. Но если токи реально большие? Например десятки ампер. В таком случае надо делать резистор очень малого сопротивления, в десятые доли ома, а то и в сотые или тысячные. Чувствуете где западло? В пайке! На таких мизерных величинах сопротивление паяного контакта уже становится соразмерным сопротивлению самого шунта, а это сильно влияет на точность замера, порой до 50% и более процентов. Как быть?
Проблема в том, что в точке пайки образуется паразитный резистор, поэтому эквивалентная схема выглядит так:
Но если применить резистор с четырьмя выводами, в котором не будет внутри паяных соединений (цельнолитой, например), то будет схема уже вот такой:
И наша измерительная цепь будет подключена уже непосредственно к шунту, а паразитные сопротивления на измерительной цепи будут частью высокоомной измерительной цепи и их величина на фоне сотен мегаом входа операционного усилителя даже не отсвечивает.
Все бы замечательно, но вот только во первых такие резисторы фиг где найдешь, а во вторых они громоздкие. Поэтому умные инженеры придумали совершенно халявное решение такой проблемы разделение контактной площадки вот таким образом:
Раз и готово! Надо только пятак хитрый нарисовать, но это совершенно не проблема!
Конечно это лишь общие основы аналоговых преобразований, тут не описано множество грабель и схемотехнических решений, направленных на повышение точности, компенсации разных искажений. Но я и не ставил себе таких целей измерительная техника это отдельная религия, которую можно изучать пол жизни и так и не разобраться в ней от и до 🙂
З.Ы.
На хитрый трюк с резистором меня навела статья с сайта http://www.rusilicon.net Свежий блог, публикующий авторские переводы зарубежных статей по радиоэлектронике, Application notes и прочих интересностей. Пока там еще очень немного материала, но я надеюсь это только начало. Рекомендую!
Оцените статью!