Датчики и АЦП — для чайников-практиков (1/3) :: введение

Чайники за работой
Обещал я недавно моему знакомому — хорошему электрику и чайнику в электронике — сделать небольшое устройство с парочкой АЦП и счетчиком импульсов. И по ходу постановки задачи я увидел, что понятие «частота измерений», «допустимая погрешность» и «разрядность» для него — пустой звук. «Непорядок!» — подумал я и решил найти статьи, где это было бы описано. Кое-что нашлось (например, тут и тут), но это было отнюдь не для его познаний в этой области. Посему я решил написать сам такую статью (в результате вышла серия статей...). А потом решил добавить ее сюда — может, кому-то она сэкономит время при изучении новой для себя темы? Результат — перед вами.
Эта статья для тех, кто действительно чайник в этой области! Ну, или же все-таки кофейник, но не для зубров в электронике. Тут почти нет теории, математика тоже в минимальном количестве. Цель статьи — помочь разобраться в базовых понятиях для того, чтобы можно было дать постановку задачи специалисту. Т. е. прочитав ее, вы сможете внятно ответить на вопрос про разрядность, диапазон измерений и частоту выборки.

Также есть полная PDF-версия статьи.


Статья немаленькая, и вообще за раз ее осилить будет начинающему трудновато. Посему — оглавление:
  1. Пару слов про систему управления
  2. Немного о терминах — в том числе о документации
  3. Специфика цифровой обработки информации с датчиков
  4. Какие датчики и зачем
    • Датчики событий...
    • … и аналоговые датчик

  5. Датчики событий и их характеристики
  6. Счетчики событий
  7. Аналоговые датчики
  8. Вкратце об АЦП

Пару слов про систему управления

Немного теории для ответа на вопрос «а зачем нужны датчики???».
Много ли знает электропила о том, что она режет — дерево, метал, веревку?.. И как она режет — прямо, криво? И режет ли вообще — может, она в воздухе крутится? И не сгорел ли у нее движок — напряжение-то подается, но уже ничего не крутится?
А стоит ей добавить глаза — и все сразу станет понятно! Хотя потом к глазам надо добавить мозги…
Ну ладно, решим вопрос попроще. По поводу «сгорел ли движок» самое простое решение — поставить датчик тока. Ток течет — значит, потребление есть. А если еще знать текущее потребление, то мы можем уже понять: 1) пилится ли оно? 2) крутится с превеликим трудом?.. А если еще поставить датчик оборотов, то мы четко сможем сказать про частоту вращения. А если еще в моторе разместить датчик температуры, то мы узнаем, когда мотор начинает перегреваться. А если еще…
Вот так вот банальная электропила превращается в весьма умное устройство и начинает понимать, что происходит кругом. Или, говоря более корректно, датчики позволяют узнать состояние окружающей среды. Под «окружающей средой» тут можно понимать то, что нам надо в данном случае. У этой умнеющей электропилы «окружающей средой» будет режим работы мотора.
А можно эту электропилу сделать не просто умнеющей, а и мудрой. Всего-то делов — задать ей нужные обороты двигателя.
Выставили отметку — 400 оборотов в минуту — и пошли пилять. Разумеется, пока зубья пилы не вгрызаются в плоть материал, частота будет более или менее удовлетворять заданной. Но вот, начинаем рвать дерево. Частота сразу падает. А если же пила начнет постоянно сверять текущие обороты с заданными, то она сможет увеличивать задание до тех пор, пока обороты не достигнут заданных (тут, конечно, надо знать меру, чтобы мотор не сгорел, но это уже другой вопрос).
Вот так и работаем — установили обороты — подсчитали текущие — поняли, как их надо подправить — установили — подсчитали — на что подправить — подправили… В итоге получили систему управления с обратной связью. Автоматическая ли она или автоматизированная — это уже зависит от алгоритма управления и кучи других вещей.
Система управления с обратной связьюГоворя более корректным языком, круг работы такой системы выглядит следующим образом: 1) производится расчет — какое нам надо подать воздействие на мотор электропилы (напряжение, импульсы или еще что-нибудь), чтобы выдержать установленное число оборотов? 2) если надо — советуемся с оператором; 3) подаем это воздействие; 4) смотрим результат — с помощью датчиков измеряем текущее состояние; 1) делаем следующий расчет.

Вот какое место занимают датчики в системах управления. Ни много ни мало — глаза и уши (да еще нос и язык).

Немного о терминах

Теперь небольшой передых перед погружением в тему. Тут я хочу перечислить некоторые фундаментальные истины и термины (и их, терминов, перевод на английский), а также единицы измерения, которые могут быть непривычны непосвященным и сбивать их с толку. Если вы четко себе представляете взаимосвязь миллисекунды и килогерца, знаете что такое «Absolute ratings» в документации, то можете смело пропускать этот раздел.

Периодический процесс

Итак, мы имеем некоторый процесс — какое-то периодически меняющееся напряжение. «Периодически» — значит, оно меняется, но строго одинаково. Период повторения (delay) составляет в данном случае 1/2 секунды.

Данный процесс состоит в том, что напряжение падает то в одно (нижнее) состояние, то поднимается в другое (верхнее). Нижнее условно обозначается «0», верхнее — «1».

Переход из «0» в «1» называется восходящим фронтом или передним фронтом или rising edge. Он в документации часто обозначается стрелкой вверх или эдакой зюкой — так, как красная линия на рисунке. Переход из «1» в «0» называется падающим фронтом или задним фронтом или falling edge, в документации обозначается, соответственно, стрелкой вниз.

Повторяющаяся комбинация выглядит как «0», на котором на 1/6 секунды поднимается положительный импульс. Длительность импульса (pulse duration) составляет 1/6 секунды. Соотношение периода повторения к длительности импульса называется скважностью импульса и в данном случае составляет 3. В западной литературе принята обратная величина, коэффициент заполнения (duty cycle), который (коэффициент) в данном случае равен 33%. Частный (но весьма важный) случай со скважностью 2 (duty cycle = 50%) называется меандром. Здесь длительность «0» равна длительности «1».

Как было сказано выше, период повторения = 1/2 секунды. Количество колебаний в секунду называется герцем. Тут будет 2 колебания (2 одинаковых процесса) за секунду — получаем 2 Герца. Это называется частотой (frequency) (не путать с «круговой частотой» — она тут нам не нужна). Как мы видим, частота-период — это взаимно обратные величины. Неплохо для себя составить и запомнить такую таблицу:


Период времени    Время (секунды)              Частота (Герцы)
1              =  1 сек/sec                       1 Гц/Hz
0.02           =  2 * 10^-2 = 20 мсек/msec     0.05 кГц/kHz = 50 Гц/Hz
0.001          =  10^-3 = 1 мсек/msec             1 кГц/kHz
0.00003        =  3 * 10^-5 = 30 мксек/µsec   0.033 МГц/MHz = 33 КГц/KHz
0.000001       =  10^-6 = 1 мксек/µsec            1 МГц/MHz
0.000000001    =  10^-9 = 1 нсек/nsec             1 ГГц/GHz


По поводу степеней в таблице. В данном редакторе нельзя грамотно написать «десять в минус девятой степени» — десяточку и сверху маленькую девяточку. Поэтому в таком случае принято писать как «10^-9». Такой тут редактор…

Документация

Прежде всего, выразим сочувствие тем, кто хочет разбираться в тематике и не владеет английским… Практически вся документация в мире дается на английском языке. Поэтому незнание английского тут сильно затруднит жизнь. Впрочем, достаточно знать основные термины, чтобы понимать о чем речь. У меня есть знакомый, который уже больше десятилетия занимается электроникой, у него серьезные заказчики и куча проектов, но в английском он ни бум-бум (поэтому, читая «eBay», он делает многозначительную паузу «е — бай», хотя на самом деле оно читается «и-бай»). Ему вполне хватает знания терминов и четкого представления что где искать.

Тут я хочу дать основное представление о такой документации, что где искать, и немного помочь с терминами.

Берем мы, например, описание такого славного АЦП как ADS8320 Техасского инструментального завода Texas Instruments. Скачиваем PDF-ку и видим в ней много красивого. Сверху крупными буквами — об чем речь. И там уже есть масса информации: это 16-битное АЦП, работает в диапазоне от 2.7 до 5В.

На той же первой странице, как правило, есть «Features» — особенности изделия, чего оно может. Тут же обычно есть «Applications» — то, для чего оно может использоваться. И «Description» — краткое описание.

Далее по тексту обязательно надо найти «Absolute maximum ratings» — это те условия, при которых изделие работать будет, но при их малейшем нарушении бобик сдох и реанимации уже не подлежит. Это — самый важный блок информации, он дает понятие о тех условиях, в которых можно эксплуатировать датчик. И по ним надо сразу оценить — попадает ли ваш диапазон измерений в эти требования.

Тоже важно, но во вторую очередь — «Electrical characteristics», «Specifications», «Timing specifications». Это (как правило, длиннющая таблица на несколько страниц) — все остальные характеристики работы модуля. Тут его задержки, интерпретация входных воздействий и т. п.

И вот тут вы столкнетесь с такой неожиданностью. Почти любой параметр дается в виде «Min» (минимальное значение), «Typ» (типичное) и «Max» (максимальное значение). Дело в том, что мир не идеален, и каждый новый кристалл, микросхема имеют небольшие расхождения в параметрах. Или же в разных схемах они могут вести себя немного по-разному. Но, если вы придерживаетесь Absolute maximum ratings, то у вас будет как правило типичное значение, но возможны расхождения в указанных пределах.

Где-то далее в тексте всегда есть «theory of operation» — описание принципа функционирования и всяких хитростей. Это надо для четкого понимания работы устройства. Всегда тут же есть «Digital interface» — как оно взаимодействует с вашим микроконтроллером.

В конце описания почти всегда есть (а если нет — то дается ссылка в каком документе есть) «Mechanical data». Это варианты размеров корпусов, их схема. Тоже важно при заказе датчика — где-то рядом есть «Package type», «Device» с названием элемента для заказа. Например, для этого модуля есть заказ ADS8320E/250 — корпус такой-то, количество в коробке такое-то (для больших партий). А есть ADS8320EB/2K5 — совсем другое дело. Иногда ошибка в одной букве приводит к необходимости заново разводить плату.

Специфика цифровой обработки информации с датчиков

Но, прежде чем перейти к датчикам, рассмотрим их «заказчика» — компьютер или же микроконтроллер.

И тот и другой — электрическое устройство. И тот и другой… стоп, все-таки давайте для определенности остановимся уже на микроконтроллере!
Так вот, микроконтроллер «общается» с внешним миром языком напряжений. У него есть понятие «0» — как правило, электрическая земля. И еще есть понятие «1» — как правило уровень питания. Если разделения на 0 и 1 недостаточно, то используется параллельная или последовательная передача битов. Нам тут не так важно, какое это питание — 1.1В или 5В. Важно лишь то, что это некоторый диапазон электрического напряжения.
ВременнОй режим микроконтроллеров существенно отличается от человеческого. Для него 1 секунда — это бесконечно долго. 1 миллисекунда — это тоже много (но для компьютера ввиду его монструозных Windows-ов и включенной MP3-музыки при обработке информации — это уже маловато). 1 микросекунда — это уже нижний порог для массовых недорогих микроконтроллеров, но тоже не предел. 1 наносекунда — это уже, пожалуй, предел для общедоступной цифровой логики, DSP-контроллеров. Поэтому, когда мы будем говорить о периоде какого-нибудь импульса в 10 микросекунд — это будет вполне доступно для обработки любым микроконтроллером.

Какие датчики и зачем

Смысл любого датчика — перевести некоторую физическую величину в понятную для головы нашего устройства. Голова же — не забываем — это микроконтроллер или компьютер. И в том и в другом случае требуется цифровая форма передачи информации. Это мы можем взглянуть на ртутный термометр, повертеть его перед глазами, углядеть рядом шкалу и… э-э… 36,8 градусов Цельсия. Микроконтроллеру же вынь и подай число («цифру» в жаргоне)- «36.82». Ему этого может быть мало — ему нужно знать до 3-его или 4-го знака после запятой! Вот всеми этими вопросами — измерить в данной единице измерения, перевести в числовой вид — датчик и занимается.
Все датчики можно разделить на два принципиально разных вида — датчики событий (и всевозможные счетчики) и аналоговые датчики. Первый отвечает «да» или «нет» (или «сколько раз да»), второй — «какое значение».
Деление, конечно же, условное — в Википедии все гораздо сложнее. Но для практики начинающего электронщика этого вполне сойдет.

Датчики событий...
— Машина проехала? Да. А сейчас? Нет. А теперь? Да. А после?..
— Сколько частиц пролетело в сцинтилляционной камере?
— На кнопку нажали?
Это все вопросы для датчика событий. Прежде всего он определяет — произошло какое-нибудь событие или нет? Ему не важно — насколько однозначно оно произошло, когда и как. Все просто — да или нет. Если ваш параметр можно описать таким вот простым способом — это датчик события.
Правда, часто приходится отвечать на вопрос «сколько раз произошло событие?» — например, для всевозможных датчиков радиации. Но все равно — вначале идет сам факт наличия или отсутствия события. Подсчитать же их — событий — количество несложно.
Еще один очень принципиальный момент — счетчики событий считают неделимые величины. Когда мы считаем количество проезжающих машин, мы всегда четко можем сказать — 5 или 6. 5 с половиной — это уже не сюда.

… и аналоговые датчики
Тут же всегда стоит вопрос «сколько в таких-то единицах?» В отличие от предыдущих датчиков, аналоговые датчики дают числовой ответ в пределах заданной (не бесконечной) точности. Сколько голубей на крыше? — ответ будет всегда предельно четок (если мы четко уверены в том, что такое «голубь» и является ли голубем оный без крыла и ноги). Сколько литров в ведре? — тут уже ответ будет всегда нечеткий.
А компьютеру и микроконтроллеру надо дать четкое число (мы ограничиваемся цифровым вычислительным устройством). 10 литров ли, 10.1 литра или 9.9997 литра — это не годится. Всегда оговаривается желаемая точность — допустим, с точностью до 0.1 литра (тут сразу же возникает проблема округления, когда 10.198 литра — это все-таки не 10.2 литра. А, может, 10.2?..).
Если от вашего параметра требуется результат его измерения в таких-то физических единицах — то для этого нужен аналоговый датчик (сейчас все больше появляется «цифровых датчиков», но это по сути тот же аналоговый датчик с цифровым выходом — подробности будут далее).
Читаем дальше!

P. S.Хочу поучаствовать в конкурсе, поэтому добавляю: Спонсоры
  • +17
  • 27 сентября 2012, 18:13
  • PICC
  • 1

Комментарии (24)

RSS свернуть / развернуть
В один пост не влезла?
0
Не, там 65 тысяч знаков где-то, пришлось разделить
0
лагоритма — очапятка
0
  • avatar
  • OlegG
  • 27 сентября 2012, 19:29
Спасибо!
0
Период повторения (delay) составляет в данном случае 1/3 секунды.
Не понял!?!?!? Как так 1.3?
0
Ну-у, не 1/3 (и не 1.3), а 1/2. Спасибо!
0
Да вроде нет за что =) Только поправьте далее по тексту, а то у «начинающих» глаза будут в мозолях!)
0
У меня получается, что 1/2*33% (т.е. на 1/3) получается 1/6, а не 1/9… Как-то так…
0
Таки да, Вы правы, я накосячил… Исправил — спасибо!
0
Поправте еще ниже в тексте:
Повторяющаяся комбинация выглядит как «0», на котором на 1/9 секунды поднимается положительный импульс. Длительность импульса (pulse duration) составляет 1/9 секунды.
и еще:
Как было сказано выше, период повторения = 1/3 секунды. Количество колебаний в секунду называется герцем. Тут будет 3 колебания (3 одинаковых процесса) за секунду — получаем 3 Герца.
а то с графиком как-то не стыкуется :)
0
Исправил, спасибо!
0
В системе СИ приставка кило обозначается маленькой к/k: 33 кГц/kГц.
0
kГц
kHz тогда уж.
0
  • avatar
  • Vga
  • 28 сентября 2012, 22:12
Таблица плохо читабельна:
Период времениСекундыГерцы
1 = 1001 сек/sec1 Гц/Hz
0.02 = 2 * 10-220 мсек/msec0.05 КГц/KHz = 50 Гц/Hz
0.001 = 10-31 мсек/msec1 КГц/KHz
0.00003 = 3 * 10-530 мксек/usec0.033 МГц/MHz = 33 КГц/KHz
0.000001 = 10-61 мксек/usec1 МГц/MHz
0.000000001 = 10-91 нсек/nsec1 ГГц/GHz
Попробуйте вставить через <код>:
Период времени    Секунды                      Герцы
1             = 1 сек/sec                      1 Гц/Hz
0.02          = 2 * 10-2 = 20 мсек/msec     0.05 КГц/KHz = 50 Гц/Hz
0.001         = 10-3 = 1 мсек/msec             1 КГц/KHz
0.00003       = 3 * 10-5 = 30 мксек/µsec   0.033 МГц/MHz = 33 КГц/KHz
0.000001      = 10-6 = 1 мксек/µsec            1 МГц/MHz
0.000000001   = 10-9 = 1 нсек/nsec             1 ГГц/GHz
, а то «цитировать» сжимает строки.
0
Он, похоже, еще и sup/sub пытался. А в новом лайвстрите эти теги разрешены, но на кой-то хрен отключены в css и рендерятся как обычный текст.
0
  • avatar
  • Vga
  • 28 сентября 2012, 22:14
Извини, я с этими терминами не знаком :(
Просто попробовал на практике… :)
0
Теги для верхних и нижних индексов. Работают, но индексы рисуются как обычный текст, а не индексы. Так что толку нет.
0
  • avatar
  • Vga
  • 29 сентября 2012, 00:12
Я эту статью первоначально в другом редакторе делал… Там это была со всякими … Выглядело качественно! А тут — фиг знает что… Ну да ладно, сделаем и как
...
0
Скопировал Вашу таблицу, спасибо!
0
Рад был помочь!
0
Далее по тексту обязательно надо найти «Absolute maximum ratings» — это те условия, при которых изделие работать будет, но при их малейшем нарушении бобик сдох и кремации уже не подлежит.
Кремация — это процесс сжигания мёртвого тела. Я думаю автор имел ввиду слово РЕАНИМАЦИИ.
0
Упс! Именно так! Из меня плохой паталагоанатом, поэтому и спутал… Спасибо!
0
В данном случае как раз кремации бобик и подвергся)
0
По многочисленным просьба трудящихся (да и сам мог бы догадаться...) я сделал PDF-ку — читайте!
0
  • avatar
  • PICC
  • 26 октября 2012, 15:38
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.