Методика калибровки датчиков температуры серии кдт. Порядок калибровка нуля и чувствительности датчиков кип

Согласовано Утверждаю

Руководитель ГЦИ СИ Директор

Зам. Директора ФГУ ВЦСМ

__________ __________

Методика калибровки

датчиков температуры серии КДТ.

Разработал

Гл. технолог ООО«КОНТЭЛ»

Методика калибровки датчиков температуры

КДТ-50, КДТ-200 и КДТ-500.

1. Перед началом калибровки проверить соответствие расположенных на плате компонентов по сборочному чертежу: КДТ50.02.01СБ – для датчиков КДТ-50; КДТ200.02.01СБ – для датчиков КДТ-200; КДТ500.02.01СБ – для датчиков КДТ-500.

2.Калибровка электронного блока датчиков КДТ-50 и КДТ-200.

2.1.Подключить к плате источник питания и эквивалент термометра – сопротивления ТСМ-100 согласно рис.1.

https://pandia.ru/text/80/231/images/image002_110.gif" width="534" height="228">

-Эквивиалент Pt 100 - специальный магазин сопротивлений, имитирующий термометр-сопротивление типа Pt-100;

-V - Цифровой вольтметр типа В7-40;

-R н – катушка электрического сопротивления Р331;

-ИП – источник постоянного тока стабилизированный типа Б5-45.

3.2.Последовательность операций калибровки.

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

3.2.1. Установить на вольтметре режим «U=» и предел измерения, соответствующий значению «три знака после запятой».

3.2.2. Установить на эквиваленте Pt-100 нижнее значение измеряемой температуры: «00С».

3.2.3. Подать напряжение питания.

3.2.4.Показания вольтметра должны соответствовать 4 mA +/-0,25% (показания вольтметра 0,400).

3.3.5.Установить на эквиваленте Pt-100 верхнее значение измеряемой температуры: «+5000С».

3.3.6. Показания вольтметра должны соответствовать 20mA +/-0,25% (показания вольтметра 20,00).

3.3.7.Проверить линейность по промежуточным точкам.

3.3.9.Соответствие измеряемой температуры (эквивалентного значения сопротивления) и выходного тока приведены в Приложении 2.

Примечание. Схема датчика температуры КДТ-500 рассчитана на работу совместно с Pt-100 с W100=1.3910. Применение термометра-сопротивления с W100=1.3850 приводит к увеличению основной погрешности до 0,8% в середине диапазона.

4.После регулировки платы датчиков покрываются лаком. Рекомендуемое время сушки – 2 суток.

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

Исполнитель________

Приложение 1

Соответствие температуры, эквивалентного сопротивления и выходного тока датчиков температуры КДТ-50.

Соответствие температуры, эквивалентного сопротивления и выходного тока датчиков температуры КДТ-200.

При отсутствии эквивалента ТСМ-100 следует применить магазин сопротивлений МСР-63 или аналогичный.

Приложение 2

Соответствие температуры, эквивалентного сопротивления и выходного тока датчиков температуры КДТ-500.

(для W100=1.3850)

При отсутствии эквивалента Pt-100 следует применить магазин сопротивлений МСР-63 или аналогичный.

Производится еслипроизводственные на датчик превышают требуемую точность измерения.Например, требуется измерить температуру с точностью ±0.5°С датчиком, посправочным данным обладающим ±1?С. Это можно сделать только послепроведения калибровки этого конкретного датчика, т.е. после нахождения егоиндивидуальной .

В некоторых случаях одна из констант может быть заранее определена с достаточнойстепенью точности, тогда калибровка проводится в одной точке. Например длядатчика температуры с р-n переходом наклон передаточной функции b дляопределенного типа полупроводников обычно является хорошо воспроизводимойвеличиной.

Длянелинейных функций калибровку требуется проводить более чем в двух точках.Количество необходимых калибровок диктуется видом математического выражения.Если передаточная функция моделируется полиноминальной зависимостью, числокалибровочных точек выбирается в зависимости от требуемой точности. Поскольку,как правило, процесс калибровки занимает довольно много времени, для изготовления датчиков на производстве количество калибровочных точекзадается минимальным.

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

Следовательноточность последующих измерений напрямую связана с точностью проведения калибровкии калибровочных эталонов должна включаться в полную ошибку измерений.

Ошибка калибровки - это погрешность, допущеннаяпроизводителем при проведениикалибровки датчика на заводе. Эта погрешность является и добавляется ко всем реальнымпередаточным функциям.

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

В зависимости от типа прибора и его функциональных возможностей регулировка показаний осуществляется либо с помощью механических регуляторов – подстроечных или переменных резисторов, либо с помощью кнопок, либо с помощью различных проводных (HART, RS232, RS485) или беспроводных (IR, Bluetooth) интерфейсов.

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

1. Калибровка нуля датчика

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

Допустим, имеем датчик избыточного давления с пределами измерения от 0 до 6 Бар, у которого была выполнена калибровка чувствительности в точке шкалы 6 Бар, по результатам которой при подаче давления в 6 Бар датчик показывает давление 5,998 Бар. После этого было решено проверить нулевую точку датчика, и оказалось, что при нулевом давлении датчик вместо нуля показывает 0,15 Бар. Нулевая точка была откалибрована и на нуле датчик стал показывать ноль, но при подаче тестового давления в 6 Бар он вместо прежних 5,998 Бар стал показывать 5,848 Бар. Это произошло из-за того, что при калибровке нуля характеристика датчика смещается вверх или вниз (в зависимости от того, завышает или занижает датчик) по всей своей длине. Как результат, нам нужно снова выполнять калибровку чувствительности датчика.

Поэтому в 99,9% случаев сначала выполняется калибровка нуля, а уже потом настраивается чувствительность датчика если иной порядок калибровки не предусмотрен производителем прибора.

2. Калибровка чувствительности

Калибровка чувствительности (калибровка шкалы) выполняется после калибровки нуля. При калибровке чувствительности корректировка показаний датчика осуществляется наклоном характеристики датчика относительно нулевой точки. Как правило, корректировка чувствительности не влияет на положение нулевой точки датчика (не приводит к «уходу нуля»). Но в некоторых старых аналоговых приборах с механическими регуляторами может потребоваться подстройка нуля после коррекции чувствительности на величину более 10-20%. В этом случае нужно выполнить настройку нуля и чувствительности последовательно два и более раза, постепенно приближаясь к нужному результату.

Как правило, калибровку чувствительности рекомендуют выполнять подавая на датчик измеряемый параметр величиной, равной 40-100% шкалы измерения датчика. То есть, если, например, наш датчик давления имеет шкалу от 0 до 6 Бар, то калибровку чувствительности лучше выполнять при подаче тестового давления от 2,4 до 6 Бар. При калибровке чувствительности более низкими значениями можно получить увеличенную погрешность на конце диапазона измерения.

К сожалению, реальные характеристики датчиков КИП часто далеки от линейных (как на первых двух рисунках).

Для того чтобы как то «вписать» показания датчика в узкие рамки нормированных метрологических характеристик (погрешностей) производители идут на различные ухищрения, например, добавляя дополнительные точки для калибровки чувствительности. Чаще всего это одна основная и одна дополнительная точка калибровки чувствительности, хотя в некоторых приборах их может быть больше (например, газоанализаторах Хоббит-Т их может быть максимум пять).

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

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

Например, датчик на начальном участке характеристики показывает меньше чем нужно при том, что в нулевой точке и на конце диапазона погрешность измерения минимальна (как в примере на рисунке). В этом случае можно искусственно сдвинуть его точку шкалы вверх, «вписав» выпавший участок характеристики в диапазон допустимых значений.

Допустим датчик давления со шкалой от 0 до 6 Бар и относительной погрешностью 5% не укладывается в середине шкалы (занижает), хотя при подаче 6 Бар показывает 6 Бар ровно. В этом случае, мы, оставляя тестовое давление неизменным (например, мы калибровали его давлением 5 Бар), меняем в настройках калибровки точки шкалы значение давления с 5 Бар, до 5,25 Бар (5+(5*5%)/100%). То есть мы как бы говорим датчику, что будем калибровать его давлением 5,25 Бар, а сами при этом подаем давление всего 5 Бар. Естественно что из-за того, что реальное давление ниже чем то, что мы задали в настройках датчика его характеристика, наклоняясь (поворачиваясь относительно нулевой точки против часовой стрелки), приподнимется. И есть большая вероятность, что «выпавший» начальный участок характеристики уложится в диапазон допустимых значений с учетом заявленных производителем погрешностей.

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

  • Tutorial

Для некоторых датчиков ускорения требуется дополнительная калибровка нуля после монтажа на плату. Когда я увидел несколько исходников с калибровкой датчиков ускорения, где составляющая G учитывалась просто путём вычитания из оси Z величины = 9,8 м/с2 - появилась идея написать данную заметку.

Структура публикации

  • Проблема
  • Как правильно получить точки?
  • Как вычислить центр шара?
  • Об ошибках при замерах

Проблема

В чём проблема - МЕМС-датчики после монтажа в плату претерпевают незначительные деформации, которые влияют на:
  • положение нуля;
  • масштабирование измеряемых величин;
  • перпендикулярность осей к друг-другу.
И если масштабирование и перпендикулярность нарушаются не так заметно, то положение нуля сбивается ощутимо. Например, если перевести типичную величину смещения нуля для акселерометра датчика MPU9250 в м/с 2 , то это получается в районе 0,2 м/с 2 . Т. е. датчик неподвижен, но при этом показывает ускорение, а через 5 секунд мы получаем скорость в 1 м/с. С одной стороны, все данные датчиков всегда пропускают через какой-либо фильтр (например такой). Но с другой стороны зачем фильтру постоянно компенсировать это смещение? Ведь датчик будет показывать движение там, где его нет. Это снижает точность результата. А всего то нужно один раз найти величину смещения и потом во время работы датчика вычитать эту величину из его показаний.

Простейшее решение для поиска величины смещения нуля, которое сразу приходит в голову - это создать условия, при которых датчик точно должен показывать ноль. Значение, регистрируемое на датчике - это и есть величина смещения нуля! Так? Но нет - на акселерометр постоянно действует сила тяжести. Чтобы её избежать, понадобится невесомость (подбрасывание не подойдёт). На компас действует магнитное поле Земли, а на гироскоп её вращение. Так что, если у вас нет персонального звездолёта, то придётся что-то придумать.

Второе решение, которое сразу приходит в голову - это поставить датчик (а точнее его оси) в такое положение, при котором мы точно будем знать, что должен показывать датчик. Разница между тем, что датчик показывает и тем, что он должен показывать - и будет смещение нуля! Так? Например, мы знаем, что если акселерометр поставить в уровень с горизонтом, то по идее, вектор ускорения свободного падения будет направлен точно вдоль оси Z датчика. Величину вектора ускорения мы знаем.

Однако есть проблема. Заключается она в том, что мы не можем точно установить оси датчика в уровень с горизонтом. Дело в том, что поверхность на которую мы будем опираться не параллельна печатной плате. Та в свою очередь не параллельна площадке на которой расположен датчик. Сам датчик не ровно стоит на своей площадке и оси внутри датчика не параллельны корпусу датчика. Погрешность в установки оси относительно горизонта на 1 градус, даёт проекцию, сопоставимую по размерам с величиной самого смещения нуля, которое мы хотим найти. В случае магнитометра, мы вдобавок не знаем, куда направлен вектор магнитного поля. В теории - на север. Но на практике, само магнитное поле Земли неоднородно по напряжённости и направлению. Плюс ближайшие металлические предметы вносят свои коррективы.

Постановка задачи и способ решения

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

Способ решения. В данной статье предлагается определять вектор смещения следующим образом. Мы берём и крутим датчик по всякому и регистрируем показания датчика. После N измерений, величины взятые с датчика и расположенные на графике будут представлять собой шар, радиус которого - это величина внешнего воздействия, а центр - это как раз искомая величина смещения нуля.

Как правильно получить точки?

Для облегчения самой процедуры измерения, можно написать простенькую программу. Она должна фиксировать показание датчиков, когда прибор неподвижен. Нам останется только поворачивать прибор в нужные положения. Для того, чтобы определить неподвижное состояние, подходит и не калиброванный акселерометр - просто берём разницу между текущим значением и предыдущим. И если больше уровня шума, то значит фиксируем движение. У меня порог получается в районе 0,07G. Если держите руками, будет получаться больше этого значения. Я использовал для фиксации положения малярный скотч. Если всё-равно не получается - проверьте, нет ли рядом холодильника, вентилятора или чего-то подобного.

Как это может быть в коде

// здесь у вас глобальные по модулю переменные static TSumSensorsData g_sens_data; static int32_t g_sens_data_sum_cnt; static uint8_t g_sens_data_num; // здесь какое-то прерывание, при получении данных с датчиков IS_INTERRUPT void on_dma_raw_ready_calibrate_step1() { SensorRawBuffer *raw = sensor_get_raw_buffer(); g_sens_data.acc_x += swap_i16(raw->accell_x_unswap); g_sens_data.acc_y += swap_i16(raw->accell_y_unswap); g_sens_data.acc_z += swap_i16(raw->accell_z_unswap); g_sens_data.gyro_x += swap_i16(raw->gyro_x_unswap); g_sens_data.gyro_y += swap_i16(raw->gyro_y_unswap); g_sens_data.gyro_z += swap_i16(raw->gyro_z_unswap); g_sens_data.mag_x += raw->mag_x_raw * g_mag_calibrate.kx; g_sens_data.mag_y += raw->mag_y_raw * g_mag_calibrate.ky; g_sens_data.mag_z += raw->mag_z_raw * g_mag_calibrate.kz; g_sens_data_sum_cnt++; } //это вызывается из main void sensors_calibrate_program(FlashROM *flash_ptr) { double calibrate_result_error; TVector16 calibrate_result; int32_t radius; uint8_t raw_is_deleted; TVector16 raw; . . . // определяю неподвижность g_sens_data_sum_cnt = 0; g_sens_data_num = 0; int16_t prev_avg_x = 0; int16_t prev_avg_y = 0; int16_t prev_avg_z = 0; int8_t low_motion_cnt = 0; while(low_motion_cnt < ACCEL_NO_MOTION_DETECT_COUNT) { if (g_sens_data_sum_cnt >= ACCEL_NO_MOTION_DETECT_SAMPLES) { uint8_t new_data_num = (g_sens_data_num + 1) & 1; g_sens_data.acc_x = 0; g_sens_data.acc_y = 0; g_sens_data.acc_z = 0; g_sens_data.gyro_x = 0; g_sens_data.gyro_y = 0; g_sens_data.gyro_z = 0; g_sens_data.mag_x = 0; g_sens_data.mag_y = 0; g_sens_data.mag_z = 0; g_sens_data_sum_cnt = 0; uint8_t old_data_num = g_sens_data_num; g_sens_data_num = new_data_num; // вот эта операция не может быть выполнена во время работы прерывания // (так по-простому можно разделить два потока, не имея операционки) // здесь всё очень просто - нахожу среднюю int16_t avg_x = g_sens_data.acc_x / g_sens_data_sum_cnt; int16_t avg_y = g_sens_data.acc_y / g_sens_data_sum_cnt; int16_t avg_z = g_sens_data.acc_z / g_sens_data_sum_cnt; // собственно получаю разницу с предыдущим значением int16_t dx = avg_x - prev_avg_x; int16_t dy = avg_y - prev_avg_y; int16_t dz = avg_z - prev_avg_z; prev_avg_x = avg_x; prev_avg_y = avg_y; prev_avg_z = avg_z; // если акселерометр регистрировал низкую активность if ((abs_i16(dx) <= ACCEL_NO_MOTION_DETECT_AVG_VALUE)&&(abs_i16(dy) <= ACCEL_NO_MOTION_DETECT_AVG_VALUE)&&(abs_i16(dz) <= ACCEL_NO_MOTION_DETECT_AVG_VALUE)) { // тогда мы регистрируем точку raw.x = avg_x; raw.y = avg_y; raw.z = avg_z; raw.x = g_sens_data.gyro_x / g_sens_data_sum_cnt; raw.y = g_sens_data.gyro_y / g_sens_data_sum_cnt; raw.z = g_sens_data.gyro_z / g_sens_data_sum_cnt; raw.x = g_sens_data.mag_x / g_sens_data_sum_cnt; raw.y = g_sens_data.mag_y / g_sens_data_sum_cnt; raw.z = g_sens_data.mag_z / g_sens_data_sum_cnt; low_motion_cnt++; // даём звуковой сигнал beep(); // и даём фору себе 2 секунды отклеить скотч, пока датчик в руках - программа регистрирует движение // прилепили - получили точку // поэтому всё получится быстро и весело delay_ms(2000); } } } . . . }


Чтобы получить шар на графике, нужно крутить устройство с датчиком по определённой схеме. Для этих целей хорошо подойдёт глобус, так как имеет разметку. Можно подумать, что лепить нужно по всему глобусу. Но это не так.

Пример неправильного результата



Нужно датчик лепить не по всей поверхности глобуса, а на один меридиан. Допустим берём семь точек на меридиане (первая и последняя на северном и южном полюсе). В каждой точке меридиана прикладываем ваше устройство к глобусу и ещё крутим устройство вокруг своей оси с определённым шагом, например 30-35 градусов. Получается если вокруг своей оси поворачивать 12 раз, то в 7 точках всего получается 84 замера.

Прелесть метода в том, что всё можно сделать “на коленке”. Точность позиционирования особой роли не играет, просто нужно крутить по схеме, чтобы вектор внешнего воздействия на графике нарисовал шар. Правильный выглядит примерно так - см. рис (отметкой обозначен центр).

Как вычислить центр шара?

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

Уравнение шара выглядит так: (X - A) 2 + (Y - B) 2 + (Z - C) 2 = R 2 , где X, Y, Z - координаты точки, лежащей на шаре. A, B, C - это координаты центра на осях x, y и z соответственно. R - радиус шара. Можно построить систему уравнений и каким-то методом постараться попроще решить эту систему. А можно просто перебором найти центр (это типа метод последовательных приближений). Смысл метода прост: величина ошибки (X - A) 2 + (Y - B) 2 + (Z - C) 2 - R 2 должна стремиться к нулю. А значит сумма этих величин для всех точек сферы также должна стремиться к нулю. Зная это, мы можем подобрать такие значения A, B и C, для которых величина ошибки для всех точек будет минимальной. Зона перебора ограничивается габаритами шара (условный куб). То есть мы последовательно должны поставить центр шара во все точки куба и посчитать ошибку. Там где минимальная ошибка - там и центр.

В качестве R нужно брать теоретическую величину вектора внешнего воздействия - для акселерометра, это ускорение свободного падения, для компаса - это средняя величина магнитного поля Земли, для гироскопа - скорость вращения Земли. Разумеется в формуле должны быть величины одной размерности (условные единицы датчика или м/с 2 , градус/с и т. д.). Удобней пересчитывать в условные единицы соответствующего датчика.

Условные единицы датчика = Величина * Разрешение датика / (Максимальный предел измерения - Минимальный предел измерения)
Например: Сколько условных единиц должен показать 16-битный датчик ускорения с пределом измерения ±2g при воздействии на датчик только ускорения свободного падения?:
9,8 м/с 2 * 65536 / (2g + 2g) = 9,8 м/с 2 * 65536 / (2 * 9,8 м/с 2 + 2 * 9,8 м/с 2) = 16384 у. е. датчика.


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

Как ускорить поиск центра шара?

Нужно искать центр не во всём кубе (габариты шара), а по линии, начало у которой произвольное, каждая следующая точка ближе к действительному центру и окончание - в центре. Предположим, что мы начинаем с точки (0; 0; 0)… Мы всегда движемся с постоянным шагом. Поэтому если представить набор кубиков 3х3х3, где каждая грань равна величине шага и также представить, что текущее положение - это средний кубик, то у нас есть 9 + 8 + 9 вариантов, куда поставить следующую точку. Мы просто должны находясь в каждой точке, посчитать в какой из соседних 26 точках ошибка будет меньше. Если окажется, что ошибка меньше в текущей точке, а не в одной из соседних, то значит она стоит в центре и перебор окончен.

Как это может быть в коде

Public Function get_err(A As Double, B As Double, C As Double, R As Double) As Double Dim x, y, z As Double Dim sigma As Double Dim row_n As Long get_err = 0 For row_n = 1 To 15 x = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 1).Value y = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 2).Value z = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 3).Value get_err = get_err + abs((A - x) ^ 2 + (B - y) ^ 2 + (C - z) ^ 2 - R ^ 2) Next End Function . . . A = 0 B = 0 C = 0 Do While True min_sigma = 0 For ai = -1 To 1 For bi = -1 To 1 For ci = -1 To 1 sigma = get_err(A + ai, B + bi, C + ci, 16384) If sigma < min_sigma Or min_sigma = 0 Then ai_min = ai bi_min = bi ci_min = ci min_sigma = sigma End If Next Next Next If ai_min = 0 And bi_min = 0 And ci_min = 0 Then Exit Do End If A = A + ai_min B = B + bi_min C = C + ci_min Loop . . .

Как ещё ускорить поиск центра шара?

Нужно искать с переменным шагом. Сначала ищем центр крупным шагом. Нашли центр, уменьшаем шаг и от него начинаем искать дальше. И так далее, пока не получите результат необходимой точности.

Как это может быть в коде

Public Function get_err(A As Double, B As Double, C As Double, R As Double) As Double Dim x, y, z As Double Dim sigma As Double Dim row_n As Long get_err = 0 For row_n = 1 To 15 x = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 1).Value y = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 2).Value z = Application.ActiveWorkbook.ActiveSheet.Cells(row_n, 3).Value get_err = get_err + abs((A - x) ^ 2 + (B - y) ^ 2 + (C - z) ^ 2 - R ^ 2) Next End Function . . . A = 0 B = 0 C = 0 step = 1000 Do While True min_sigma = 0 For ai = -1 To 1 For bi = -1 To 1 For ci = -1 To 1 sigma = get_err(A + ai * step, B + bi * step, C + ci * step, 16384) If sigma < min_sigma Or min_sigma = 0 Then ai_min = ai bi_min = bi ci_min = ci min_sigma = sigma End If Next Next Next If ai_min = 0 And bi_min = 0 And ci_min = 0 Then step = step / 10 If step < 0.01 Then Exit Do End If Else A = A + ai_min * step B = B + bi_min * step C = C + ci_min * step End If Loop . . .

Об ошибках при замерах

Во время замеров могут быть ситуации, когда по каким-то причинам результат замера может оказаться сильно дальше от поверхности шара. Или это может быть множество точек. Или вообще в результате замеров может получиться не шар, а “яйцо” или “дирижабль”. В этом случае, разумеется, нужно повторить все замеры, выявив возможные причины ошибок. Например, для магнитометра это может быть болт или гвоздь в столе и прямо над ним вы проводите замеры. И чем ниже по мередиану опускать датчик, тем сильнее металл будет влиять на результат. Поэтому нужно определить порог допустимой величины ошибки. Чтобы не переделывать замеры из-за нескольких явно ошибочных точек, можно применить фильтр. Принцип действия фильтра очень простой - вычислив первый раз центр, отсортируйте точки по уровню ошибки в каждой из них. Часть точек с наибольшей ошибкой можно просто выбросить (например 10%). Затем нужно повторить поиск центра.

Итог

У метода довольно хорошая точность. Метод позволяет обходиться простыми подручными средствами (мяч, банка и т. п.). Достаточно быстро работает. Простой код. Во многих датчиках есть специальные регистры, куда можно записать найденное значение, и датчик будет сам на лету его вычитать. Такие регистры обычно имеют префикс «TRIM», как в MPU9260, или «OFFSET», как в LSM303. А вот всем известный LIS302DL таких регистров не имеет.

Не забывайте ставить плюсик, если понравилось. Пишите в комментариях свои способы калибровки датчиков.

Теги:

  • инерциальная навигация
  • калибровка
  • центр сферы
Добавить метки

Декабрь 2012

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

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

Эффективность датчиков

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

Датчики давления

Точность датчиков давления, составляет, как правило, от 0,25% диапазона измеряемого давления. Для сценариев применения с менее строгими требованиями, точность может быть примерно в районе 1,25% диапазона.

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

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

Датчики температуры

Типичный вид промышленных датчиков температуры, термометр сопротивления (ТС), как правило, не достигает точности более 0,05 - 0,12°C при 300°C, при этом, обычно, требуется обеспечить точность более чем 0,1°С при 400°C. Процесс установки термометров сопротивления также может приводить к дополнительным ошибкам в точности. Другой распространенный вид датчика температуры, термопара, как правило, не может обеспечить точность лучше, чем 0,5°C при температурах до 400°C. Чем выше температура, тем меньшую точность термопары обычно можно достичь.

Калибровка термометров сопротивления

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

Калибровка термопары

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

Датчики. Как оценить время отклика?

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

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

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

Проверка без отрыва от производства

Существуют некоторые методы, которые часто упоминаются как тестирование на месте или он-лайн тестирование. Они были разработаны для проверки калибровки и времени отклика датчиков, уже используемых в каком-либо процессе. Для датчиков температуры, тест LCSR (Loop Current Step Response ) будет проверять динамические характеристики наиболее распространенных датчиков температуры - термопар и термометров сопротивления - там, где они установлены в операционном процессе. Метод LCSR показывает фактическое время отклика ТС (термометра сопротивления) «в процессе эксплуатации».

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

Методика анализа шума позволяет измерять время отклика датчиков давления и измерительных линий в одном тесте. Как и в методе LCSR, техника анализа шума не мешает эксплуатации, использует существующие выходы датчиков для определения их времени отклика, и может быть выполнена удаленно для датчиков, которые установлены на производстве. Методика анализа шума основана на принципе контроля нормального выхода переменного тока датчиков давления с помощью быстрой системы сбора данных (частота от 1 кГц). Переменный ток на выходе датчика, который называется «шум», производится случайным колебаниями в процессе, связанными с турбулентностью, вибрацией и другими естественными явлениями. Так как эти посторонние шумы происходят на более высоких частотах, чем динамический отклик датчиков давления, они могут быть выделены из сигнала с помощью низкочастотной фильтрации. Как только сигнал переменного тока или шум отделяется от сигнала постоянного тока с использованием оборудования обработки сигнала, сигнал переменного тока усиливается, передается через сглаживающую фильтрацию, оцифровывается и хранится для последующего анализа. Этот анализ дает динамическое время реакции датчика давления и измерительных линий.

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

Срок службы датчиков

Когда следует заменять датчики? Ответ прост: заменять датчики следует по истечению срока службы, установленного производителем на указанный продукт, например 20 лет. Однако, это может быть очень дорого и нецелесообразно.

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

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

Что еще почитать