10 бит ацп что это значит

Что такое АЦП

Что нужно для того, чтобы стать профессиональным разработчиком программ для микроконтроллеров и выйти на такой уровень мастерства, который позволит с лёгкостью найти и устроиться на работу с высокой зарплатой (средняя зарплата программиста микроконтроллеров по России на начало 2017 года составляет 80 000 рублей). Подробнее.

АПЦ — это Аналого-Цифровой Преобразователь. По английски ADC (Analog-to-Digital Converter). То есть специальное устройство, которое преобразует аналоговый сигнал в цифровой.

АЦП применяется в цифровой технике. В частности, почти все современные микроконтроллеры имеют встроенный АЦП.

Как вы уже наверняка знаете, микропроцессоры (как и компьютерные процессоры) не понимают ничего, кроме двоичных чисел. Из этого следует, что микропроцессор (который является основой любого микроконтроллера) не может напрямую обработать аналоговый сигнал.

Например, если вы создаёте программу для микроконтроллера, которая отслеживает температуру, то микропроцессор должен каким-то образом понять, что, например, напряжение 1В на его аналоговом входе соответствует температуре 10 градусов, а 5В — температуре 100 градусов (это просто пример, пока не обращайте внимание на числа).

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

Принцип работы АЦП

Итак, мы узнали, что АЦП преобразует аналоговый сигнал в цифровой. Но как он это делает?

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

Читайте также:  Что значит рано проснулся

Итак, первым делом АЦП должен преобразовать аналоговый сигнал в дискретный. Для чего это нужно?

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

Поэтому первая задача АЦП — это разбить измеряемый диапазон на какое-то конечное количество значений.

Например, мы хотим измерить напряжение в диапазоне от 0 до 9 В. Допустим, нам достаточно точности в 1В. Тогда мы разбиваем этот диапазон на 10 значений и получаем, что каждому значению напряжения соответствует такое же число. То есть 0 — это 0 В, 5 — 5 В и т.п.

А как же, например, напряжение 4,3 В? Да никак. Оно просто округляется, и АЦП преобразует его в число 4. Этот простой пример отображён на рисунке ниже.

Возникает вопрос — а как измерять большие напряжения? Или как повысить точность (например, если мы хотим измерять напряжение с точностью до 0,1В)?

Расскажу и об этом, но сначала о разрядности АЦП.

Разрядность АЦП

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

Например, 8-разрядный АЦП может выдать 2 8 = 256 значений — от 0 до 255 (если речь идёт о положительных числах).

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

Где Р — это разрядность АЦП, Д — диапазон измеряемых значений, Х — точность (дискретность).

Например, если вам надо измерять напряжение в диапазоне 0. 9В, то Д = 10. А если в диапазоне -5. 15В, то Д = 21 (не забываем про ноль).

Например, если у нас 8-разрядный АЦП, и мы хотим измерять напряжение в диапазоне 0. 255В, то точность измерений будет:

256 / 2 8 = 256 / 256 = 1 В

Если же мы хотим измерять напряжение с этим же АЦП в диапазоне 0. 15В, то точность измерений будет:

16 / 2 8 = 16 / 256 = 0,0625 В

Из этого следует, что для того, чтобы повысить точность, требуется либо сузить диапазон измеряемых значений, либо повысить разрядность АЦП. Например:

256 / 212 = 256 / 4096 = 0,0625 В

То есть 12-разрядный АЦП обеспечит уже довольно высокую точность даже при измерении сигналов с относительно большим диапазоном значений.

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

АЦП микроконтроллера обычно измеряет только напряжение в диапазоне от 0 до напряжения питания микроконтроллера.

Характеристики АЦП

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

Все эти характеристики описаны в документации на АЦП (если он выполнен в виде отдельной микросхемы) или в документации на микроконтроллер (если АЦП встроен в микроконтроллер).

Кроме разрядности, о которой мы уже говорили, можно назвать ещё несколько основных характеристик.

Least significant bit (LSB) — младший значащий разряд (МЗР). Это наименьшее входное напряжение, которое может быть измерено АЦП. Определяется по формуле:

1 LSB = Uоп / 2 Р

Где Uоп — это опорное напряжение (указывается в характеристиках АЦП). Например, при опорном напряжении 1 В и разрядности 8 бит, получим:

1 LSB = 1 / 2 8 = 1 / 256 = 0,004 В

Integral Non-linearity — интегральная нелинейность выходного кода АЦП. Понятно, что любое преобразование вносит искажения. И эта характеристика определяет нелинейность выходного значения, то есть отклонение выходного значения АЦП от идеального линейного значения. Измеряется эта характеристика в LSB.

Иными словами, эта характеристика определяет, насколько “кривой” может быть линия на графике выходного сигнала, которая в идеале должна быть прямой (см. рис.).

Абсолютная точность. Также измеряется в LSB. Иными словами, это погрешность измерения. Например, если эта характеристика равна +/- 2 LSB, а LSB = 0,05 В, то это означает, что погрешность измерений может достигать +/- 2*0,05 = +/- 0,1В.

Есть у АЦП и другие характеристики. Но для начала и этого более чем достаточно.

Подключение АЦП

Напомню, что аналоговые сигналы, в основном, бывают двух видов: токовые и напряжения. Кроме того, сигналы могут иметь стандартный диапазон значений, и нестандартный. Стандартные диапазоны значений аналоговых сигналов описаны в ГОСТах (например, ГОСТ 26.011-80 и ГОСТ Р 51841-2001). Но, если в вашем устройстве используется какой-то самодельный датчик, то сигнал может и отличаться от стандартного (хотя я советую в любых случаях выбирать какой-нибудь стандартный сигнал — для совместимости со стандартными датчиками и другими устройствами).

АЦП в основном измеряют напряжение.

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

Итак, допустим, что мы хотим измерять температуру в диапазоне -40…+50 градусов с помощью специального датчика со стандартным выходом 0. 1В. Допустим, что у нас есть датчик, который может измерять температуру в диапазоне -50…+150 градусов.

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

Что такое линейный закон? Это когда диапазон значений на графике выглядит как прямая линия (см. рис.). Зная, что температура от -50 до +150 даёт на выходе датчика напряжение, изменяемое по линейному закону, мы, как я уже сказал, можем вычислить это напряжение для любого значения температуры на заданном диапазоне.

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

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

Первым делом определяем диапазон температур. Он у нас от -50 до 150, то есть 201 градус (не забываем про ноль).

А диапазон измеряемых напряжений — от 0 до 1 В.

То есть в шкалу от 0 до 1 нам надо впихнуть диапазон от 0 до 200 (всего 201).

Находим коэффициент преобразования:

К = U / Tд = 1 / 200 = 0,005 (1)

То есть при изменении температуры на 1 градус напряжение на выходе датчика будет меняться на 0,005 В. Здесь Тд — это температурный диапазон. Не значения температуры, а количество единиц измерения (в нашем случае градусов) на температурной шкале, сопоставляемой со шкалой напряжения (ноль не учитываем для упрощения, так как в диапазоне напряжений тоже есть ноль).

Проверяем характеристики АЦП микроконтроллера, который мы планируем использовать. Значение LSB не должно быть более К (более 0,005 в нашем случае, точнее, это допустимо, если вас устроит погрешность более 1 единицы измерения — более 1 градуса в нашем случае).

По сути К — это вольт на градус, то есть так мы узнали, на какое значение изменяется напряжение при изменении температуры на 1 градус.

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

Мы помним, что мы сместили диапазон температур на 50 градусов. Это надо учитывать при преобразовании значения на выходе АЦП в температуру.

А формула будет такая:

Например, если на выходе АЦП 0,5 В, то

Т = (U / К) — 50 = (0,5 / 0,005) — 50 = 100 — 50 = 50 градусов

Теперь нам надо определить дискретность, то есть желаемую точность измерений.

Как вы помните, абсолютная погрешность может составлять несколько LSB. К тому же ещё существуют нелинейные искажения, которые обычно равны 0,5 LSB. То есть общая погрешность АЦП может доходить до 2-3 LSB.

В нашем случае это:

Uп = 3 LSB * 0,005 = 0,015 В

Если в вашем случае не так всё гладко, то снова используем формулу, выведенную из (1):

Тд = Uп / K = 0,015 / 0,005 = 3

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

Например, если вам удастся найти датчик с диапазоном -40…+50, как мы и хотели, и с таким же выходом 0. 1В, то

Тогда абсолютная погрешность будет:

Тд = Uп / K = 0,015 / 0,01 = 1,5 градуса.

Это уже более-менее приемлемо. Ну а если у вас будет датчик с выходом 0. 5В (это тоже стандартный сигнал), то

А абсолютная погрешность будет:

Тд = Uп / K = 0,015 / 0,05 = 0,3 градуса.

Это уже вообще ништяк.

Но! Не забывайте, что здесь мы рассматриваем только погрешность АЦП. Но и у самого датчика тоже есть погрешность, которую также надо учитывать.

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

А в конце на всякий случай приведу формулу обратного преобразования температуры в напряжение:

Источник

Почему АЦП используют 10 бит, а не 8 или 16?

Почему большинство АЦП, таких как Arduino , дают 10-битное разрешение, а не 8 или 16 бит?

Кажется странным, что они не соответствуют стандартным размерам данных, особенно на интегрированных.

7 ответов

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

Предполагая, что опорное напряжение 5.00Â V и 10-битный АЦП, младший бит представляет собой напряжение 4.88Â мВ (5a В a- 2 -10 ). Для 16-разрядного АЦП с опорным напряжением 5,00 В напряжение LSB будет составлять 76 мкВ.

Но источник питания в цифровой системе не является точно 5,00 В, он обычно указывается в диапазоне от 4,75 В до 5,25 В. Когда в микроконтроллере есть событие переходного переходного процесса, есть небольшой импульс тока, который заставляет напряжения питания подергиваться. Если LSB составляет около 5 мВ, вы едва ли сможете его увидеть, но на уровне 76Â ÂμV трудно не видеть этот шум.

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

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

Существуют приложения-клиенты, которые используют ADC с более высоким разрешением. Компания, над которой я работаю, делает немало таких. Автоматизированное тестовое оборудование (ATE), медицинский ультразвук и некоторые другие специализированные типы клиентов используют АЦП с высоким разрешением, в некоторых случаях — 18- или даже 24-битные.

Производственное тестирование ADC с высоким разрешением занимает много времени (и, следовательно, дорого). Клиенты, которым требуется такая производительность, платят премиум за внешний автономный АЦП, а не дешевые типы SAR, встроенные во многие современные микроконтроллеры.

Тогда есть высокоскоростные приложения, такие как радиолокационный или цифровой дискретизированный осциллограф, который нужно пробовать со скоростью 100 МГц или быстрее — на этих скоростях вам повезло получить 8 значащих бит.

Обмен между разрешением и стоимостью.

8 бит дает 2 8 = 256 комбинаций, из которых 0 равно единице, оставляя 0 до 255 как возможные цифровые значения. Этого недостаточно для многих приложений. Каждый дополнительный бит удваивает разрешение, а 10-бит дает 1024 шага, что достаточно для большинства материалов проекта. Промышленные системы могут использовать 12-бит для еще лучшего разрешения.

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

Уже сделано несколько хороших и достоверных баллов. Я использую 8, 10, 12 и 16 бит АЦП на протяжении многих лет, и в настоящее время довольно легко достичь 16 бит с временем преобразования 4 или 5 мкс (лучше доступны, я буду придерживаться того, что может быть практически осуществимо для большинства людей), в отдельном чипе. Но в этом есть прецизионная лестничная сеть, часто использующая тонкопленочные резисторы и различные узкоспециализированные методы аналогового проектирования. (Существует также почти всегда потребность в высокопроизводительных биполярных транзисторах где-то в цепи прецизионного АЦП, но все современные микроконтроллеры являются КМОП, поэтому существует множество дополнительных этапов изготовления, чтобы сделать что-либо с хорошей аналоговой точностью и логикой CMOS в сочетании. ) Хороший АЦП также стоит больше, чем у большинства микроконтроллеров! Не так просто сделать, больше производственных процессов, возможно, потребуется лазерная подрезка и т. Д.

Например, рассмотрите TI ADS8509, предшественник которого ADS7509, не так быстро, я использовал во многих местах в большом и важном проекте.

Это вполне обыденно по сегодняшним меркам. Однако его внутренние конструктивные особенности несовместимы с дешевым производственным процессом для микроконтроллеров. И это стоит выше $ 15,72, больше, чем у большинства микроконтроллеров. Я использовал их в форме голой полупроводниковой матрицы, встроенной в герметичные гибриды металлических контейнеров, с тщательно разработанными опорными схемами, и на самом деле едва ли был более 1 шум LSB pp, поэтому это можно сделать, если вы знаете, что делаете, и располагают ресурсами, включая бюджет. Но вы никогда не увидите такого низкого шума в микроконтроллере или вокруг него.

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

Часть, которую я цитировал (и Google вокруг для более дешевых, быстрых или разных, обменивает гибкость против стоимости) имеет интерфейс SPI, поэтому он легко используется ВНЕШНЕЕ к микроконтроллеру с собственной локальной плоскостью заземления, и т. д. Затем, с осторожностью, это действительно даст вам 16 бит.

Было довольно сложно получить более 10 шумопонижающих битов из 12-разрядного АЦП и все еще находится в грязной среде, например, близкой к цифровой логике, что в значительной степени является причиной того, что встроенные АЦП внутри процессорные чипы более или менее застревают в этом разрешении и, вероятно, будут навсегда. Но у TI есть 32-битный внешний чип. Не смотрел лист данных или стоимость .

Если вы можете пожертвовать абсолютной точностью (т. е. масштабный коэффициент может выходить на 5% или более, не говоря уже о смещении постоянного тока и его дрейфе со временем и температурой, но линейность будет превосходной), ADC для аудио класса может быть для вы. Они не менее 16 бит и предназначены для массового рынка, поэтому часто имеют хорошую ценность, но не предполагают использовать его в прецизионном приборе, который должен измерять сигналы постоянного тока до +/- 0,1%.

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

При выборе АЦП. Google, как всегда,друг. Существует множество статей и заметок от TI, Linear, National и других производителей полупроводников. Всегда остерегайтесь того, что листы данных не говорят вам, и проверьте, какие параметры подчеркивают их конкуренты.

Но если вы хотите все это на микросхеме микроконтроллера, не планируйте использовать в своих проектах более 10 бит (вероятно, 9 используемых, шум LSB). И, планируйте отдельную аналоговую ссылку и землю, если позволяет ваш чип. Таким образом, вы не будете тратить свое время.

8-битные АЦП ужасны для использования из-за шагов 0,49% — я видел достаточно этого. Arduino, предназначенный для электроники для хобби, использует в 4 раза больше шагов, поэтому около 0,1%, что близко к достижимому сигналу к шуму (плюс гул), ожидаемому от обычных цепей ОУ или транзисторных датчиков. Лучше, чем это будет потрачено впустую на хоббистскую технику домашней электроники, и хуже, чем это было бы слишком шаткой и ужасной.

В то время как 16-разрядный АЦП доступен на коммерческой основе, они занимают больше времени, чтобы успеть, во время которых шум или шум переместились, поэтому вы не получите лучшего измерения, и оно медленнее.

Когда АЦП выполняет преобразование, он обеспечивает цифровое (квантованное) значение для непрерывного аналогового сигнала. Поскольку цифровое значение не будет точно аналоговым значением в момент преобразования, разность может рассматриваться как аддитивный шум. Чем выше разрешение АЦП, тем ближе цифровое значение от аналогового значения. Другими словами, мы улучшаем сигнал к шумовому коэффициенту quanitization (SQNR) за счет увеличения бит АЦП. Таким образом, 10-битный АЦП лучше, чем 8-бит (примерно на 12 дБ).

Использование 16-битного A /D будет лучше с точки зрения SQNR. Однако они дороже. И во многих приложениях 10-разрядный АЦП обеспечивает достаточно необходимый SQNR.

Наиболее частое использование АЦП возможно в области обработки звука (VoIP, музыка CD и т. д.). Музыка здесь не представляет интереса, поскольку для этого требуется 16 бит. Но VoIP — это то, что движет более низким уровнем ADC-рынка. VoIP обычно использует companding, который создает 8-битный сжатый PCM-код из 12-битного входного сигнала. Вход на этап сжатия должен иметь больше бит — обычно 12 или иногда 10 может быть достаточно (вы всегда можете подделывать младшие два бита).

В результате спрос на 8-разрядные АЦП очень низок, но высокоразрядные АЦП пользуются большим спросом и, следовательно, дешевле. Ардуино, вероятно, будет использовать компоненты, которые являются дешевыми и повсеместными.

Как правило, вы хотите, чтобы количество бит в вашем коветоре было таким, чтобы ваш шаг квантования был немного ниже (аналогового) уровня шума в системе.

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

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

Разница между 8 бит и 16 бит — ОГРОМНАЯ. Первый заканчивается шагом квантования, который слишком велик даже в системах с довольно плохими характеристиками шума. Последний пропадает в любой системе, которая не имеет очень тщательного аналогового дизайна. Поэтому неудивительно, что микроконтроллеры находятся где-то посередине.

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

Источник

Оцените статью