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

Сбор данных с АЦП LTR114

Вы не вошли.

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

Дмитрий 7878
05.03.2019 21:53:58
#1

Гость

Сбор данных с АЦП LTR114

Здравствуйте.
Возникает проблема с некорректностью полученных с ацп данных. В режиме без межкадровой(в режиме с задержкой тоже возникают,но реже) задержки возникают числа не совпадающие с тем что подключено к каналам. Например, на третьем канале подключена батарейка 1.5в, в тоже время появляются цифры типа 0,00056 и тд. Прошу помочь с этой проблемой

#define SLOT_NUM CC_MODULE1 
#define FRAME_CNT 1000 //количество принимаемых кадров за один вызов LTR114_Read()
#define RECV_TIMEOUT 1010
using namespace std;
int main()
{
	setlocale(LC_ALL, "Russian");
	TLTR114 ltr;
	ofstream fout;
	fout.open("data.txt");
	WORD ver = LTR114_GetDllVer();
	if (ver != LTR114_HDR_VER)
	{
		cout << "Версия библиотеки не совпадает!" << endl;
		
	}
	if (LTR114_Init(&ltr) != LTR_OK)
	{
		cout << LTR114_GetErrorString(LTR114_Init(&ltr)) << endl;
		
	}
	if (LTR114_Open(&ltr, SADDR_DEFAULT, SPORT_DEFAULT, "", SLOT_NUM) != LTR_OK)
	{
		cout << LTR114_GetErrorString(LTR114_Open(&ltr, SADDR_DEFAULT, SPORT_DEFAULT, "", SLOT_NUM));
		
	}
	if (LTR114_GetConfig(&ltr) != LTR_OK)
	{
		cout << LTR114_GetErrorString(LTR114_GetConfig(&ltr)) << endl;
		
	}
	else
	{
		cout << "Название модуля:" << ltr.ModuleInfo.Name << endl << "Серийный номер:" << ltr.ModuleInfo.Serial << endl;
	}
	ltr.FreqDivider = 2; //частота дискретизации АЦП 4Кгц
	ltr.LChQnt = 3; //3 логических канала
	//снимаем напряжение с первого канала, диапазон +/- 0.4 В
	ltr.LChTbl[0] = LTR114_CreateLChannel(LTR114_MEASMODE_U, 0, LTR114_URANGE_04);
	ltr.LChTbl[1] = LTR114_CreateLChannel(LTR114_MEASMODE_U, 1, LTR114_URANGE_04);
	ltr.LChTbl[2] = LTR114_CreateLChannel(LTR114_MEASMODE_U, 2, LTR114_URANGE_2);
	ltr.SyncMode = LTR114_SYNCMODE_INTERNAL; //внутренняя синхронизация
	ltr.Interval = 0;// без задержки
	if (LTR114_SetADC(&ltr)!= LTR_OK)
	{
		cout << LTR114_GetErrorString(LTR114_SetADC(&ltr))<<endl;
	
	}
	if (LTR114_Calibrate(&ltr) != LTR_OK)
	{
		cout << LTR114_GetErrorString(LTR114_Calibrate(&ltr))<<endl;
		
	}
	DWORD * initial_data;
	double* processed_data;
	INT size = FRAME_CNT * ltr.FrameLength;
	initial_data = (DWORD*)malloc(size*sizeof(DWORD));
	processed_data = (double*)malloc(FRAME_CNT*ltr.LChQnt*sizeof(double));

	if ((initial_data == NULL) && (processed_data == NULL))
	{
		cout << "память не выделена!";
		
	}
	
	if (LTR114_Start(&ltr) != LTR_OK)
	{
		cout << LTR114_GetErrorString(LTR114_Start(&ltr))<<endl;
		
	}
	if (LTR114_Recv(&ltr, initial_data, NULL, size, RECV_TIMEOUT) == LTR_OK)
	{
		cout << LTR114_GetErrorString(LTR114_Recv(&ltr, initial_data, NULL, size, RECV_TIMEOUT))<<endl;
	}

	LTR114_ProcessData(&ltr, initial_data, processed_data, &size, LTR114_CORRECTION_MODE_INIT, LTR114_PROCF_VALUE);
	LTR114_Stop(&ltr);
	for (int i = 0; i < size; i+=ltr.LChQnt)
	{
		fout << processed_data[i] << "  " << processed_data[i + 1] << "  " << processed_data[i + 2] << endl;
	}
	
	free(processed_data);
	free(initial_data);
	system("pause");
}
06.03.2019 07:23:52
#2

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

Re: Сбор данных с АЦП LTR114

Здравствуйте. Начать нужно с проверки корректности подключений всех входных цепей. Как подключали?

Контакты

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

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

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

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