Определение метрологических характеристик и экспериментальное исследование осциллографа приставки
Измерение – это операция, в результате которой мы узнаем, во сколько раз измеряемая величина больше или меньше соответствующей величины, принятой за эталон.
Интегральная нелинейность — представляет собой максимальное отклонение любого кода от прямой линии, проведенной через крайние точки передаточной функции АЦП. Крайними точками являются: нулевая, находящаяся на 0.5LSB ниже точки появления первого кода, и последняя — на 0.5LSB выше граничного кода шкалы.
Дифференциальная нелинейность DNL (differential non-linearity) — представляет собой разницу между измеренной и идеальной шириной 1 кванта (1 LSB) АЦП.
Ошибка смещения — представляет собой отклонение момента первичной смены кода с (000Н) на (001Н) от идеального значения, то есть +0.5LSB.
Ошибка усиления — представляет отклонение реального коэффициента усиления тот идеального.
LSB (least significant bit) или МЗБ (младший значащий бит) – это наименьшее значение напряжения, которое может быть измерено АЦП. Находиться по формуле:
где Uоп – значения источника опорного напряжения (ИОН), N разрядность АЦП. В данном случае:

Uоп = 2,5 В — значение напряжения внутреннего ИОН.
Систематические ошибки – ошибки, величина которых одинакова во всех измерениях, приводящих одним и тем же методом с помощью одних и тех же измерительных приборов. Ошибка смещения и ошибка усиления относятся к случайным ошибкам.
Случайные ошибки – ошибки, величина которых различна даже дл измерений, выполненных одинаковым образом. Интегральная и дифференциальная нелинейности относятся к систематические ошибкам.
5.2 Погрешности АЦП
В АЦП и ЦАП различают четыре типа погрешностей по постоянному току: погрешность смещения, погрешность усиления и два типа погрешностей, связанных с линейностью: интегральная и дифференциальная нелинейность. Погрешности смещения и усиления АЦП и ЦАП аналогичны погрешностям смещения и усиления в усилителях.

Рисунок 5.1 – Погрешность смещения нуля
Погрешность смещения равна погрешности нуля во всем диапазоне входного напряжения и постоянна.

Рисунок 5.2 – Погрешность усиления
Погрешность усиления вызывает погрешность смещения. Причем погрешность смещения не постоянна и не равна погрешность смещения нуля.
Интегральная нелинейность ЦАП и АЦП аналогична нелинейности усилителя и определяется как максимальное отклонение фактической характеристики передачи преобразователя от прямой линии. В общем случае, она выражается в процентах от полной шкалы (но может представляться в значениях младших разрядов). Существует два общих метода аппроксимации характеристики передачи: метод конечных точек и метод наилучшей прямой.

Рисунок 5.3 – Определение погрешности измерения по а) методу конечных точек и по б) методу наилучшей прямой
При использовании метода конечных точек измеряется отклонение произвольной точки характеристики от прямой, проведенной из начала координат. Таким образом, измеряют значения интегральной нелинейности преобразователей, используемых в задачах измерения и управления.
Метод наилучшей прямой дает более адекватный прогноз искажений в приложениях, имеющих дело с сигналами переменного тока. Он менее чувствителен к нелинейностям технических характеристик. По методу наилучшего приближения через характеристику передачи устройства проводят прямую линию, используя стандартные методы интерполяции кривой. После этого максимальное отклонение измеряется от построенной прямой. Как правило, интегральная нелинейность, измеренная таким образом, учитывает только 50% нелинейности, оцененной методом конечных точек.
Другой тип нелинейности преобразователей – дифференциальная нелинейность. Она связана с нелинейностью кодовых переходов преобразователя. В идеальном случае изменение на единицу младшего разряда цифрового кода точно соответствует изменению аналогового сигнала на величину единицы младшего разряда. В АЦП, при переходе с одного цифрового уровня на следующий, значение сигнала на аналоговом входе должно измениться точно на величину, соответствующую младшему разряду цифровой шкалы. Наиболее распространенным проявлением DNL в АЦП являются пропущенные коды.
Переходы АЦП (идеальные) имеют место, начиная с 1 /2 LSB выше нуля, и далее через каждый LSB, до 1 1 /2 LSB ниже полной аналоговой шкалы. Так как входной аналоговый сигнал АЦП может иметь любое значение, а выходной цифровой сигнал квантуется, может существовать различие до 1 /2 LSB между реальным входным аналоговым сигналом и точным значением выходного цифрового сигнала. Этот эффект известен как ошибка или неопределенность квантования. В приложениях, использующих сигналы переменного тока, эта ошибка квантования вызывает явление, называемое шумом квантования.

Рисунок 5.4 – Шум квантования АЦП
Среднеквадратичное значение шума. приблизительно равно весу наименьшего значащего разряда (LSB) Δ, деленному на √12. При этом предполагается, что амплитуда сигнала составляет, по крайней мере, несколько младших разрядов, так что выход АЦП изменяет свое состояние почти при каждом отсчете. Сигнал ошибки квантования от входного линейного пилообразного сигнала аппроксимируется сигналом пилообразной формы с максимальным размахом Δ , и его среднеквадратичное значение равно Δ /( √12). Поэтому средняя мощность шума кантования равна:

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

где SNR (signal to noise ratio) – отношение сигнал-шум, N — число разрядов в идеальном АЦП. Это уравнение имеет силу только в том случае, если шум измерен на полной ширине полосы Найквиста от 0 до fД/2.
Таким образом, для АЦП микроконвертора ADUC842, используемого в лабораторном стенде LESO1, справедливо:

Для оценки погрешностей АЦП приведем характеристику АЦП, где указаны погрешности в значениях LSB и в напряжениях.
Таблица 5.1 – Характеристики АЦП ADuc842
| Параметры | Значение в LSB | Значение в мкВ | Примечание | |
| Точность по постоянному току | Разрядность | 12 битный | От внутреннего ИОН Uоп = 2,5 В | |
| Интегральная нелинейность | ±1 макс. ±0,3 сред. |
±610 макс. ±183 сред. |
||
| Дифференциальная нелинейность | ±1 макс. ±0,3 сред. |
±610 макс. ±183 макс. |
||
| Калибровочные ошибки конечных точек шкалы | Ошибка смещения | ±3 макс | ±1830 макс. | |
| Ошибка усиления | ±3 макс. | ±1830 макс. | ||
| Аналоговый вход | Диапазон входных напряжений | 0 ÷ Uоп В. | ||
| Входной ток | ±1 мкА макс. | |||
| Входная емкость | 32 пФ сред. | |||
Так как интегральная и дифференциальная нелинейности относятся к случайным ошибкам и являются независимыми друг от друга ошибками их необходимо сложить по «закону сложения независимых случайных ошибок»:

где X1,…,Xn – номинальные значения независимых случайных величин, ΔX1,…,ΔXn – ошибки случайных величин, Y — номинальное значение конечной измеряемой величины, ΔY – абсолютная ошибка конечной измеряемой величины.
Случайная ошибка АЦП будет состоять из интегральной и дифференциальной нелинейности, а также из ошибки квантования, которая составляет Δ/2 = 610мкВ/2 = 305мкВ = 0,305·10 -3 В. Номинальное значения этих величин есть опорное напряжение АЦП, которое равно 2,5В.
Итак, относительная ошибка измерения АЦП:

Из относительной ошибки измерения АЦП найдем абсолютное значение ошибки измерения:

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

Рисунок 5.5 – Калибровка в LabVIEW
5.3 Экспериментальные исследования
В задачу каждого измерения входит оценка точности полученного результата. Но в результате измерении мы всегда получаем нужную величину с некоторой погрешностью.Смысл экспериментальных исследований состоит в том, чтобы проверить на опыте теоретические выкладки и дать оценку характеристикам прибора.
Результат экспериментального исследования АЧХ устройства без цифрового фильтра или аналогового фильтра Бесселя записан в таблице 5.2. Экспериментальные данные были сняты с помощью низкочастотного генератора сигналов Г3-112.
Таблица 5.2 – Измеренное АЧХ устройства без цифрового фильтра
![]() |
![]() |
![]() |
| 0 | 5,00 | 0,00 |
| 10 | 5,00 | 0,00 |
| 20 | 4,88 | -0,21 |
| 30 | 4,68 | -0,58 |
| 40 | 4,31 | -1,28 |
| 50 | 3,95 | -2,04 |
| 60 | 3,43 | -3,28 |
| 70 | 2,90 | -4,72 |
| 80 | 2,34 | -6,60 |
| 90 | 1,77 | -8,99 |
| 100 | 1,24 | -12,10 |
| 110 | 0,94 | -14,56 |
| 120 | 0,64 | -17,90 |
| 130 | 0,43 | -21,36 |
| 140 | 0,26 | -25,75 |
| 150 | 0,18 | -29,00 |
| 160 | 0,13 | -31,77 |
Проверим, действие цифрового фильтра на сигнал. Результаты измерения АЧХ после цифрового фильтра приведены в таблице 5.3.
Таблица 5.2 – Измеренное АЧХ устройства без цифрового фильтра
![]() |
![]() |
![]() |
| 0 | 5,00 | 0,00 |
| 10 | 5,00 | 0,00 |
| 20 | 5,00 | 0,00 |
| 30 | 5,00 | 0,00 |
| 40 | 5,00 | 0,00 |
| 50 | 5,00 | 0,00 |
| 60 | 4,80 | -0,36 |
| 70 | 4,23 | -1,45 |
| 80 | 3,67 | -2,69 |
| 90 | 2,94 | -4,62 |
| 100 | 2,26 | -6,91 |
| 110 | 1,61 | -9,83 |
| 120 | 0,73 | -16,67 |
| 130 | 0,23 | -26,60 |
| 140 | 0,08 | -35,85 |
| 150 | 0,00 | -60,32 |
| 160 | 0,00 | -71,66 |
Для сравнения действия цифрового фильтра, приведем графики АЧХ устройства без и с цифровым фильтром. Как видно из рисунка 6.6, цифровой фильтр выравнивает амплитудную неравномерность. Полоса пропускания цифрового осциллографа-приставки на уровне -3 дБ, равна от 0 до 80 кГц.

Рисунок 5.6 – АЧХ устройства без цифрового фильтр (штрих.) и с цифровым фильтром (сплош.)
Нелинейные искажения измерительного тракта можно оценить по первой гармонике. Уровень первой гармоники при номинальном входном напряжении Uвх = 5В на частоте 10 кГц равен -65дБ.

Рисунок 5.7 — Уровень первой гармоники при номинальном входном напряжении 5В
На цифровой осциллограф-приставку подавались тестовые испытательные сигналы трех видов: синусоидального, треугольного и прямоугольного частотой 10 кГц. Результаты измерений приведены на рисунках 5.8, 5.9 и 5.10 соответственно синусоидального, треугольного и прямоугольного сигналов.
Рисунок 5.8 — Измерение синусоидального сигнала цифровым осциллографом-приставкой
Рисунок 5.9 — Измерение треугольного сигнала цифровым осциллографом-приставкой

Рисунок 5.10 — Измерение прямоугольного сигнала цифровым осциллографом-приставкой
5.4 Выводы
Проанализированы основные источники погрешности измерений, определено из чего состоит ошибка измерения цифровым осциллографом-приставкой. Она состоит в из случайной и систематической ошибок. Случайная ошибка АЦП менее 0,1 %, а систематическая корректируется программной калибровкой в LabVIEW.
На рисунке 5.6 показано, насколько цифровой фильтр корректирует АЧХ аналогового фильтра.
Экспериментальные исследования тестовыми сигналами показывают, что уровень первой гармоники при номинальном входном напряжении Uвх = 5В на частоте 10 кГц равен -65дБ, что очень хорошо.
Значение "LSB/Unit" и "Unit/LSB"
В данный момент я играю с акселерометром LSM303DLHC / магнитометром / термометром.
Все работает довольно хорошо, но я не знаю, как интерпретировать выходные значения. Лист данных (стр. 9) говорит что-то вроде «1 мг /LSB» (нет, это не миллиграмм:D) о чувствительности к линейному ускорению в моей конфигурации. Что, черт возьми, это должно значить? То же самое касается изменения выходного сигнала датчика температуры (8 LSB/°C) и настройки магнитного усиления (1100 LSB/ гаусс), только наоборот.
Например, что делать с выходом акселерометра: 16384? Это мое измеренное гравитационное ускорение.
4 ответа
Теперь у меня есть трюк. В этой MEMS есть несколько вещей, которые вы должны знать, но которые не упомянуты в таблице:
- Выходной регистр акселерометра составляет всего 12 бит, а не 16 бит, поэтому вам нужно сдвинуть значение вправо на 4 и умножить его на 0,001 G. Кроме того, он имеет младший порядок.
- Выходной регистр магнитометра 16 бит, но с прямым порядком байтов. Кроме того, векторный порядок (X|Z|Y) не (X|Y|Z). Чтобы вычислить правильное значение, вам нужно разделить X и Y на 980 гауссов, тогда как для Z это 1100 гауссов.
- Датчик температуры работает, но не откалиброван. Таким образом, вы можете использовать его для измерения изменения температуры, но без абсолютных температур. Это также всего 12 бит, но с прямым порядком байтов, и вы должны разделить выход на 8 C⁻¹.
С этой информацией можно использовать LSM303DLHC. Но кто, черт возьми, это изобрел? «Давайте создадим новый акселерометр, магнитометр и термометр в одной упаковке и запутаем пользователя, смешав длину слова и порядковый номер, не упоминая об этом в таблице».
LSB/unit или Unit/LSB — это коэффициент (называемый чувствительностью), с которым вы должны умножить необработанные данные датчика. Например, датчик A имеет регистры X,Y и Z, значения, приходящие в каждый из регистров, необходимо разделить / умножить на коэффициент LSB/unit или Unit/LSB. Это связано с тем, что в техническом паспорте указывается конкретная шкала полной чувствительности (LSB/unit или Unit/LSB)
x lsb означает — 1 единица
1 lsb означает — 1/ х единица
значение lsb(значение в регистре) = (1/x)*(значение в регистре) — здесь применяется унитарный метод.
аналогично для Unit/LSB вы должны умножить чувствительность.
Вы можете построить акселерометр, магнитометр или датчик температуры или гирометр в одном модуле, но что, если клиент / пользователь хочет только один датчик?
Таблица данных не совсем ясна в отношении интерпретации регистров ускорения. Решение Genesis Rock предполагает, что оно работает в 12 битах. (Другое решение состоит в том, чтобы предположить, что усиление составляет 16 мг /LSB вместо 1 мг /LSB, но, поскольку последние 4 бита ускорений, кажется, всегда равны нулю, первое решение имеет больше смысла).
Но как по температуре, так и по ускорению, если принять во внимание только 12 самых значимых бит. Последние два бита все еще также всегда равны нулю, поэтому эффективное разрешение будет 10-битным, что сбивает с толку.
Я также не могу разобраться в показаниях температуры, если в техническом описании не указано неизвестное смещение.
Я надеюсь, что другие могут подтвердить, что они получают те же результаты.
Простой и смущающий факт заключается в том, что ни один из ответов не достиг цели вопроса.
Результат скрыт в другом параметре, указанном в спецификации: чувствительность. например, чувствительность FXAS21002C для чувствительности 2000 дпс составляет 62,5 мдс / мс (=0,0626 дпс / мсб). смещение нуля составляет 25 LSB, таким образом, значение в единицах дпс составляет 0,0625 * 25 = 1,5625 дпс
тот же IMU имеет другую чувствительность для 250 дпс, которая составляет 7,825 мд / с /LSB (=0,007825 дпс /LSB), и поскольку смещение также составляет 25 LSB, то при вычислении будет выставлено реальное значение 0,0078125 * 25 = 0,1953 дпс
Что такое АЦП
АПЦ — это Аналого-Цифровой Преобразователь. По английски 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 градуса.
Это уже вообще ништяк.
Но! Не забывайте, что здесь мы рассматриваем только погрешность АЦП. Но и у самого датчика тоже есть погрешность, которую также надо учитывать.
Но всё это уже из области электроники и метрологии, поэтому данную статью я здесь и закончу.
А в конце на всякий случай приведу формулу обратного преобразования температуры в напряжение:
Значение «LSB / Unit» и » Unit/LSB»
на данный момент я играю с LSM303DLHC акселерометр/магнитометр/термометр.
все работает достаточно хорошо, но я не знаю как интерпретировать выходные значения. В таблице данных (Страница 9) говорится что-то вроде «1 mg/LSB» (нет, это не миллиграмм :D) о чувствительности к линейному ускорению в моем конфигурация. Что, черт возьми, это значит? То же самое с изменением выхода датчика температуры (8 LSB/°C) и магнитной настройкой усиления (1100 LSB/gauss), только наоборот.
например, что делать с этим выходом акселерометра: 16384? Это мое измеренное гравитационное ускорение.
4 ответов
LSB / unit или Unit / LSB-это коэффициент(называемый чувствительностью), с помощью которого вы должны умножить необработанные данные датчика. Скажем, датчик A имеет регистры X,Y и Z , значения, поступающие в каждый из регистров, должны быть разделены/умножены на коэффициент LSB/unit или Unit/LSB. Это потому, что в листе данных говорится, что @ конкретный полномасштабный вы будете иметь такую большую чувствительность (LSB/unit или Unit/LSB)
X lsb означает — 1 единица
1 lsb означает-1 / x юнит
значение lsb (значение в Регистре) = (1 / x)*(значение в регистре) — применить унитарные способ здесь.
аналогично для Unit / LSB вы должны умножить чувствительность.
вы можете построить акселерометр, магнитометр или датчик температуры или можете быть Гирометром в одном модуле, но что делать, если клиент/пользователь хочет только один датчик?
теперь я понял трюк. Есть несколько вещей на этом MEMS вы должны знать, но которые не упоминаются в техническом описании:
- выходной регистр акселерометра составляет всего 12 бит, а не 16 бит, поэтому вам нужно сдвинуть значение вправо на 4 и умножить его на 0,001 G. Кроме того, это мало-эндианский.
- регистр выхода магнитометра 16 битов, но больш-endian. Кроме того, порядок векторов (X|Z|Y) Не (X|Y / Z). Чтобы вычислить правильное значение, вы нужно разделить X и Y на 980 Гаусс-1, в то время как это 1100 Гаусс⁻1 для Z.
- датчик температуры работает, но не откалиброван. Таким образом, вы можете использовать его для измерения изменения температуры, но без абсолютных температур. Это также всего лишь 12 бит, но big-endian, и вы должны разделить выход на 8 C⁻1.
с этой информацией можно использовать LSM303DLHC. Но кто придумал это? «Давайте построим новый акселерометр, магнитометр и термометр в одном пакете и привинчьте потребителя вверх путем смешивать длину и endianness слова вверх без упоминать его в datasheet.»
техническое описание окончательно неясно в отношении интерпретации регистров ускорения. Решение Genesis Rock предполагает, что это 12-бит, который работает. (Другое решение состоит в том, чтобы предположить, что коэффициент усиления составляет 16 мг/ЛСБ вместо 1 мг/ЛСБ, но поскольку последние 4 бита ускорений кажутся всегда нулями, первое решение имеет больше смысла).
но как для температуры, так и для ускорения, если учитывать только 12 наиболее значимых битов. Последние два бита по-прежнему также всегда ноль, поэтому эффективное разрешение будет 10-битным, что сбивает с толку.
Я также не могу понять значение температуры, если в таблице данных не указано неизвестное смещение.
Я надеюсь, что другие могут подтвердить, что они получают те же результаты.
относительно выхода 12 битов акселерометра: флаг высоко-разрешения на Регистре управления 4. Он выключен по умолчанию, и нет никакой информации о том, что означает высокое разрешение. Я предполагаю, что он может включить 16-битный выход. Также на контроле регистр 4 флаг установить порядок байтов на выходе акселерометра. По умолчанию это little endian. Спецификация довольно слабая в целом.



