|
Формат с плавающей точкой, подскажите как заменить |
|
|
|
Sep 1 2008, 06:51
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 20-08-08
Из: г.Чернигов, Украина
Пользователь №: 39 704

|
Проблема состоит в том, что у меня контроллев F2013, соответственно у него 2к памяти. Для преобразования напряжения с АЦП в температуру используется полиномы 6й и 9й степени. Что бы не потерять точность необходимо использовать формат с плавающей точкой, но при его использовании и совершении операций над ним библиотеки умножения занимают минимум 700 байт. Вообщем это слишком жирно. Пробовал сделать свой формат, тоже плавающий, но умножать на 2в степени. После того как перемножал два int, получал long, потом сдвигал вправо до int и увеличивал степень. Но при этом точность падала. В некоторых случаях стала неудовлетворительной. Предложите, чем можно заменить, как обойти.
|
|
|
|
|
 |
Ответов
|
Sep 1 2008, 07:39
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 20-08-08
Из: г.Чернигов, Украина
Пользователь №: 39 704

|
Вообщем то жалко и даж очень. Тут еще должно быть много чего. И протокол Modbus RS485 с перестройкой скоростей и опрос АЦП и получение температуры холодного спая от внутреннего сенсора, и еще куча параметров, стандартных для датчиков температуры. А 700 байт это на вскидку. Реально при линковании еще больше пойдет...
|
|
|
|
|
Sep 6 2008, 08:15
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 20-08-08
Из: г.Чернигов, Украина
Пользователь №: 39 704

|
Цитата(Dog Pawlowa @ Sep 1 2008, 12:09)  1) Кусочно-линейная аппроксимация в целых числах не поможет? Я именно так и делаю. Одно значение long на один градус, правда датчик NTC. 2) Теоретически все можно перевести в целочисленную математику, только диапазоны нужно тщательно проверять. Цитата(rezident @ Sep 1 2008, 14:37)  +1. Причем cаму таблицу можно вынести в отдельную м/с EEPROM, которую при необходимости (для снижения энергопотребления) запитать прямо от пина MSP430. А эта идея с кусочно-линейной аппроксимацией ВЕЩЬ. Погрешность от полинома составила менее 0.1 градуса  и места минимум надо, при том что коэффициенты во флеш-инфо спрятал.Благодарю за советы
Сообщение отредактировал Алексей Савченко - Sep 6 2008, 08:17
|
|
|
|
|
Sep 6 2008, 21:23
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(rezident @ Sep 6 2008, 22:40)  ГОСТовская табличка-то немаленькая, иначе зачем бы я про отдельную EEPROM упоминал? А в область INFO только 32 4-х байтных числа помещаются. Всю таблицу забивать в ЕЕПРОМ нужды нет - НСХ у ТХА, если склероз не изменяет, наиболее линейная по сравнению с другими типами термопар и, соответственно, ее кус.-лин. аппроксимация дается меньшей кровью. Опуская качество выполненной автором кус.-лин. аппроксимации, остаются вопросы компенсации холодного спая (еще одной ТХА или более другим датчиком? если более другим (точность датчика?), то желательно иметь аппроксимацию T->U для предполагаемого диапазона температур холодного спая) и калибровки под конкретный экземпляр ТХА (без этого 0.25% погрешности останутся в области благих пожеланий даже при идеальной остальной схемотехнике). Ну и совершенно неразумное предположение (надеюсь, что не так): автор выполнил кус.-лин. аппроксимацию для всего заявленного диапазона -50..+1250 С только по полиному для диапазона 0..+500 С, не учитывая, что за границами 0..+500 С этот полином даст среднюю по больнице цену на дрова.
|
|
|
|
|
Sep 7 2008, 07:58
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 20-08-08
Из: г.Чернигов, Украина
Пользователь №: 39 704

|
Цитата(xemul @ Sep 7 2008, 00:23)  Всю таблицу забивать в ЕЕПРОМ нужды нет - НСХ у ТХА, если склероз не изменяет, наиболее линейная по сравнению с другими типами термопар и, соответственно, ее кус.-лин. аппроксимация дается меньшей кровью. Опуская качество выполненной автором кус.-лин. аппроксимации, остаются вопросы компенсации холодного спая (еще одной ТХА или более другим датчиком? если более другим (точность датчика?), то желательно иметь аппроксимацию T->U для предполагаемого диапазона температур холодного спая) и калибровки под конкретный экземпляр ТХА (без этого 0.25% погрешности останутся в области благих пожеланий даже при идеальной остальной схемотехнике). Ну и совершенно неразумное предположение (надеюсь, что не так): автор выполнил кус.-лин. аппроксимацию для всего заявленного диапазона -50..+1250 С только по полиному для диапазона 0..+500 С, не учитывая, что за границами 0..+500 С этот полином даст среднюю по больнице цену на дрова. Мда, Вы правы, я сделал аппроксимацию двух полиномов(0..+500, 500..1200 С). Можете кинуть ссылку на эти таблицы напряжений термопар, что нибудь исправлю. Насчет сенсора холодного спая, то это внутренний датчик SD16_A в F2013. Показания он відает стабильнее, только надо его грамотно откалибровать будет. Также производится калибровка напряжений термопары для температуры холодного спая и для максимума шкалы. Так что с калибровкой не должно быть проблем.
Сообщение отредактировал Алексей Савченко - Sep 7 2008, 08:06
|
|
|
|
|
Sep 7 2008, 08:41
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Алексей Савченко @ Sep 7 2008, 11:58)  Мда, Вы правы, я сделал аппроксимацию двух полиномов(0..+500, 500..1200 С). Можете кинуть ссылку на эти таблицы напряжений термопар, что нибудь исправлю. См. выше - НСХ (номинальная статическая характеристика) термопары ХА (Type K). НСХ по ГОСТ в тырнете мне на глаза не попалась, но не думаю, что она сильно отличается от NIST-овской (в Ваши требования по точности отличия уложатся). Цитата Насчет сенсора холодного спая, то это внутренний датчик SD16_A в F2013... а дальше все будет определяться конструктивом - можете получить пару градусов разницы между холодным спаем и контроллером на совершенно ровном месте.
|
|
|
|
Сообщений в этой теме
Алексей Савченко Формат с плавающей точкой Sep 1 2008, 06:51 gotty А что вы дальше с температурой делаете? если посыл... Sep 1 2008, 06:57 Алексей Савченко Действительно, посылаю на ПК через RS485. Но дело ... Sep 1 2008, 07:17 MrYuran Цитата(Алексей Савченко @ Sep 1 2008, 10... Sep 1 2008, 07:26  rezident Цитата(Dog Pawlowa @ Sep 1 2008, 15:09) 1... Sep 1 2008, 11:37        Алексей Савченко Цитата(xemul @ Sep 7 2008, 11:41) но не д... Sep 7 2008, 09:13         xemul Цитата(Алексей Савченко @ Sep 7 2008, 13... Sep 7 2008, 12:09          Tanya Вопрос Автору.
Как Вы понимаете пресловутые 0.25%?... Sep 7 2008, 12:50           Алексей Савченко Цитата(Tanya @ Sep 7 2008, 15:50) Вопрос ... Sep 8 2008, 15:30            Tanya Цитата(Алексей Савченко @ Sep 8 2008, 19... Sep 8 2008, 16:12 xemul Цитата(Алексей Савченко @ Sep 1 2008, 10... Sep 1 2008, 10:47 Алексей Савченко Цитата(xemul @ Sep 1 2008, 13:47) Какую ж... Sep 1 2008, 11:06  xemul Цитата(Алексей Савченко @ Sep 1 2008, 15... Sep 1 2008, 13:24   rezident Цитата(xemul @ Sep 1 2008, 19:24) В MSP н... Sep 1 2008, 13:31 SergeyBorshch Если не нужна точность (в пределах +- 1градус) и н... Sep 1 2008, 11:11 Алексей Савченко Приглянулась мне мысль насчет кусочно линейной апр... Sep 1 2008, 13:52 MrYuran Цитата(Алексей Савченко @ Sep 1 2008, 17... Sep 2 2008, 12:24 SergeyBorshch А вы на чем пишете? Судя по всему на С.
Попробуйт... Sep 2 2008, 12:14 rezident Цитата(SergeyBorshch @ Sep 2 2008, 18:14)... Sep 3 2008, 00:01
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|