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


Диапазоны напряжения

Вы не вошли.

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

kd
16.03.2012 12:23:18
#1

Гость

Диапазоны напряжения

Здравствуйте, помогите разобраться. Как для модуля Е-154 задать диапазон напряжения? В программе такой код:
// формируем управляющую таблицу логических каналов
  for(WORD i=0; i < am.ChannelsQuantity; i++) am.ControlTable[i] = (WORD)(SigParam[i].ChannelNum |                                                                          GroundMode |                                                             (SigParam[1].AmplFactor << 6)/*усиление 4*/);

где GroundMode=CommonGround и = 0x20; // Флаг 32 каналов с общей землей.
SigParam[0..5] это структура типа SigParamRec:
struct SigParamRec
{
WORD ChannelNum;
byte AmplFactor;
COLORREF Color;
WORD ViewFactor, ViewZeroLine;
int PrevX, PrevY, CurX, CurY;
PCHAR Name;
};

kd
20.03.2012 09:14:50
#2

Гость

Re: Диапазоны напряжения

нашел формулу данную здесь на форуме
U = 10*corrected_code/8000/(1<<(band*2))
где band -- диапазон АЦП (0:10В, 1:2.5В, 2:0.625В, 3:0.15625В), а
corrected_code -- код, скорректированный с помощью калибровочных коэффициентов:

corrected_code = (code+ZeroOffset)*Scale.
ZeroOffset -- смещение нуля, Scale - масштабный коэффициент для данного диапазона.
code -- код, полученный с прибора.
Приведите, пожалуйста, конкретный пример формулы с конкретными значениями(а лучше несколько),  где подставлены значения band, я так понял это одно из 4-х значений: 00, 01,10 и 11?

kd
20.03.2012 09:49:34
#3

Гость

Re: Диапазоны напряжения

Например у меня md.Adc.OffsetCalibration[0] = 1.578
                md.Adc.OffsetCalibration[1] = 1.514
                md.Adc.OffsetCalibration[2] = 1.933
                md.Adc.OffsetCalibration[3] = 4.066

                md.Adc.ScaleCalibration[0] = 1.012
                md.Adc.ScaleCalibration[1] = 1.017
                md.Adc.ScaleCalibration[2] = 1.020
                md.Adc.ScaleCalibration[3] = 1.006
Для диапазона +-5В (модуль Е-154) будет выглядеть так:(?)
corrected_code = (code+ZeroOffset)*Scale = (1000+1,578)*1,012=1013,597   Это я получил скорректированный код. А как дальше, проблема с 1<<(band*2) как это вычислить? это логический сдвиг влево?

20.03.2012 11:34:07
#4

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Диапазоны напряжения

В этой формуле band - это поле выбора коэффициента усиления (биты 7,6 управляющего слова из ControlTable), т.е. значение от 0 до 3 (двоичное 00, 01, 10, 11).
Если посмотреть на ряд диапазонов напряжений - 10, 2.5, 0.625, 0.15625 В - то можно заметить, что коэффициенты усиления соответственно 1, 4, 16, 64, то есть 4 в степени band (обозначу pow(4, band)) или, что то же самое, pow(2, 2*band).

Отсюда диапазон измерения в вольтах Um = 10.0 / pow(2, 2*band) или на языке C с использованием побитового сдвига влево Um = 10.0 / (1 << (2*band)).
Напряжению Um соответствует corrected_code = 8000.
Отсюда U = Um * corrected_code / 8000, подставляем Um и получаем формулу, которую Вы привели.

Только если вычисляется значение в вольтах, т.е. в вещественном типе (double U), то надо не забыть привести хотя бы один операнд деления к double, иначе компилятор C разделит int на int нацело. Поэтому заметьте, что я написал 10.0, а не 10
(10.0 / 64 = 0.15625, но 10 / 64 = 0)

Надеюсь, что теперь арифметика этих вычислений прозрачна, а считать можно любым способом, главное случайно не поделить int на int с потерей дробной части smile

kd
21.03.2012 06:39:45
#5

Гость

Re: Диапазоны напряжения

после замены Е14-440 на Е-154 сигнал странным образом обрезается, может ли это быть из-за малой битности? Перебрал все диапазоны напряжения +-5В; +-1,6В; +-0,5В; +-0,16В. Меняется чувствительность к сигналу, но по-прежнему идет обрезка.

Было вот так(Е14-440):
for(WORD i=0; i < am.ChannelsQuantity; i++) am.ControlTable[i] = (WORD)(SigParam[i].ChannelNum |                                            GroundMode |
(SigParam[1].AmplFactor << 6)/*усиление 4*/;
т.е. таблица ControlTable имела вид:
ControlTable[0]=37;    00100101
ControlTable[1]=36;    00100100
ControlTable[2]=35;    00100011
ControlTable[3]=34;    00100010
ControlTable[4]=33;    00100001
ControlTable[5]=32;    00100000
т.е. на всех каналах уст. диап. +-10 В.

Заменяю модуль на Е-154:
  for(WORD i=0; i < am.ChannelsQuantity; i++) am.ControlTable[i] =5-i;

ControlTable[0]=5;    00000101
ControlTable[1]=4;    00000100
ControlTable[2]=3;    00000011
ControlTable[3]=2;    00000010
ControlTable[4]=1;    00000001
ControlTable[5]=0;    00000000
т.е. на всех каналах уст. диап. +-5 В.

21.03.2012 07:06:09
#6

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Диапазоны напряжения

1. Если на вход E-154 подаёте амплитуду напряжения больше установленного поддиапазона, то вполне вероятно ограничение сигнала и другие нелинейные эффекты.
2. Если частоту АЦП в E-154 (равна частоте коммутации каналов) устанавливаете больше, чем в была установлена в E14-440 для одного и того же подключения, то возможно дополнительная погрешность(искажения) из-за влияния коммутационного эффекта.
3. Если в E14-440 использовался дифференциальный режим (и дифференциальная схема) подключения к источнику сигнала, то, скорее всего, по той же схеме E-154 подключать нельзя.
4. Типичные примеры подключения см.
http://www.lcard.ru/download/e14-140_conn_examples.pdf
http://www.lcard.ru/download/e-154_conn_examples.pdf

kd
21.03.2012 07:24:29
#7

Гость

Re: Диапазоны напряжения

Кроме обрезки также наблюдается появление сигнала на соседних каналах при максимальных амплитудах. Например пускаем сигнал по 2 каналу(резко давлю на пьезодатчик)и сигнал с небольшой амплитудой появляется на других. И еще вопрос: какие коэффициенты усиления у Е-154? судя по предыдущим постам:
для диапазона +-5 В. коэф.усил.=   1
              +-1,6 В. коэф.усил.= 3,125
              +-0,5 В. коэф.усил.= 9,77
              +-0,16 В.коэф.усил.=30,52
Тогда как будет выглядеть формула для Е-154
Диапазон измерения в вольтах Um =???;  U=???
Напряжению Um соответствует corrected_code = 4000.

21.03.2012 07:48:35
#8

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Диапазоны напряжения

Настало время привести полные схемы подключения E-154 и для сравнения E14-440.

kd
21.03.2012 08:44:16
#9

Гость

Re: Диапазоны напряжения

Сигналы на Е14-440 шли по 32-37 ножкам (Х6-Х1), земля подключена к 3 (AGND) и 21(GND32).
При переносе на Е-154 получилось так: Сигналы идут на 19,37,18,36,17,35 земля на 29 ножку (которая ранее была на 3-й у Е14-440).  Позже выложу фото разъемов.

21.03.2012 08:54:19
#10

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Диапазоны напряжения

Какие источники сигналов? Какие у них электрические свойства? Вы применили модуль, в котором всё это нужно учитывать, см. Руководство.

kd
22.03.2012 11:50:04
#11

Гость

Re: Диапазоны напряжения

И все-таки я думаю в железной части все нормально. Надо копаться в программной. В текстовом файле наша программа сохраняет числа, так вот, когда установлен модуль Е14-440 то числа встречаются от -6046 до +7097. А когда Е-154, то от -2047 до 2048.
А чему равны коэффициенты усиления у Е-154 (все диапазоны напряжения)? вот у Е14-440 понятно 1,4,16,64.

22.03.2012 12:07:34
#12

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Диапазоны напряжения

Не имеет смысла рассматривать коды АЦП, пока не прояснён вопрос корректности подключения E-154.

Контакты

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

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

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

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