Что такое ацп в болиде
Перейти к содержимому

Что такое ацп в болиде

  • автор:

forum-bolid.ru

Добрый вечер. Проблема с АЦП на АР-2.
Проблема следующая, есть ДПЛС, в него подключены 10 АР-2, 9 АР работают без нареканий, и только на одном (на второй АР-2 в последовательной цепи ДПЛС! ) адресе (на них 2 адреса), есть проблема с АЦП, оно 232, сопротивление 10 кОм, на всех остальных АЦП 47. Проверили все контакты, сопротивление и АР меняли 3 раза, результата нет никакого. К КЦ подключен датчик фортеза 200, датчик меняли на заведомо исправный. При подключении в КЦ2 сопротивления 10 кОм, вместо датчика адрес ставится и снимается без нареканий. Все подключения перепроверены несколько раз.
Какой фактор влияет на АЦП? С чем его едят?

Все подключено витой парой по одной паре!

  • Ответить с цитатой
  • Ответить с цитатой
  • Ответить с цитатой
  • Ответить с цитатой
  • Ответить с цитатой
  • Ответить с цитатой

I_global , Извещатель охранный радиоволновый линейный " Фортеза-200":
Параметры исполнительного реле:

максимальное коммутируемое напряжение
не более 50 В

максимальный коммутируемый ток
не более 0,1 А

сопротивление в замкнутом состоянии
не более 110 Ом

Вероятно в извещателе не герконовое реле, а полупроводниковый элемент — сопротивление в замкнутом состоянии
не более 110 Ом. Попробуйте подобрать другие номиналы резисторов.
И в описании сказано —
Извещатель формирует сигнал неисправности:
— при отсутствии сигнала от передатчика;
— при пропадании или снижении напряжения питания ниже 9 В;
— при отказе приёмника или передатчика;
При формировании сигнала неисправности постоянно, до устранения
неисправности, разомкнуты контакты исполнительного реле и передаётся
сигнал неисправности по интерфейсу RS-485.
Может у Вас ещё неисправности есть?

Что такое ацп в болиде

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

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

Итак, перед нами стоит задача — микроконтроллер должен знать температуру в комнате. Вариант «взять градусник и набрать по кнопочкам» по понятным причинам исключается.

Мы поступим так:

  1. Прежде всего, мы имеем некоторое воздействие и предмет, на которое оно производится (в нашем случае тепло воздействует на датчик… пусть это будет термометр сопротивления). Единица измерения на этом этапе — физическая величина (допустим, градусы Цельсия — хотя чем хуже Кельвины. ).
  2. Под этим воздействием предмет — датчик — меняет свои свойства (в нашем случае меняется его сопротивление). На этом этапе мы имеем зависимость свойства датчика от воздействия (сопротивление от температуры). Кстати, грамотнее в данном случае будет сказать "параметр", а не «свойство».
  3. У разных датчиков, разумеется, разные параметры. Поэтому на следующем этапе их всех приводят к единому «интерфейсу» — к напряжению. Другими словами, теперь мы имеем зависимость напряжения от воздействия (тут бывают исключения — например, емкость может быть измерена микроконтроллером без преобразования в напряжение).
  4. Далее необходимо перевести напряжение в цифровой код, который получит микроконтроллер. Этим занимается аналогово-цифровое преобразование (или АЦП или analog to digital conversion — ADC). Доступно для начинающих они описаны тут). В подавляющем большинстве ваших устройств на вход им будет подаваться напряжение в диапазоне 0 — 2.5… 5В, на выходе будет появляться число в виде, доступном микроконтроллеру.
  5. Думаете, победа? Ан нет! Вот сказал вам микроконтроллер — «датчик температуры мне выдал 1734». Это сколько же в градусах Цельсия. Поэтому дальше идет процедура преобразования кода в то, что вам надо.

Если все эти этапы осуществляются в одном устройстве, то оно будет называться цифровым датчиком. Они проще для работы, но дороже.

Теперь рассмотрим все эти этапы преобразования отдельно.

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

На первом этапе мы имеем воздействие некоторой природы на наш датчик (в нашем случае это будет воздействие температуры на внутренний материал резистора KTY81/110 фирмы NXP). Что там внутри происходит, как и когда — это целиком зависит от конкретного датчика. Тут нет каких-либо общих характеристик. Но всегда есть некоторое изменение какого-либо электрического параметра (в нашем случае — сопротивление). Поэтому можно перечислить общие характеристики для любого датчика:

  • Физическая природа и электрический параметр. Это первый вопрос, который возникает при отборе датчиков. В большинстве случаев параметром будут изменение сопротивления, напряжения или емкости (для KTY81 это сопротивление).
  • Допустимый диапазон воздействия. Любой прибор всегда требует определенных условий для своей эксплуатации (для KTY81 это работа в диапазоне температур -55… +150оС).
  • Характеристика зависимости параметра от физического воздействия. Тут нет общего описания, для каждого типа датчика будет своя характеристика (для KTY81 дается температурный коэффициент, смещение сопротивления в зависимости от длительности использования). Также не забываем, что тело не мгновенно реагирует на физическое воздействие (у KTY81 дается температурная константа для измерения в воздухе, стоячей жидкости и текущей жидкости).
  • Собственно зависимость параметра от воздействия. Это таблица или график, который описывает изменение параметра при приложенном воздействии. Эта зависимость может быть линейной (что хорошо), а может и не быть (что хуже).
  • Описание корпуса. Датчик имеет корпус — микросхему. Это может быть трехножка, пятиножка, стоножка (да-да, и такое бывает!). Она может быть с торчащими выводами (DIP-корпусы), могут быть ножки в сторону (TQFP-корпусы), а могут быть вообще без торчащих ножек (всевозможные SMD-корпуса или — каково запаять такое пяльником. — BGA). Чтобы поразить свое воображение — посмотрите хотя бы здесь.
    Самая частая ошибка начинающих схемотехников — оставить вопрос выбора корпуса на потом. Это вроде бы мелочь, но потом, при монтаже и пайке готового изделия может вылиться в головняк. Каждая фирма придумывает свою маркировку и название для корпусов, расстояния между ножками и прочее. Бывает, что заказал один корпус и проглядел ничем не примечательную буковку в названии. А потом, в плату уже не впаивается из-за не тех размеров… (вот заказываете вы ATmega32U4 и видите, что есть ATmega32U4-AU и ATmega32U4-MU. Разница есть? Есть — у одной ноги торчат в сторону, у другой под пузо). Эту информацию надо учитывать (за KTY81 можно расслабиться — тут только один вариант корпуса).
Параметр датчика в напряжение

Следующим делом необходимо убедиться в том, что мы будем работать с напряжением, а не с чем-либо другим.

Тут все зависит от параметра. Если параметром является емкость, то разговор будет совсем особым. Если же датчик сразу дает напряжение, то этот шаг уже выполнен самим датчиком. А если (как у KTY81) параметром является сопротивление, то преобразование в напряжение необходимо выполнить.

Нужно учитывать, что любое преобразование вносит погрешность. Эти погрешности бывают самыми разными. На практике я сталкивался с изменением линейности, смещением, «обрезанием» нижней или верхней границы.

Ничего общего тут сказать нельзя. Каждый вид преобразования индивидуален. В нашем примере используется делитель напряжения. Надо учитывать, что резистор, стоящий вверху, также имеет температурный коэффициент (гораздо менее выраженный, чем у терморезистора, но все равно не нулевой). Значит, при нагреве или остывании платы кривая куда-то «поплывет». Все это нужно учитывать при проектировании устройства. Если нас интересует просто комнатная температура (точность — 1оС), то такие мелочи несущественны и могут быть проигнорированы. Но если вы проектируете термометр с погрешностью не более 0.1оС для широкого диапазона температур, то все эти вопросы становятся очень существенными.

Напряжение в код

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

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

Задача АЦП — выдать цифровой код для напряжения в заданном диапазоне, измерение проводится с заданной погрешностью. Ответ будет представлять собой целое число в четко заданном диапазоне. Для нашего случая это может быть измерение напряжения в диапазоне 0… 5 В.

Первый важный момент (его мне напомнили в комментариях): в процессе преобразования АЦП имеет дело с напряжением, которое накопилось на устройстве выборки-хранения — или конденсатор, коммутируемый аналоговым ключом. Это важно помнить, т. к. конденсатор заряжается не моментально из-за своей емкости.

Второй важный момент: АЦП производит преобразование непрерывной величины напряжения в дискретный код. Сейчас разъясню — покажу на примере.

Итак, мы имеем некоторое напряжение x. Мы уверены в том, что оно больше некоторого 0 и меньше некоторого +U. Уверены? Тогда смело подаем на вход АЦП, которое ограничено 0 и +U вольтами.

Есть много всяких разновидностей и вариантов процедуры измерения (вот, например, прекрасная статья про сигма-дельта АЦП), я же возьму самый простой и понятный.

Измерение проводится в несколько шагов. У нас первый шаг — диапазон 0… U. Делим его пополам и сравниваем: x > 1 /2U или же x < 1 /2U? В нашем случае x < 1 /2U. Прекрасно, тогда результат первого шага — знак «меньше», что отмечается первым двоичным числом «0», результат лежит в диапазоне 0… 1 /2U.

Второй шаг — предыдущий результат «0», диапазон 0… 1 /2U. Снова делим диапазон пополам и делаем сравнение: x > 1 /4U или x < 1 /4U? Оказалось выше, что отмечается двоичным числом «1», которое добавляется к имеющемуся. Результат: «01», 1 /4U < x < 1 /2U.

Третий шаг: снова выше середины. Получаем «011», 3 /8U < x < 1 /2U.

Четвертый шаг — у нас середина будет 7 /16U, новое сравнение. Потом дальше и дальше…

UPD: меня попросили проверить правильность еще нескольких преобразований. Выложу тут результаты нескольких 16-битных преобразований для желающих поупражняться:

Как мы видим, у нас на каждом шагу есть зона неопределенности, в которой и лежит искомый результат. Каждым новым шагом мы зону неопределенности делим пополам. И так, за заданное количество шагов мы получим результат. Количество шагов называется разрядностью АЦП — первая исключетльно важная характеристика АЦП. Количество разрядов определяют количество битов, необходимых для представления результата. Поэтому, например, АЦП с разрядностью 10 назовут 10-битным АЦП. Как правило, в англоязычной документации так и пишут — «16-bit, sampling analog-to-digital (A/D) converter» (это я про ADS8320).

Каждый шаг занимает время — пусть и микроскопическое в масштабах Вселенной, но тем не менее вполне конечное (а часто недостаточно малое). Количество всех шагов и образует время преобразования — вторая фундаментальная величина (на самом деле оно — время преобразования — зависит еще и от массы других параметров, но они значительно меньше влияют на общее время, чем разрядность).

Вот по этим двум параметрам и еще допустимый диапазон измерений (что является ответом на вопрос «что такое 0 и что такое +U?») производится первичный выбор АЦП из всей кучи имеющихся.

Разрядность и диапазон измерения прямым образом влияют на результирующую погрешность преобразования. Какова погрешность у нашего примера?

Первый шаг дает результат в 1 /2U (если у нас U = 5В, то точность будет 2.5В). Значит, точность первого шага — 50% от исходного диапазона. Если мы на этом остановимся, то точность у нас будет… хм… скромненькая, прямо скажем, поэтому мы двигаемся дальше.

Второй шаг еще раз делит искомую область пополам. Точность становится 1 /4U = 25% = 1.25В.

Третий шаг… Давайте, впрочем, изобразим это в таблице:

Поражают воображения числа внизу таблицы? А именно такие АЦП и используются как правило. В составе микроконтроллеров ATmega, например, используются 10-битные. Предел на сегодняшний день (то, что я встречал) — 24-х битные. И цена их отнюдь не фантастическая, а вполне реальная. UPD: впрочем, на момент написания статьи реальным пределом, при котором получается стабильно точный результат, был 22 бита. А оставшиеся 2 бита — просто для маркетинга. UPD 2: Впрочем, и это не предел! В комментариях подсказывают: есть уже и 31-битные. Вот, загляните в гости к «Техасскому инструментальному заводу» и взгляните на ADS1281. Там, впрочем, хитро написано: в заголовке речь про 24-хбитный преобразователь, в характеристиках про 31 бит. И кто их — техасцев — поймет.

Но! Точность преобразования все равно конечна! И поэтому результат будет таким, каким был на картинке — ступеньками. Ступеньки могут быть сколь угодно малыми (почти сколь угодно. ), но все равно это будет ступенька. Это надо четко понимать. И подбирать параметры исходя из требуемой точности.

Диапазон самого последнего сравнения называют ценой младшего разряда. Этот параметр используется при преобразовании получившегося кода в величину.

Обычно точность измерений при подходе к последним шагам падает. И часто последние разряды будут «шуметь» — вы напряжение не меняете, а код скачет. Поэтому еще говорят об эффективных разрядах — это те разряды, которые свое значение не меняют при неизменном значении на входе. Обычно у 24-х битных АЦП шумят последние 2 — 3 разряда.

Код в величину

Итак, мы имеем наконец-то код, который как-то соответствует исходной величине. Что с ним делать дальше?

Аппроксимация

Вопрос первый — какому все-таки реальному значению соответствует код.
Значит, у нас есть некоторый x — код, и функциональная зависимость y = F(x).

Что собою представляет эта функция F(x)? Если мы ее считаем линейной (для простоты), то ответ будет достаточно простой:

y = F(x) = K*x + B.
Простая линейная функция… И в большинстве случаев ее хватает. Но — опять же — только для линейной зависимости кода (с учетом всех перипетий его получения) от исходной величины. Углубляясь в дебри — можно использовать, если надо, квадратичную и более функцию. Я где-то слышал, что делали тензометр — измеритель веса. Он должен был работать в диапазоне от 0 до 5 тонн. И там с помощью кубической функции аппроксимации добились точности в пару килограмм — и это круто!

Так вот, задача теперь заключается в получении этих самых K и B. Как их узнать? Из математики известно, для получения этих констант достаточно знать два значения код-величина. И тогда получаем решение. Где их взять — эти две пары?

Тут есть 2 взаимодополняющих подхода для получения ответа — теоретический и экспериментальный. На практике один дополняет другой.

Для начала мы заглянули в описание KTY81/110и увидели, что при 20оС значение сопротивления у резистора равно… приблизительно… 961 Ом.… Угу, а еще оно равно минимум 950 Ом и максимум 972… Впрочем, я отвлекся.

Итак, для 20оС сопротивление равно 961 Ом. Дальше у меня был делитель напряжения. Допустим, там это сопротивление превратилось в 3.124В. Какой у нас там шаг? — 1.22мВ на один код (т. е. 12-битное АЦП). Т. е. мы должны взять 3.124В и разделить на этот шаг — получим код 2560. Прекрасно! А 100оС соответствует 1696 Ома — после делителя 4.076В — после АЦП код 3340.

Просчитали — и получили значение.

Но вся беда в том, что это только лишь тео-ория… А на практике завод не может гарантировать такую высокую точность KTY81/110 (о чем в описании честно и сказано). И мы не должны забывать о том, что используем делитель напряжения, где сверху резистор, и он тоже не шибко точный. А источник напряжения-то в делителе — тоже не идеален… Словом, от датчика к датчику будут различия. Что хорошо — величину этого различия можно всегда просчитать и вывести погрешность. Если она устраивает — все ОК, продаем датчик. Если же нет, то необходимо откалибровать данный датчик.

Для этого пары код-значения получают экспериментально.

Я это для измерителя температуры делал так.

Первая точка — моя температура тела 36.6оС (хочется верить). Засовываю датчик под мышку и смотрю — ага, код такой-то. Запомнили!

Вторая точка — кипящий чайник. Вот он, электрочайник, кипит и бурлит на столе (за час отладки программы я доливал туда воду не раз и в комнате было туманно. ) Засовываю датчик туда — ага, получил вторую точку!

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

Но вначале я записал в программу то, что было в документации. Потом исправлял для каждого нового датчика.

А что надо сделать для нелинейной характеристики? То же самое, только формула усложняется, больше точек код-значение и существенно сложнее формула получения констант.

В нашем-то примере надо было все-таки делать нелинейную аппроксимацию! Но на некотором участке кривая получается почти линейной. А у нас есть условие — «мерять комнатную температуру». «Комнатная» — это от 10оС (ну мало ли, котел сломался зимой, окна нараспашку!) до 40оС (ну мало ли, кондиционер сломался по летней жарище, окна нараспашку). Как мы видим на нашем графике, на этом участке кривая почти прямая. Прекрасно! Мы надеемся, что у нас в доме меньше 10оС не будет (а если будет — нам уже будет не до датчиков!), и нелинейный участок нас интересовать не будет. Все! Значит, порядок!

В этом и заключается магия четкого отслеживания всех погрешностей и условий работы прибора: если в заданных условиях получившаяся у нас в результате всех преобразований погрешность допустима, то к большей точности стремиться не надо. У нас, скажем, допустима погрешность в 1оС. Попадаем в нее (в условиях комнатной температуры)? Да. Тогда считаем, что устройство работает правильно!

Дискретность преобразования

Значение получили — класс! Теперь давайте проанализируем что мы получили. Мы помним, что преобразование у нас — дискретное. И результат будет ступенчатый. Но что это за ступеньки будут?

Ширина ступеньки — это код. Высота ступеньки — это величина. Код у нас растет монотонно — все время увеличивается на 1-цу. Следовательно, у всех ступенек ширина будет одинаковая. А вот величина может быть и не очень равномерно-монотонной. Если у нас линейная аппроксимация, то высота будет везде одинаковая. Но вот если любая другая, то высота будет плавать в зависимости от диапазона.

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

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

Величину в… интерпретацию?

Для чего нам нужен датчик? Если нас просто интересует, допустим, температура, то на этом можно и остановиться — вот она, температура в Цельсиях! Но если температура, в свою очередь, описывает какой-то другой процесс?

Например, по ходу заряда аккумуляторы постепенно начинают нагреваться. Вначале процесса заряда они нагреваются несущественно, но к концу нагрев растет экспоненциально. Если 1) измерять температуру на аккумуляторах с высокой точностью, 2) знать их емкость и прочие характеристики, а также 3) четко управлять током заряда, то по температуре можно предсказать оставшееся время заряда.

Тогда нам в цепочку преобразований надо вставить еще один этап — график «температура -> время заряда». У этого преобразования будут тоже свои погрешности и особенности. Впрочем, это совсем отдельная тема, и она специфична для каждого случая. Поэтому рассматривать ее тут подробно бессмысленно.

Итоги преобразования

Итак, мы рассмотрели всю последовательность преобразования некоторого физического воздействия в цифровое его значение. Вначале мы подставили физическому воздействию датчик — подставили наш терморезистор под лампу. Это воздействие изменило свойства датчика — и изменился его какой-то электрический параметр. Следующим шагом мы превращаем изменение параметра в изменение напряжения — действие, хоть и условное, но всем удобное. Дальше мы должны преобразовать напряжение в числовой код, понятный микроконтроллеру. Этим занимается класс устройств под названием АЦП. В результате мы получаем дискретный код, который показывает изменение напряжения в некотором заданном диапазоне. В конце мы должны превратить код в число, соответствующее физической величине. По ходу дела приходится решать задачи аппроксимации.

При всех этих действиях у нас погрешность скачет туда-сюда. Каждый узел устройства, каждый шаг преобразования тем или иным образом увеличивает погрешность. Об этом надо помнить и везде закладывать такую погрешность, чтобы сумма всех этих погрешностей в конце не превысила требования к прибору. Под «суммой» тут имеется в виду не арифметическое сложение, а… ну-у… сумма, в общем.

Вкратце об АЦП

У нас осталась еще одна нерассмотренная тема — это АЦП. Вкратце о них было сказано выше, да и вообще тема очень изъеденная в Интернете, но все-таки для полноты картины нужно о них рассказать и тут. Я ограничусь самыми краткими сведениями — теми особенностями, которые надо учитывать при проектировании устройства.

Вы уже познакомились с зависимостью точности преобразования от разрядности? Нет. Тогда знакомьтесь, иначе дальше ничего не поймете! Ну а коли познакомились (не правда ли, приятное знакомство!), двигаемся дальше.

  1. Разрядность — эту тему обсудили.
  2. Скорость преобразования — это тоже было показано. Вернее, мы остановились на том, что разрядность прямо влияет на скорость преобразования.
  3. Опорное напряжение — то самое, в пределах которого производится измерение.

Впрочем, самое то сделать оговорку. Нижняя граница может быть и отрицательной. Есть еще дифференциальный режим измерения — когда есть два входа — нижнее значение и измеряемое. Тогда мы меряем напряжение между ними (а не разницу между данным напряжением и 0). Это используется в случае так называемого «дифференциальног опдключения». Объяснять специфику тут долго, да и выходит оно за рамки статьи. Вкратце: диф. подключение позволяет здорово минимизироват ьвлияние помех. Разницы почти нет. Поэтому для упрощения дальнейшего изложения будем говорить только об измерении текущего напряжения между 0 и опорным.

Увеличивая опорное напряжение, мы «растягиваем» как гармошку «лестницу» результата. Т. е. меняется цена разряда. Уменьшая — соответственно, наоборот. Как правило, опорное напряжение — это константа.

Для создания опорного напряжения используют отдельную микросхему. Она дает высокоточное напряжение (0.1% точности у REF5050), слабо зависящее от температуры. Ток у таких источников питания совсем небольшой (у того же элемента +-10мА), но этого вполне хватает для АЦП. И вообще, запомните: АЦП потребляет мизерный ток от измеряемого сигнала (он измеряется в микроамперах, а часто и в наноамперах). Но, как всегда, есть исключения: в комментариях enclis отметил, что «есть такой класс усилителей/буферов — драйверы АЦП. Из-за входных сопротивлений и емкостей тех же высокоскростных АЦП приходится очень быстро прокачивать несколько мА, а иногда и десятки мА.»

Скорость преобразования, или же, что корректней, частота дискретизации — это следующий ключевой момент, и его надо учитывать в случае периодических измерений. Допустим, у вас меняется ток в устройстве, и вы хотите быстро реагировать на эти изменения. Значит, вы должны уметь их быстро отслеживать. Насколько быстро? Это уже характеристика АЦП.

Загляните на выбор АЦП у Analog Devices. Вы увидите таблицу (или их уже две. ) «Resolution (Bits) x ADC Throughput Rate (SPS)». Это, соответственно, «разрешение (биты) х частота семплирования (SPS)». Разрядность (оно же разрешение) уже рассмотрели, измеряется в битах. Частота семплирования (SPS — samples per second) — это количество выборок (измерений) в секунду. Величина 10 SPS означает, что за секунду это АЦП может произвести 10 измерений. Да-да, SPS — это те же Герцы.

Правда, 10 SPS — это уже из разряда очень высокоточных измерений! В простых случаях все начинается с 1k («k» — это тут KSPS, то есть тысячи SPS)…

Вот такие времена наступили! Меньше 1k измерений в секунду уже никого (почти) не интересует. Дальше — больше: 100k (100 тысяч), 1M (1 миллион), 250+M (более 250 миллионов). Дык, мы уже доросли и до миллиарда измерений в секунду! Есть уже 58 GSPS — собственно, без таких АЦП невозможны современные оптические сети. Такие вот нынче цифры — меряет от доли микровольта до 5 Вольт меньше чем за микросекунду!

На практике необходимо прежде всего решить для себя — какая частота измерений вам нужна? Полоса частот видеосигнала, если я не ошибаюсь, составляет с десяток МГц — это будет один АЦП. Нужно измерять потребление тока в домашней электросети 50 Гц — там будет совсем другой АЦП.

Слишком быстрое АЦП тоже не нужно — микроконтроллер должен успевать обработать результат.

Лично я как максимальную величину устанавливаю ту скорость, что мне выдает мой контроллер (что мой алгоритм успеет обработать). Эта величина у меня никогда не была выше 1 MSPS. Минимальная величина — это предполагаемая частота, увеличенная (грубо) в 10 раз. Тут вы видите примеры различных частот дискретизации.

Если вы измеряете, например, обычные колебания (синусоиду), то необходимо учитывать ее частоту. Если вы выберете частоту АЦП, близкую к частоте колебаний, то вы можете получить красивую, но совсем неправильную информацию о колебаниях. На рисунке представлен как раз этот случай — исходные колебания (синя кривая) опрашиваются весьма, но недостаточно быстро (зеленые линии), в итоге получаем, по сути дела, эффект биения (красная кривая) — результат сложения двух колебаний близких частот.

А вообще — есть теорема Найквиста-Котельникова по поводу выбора частоты дискретизации. Исходя из этой теоремы надо оценить спектр сигнала, найти максимальную гармонику… Испугал? Если да, то запомните простое правило, которое я для себя вывел: нужно делать где-то в 10 раз бОльшую частоту дискретизации, чем частота изменения сигнала. UPD: это правило теоретически некорректное и не всегда правильное, но для быстрого подбора АЦП сойдет.

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

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

[1] моя голова
[2] Интернет
[3] мои железяки, где используются датчики

ТЕХДОКУМЕНТАЦИЯ > СКД Болид ОРИОН

2.2.2 Управление взятием и снятием разделов
Основанием для предоставления доступа к функциям управления разделами является ввод пароля, имеющего права на управление разделами. Если пароль введен правильно, пульт предоставляет пользователю возможность управлять разделом. При этом он формирует сообщение "идентификация пользователя (хозоргана)".
2.2.2.1 Управление взятием и снятием разделов с пульта
Постановка раздела на охрану возможна паролем, который имеет право брать данный раздел на охрану, снятие — который имеет право снимать с охраны. Вводить пароль можно либо из режима индикации времени, либо предварительно нажав клавишу "ON" для перехода в режим ввода пароля хозоргана. Максимальное количество цифр в пароле определяется значением параметра "MAX. ПАРОЛЬ" (меню "51 РЕЖИМ"), которое в заводской поставке равно 4. Если пароль содержит меньшее число цифр, его ввод завершается нажатием кнопки "ENTER".
Описание процедуры взятия раздела на охрану
ПАРОЛЬ:
Введите пароль (пароль должен иметь права на управление какими-либо разделами). Если введен неправильный пароль, пульт выдаст звуковой сигнал "Ошибка" и отобразит сообщение "НЕВЕРНЫЙ ПАРОЛЬ", после чего перейдет в режим индикации времени.
v 1200: СНЯТ
Если пароль правильный, пульт отобразит состояние первого из доступных паролю разделов. В данном примере показано, что раздел 1200 находится в состоянии "СНЯТ". Клавишами "t" и "u" можно перейти на отображение состояния других доступных паролю разделов. Можно также набрать номер раздела с клавиатуры пульта и нажать "ENTER".
Возможны следующие состояния разделов (см. приложение В):
"СНЯТ" — раздел снят с охраны;
"СНЯТИЕ. " — выполняется команда снятия раздела с охраны;
"ВЗЯТ" — раздел на охране и в норме;
"ВЗЯТИЕ. " — выполняется команда взятия раздела на охрану, либо идет задержка взятия;
"НЕВЗЯТ" — раздел неудачно взят на охрану;
"НЕИСПРАВ" — неисправность в разделе, то есть раздел имеет неисправные зоны, которые находятся в коротком замыкании или обрыве;
"ОТКЛЮЧЕН" — нет связи с некоторыми зонами раздела (например, нет связи по интерфейсу с приемно-контрольным прибором, шлейфы которого входят в раздел);
"ТРЕВОГА" — тревога проникновения в разделе;

"ТТРЕВОГА" — тихая тревога в разделе;
"ВНИМАНИЕ " — вероятность пожара в разделе;
"ПОЖАР" — пожар в разделе.
Для взятия раздела на охрану выберите необходимый раздел клавишами "t", "u" или введите его номер цифровыми клавишами и нажмите "ENTER".
vВЗЯТИЕ
Будет предложено меню "vВЗЯТИЕ". Клавишами "t" и "u" можно выбрать "vВЗЯТИЕ" или "vСНЯТИЕ" (если пароль не имеет прав взятия или снятия, то соответствующее меню будет недоступно). Выберите "vВЗЯТИЕ" и нажмите "ENTER".
При положительном результате взятия на охрану пульт выдаст звуковой сигнал "Успех" и отобразит новое состояние раздела "v1200: ВЗЯТ". При отрицательном результате взятия на охрану пульт выдаст звуковой сигнал "Ошибка" и отобразит сообщение об ошибке: "НЕВЕРНЫЙ РАЗДЕЛ", "ДОСТУП ЗАПРЕЩЕН", "НЕ ВЫПОЛНЕНО", или сообщение о неудачном взятии на охрану.
Сообщение "НЕВЕРНЫЙ РАЗДЕЛ" означает, что раздел, которым пытается управлять пользователь, не существует. Сообщение "ДОСТУП ЗАПРЕЩЕН" показывает, что у пользователя нет прав управления данным разделом с данного устройства. Это означает, что при конфигурировании пульта паролю был назначен уровень доступа, не имеющий прав управления данным разделом, либо права управления этим разделом не были заданы для устройства, с которого ведется управление ("С2000", "С2000-К", "С2000-КС", "С2000-4" или "С2000-2"). Сообщение "НЕ ВЫПОЛНЕНО" означает, что пульту не удалось корректно завершить операцию управления разделом. Возможные причины — пульту не удалось дать команды управления шлейфами сигнализации раздела из-за отсутствия связи с приборами по интерфейсу RS-485, раздел не содержит шлейфов сигнализации, есть сбои в базе данных пульта. Сообщение о неудачном взятии шлейфа сигнализации на охрану означает, что во время взятия на охрану шлейфа сигнализации он был в нарушенном состоянии.
НЕВЗЯТИЕ 003/010
В данном примере показано, что не взята на охрану зона 003/010. В этом номере 003 — адрес прибора, 010 — номер ШС. Клавишами "t" и "u" можно просмотреть другие невзятые зоны в разделе. Нажмите "CLEAR" или "ENTER" для возврата в режим индикации состояния раздела.
Описание процедуры снятия раздела с охраны
Снятие раздела с охраны осуществляется практически аналогично взятию на охрану.
ПАРОЛЬ:
Введите пароль.
Если введен неправильный пароль, пульт выдаст звуковой сигнал "Ошибка" и отобразит сообщение "НЕВЕРНЫЙ ПАРОЛЬ", после чего перейдет в режим индикации времени.
v 1200: ВЗЯТ
Если пароль правильный, пульт отобразит состояние первого из доступных паролю разделов. В данном примере показано, что раздел 1200 находится в состоянии "ВЗЯТ". Для снятия раздела с охраны выберите необходимый раздел клавишами "t", "u" или введите его номер цифровыми клавишами и нажмите "ENTER".
vСНЯТИЕ
Клавишами "t" и "u" выберите "vСНЯТИЕ" и нажмите "ENTER". При положительном результате снятия с охраны пульт выдаст звуковой сигнал "Успех" и отобразит новое состояние раздела "v1200: СНЯТ". При отрицательном результате пульт выдаст звуковой сигнал "Ошибка" и отобразит сообщение об ошибке: "НЕВЕРНЫЙ РАЗДЕЛ" или "НЕ ВЫПОЛНЕНО".
2.2.2.2 Управление взятием и снятием разделов с клавиатур "С2000-К"
Взятие на охрану и снятие с охраны разделов с клавиатур "С2000-К" выполняется аналогично взятию и снятию разделов с пульта. За более точной и полной информацией обращайтесь к документации на "С2000-К".
2.2.2.3 Управление взятием и снятием разделов с приборов "С2000-4" и "С2000-2"
Управление взятием разделов на охрану и снятием с охраны выполняется ключом Touch Memory или Proximity-картой. Ключ (карта) должен быть записан в память пульта (см. п. 2.1.7.3), иметь права управления одним разделом и не должен быть записан в память ключей "С2000-4". При первом касании ключом считывателя "С2000-4" выносной светодиод кратковременно замигает, после чего будет отображать состояние доступного для управления раздела: непрерывно включен, если раздел взят на охрану, выключен, если снят с охраны, включен в прерывистом режиме, если неисправен, в тревоге или пожаре. Каждым последующим касанием ключа раздел берется на охрану, если он был в состоянии "снят", и снимается с охраны, если он был в состоянии "взят", "неисправность", "тревога" или "пожар". Приведенное выше справедливо и для управления разделами с приборов "С2000-2". За более точной и полной информацией обращайтесь к документации на "С2000-4" и "С2000-2".
2.2.3 Функции управления приборами
Функции управления предназначены для дистанционного ручного управления шлейфами и выходами приемно-контрольных приборов (взятие на охрану, снятие с охраны, сброс тревоги и т.д.). Они предоставляются при вводе пароля, имеющего права на управление шлейфами. Правами на управление шлейфами обладают владельцы паролей, имеющих уровни доступа "ВЗЯТИЕ И СНЯТИЕ", "ВЗЯТИЕ", "ВСЕ ФУНКЦИИ". Для получения доступа к функциям управления необходимо нажать "ON" и на приглашение "ПАРОЛЬ:" ввести пароль. Длина паролей (количество цифр) определяется значением параметра "MAX. ПАРОЛЬ". Ввод более коротких паролей завершается нажатием кнопки "ENTER". При вводе правильного пароля пульт формирует сообщение "идентификация пользователя (хозоргана)" и предоставляет доступ к функциям управления. При выключенном параметре "ПАРОЛИ УПРАВЛ" функции управления доступны без ввода пароля (при нажатии на кнопку "ON"). Для выхода из режима управления в режим отображения времени можно использовать клавишу "CLEAR". Пульт автоматически выходит из режима управления через 2 мин после прекращения работы с клавиатурой пульта.
Из функций управления основными являются взятие и снятие шлейфов (индивидуальное, групповое и общее), сброс тревог и просмотр состояний ШС. Владелец пароля, обладающего правами управления по шлейфам, может управлять любыми ШС любых приборов в системе (в отличие от паролей управления разделами, где полномочия пользователей задаются при конфигурировании пульта).
Также пульт позволяет печатать буфер событий на принтере, запрашивать показания аналого-цифрового преобразователя (АЦП) ШС, управлять выходами приборов командой с клавиатуры пульта, управлять приборами "С2000-АСПТ", корректировать время и дату.
Примечания
1 Пульт не поддерживает взятие на охрану и снятие с охраны ШС приборов "Сигнал-20" версии меньше 1.55.
2 Приборы "Сигнал-20" версий менее 2.00 не поддерживают дистанционное управление выходами и команду "сброс тревоги".

2.2.3.1 Управление постановкой и снятием с охраны шлейфов сигнализации приборов
Пульт позволяет ставить на охрану и снимать с охраны шлейфы сигнализации приборов. С помощью пульта любому подключенному к пульту прибору можно дать команды индивидуального, группового и общего взятия и снятия ШС. Команда индивидуального управления ШС предназначена для постановки на охрану или снятия с охраны указанного шлейфа сигнализации указанного прибора. Команда группового управления ШС ставит на охрану или снимает с охраны все шлейфы сигнализации указанного прибора, имеющие атрибут "Групповое взятие/снятие". Команда общего управления ставит на охрану или снимает с охраны все шлейфы сигнализации указанного прибора. Команды общего взятия и снятия не рекомендуется давать приборам "С2000-КДЛ", так это приведет к выдаче сообщений "ОТКЛЮЧЕН" по всем свободным адресам ДПЛС.
Индивидуальное взятие ШС
v1 ВЗЯТИЕ
ПАРОЛЬ:_
Введите пароль.
Выберите пункт меню "ВЗЯТИЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "1".
v11 ВЗЯТИЕ ШС
Выберите пункт меню "ВЗЯТИЕ ШС" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "1".
АДРЕС:_
Наберите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".
НОМЕР ШС:_
Наберите номер ШС, либо выберите допустимое значение номера ШС клавишами "t", "u" и нажмите "ENTER".
Групповое взятие ШС
Введите пароль.
v1 ВЗЯТИЕ
Выберите пункт меню "ВЗЯТИЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "1".
v12 ВЗ.ГРУППОВОЕ
Выберите пункт меню "ВЗ.ГРУППОВОЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "2".
АДРЕС:_
Наберите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".
Общее взятие ШС
Введите пароль.
Выберите пункт меню "ВЗЯТИЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "1".
v1 ВЗЯТИЕ
v13 ВЗЯТИЕ ОБЩЕЕ
Выберите пункт меню "ВЗЯТИЕ ОБЩЕЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "3".
Наберите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".
АДРЕС:_
Индивидуальное снятие ШС
ПАРОЛЬ:_
Введите пароль.

Выберите пункт меню "СНЯТИЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "2".
v2 СНЯТИЕ
Выберите пункт меню "СНЯТИЕ ШС" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "1".
v21 СНЯТИЕ ШС
Наберите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".
АДРЕС:_
НОМЕР ШС:_
Наберите номер ШС, либо выберите допустимое значение номера ШС клавишами "t", "u" и нажмите "ENTER".
Групповое снятие ШС
Групповое снятие ШС — это функция снятия с охраны всех ШС на приборе с указанным адресом, имеющих атрибут "Групповое взятие/снятие".
ПАРОЛЬ:_
Введите пароль.
Выберите пункт меню "СНЯТИЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "2".
v2 СНЯТИЕ
Выберите пункт меню "СН.ГРУППОВОЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "2".
v22 СН.ГРУППОВОЕ
Наберите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".
АДРЕС:_
Общее снятие ШС
Общее снятие ШС — это функция снятия с охраны всех ШС на приборе с указанным адресом.
v2 СНЯТИЕ
ПАРОЛЬ:_
Введите пароль.
Выберите пункт меню "СНЯТИЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "2".
Выберите пункт меню "СНЯТИЕ ОБЩЕЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "3".
v23 СНЯТИЕ ОБЩЕЕ
Наберите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".
АДРЕС:_
2.2.3.2 Сброс тревог в приборе
По данной команде прибор с указанным адресом переводит включенные по тревоге внешние выходы прибора в исходное состояние и берет на охрану ШС, находившиеся в состоянии тревоге или пожаре.
ПАРОЛЬ:_
Введите пароль.
Выберите пункт меню "СБРОС ТРЕВОГ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "3".
v3 СБРОС ТРЕВОГ
Наберите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".

2.2.3.3 Ручное управление внешними выходами приборов
Управление внешними выходами — это управление выходными реле и выходами типа "открытый коллектор" приборов по заданной программе.
ПАРОЛЬ:_
Введите пароль.
Выберите пункт меню "УПРАВЛЕНИЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "4".
v4 УПРАВЛЕНИЕ
Выберите пункт меню "УПРАВЛ. РЕЛЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "1".
v41 УПРАВЛ. РЕЛЕ
Наберите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".
АДРЕС:_
Наберите номер устройства для управления (выхода), либо выберите допустимое значение клавишами "t", "u" и нажмите "ENTER".
УСТРОЙСТВО:_
Наберите номер программы управления, либо выберите допустимое значение клавишами "t", "u" и нажмите "ENTER".
ПРОГРАММА:_
Допустимы следующие программы управления:
0- возврат в исходное состояние;
1- включить;
2- выключить;
3- включить на время;
4- выключить на время;
5- мигать из состояния ВЫКЛЮЧЕНО;
6- мигать из состояния ВКЛЮЧЕНО;
7- мигать из состояния ВЫКЛЮЧЕНО на время;
8- мигать из состояния ВКЛЮЧЕНО на время.
Внимание! Приборы "Сигнал-20" не поддерживают внешнее управление своими выходами. Последние версии приборов "С2000-4", "Сигнал-20П" и "С2000-КДЛ" игнорируют команды внешнего управления выходами, если в приборе настроено внутреннее управление этими выходами. В ранних версиях этих приборов, а также в приборе "Сигнал-20" серия 02, внешнее управление имеет приоритет перед внутренним управлением, то есть блокирует его. Разблокировать внутреннее управление можно командой управления выходом с номером программы 0 ("Возврат в исходное состояние").
2.2.3.4 Управление прибором "С2000-АСПТ"
Пульт позволяет разрешать и запрещать прибору "С2000-АСПТ" автоматический запуск средств тушения пожаров, а также осуществлять дистанционный запуск тушения.
Включение и выключение режима автоматического запуска
ПАРОЛЬ:_
Введите пароль.
Выберите пункт меню "УПРАВЛЕНИЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "4".
v4 УПРАВЛЕНИЕ
Выберите пункт меню "УПРАВЛ. АСПТ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "2".
v42 УПРАВЛ. АСПТ
Выберите пункт меню "УПР. АВТОМАТИКОЙ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "1".

Введите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".
АДРЕС:_
На индикаторе отобразится состояние режима автоматического запуска. В данном примере режим автоматического запуска выключен. Если режим автоматического запуска включен, пульт отобразит строку "АВТОМАТИКА: ВКЛ". Для перехода к управлению режимом автоматического запуска нажмите клавишу "ENTER".
АВТОМАТИКА: ВЫКЛ
Пульт предложит включить автоматику. Клавишами "t" и "u" можно выбрать выключение автоматики ("ВЫКЛЮЧИТЬ"). Выбрав необходимое действие, нажмите "ENTER".
vВКЛЮЧИТЬ
Если команда успешно выполнена прибором, пульт отобразит новое состояние режима автоматического запуска. В данном примере режим автоматического запуска включен.
АВТОМАТИКА: ВКЛ
Дистанционный запуск пожаротушения
ПАРОЛЬ:_
Введите пароль.
Выберите пункт меню "УПРАВЛЕНИЕ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "4".
v4 УПРАВЛЕНИЕ
Выберите пункт меню "УПРАВЛ. АСПТ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "2".
v42 УПРАВЛ. АСПТ
Выберите пункт меню "ПУСК АСПТ" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "2".
v ПУСК АСПТ
Введите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".
АДРЕС:_
2.2.3.5 Запрос состояния шлейфов сигнализации
ПАРОЛЬ:_
v5 ЗАПРОС
Введите пароль.
Выберите пункт меню "ЗАПРОС" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "5".
Выберите пункт меню "ЗАПРОС ШС" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "1".
v51 ЗАПРОС ШС
Наберите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".
АДРЕС:_
НОМЕР ШС:_
Наберите номер ШС, либо выберите допустимое значение номера ШС клавишами "t", "u" и нажмите "ENTER".
v002/017: НЕВЗ
При успехе запроса отображается состояние ШС в следующем формате: "v адрес прибора / номер ШС: состояние". В данном примере состояние ШС № 17 прибора с адресом 2 — "Невзят". Каждые 0,5 секунд пульт автоматически перечитывает состояние выбранного ШС. Клавишами "t", "u" можно просматривать состояния других ШС выбранного прибора.

Возможны следующие состояния ШС:
— "На охране" (ВЗШС);
— "Не на охране" (СНШС);
— "Невзятие" (НЕВЗ);
— "Короткое замыкание ШС" (КЗ);
— "Обрыв ШС" (ОБР);
— "Неисправность пожарного извещателя" (НИСП);
— "Ошибка параметров ШС" (ОШИБ);
— "ШС отключен" (ОТКЛ);
— "Тревога проникновения" (ТРЕВ);
— "Нарушение входного охранного ШС" (ТРВХ);
— "Тихая тревога (нарушение тревожного ШС)" (ТТРВ);
— "Тревога взлома корпуса извещателя" (ТВЗЛ);
— "Пожарная тревога" (ПОЖ);
— "Внимание! Опасность пожара" (ВНИМ);
— "Неисправность технологического ШС" (НТЕХ);
— "Восстановление технологического ШС" (ВТЕХ);
— "Нарушение снятого охранного ШС" (НШС);
— "Восстановление снятого охранного ШС" (ВШС).
Если запрашивать состояния подключенных в ДПЛС прибора "С2000-КДЛ" адресных устройств по адресам, для которых задан тип устройства "С2000-СП2", пульт отобразит состояние выхода:
— "Выход отключен ("С2000-СП2" не подключен по заданному адресу)" (ОТВ);
— "Восстановление цепи выхода" (ВСВ).
2.2.3.6 Измерение сопротивлений шлейфов сигнализации
Данная команда читает условное значение сопротивления ШС путем запроса показаний аналого-цифрового преобразователя (АЦП).
ПАРОЛЬ:_
Введите пароль.
Выберите пункт меню "ЗАПРОС" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "5".
v5 ЗАПРОС
Выберите пункт меню "ЧИТАТЬ АЦП" клавишами "t" и "u" и "ENTER", либо для быстрого перехода нажмите клавишу "2".
v52 ЧИТАТЬ АЦП
Введите адрес прибора (допустимое значение от 1 до 127), либо выберите допустимое значение адреса клавишами "t", "u" и нажмите "ENTER".
АДРЕС:_
Наберите номер ШС, либо выберите допустимое значение номера ШС клавишами "t", "u" и нажмите "ENTER".
НОМЕР ШС:_
При успешном запросе отображается числовое значение АЦП ШС в формате: "v адрес прибора / номер ШС: значение". В данном примере значение АЦП ШС № 17 прибора с адресом 2 равно 51. Каждые 0,5 секунд пульт автоматически перечитывает значение АЦП выбранного ШС. Клавишами "t", "u" можно просматривать значения АЦП других ШС выбранного прибора.
v002/017: 51
Значение с АЦП ШС соответствует сопротивлению шлейфа. Оно может принимать значения от 0 до 255. Значение 0 соответствует обрыву ШС, значение 255 — короткому замыканию. Ниже приведены таблицы соответствия между показаниями АЦП ШС и сопротивлением ШС для разных приемно-контрольных приборов. При переводе значения АЦП

ШС прибора в значение сопротивления рекомендуется пользоваться таблицей, приведенной в руководстве по эксплуатации данного прибора.
а) Соответствие между сопротивлением ШС и показаниями АЦП прибора "Сигнал-20П":

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

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

Итак, перед нами стоит задача — микроконтроллер должен знать температуру в комнате. Вариант «взять градусник и набрать по кнопочкам» по понятным причинам исключается.

Мы поступим так:

  1. Прежде всего, мы имеем некоторое воздействие и предмет, на которое оно производится (в нашем случае тепло воздействует на датчик… пусть это будет термометр сопротивления). Единица измерения на этом этапе — физическая величина (допустим, градусы Цельсия — хотя чем хуже Кельвины. ).
  2. Под этим воздействием предмет — датчик — меняет свои свойства (в нашем случае меняется его сопротивление). На этом этапе мы имеем зависимость свойства датчика от воздействия (сопротивление от температуры). Кстати, грамотнее в данном случае будет сказать "параметр", а не «свойство».
  3. У разных датчиков, разумеется, разные параметры. Поэтому на следующем этапе их всех приводят к единому «интерфейсу» — к напряжению. Другими словами, теперь мы имеем зависимость напряжения от воздействия (тут бывают исключения — например, емкость может быть измерена микроконтроллером без преобразования в напряжение).
  4. Далее необходимо перевести напряжение в цифровой код, который получит микроконтроллер. Этим занимается аналогово-цифровое преобразование (или АЦП или analog to digital conversion — ADC). Доступно для начинающих они описаны тут). В подавляющем большинстве ваших устройств на вход им будет подаваться напряжение в диапазоне 0 — 2.5… 5В, на выходе будет появляться число в виде, доступном микроконтроллеру.
  5. Думаете, победа? Ан нет! Вот сказал вам микроконтроллер — «датчик температуры мне выдал 1734». Это сколько же в градусах Цельсия. Поэтому дальше идет процедура преобразования кода в то, что вам надо.

Если все эти этапы осуществляются в одном устройстве, то оно будет называться цифровым датчиком. Они проще для работы, но дороже.

Теперь рассмотрим все эти этапы преобразования отдельно.

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

На первом этапе мы имеем воздействие некоторой природы на наш датчик (в нашем случае это будет воздействие температуры на внутренний материал резистора KTY81/110 фирмы NXP). Что там внутри происходит, как и когда — это целиком зависит от конкретного датчика. Тут нет каких-либо общих характеристик. Но всегда есть некоторое изменение какого-либо электрического параметра (в нашем случае — сопротивление). Поэтому можно перечислить общие характеристики для любого датчика:

  • Физическая природа и электрический параметр. Это первый вопрос, который возникает при отборе датчиков. В большинстве случаев параметром будут изменение сопротивления, напряжения или емкости (для KTY81 это сопротивление).
  • Допустимый диапазон воздействия. Любой прибор всегда требует определенных условий для своей эксплуатации (для KTY81 это работа в диапазоне температур -55… +150оС).
  • Характеристика зависимости параметра от физического воздействия. Тут нет общего описания, для каждого типа датчика будет своя характеристика (для KTY81 дается температурный коэффициент, смещение сопротивления в зависимости от длительности использования). Также не забываем, что тело не мгновенно реагирует на физическое воздействие (у KTY81 дается температурная константа для измерения в воздухе, стоячей жидкости и текущей жидкости).
  • Собственно зависимость параметра от воздействия. Это таблица или график, который описывает изменение параметра при приложенном воздействии. Эта зависимость может быть линейной (что хорошо), а может и не быть (что хуже).
  • Описание корпуса. Датчик имеет корпус — микросхему. Это может быть трехножка, пятиножка, стоножка (да-да, и такое бывает!). Она может быть с торчащими выводами (DIP-корпусы), могут быть ножки в сторону (TQFP-корпусы), а могут быть вообще без торчащих ножек (всевозможные SMD-корпуса или — каково запаять такое пяльником. — BGA). Чтобы поразить свое воображение — посмотрите хотя бы здесь.
    Самая частая ошибка начинающих схемотехников — оставить вопрос выбора корпуса на потом. Это вроде бы мелочь, но потом, при монтаже и пайке готового изделия может вылиться в головняк. Каждая фирма придумывает свою маркировку и название для корпусов, расстояния между ножками и прочее. Бывает, что заказал один корпус и проглядел ничем не примечательную буковку в названии. А потом, в плату уже не впаивается из-за не тех размеров… (вот заказываете вы ATmega32U4 и видите, что есть ATmega32U4-AU и ATmega32U4-MU. Разница есть? Есть — у одной ноги торчат в сторону, у другой под пузо). Эту информацию надо учитывать (за KTY81 можно расслабиться — тут только один вариант корпуса).
Параметр датчика в напряжение

Следующим делом необходимо убедиться в том, что мы будем работать с напряжением, а не с чем-либо другим.

Тут все зависит от параметра. Если параметром является емкость, то разговор будет совсем особым. Если же датчик сразу дает напряжение, то этот шаг уже выполнен самим датчиком. А если (как у KTY81) параметром является сопротивление, то преобразование в напряжение необходимо выполнить.

Нужно учитывать, что любое преобразование вносит погрешность. Эти погрешности бывают самыми разными. На практике я сталкивался с изменением линейности, смещением, «обрезанием» нижней или верхней границы.

Ничего общего тут сказать нельзя. Каждый вид преобразования индивидуален. В нашем примере используется делитель напряжения. Надо учитывать, что резистор, стоящий вверху, также имеет температурный коэффициент (гораздо менее выраженный, чем у терморезистора, но все равно не нулевой). Значит, при нагреве или остывании платы кривая куда-то «поплывет». Все это нужно учитывать при проектировании устройства. Если нас интересует просто комнатная температура (точность — 1оС), то такие мелочи несущественны и могут быть проигнорированы. Но если вы проектируете термометр с погрешностью не более 0.1оС для широкого диапазона температур, то все эти вопросы становятся очень существенными.

Напряжение в код

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

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

Задача АЦП — выдать цифровой код для напряжения в заданном диапазоне, измерение проводится с заданной погрешностью. Ответ будет представлять собой целое число в четко заданном диапазоне. Для нашего случая это может быть измерение напряжения в диапазоне 0… 5 В.

Первый важный момент (его мне напомнили в комментариях): в процессе преобразования АЦП имеет дело с напряжением, которое накопилось на устройстве выборки-хранения — или конденсатор, коммутируемый аналоговым ключом. Это важно помнить, т. к. конденсатор заряжается не моментально из-за своей емкости.

Второй важный момент: АЦП производит преобразование непрерывной величины напряжения в дискретный код. Сейчас разъясню — покажу на примере.

Итак, мы имеем некоторое напряжение x. Мы уверены в том, что оно больше некоторого 0 и меньше некоторого +U. Уверены? Тогда смело подаем на вход АЦП, которое ограничено 0 и +U вольтами.

Есть много всяких разновидностей и вариантов процедуры измерения (вот, например, прекрасная статья про сигма-дельта АЦП), я же возьму самый простой и понятный.

Измерение проводится в несколько шагов. У нас первый шаг — диапазон 0… U. Делим его пополам и сравниваем: x > 1 /2U или же x < 1 /2U? В нашем случае x < 1 /2U. Прекрасно, тогда результат первого шага — знак «меньше», что отмечается первым двоичным числом «0», результат лежит в диапазоне 0… 1 /2U.

Второй шаг — предыдущий результат «0», диапазон 0… 1 /2U. Снова делим диапазон пополам и делаем сравнение: x > 1 /4U или x < 1 /4U? Оказалось выше, что отмечается двоичным числом «1», которое добавляется к имеющемуся. Результат: «01», 1 /4U < x < 1 /2U.

Третий шаг: снова выше середины. Получаем «011», 3 /8U < x < 1 /2U.

Четвертый шаг — у нас середина будет 7 /16U, новое сравнение. Потом дальше и дальше…

UPD: меня попросили проверить правильность еще нескольких преобразований. Выложу тут результаты нескольких 16-битных преобразований для желающих поупражняться:

Как мы видим, у нас на каждом шагу есть зона неопределенности, в которой и лежит искомый результат. Каждым новым шагом мы зону неопределенности делим пополам. И так, за заданное количество шагов мы получим результат. Количество шагов называется разрядностью АЦП — первая исключетльно важная характеристика АЦП. Количество разрядов определяют количество битов, необходимых для представления результата. Поэтому, например, АЦП с разрядностью 10 назовут 10-битным АЦП. Как правило, в англоязычной документации так и пишут — «16-bit, sampling analog-to-digital (A/D) converter» (это я про ADS8320).

Каждый шаг занимает время — пусть и микроскопическое в масштабах Вселенной, но тем не менее вполне конечное (а часто недостаточно малое). Количество всех шагов и образует время преобразования — вторая фундаментальная величина (на самом деле оно — время преобразования — зависит еще и от массы других параметров, но они значительно меньше влияют на общее время, чем разрядность).

Вот по этим двум параметрам и еще допустимый диапазон измерений (что является ответом на вопрос «что такое 0 и что такое +U?») производится первичный выбор АЦП из всей кучи имеющихся.

Разрядность и диапазон измерения прямым образом влияют на результирующую погрешность преобразования. Какова погрешность у нашего примера?

Первый шаг дает результат в 1 /2U (если у нас U = 5В, то точность будет 2.5В). Значит, точность первого шага — 50% от исходного диапазона. Если мы на этом остановимся, то точность у нас будет… хм… скромненькая, прямо скажем, поэтому мы двигаемся дальше.

Второй шаг еще раз делит искомую область пополам. Точность становится 1 /4U = 25% = 1.25В.

Третий шаг… Давайте, впрочем, изобразим это в таблице:

Поражают воображения числа внизу таблицы? А именно такие АЦП и используются как правило. В составе микроконтроллеров ATmega, например, используются 10-битные. Предел на сегодняшний день (то, что я встречал) — 24-х битные. И цена их отнюдь не фантастическая, а вполне реальная. UPD: впрочем, на момент написания статьи реальным пределом, при котором получается стабильно точный результат, был 22 бита. А оставшиеся 2 бита — просто для маркетинга. UPD 2: Впрочем, и это не предел! В комментариях подсказывают: есть уже и 31-битные. Вот, загляните в гости к «Техасскому инструментальному заводу» и взгляните на ADS1281. Там, впрочем, хитро написано: в заголовке речь про 24-хбитный преобразователь, в характеристиках про 31 бит. И кто их — техасцев — поймет.

Но! Точность преобразования все равно конечна! И поэтому результат будет таким, каким был на картинке — ступеньками. Ступеньки могут быть сколь угодно малыми (почти сколь угодно. ), но все равно это будет ступенька. Это надо четко понимать. И подбирать параметры исходя из требуемой точности.

Диапазон самого последнего сравнения называют ценой младшего разряда. Этот параметр используется при преобразовании получившегося кода в величину.

Обычно точность измерений при подходе к последним шагам падает. И часто последние разряды будут «шуметь» — вы напряжение не меняете, а код скачет. Поэтому еще говорят об эффективных разрядах — это те разряды, которые свое значение не меняют при неизменном значении на входе. Обычно у 24-х битных АЦП шумят последние 2 — 3 разряда.

Код в величину

Итак, мы имеем наконец-то код, который как-то соответствует исходной величине. Что с ним делать дальше?

Аппроксимация

Вопрос первый — какому все-таки реальному значению соответствует код.
Значит, у нас есть некоторый x — код, и функциональная зависимость y = F(x).

Что собою представляет эта функция F(x)? Если мы ее считаем линейной (для простоты), то ответ будет достаточно простой:

y = F(x) = K*x + B.
Простая линейная функция… И в большинстве случаев ее хватает. Но — опять же — только для линейной зависимости кода (с учетом всех перипетий его получения) от исходной величины. Углубляясь в дебри — можно использовать, если надо, квадратичную и более функцию. Я где-то слышал, что делали тензометр — измеритель веса. Он должен был работать в диапазоне от 0 до 5 тонн. И там с помощью кубической функции аппроксимации добились точности в пару килограмм — и это круто!

Так вот, задача теперь заключается в получении этих самых K и B. Как их узнать? Из математики известно, для получения этих констант достаточно знать два значения код-величина. И тогда получаем решение. Где их взять — эти две пары?

Тут есть 2 взаимодополняющих подхода для получения ответа — теоретический и экспериментальный. На практике один дополняет другой.

Для начала мы заглянули в описание KTY81/110и увидели, что при 20оС значение сопротивления у резистора равно… приблизительно… 961 Ом.… Угу, а еще оно равно минимум 950 Ом и максимум 972… Впрочем, я отвлекся.

Итак, для 20оС сопротивление равно 961 Ом. Дальше у меня был делитель напряжения. Допустим, там это сопротивление превратилось в 3.124В. Какой у нас там шаг? — 1.22мВ на один код (т. е. 12-битное АЦП). Т. е. мы должны взять 3.124В и разделить на этот шаг — получим код 2560. Прекрасно! А 100оС соответствует 1696 Ома — после делителя 4.076В — после АЦП код 3340.

Просчитали — и получили значение.

Но вся беда в том, что это только лишь тео-ория… А на практике завод не может гарантировать такую высокую точность KTY81/110 (о чем в описании честно и сказано). И мы не должны забывать о том, что используем делитель напряжения, где сверху резистор, и он тоже не шибко точный. А источник напряжения-то в делителе — тоже не идеален… Словом, от датчика к датчику будут различия. Что хорошо — величину этого различия можно всегда просчитать и вывести погрешность. Если она устраивает — все ОК, продаем датчик. Если же нет, то необходимо откалибровать данный датчик.

Для этого пары код-значения получают экспериментально.

Я это для измерителя температуры делал так.

Первая точка — моя температура тела 36.6оС (хочется верить). Засовываю датчик под мышку и смотрю — ага, код такой-то. Запомнили!

Вторая точка — кипящий чайник. Вот он, электрочайник, кипит и бурлит на столе (за час отладки программы я доливал туда воду не раз и в комнате было туманно. ) Засовываю датчик туда — ага, получил вторую точку!

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

Но вначале я записал в программу то, что было в документации. Потом исправлял для каждого нового датчика.

А что надо сделать для нелинейной характеристики? То же самое, только формула усложняется, больше точек код-значение и существенно сложнее формула получения констант.

В нашем-то примере надо было все-таки делать нелинейную аппроксимацию! Но на некотором участке кривая получается почти линейной. А у нас есть условие — «мерять комнатную температуру». «Комнатная» — это от 10оС (ну мало ли, котел сломался зимой, окна нараспашку!) до 40оС (ну мало ли, кондиционер сломался по летней жарище, окна нараспашку). Как мы видим на нашем графике, на этом участке кривая почти прямая. Прекрасно! Мы надеемся, что у нас в доме меньше 10оС не будет (а если будет — нам уже будет не до датчиков!), и нелинейный участок нас интересовать не будет. Все! Значит, порядок!

В этом и заключается магия четкого отслеживания всех погрешностей и условий работы прибора: если в заданных условиях получившаяся у нас в результате всех преобразований погрешность допустима, то к большей точности стремиться не надо. У нас, скажем, допустима погрешность в 1оС. Попадаем в нее (в условиях комнатной температуры)? Да. Тогда считаем, что устройство работает правильно!

Дискретность преобразования

Значение получили — класс! Теперь давайте проанализируем что мы получили. Мы помним, что преобразование у нас — дискретное. И результат будет ступенчатый. Но что это за ступеньки будут?

Ширина ступеньки — это код. Высота ступеньки — это величина. Код у нас растет монотонно — все время увеличивается на 1-цу. Следовательно, у всех ступенек ширина будет одинаковая. А вот величина может быть и не очень равномерно-монотонной. Если у нас линейная аппроксимация, то высота будет везде одинаковая. Но вот если любая другая, то высота будет плавать в зависимости от диапазона.

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

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

Величину в… интерпретацию?

Для чего нам нужен датчик? Если нас просто интересует, допустим, температура, то на этом можно и остановиться — вот она, температура в Цельсиях! Но если температура, в свою очередь, описывает какой-то другой процесс?

Например, по ходу заряда аккумуляторы постепенно начинают нагреваться. Вначале процесса заряда они нагреваются несущественно, но к концу нагрев растет экспоненциально. Если 1) измерять температуру на аккумуляторах с высокой точностью, 2) знать их емкость и прочие характеристики, а также 3) четко управлять током заряда, то по температуре можно предсказать оставшееся время заряда.

Тогда нам в цепочку преобразований надо вставить еще один этап — график «температура -> время заряда». У этого преобразования будут тоже свои погрешности и особенности. Впрочем, это совсем отдельная тема, и она специфична для каждого случая. Поэтому рассматривать ее тут подробно бессмысленно.

Итоги преобразования

Итак, мы рассмотрели всю последовательность преобразования некоторого физического воздействия в цифровое его значение. Вначале мы подставили физическому воздействию датчик — подставили наш терморезистор под лампу. Это воздействие изменило свойства датчика — и изменился его какой-то электрический параметр. Следующим шагом мы превращаем изменение параметра в изменение напряжения — действие, хоть и условное, но всем удобное. Дальше мы должны преобразовать напряжение в числовой код, понятный микроконтроллеру. Этим занимается класс устройств под названием АЦП. В результате мы получаем дискретный код, который показывает изменение напряжения в некотором заданном диапазоне. В конце мы должны превратить код в число, соответствующее физической величине. По ходу дела приходится решать задачи аппроксимации.

При всех этих действиях у нас погрешность скачет туда-сюда. Каждый узел устройства, каждый шаг преобразования тем или иным образом увеличивает погрешность. Об этом надо помнить и везде закладывать такую погрешность, чтобы сумма всех этих погрешностей в конце не превысила требования к прибору. Под «суммой» тут имеется в виду не арифметическое сложение, а… ну-у… сумма, в общем.

Вкратце об АЦП

У нас осталась еще одна нерассмотренная тема — это АЦП. Вкратце о них было сказано выше, да и вообще тема очень изъеденная в Интернете, но все-таки для полноты картины нужно о них рассказать и тут. Я ограничусь самыми краткими сведениями — теми особенностями, которые надо учитывать при проектировании устройства.

Вы уже познакомились с зависимостью точности преобразования от разрядности? Нет. Тогда знакомьтесь, иначе дальше ничего не поймете! Ну а коли познакомились (не правда ли, приятное знакомство!), двигаемся дальше.

  1. Разрядность — эту тему обсудили.
  2. Скорость преобразования — это тоже было показано. Вернее, мы остановились на том, что разрядность прямо влияет на скорость преобразования.
  3. Опорное напряжение — то самое, в пределах которого производится измерение.

Впрочем, самое то сделать оговорку. Нижняя граница может быть и отрицательной. Есть еще дифференциальный режим измерения — когда есть два входа — нижнее значение и измеряемое. Тогда мы меряем напряжение между ними (а не разницу между данным напряжением и 0). Это используется в случае так называемого «дифференциальног опдключения». Объяснять специфику тут долго, да и выходит оно за рамки статьи. Вкратце: диф. подключение позволяет здорово минимизироват ьвлияние помех. Разницы почти нет. Поэтому для упрощения дальнейшего изложения будем говорить только об измерении текущего напряжения между 0 и опорным.

Увеличивая опорное напряжение, мы «растягиваем» как гармошку «лестницу» результата. Т. е. меняется цена разряда. Уменьшая — соответственно, наоборот. Как правило, опорное напряжение — это константа.

Для создания опорного напряжения используют отдельную микросхему. Она дает высокоточное напряжение (0.1% точности у REF5050), слабо зависящее от температуры. Ток у таких источников питания совсем небольшой (у того же элемента +-10мА), но этого вполне хватает для АЦП. И вообще, запомните: АЦП потребляет мизерный ток от измеряемого сигнала (он измеряется в микроамперах, а часто и в наноамперах). Но, как всегда, есть исключения: в комментариях enclis отметил, что «есть такой класс усилителей/буферов — драйверы АЦП. Из-за входных сопротивлений и емкостей тех же высокоскростных АЦП приходится очень быстро прокачивать несколько мА, а иногда и десятки мА.»

Скорость преобразования, или же, что корректней, частота дискретизации — это следующий ключевой момент, и его надо учитывать в случае периодических измерений. Допустим, у вас меняется ток в устройстве, и вы хотите быстро реагировать на эти изменения. Значит, вы должны уметь их быстро отслеживать. Насколько быстро? Это уже характеристика АЦП.

Загляните на выбор АЦП у Analog Devices. Вы увидите таблицу (или их уже две. ) «Resolution (Bits) x ADC Throughput Rate (SPS)». Это, соответственно, «разрешение (биты) х частота семплирования (SPS)». Разрядность (оно же разрешение) уже рассмотрели, измеряется в битах. Частота семплирования (SPS — samples per second) — это количество выборок (измерений) в секунду. Величина 10 SPS означает, что за секунду это АЦП может произвести 10 измерений. Да-да, SPS — это те же Герцы.

Правда, 10 SPS — это уже из разряда очень высокоточных измерений! В простых случаях все начинается с 1k («k» — это тут KSPS, то есть тысячи SPS)…

Вот такие времена наступили! Меньше 1k измерений в секунду уже никого (почти) не интересует. Дальше — больше: 100k (100 тысяч), 1M (1 миллион), 250+M (более 250 миллионов). Дык, мы уже доросли и до миллиарда измерений в секунду! Есть уже 58 GSPS — собственно, без таких АЦП невозможны современные оптические сети. Такие вот нынче цифры — меряет от доли микровольта до 5 Вольт меньше чем за микросекунду!

На практике необходимо прежде всего решить для себя — какая частота измерений вам нужна? Полоса частот видеосигнала, если я не ошибаюсь, составляет с десяток МГц — это будет один АЦП. Нужно измерять потребление тока в домашней электросети 50 Гц — там будет совсем другой АЦП.

Слишком быстрое АЦП тоже не нужно — микроконтроллер должен успевать обработать результат.

Лично я как максимальную величину устанавливаю ту скорость, что мне выдает мой контроллер (что мой алгоритм успеет обработать). Эта величина у меня никогда не была выше 1 MSPS. Минимальная величина — это предполагаемая частота, увеличенная (грубо) в 10 раз. Тут вы видите примеры различных частот дискретизации.

Если вы измеряете, например, обычные колебания (синусоиду), то необходимо учитывать ее частоту. Если вы выберете частоту АЦП, близкую к частоте колебаний, то вы можете получить красивую, но совсем неправильную информацию о колебаниях. На рисунке представлен как раз этот случай — исходные колебания (синя кривая) опрашиваются весьма, но недостаточно быстро (зеленые линии), в итоге получаем, по сути дела, эффект биения (красная кривая) — результат сложения двух колебаний близких частот.

А вообще — есть теорема Найквиста-Котельникова по поводу выбора частоты дискретизации. Исходя из этой теоремы надо оценить спектр сигнала, найти максимальную гармонику… Испугал? Если да, то запомните простое правило, которое я для себя вывел: нужно делать где-то в 10 раз бОльшую частоту дискретизации, чем частота изменения сигнала. UPD: это правило теоретически некорректное и не всегда правильное, но для быстрого подбора АЦП сойдет.

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

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

[1] моя голова
[2] Интернет
[3] мои железяки, где используются датчики

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *