Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

термопара и L780 на максимальном усилении

Вы не вошли.

 Поиск | Регистрация | Вход 

Алексей
16.03.2002 03:50:09
#1

Гость

термопара и L780 на максимальном усилении

Здравствуйте!

Мы используем плату L-780. Одно из ее назначений в нашей системе - измерение сигнала с термопары.
ЭДС термопары 7 мВ, которое требуется измерять с точностью не хуже 10 мкВ. Время измерения роли не играет. Выходное сопротивление термопары 10 Ом.

Была выбрана L780 как обеспечивающая погрешность 10 мкВ в режиме "усиление 64 раза".
Термопара включается в дифференциальном режиме, заземляясь вблизи источника сигнала,
а ПО с помощью Вашей стандартной библиотеки под DOS усредняет ~100 отсчетов ADC_SAMPLE_PLX.

Оказалось, что входной ток платы (по-видимому, на уровне 5..20 мкА в зависимости от режима) вносит существенное искажение в результаты измерения,
и, что самое неприятное, - в режиме усиления 64 раза возвращаемое значение на ~10% меньше того, которое показывается вольтметром, и которое показывается на других усилениях.

В связи с этим возникают вопросы:

1. каков типовой входной ток платы?
2. является ли нормальной погрешность 10% (в режиме без коррекции ENABLE_CORRECTION_PLX) для усиления 10%? Надо ли искать причину в схемотехнике наших цепей (термопары)?
3. как программируются корректировочные коэффициенты в ППЗУ производителем?
4. является ли выбранный нами режим использования платы правильным?

Также возникает и такой, довольно странный, вопрос:
5. могут ли как-то адреса, по которым загружается память IBM PC, влиять на работу платы?
(экспериментально было наблюдено воспроизводимое изменение показаний на 50 мкВ)

Спасибо!

PS. Мне кажется, что Вашим форумом было бы пользоваться немного удобнее, если бы в теге TEXTAREA было бы указано WRAP=VIRTUAL

Антон Арефьев
18.03.2002 11:02:35
#2

Гость

Re: термопара и L780 на максимальном усилении

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

Алексей
19.03.2002 17:07:02
#3

Гость

Re: термопара и L780 на максимальном усилении

Ввод происходит поочередно с нескольких каналов приблизительно следующим образом:

static int adin_data_buf;

for(для;каждого;канала)
{

int code=...;
int i;

for (i=0; i<3; i++) ADC_SAMPLE_PLX (...,code,&adin_data_buf); // даем время АЦП полностью переключиться на данный канал

long sum=0;
for (i=0; i<300; i++) // вводим данные с усреднением
{
ADC_SAMPLE_PLX (...,code,&adin_data_buf);
sum += adin_data_buf;
}
}

то есть, фактически, ввод происходит в одноканальном режиме.

Схему (все то, что относится к термопаре) отправляю на указанный Вами E-mail. В приборе две термопары медь-константан.

Для остальных потенциальных посетителей форума поясню - термопара соединяется с компьютером тремя проводами - общим (AGND) и двумя сигнальными (X7 и Y7). Y7 и AGND соединяются друг с другом непосредственно вблизи термопары.


Далее. Заявление о том, что в режиме 64-кратного усиления показания занижены на 10%, основаны не только на измерениях термопарой, а в первую очередь на измерении (по дифференциальной схеме) ЭДС 50-омного источника постоянного тока напряжением порядка 70 мВ. Когда на 4- и 16-кратном усилении получается результат 75 мВ, 64-кратное усиление показывает 68 мВ; а вместо, скажем, 31 мВ - 28 мВ. Вне зависимости от полярности. Все измерения проводятся с помощью методики, указанной выше.

Антон Арефьев
19.03.2002 17:48:36
#4

Гость

Re: термопара и L780 на максимальном усилении

Попробуйте измерить напряжение термопары и напряжение Вашего источника (70 мВ) в жестко одноканальном режиме, т.е. вообще не переключая каналы. Входное сопротивление платы в одноканальном режиме - не менее 1 МОм, т.е. входного тока 5..20мкА быть не должно. Сохранятся ли при этом искажения и погрешность 10%?
И обязательно заземлите ВСЕ неиспользуемые входы прямо на разъеме.

Алексей
20.03.2002 15:13:19
#5

Гость

Re: термопара и L780 на максимальном усилении

соединил прямо на разъеме выводы 1-15,17,20-36, т.е. X2-X16, AGND, Y1-Y16, GND32. Соединил это с минусом источника ЭДС = 60.4 мВ. X1 соединил с плюсом источника. Получилось, что при усилении 16 дифференциальны и одноканальный режимы дают 60.5 мВ, а при усилении 64 - 55.6 и 48.8 мВ соответственно.

Вот полный текст программы которой я это измерял.

--- begin ---
#include <assert.h>

#include <stdio.h>

extern "C"
{
    #include "plx_api.h"
}

static struct BOARD_INFO all_boards[4];
static struct BOARD_INFO *obi; // our board info
extern int PLX_Board_Quantity;

int get_value (int channel_code)
{ // performs one-channel data input
    int adin_data_buf=0;
    int i;

    // let amplifier and multiplexor relax
    for (i=0; i<30; i++)
    ADC_SAMPLE_PLX(obi,channel_code,&adin_data_buf);

    // get average value
    long sum=0;
    for (i=0; i<300; i++)
    {
    ADC_SAMPLE_PLX(obi,channel_code,&adin_data_buf);
    sum+=adin_data_buf;
    }
    return sum/300;
}

int main()
{
    INIT_ACCESS_TO_PLX(all_boards);
    assert(PLX_Board_Quantity==1);
    obi=all_boards+0;
    assert(obi->BoardAccessMode!=NO_ACCESS_MODE);
    assert(LOAD_LBIOS_PLX(obi));
    assert(PLATA_TEST_PLX(obi));
    assert(SET_DSP_TYPE_PLX(obi));
    assert(LOAD_COEF_PLX(obi));
    assert(ENABLE_CORRECTION_PLX(obi,0)); // 0 for disable, 1 to enable

    printf("The board is %s %d %c//n",obi->Board_Name,obi->BoardDspType+2184, obi->BoardRevision);

    int amp_code, amp_mult; // amplification
    int mode; // i/o mode

    for (mode=0; mode<4; mode++)
    {
        switch(mode)
        {
            case 0: printf ("differential mode://n"); break;
            case 1: printf ("zero test mode://n"); break;
            case 2: printf ("X mode://n"); break;
            case 3: printf ("y mode://n"); break;
        }

        for (amp_code=0, amp_mult=1; amp_code<256; amp_code+=64, amp_mult*=4)
        {
            printf("Amplification %2d (code %3d): ",amp_mult, amp_code);
        int value = get_value(amp_code|(16*mode));
        printf ("%d (%.1f mV)//n",value,(double)value/amp_mult*5/8);
    }
        printf ("//n");
    }
    printf("//n");

    CLOSE_ACCESS_TO_PLX();
    return 0;
}
--- end ---

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

А вот что она выдает:

--- begin ---
The board is L780 2184 B
differential mode:
Amplification  1 (code   0): 85 (53.1 mV)
Amplification  4 (code  64): 378 (59.1 mV)
Amplification 16 (code 128): 1550 (60.5 mV)
Amplification 64 (code 192): 5692 (55.6 mV)

zero test mode:
Amplification  1 (code   0): -10 (-6.2 mV)
Amplification  4 (code  64): -9 (-1.4 mV)
Amplification 16 (code 128): -4 (-0.2 mV)
Amplification 64 (code 192): 20 (0.2 mV)

X mode:
Amplification  1 (code   0): 85 (53.1 mV)
Amplification  4 (code  64): 377 (58.9 mV)
Amplification 16 (code 128): 1548 (60.5 mV)
Amplification 64 (code 192): 4995 (48.8 mV)

y mode:
Amplification  1 (code   0): -10 (-6.2 mV)
Amplification  4 (code  64): -9 (-1.4 mV)
Amplification 16 (code 128): -6 (-0.2 mV)
Amplification 64 (code 192): -593 (-5.8 mV)
--- end ---

Вот ее вывод при ЭДС источника 0 мВ:

--- begin ---
The board is L780 2184 B
differential mode:
Amplification  1 (code   0): -10 (-6.2 mV)
Amplification  4 (code  64): -9 (-1.4 mV)
Amplification 16 (code 128): -3 (-0.1 mV)
Amplification 64 (code 192): -69 (-0.7 mV)

zero test mode:
Amplification  1 (code   0): -10 (-6.2 mV)
Amplification  4 (code  64): -9 (-1.4 mV)
Amplification 16 (code 128): -4 (-0.2 mV)
Amplification 64 (code 192): 20 (0.2 mV)

X mode:
Amplification  1 (code   0): -11 (-6.9 mV)
Amplification  4 (code  64): -10 (-1.6 mV)
Amplification 16 (code 128): -7 (-0.3 mV)
Amplification 64 (code 192): -737 (-7.2 mV)

y mode:
Amplification  1 (code   0): -10 (-6.2 mV)
Amplification  4 (code  64): -9 (-1.4 mV)
Amplification 16 (code 128): -6 (-0.2 mV)
Amplification 64 (code 192): -593 (-5.8 mV)
--- end ---

А вот что при обратной полярности источника:

--- begin ---
The board is L780 2184 B
differential mode:
Amplification  1 (code   0): -107 (-66.9 mV)
Amplification  4 (code  64): -396 (-61.9 mV)
Amplification 16 (code 128): -1558 (-60.9 mV)
Amplification 64 (code 192): -5831 (-56.9 mV)

zero test mode:
Amplification  1 (code   0): -10 (-6.2 mV)
Amplification  4 (code  64): -9 (-1.4 mV)
Amplification 16 (code 128): -4 (-0.2 mV)
Amplification 64 (code 192): 20 (0.2 mV)

X mode:
Amplification  1 (code   0): -107 (-66.9 mV)
Amplification  4 (code  64): -397 (-62.0 mV)
Amplification 16 (code 128): -1561 (-61.0 mV)
Amplification 64 (code 192): -6461 (-63.1 mV)

y mode:
Amplification  1 (code   0): -10 (-6.2 mV)
Amplification  4 (code  64): -9 (-1.4 mV)
Amplification 16 (code 128): -6 (-0.2 mV)
Amplification 64 (code 192): -594 (-5.8 mV)
--- end ---

Примечания:

Выходное сопротивление источника 50 Ом.

На искажения я не жаловался... была только погрешность 10% и смещение нуля. Причем смещение сильно зависит от используемого канала (могу предоставаить дополнительные данные).

Результаты одного вызова ADC_SAMPLE_PLX дают большие разбросы, чем усредненные по 300 отсчетам, поэтому для наглядности я приводил здесь только усредненные значения.

20.03.2002 18:25:33
#6

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,493

Re: термопара и L780 на максимальном усилении

Скачайте программку с ftp://ftp.lcard.ru/pub/users/l7xx/termo.arj и поробуйте использовать ее.

Алексей
21.03.2002 18:16:59
#7

Гость

Re: термопара и L780 на максимальном усилении

Ага, теперь стало понятнее.

Вот что выдала Ваша программа (источник ЭДС теперь был около 76 мВ):

--- begin ---

Работаем с платой L780:
        серийный номер /'5L7878/';
        тип сигнального процессора /'ADSP-2184/';
        доступ через /'Порты/'
        прерывание номер 11.

differential mode:
Amplification  1 (code   0): 108 (67.5 mV)
Amplification  4 (code  64): 473 (73.9 mV)
Amplification 16 (code 128): 1936 (75.6 mV)
Amplification 64 (code 192): 7787 (76.0 mV)

zero test mode:
Amplification  1 (code   0): -10 (-6.2 mV)
Amplification  4 (code  64): -9 (-1.4 mV)
Amplification 16 (code 128): -3 (-0.1 mV)
Amplification 64 (code 192): 16 (0.2 mV)

X mode:
Amplification  1 (code   0): 108 (67.5 mV)
Amplification  4 (code  64): 473 (73.9 mV)
Amplification 16 (code 128): 1936 (75.6 mV)
Amplification 64 (code 192): 7787 (76.0 mV)
--- end ---

То есть, погрешность 10% - главная причина проблем, - исчезла.

Правильно ли я понял, что проблема была в том, что на максимальном усилении функция однократного ввода ADC_SAMPLE_PLX не обеспечивает достаточного времени для установления напряжения на выходе усилителя?

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

22.03.2002 16:58:47
#8

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,493

Re: термопара и L780 на максимальном усилении

В общем Ваша мысль движется в нужном направлении. Надо бы только проверить. А для сего попробуйте в Вашей старой программе (которая использует ADC_SAMPLE_PLX()) после строчки с ENABLE_CORRECTION_PLX(obi,0) добавить следующие строчки:

double ADC_Rate=1.0;
double Inter_Kadr_Delay=0.0;
SET_KADR_TIMING_PLX(obi, &ADC_Rate, &Inter_Kadr_Delay);

Алексей
25.03.2002 19:48:56
#9

Гость

Re: термопара и L780 на максимальном усилении

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

Любопытно, что даже после запроса максимальной для этой платы частоты ADC_Rate = 400 kHz, величина погрешности также сильно уменьшается, по крайней мере связанная с уровнем нуля...

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск