I.C.> задержки при нажатии и загрузка 100% -вероятно следствия одной причины. поток даннх 1кГц.
I.C.> на потоке данных 100 Гц замечено не было. смоделирую у себя и посмотрю.
Я тоже проверю, изменив 1000 на 100.
AK222>> Поясните как вычисляется компенсация “0”.
I.C.> Компенсация "0" введена для использования датчиков с нелинейной калибровкой.
I.C.> Например, перед стартом теста линия покоя сдвинута относительно 0 на некоторое значение.
I.C.> причины сдвига 2:
I.C.> - вес двигателя и оснастки
I.C.> - уход 0 самого датчика.
I.C.> компенсация "0" вводит поправку и "сдвигает" калибровочные значения, чтобы 0 по калибровке приходился на ноль при тесте.
I.C.> 0 при тесте берется из линии покоя за вычетом веса двигателя и оснастки.
I.C.> когда калибровка линейная в этом нет необходимости.
И всё равно информации о вычислениях внутри Tm недостаточно.
Вот пример. Датчик ничем не нагружен. Произвожу запись. Результат на рис.1. Видно, что линия покоя не совпадает со средней тягой.
Это не логично, т.к. в состоянии покоя эти величины имеют одинаковый смысл. Т.е. должно быть как на рис.2. НО БЕЗ КАКИХ-ЛИБО РУЧНЫХ ПОДСТАНОВОК. Или я не прав?
Ввёл ответы на 'T' , 'B' , 'I' , 'A'.
Код такой
…………….
char c;
int16 temperatura = 2000;
int16 vBatt = 3000;
………………….
if (usb_cdc_kbhit()) { // есть данные в приёмном буфере?
c=usb_cdc_getc(); // переписать
if (c == 'I') printf(usb_cdc_putc, "iLoad Cell ADC\r\n");// передать идентификатор
if (c == 'B') printf(usb_cdc_putc, "b%LX\r\n", vBatt);// передать vBatt
if (c == 'T') printf(usb_cdc_putc, "t%LX\r\n", temperatura);// передать temperatura
if (c == 'A')printf(usb_cdc_putc, "aSTATUS\r\n");// передать STATUS
}
Строки, начинающиеся с 'a', 't' , 'b' , 'i' , в Гипертерминале принимаются (рис.3).
В Tm батарея видна, термометр, идентификатор и статус - нет(рис.4).
Какой д.б. формат данных 't' , 'i', 'a' и когда ПК посылает 'T' , 'B' , 'I' , 'A' ?
Это сообщение редактировалось 08.10.2011 в 13:19