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


Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

Вы не вошли.

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

МОТ
10.03.2011 11:25:39
#1

Гость

Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

В параграфе 4.5.1  Корректировка данных АЦП написано, что задавая значения  OffsetCalibration и ScaleCalibration можно корректировать данные получаемые в АЦП.

В ScaleCalibration[1] . Единица что означает?
Можно туда adc_input_range_10000mV_E140 написать?

10.03.2011 11:41:09
#2

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

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

Это означает, что в используемой корректировочной формуле
Y = (X+A)*B,
коэффициент В будет равен 1.

МОТ
10.03.2011 11:53:50
#3

Гость

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

Сергей,  если написать  double r= moduleDesc.Adc.ScaleCalibration[1] ,то r = 1.005 как то так.

>Это означает, что в используемой корректировочной >формуле
>Y = (X+A)*B,
>коэффициент В будет равен 1.
а смысл  тогда так делать? Можно же просто в структуре тогда переменную делать да и все... Чет вот я с 10 вольтами работаю. Дык  А = 1.801 В=1.005

Дык если макимум отсчетов (1.801+8000)*1.005 = 8041.81 будет. А должно 10 000 получиться же для 10 вольт или я неправ?

10.03.2011 12:17:28
#4

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

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

1. Недопонял про смысл и переменную в структуре.
2. В параграфе 3.2.1. //'Формат слова данных с АЦП//' руководства программиста (http://www.lcard.ru/download/e14_140_pr … _guide.pdf) в частности указано, что коду 8000 соответствует диапазон входного напряжения равный 10 В.

МОТ
10.03.2011 12:37:13
#5

Гость

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

Сергей, ну вот у меня генератор  подключен к АЦП и через прогу вывожу данные в виде синусойды.
Голые данные находятся в буфере ReadBuffer[i].
Если их выводить просто в Chart(компонент builder c++) , то синусойда будет плясать от -7770 до 7770 примерно(хотя я ожидал что будет от 8100 до -8100, ну да ладно). Теперь надо сделать чтобы на графике не просто данные какие то выводились, а скорректированные. То есть надо  выводить будет не ReadBuffer[i] , а (A+ReadBuffer[i])*B и в результат я хочу увидеть чтобы максимум синусойды амплитуды был 10 000 мВ. Вместо этого коэфициенты неправильно считаются (писал выше как)

МОТ
10.03.2011 12:42:20
#6

Гость

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

можно было сделать так:
ReadBuffer[i]*1.2

где 1.2 это 10000(отсчетов вольт)//7700(отсчетов нескорректированных максимум)

Но я пытаюсь сделать как в  руководстве написано.

10.03.2011 14:16:10
#7

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

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

Данные с АЦП модуля поступают в кодах АЦП, а не в В. Коэффициенты предназначены только для корректировки получаемых данных АЦП, а не для их преобразования в В (Вы же читали параграф 4.5.1 //'Корректировка данных АЦП//' руководства программиста). Для дальнейшего преобразования в В следует делать так:
(A+ReadBuffer[i])*B*C/8000.0,
где С - используемый входной диапазон в В. В Вашем случае С = 10.0.

МОТ
10.03.2011 15:29:00
#8

Гость

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

Сергей , я думал Коэффициенты предназначены для этого...
Ну понятно теперь. Благодарю

10.03.2011 17:59:40
#9

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

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

Коэффициенты эти КАЛИБРОВОЧНЫЕ, т.е. они предназначены для компенсации смещения нуля и неточности коэффициента усиления измерительного тракта. Их получают с помощью эталонных приборов  при изготовлении каждого конкретного экземпляра изделия и записывают во встроенное ППЗУ.
В идеальном устройстве было бы A=0, B=1
А пересчет в вольты - это простая дополнительная арифметическая операция (и она не всегда нужна).

Serg
15.06.2011 23:53:38
#10

Гость

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

Добрый вечер.
Укажите пожалуйста, где есть описание формулы пересчёта (A+ReadBuffer[i])*B*C/8000.0 в руководстве программиста. Я нашёл только формулы для калибровки.
И что в этой формуле значат A,B. Т.е. для диапазона +-2.5 формула будет выглядеть так (A+ReadBuffer[i])*B*2.5/8000.0?

16.06.2011 12:55:13
#11

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

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

См. дискуссию выше.
A - аддитивный калибровочный коэффициент (смещение, offset) = OffsetCalibration[номер_диапазона]
B - мультипликативный калибровочный коэффициент (масштаб, scale) = ScaleCalibration[номер_диапазона]

Пересчет в вольты явствует из п.3.2.1 Формат слова данных с АЦП, табл.1 Соответствие откорректированного кода АЦП входному напряжению.
Из таблицы видно, что полной шкале в выбранном диапазоне соответствует интервал кодов [-8000, 8000]

Serg
16.06.2011 15:34:33
#12

Гость

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

Повторю всё же вопрос, т.к. из инструкции не всё до конца ясно.
С корректировкой по колибровочным коэффициентам ясно.
Т.е. если я снимаю значения с усилением 2.5 в, то формула будет такой?
(A+ReadBuffer[i])*B*2.5/8000.0
ну и тд
диапазон 0.625 в  => (A+ReadBuffer[i])*B*0.625/8000.0
Правильно?
Этот момент, имхо не очень внятно описан в документации.


Ещё такой вопрос, мне нужно автоматический подстраивать коэффициент усиление для подаваемого напряжения, есть ли какая нибудь в библиотеке вспомогательная функция, облегчающая эту задачу?

16.06.2011 19:42:26
#13

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

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

Ну не знаю, по-моему, достаточно внятно. Сначала таблица соответствия кодов диапазону, потом отдельно про калибровочные коэффициенты (это по сути два разных вопроса).

Автоматически подстраивать коэффициент усиления - это смотря в каком смысле.
На ходу менять параметры АЦП нельзя - надо сделать STOP_ADC, потом SET_ADC_PARS, потом START_ADC. То есть образуется дырка: в течение неопределенного времени сбор данных вестись не будет.
Потом, при резком увеличении сигнала часть данных также будет потеряна (зарежется ограничением).
Если это все устраивает - можно, скажем, проверять максимум по модулю за собранный кусок и при необходимости делать перенастройку через stop.

Обычно все-таки выбирают усиление исходя из глобального максимума.

Хм... В принципе можно в таблицу логических каналов (т.е. в кадр) поместить несколько раз один и тот же канал с разными усилениями. Тогда и прерывать сбор не нужно, но есть как минимум два недостатка: 1) в соответствующее число раз снижается максмальная частота дискретизации и 2) если по каким-то каналам будет перегрузка, то может вылезти проблема межканального прохождения http://www.lcard.ru/articles/12

Serg
17.06.2011 11:08:50
#14

Гость

Re: Е14-140 ADC_INFO_LUSBAPI параграф 4.5.1

Спасибо за подробный ответ!
Наверно всё же буду останавливать и стартовать, т.к. частота не критична.