http://www.forum.getchip.net/ |
|
Линейная апроксимация http://www.forum.getchip.net/viewtopic.php?f=20&t=234 |
Страница 1 из 3 |
Автор: | avrmastak [ 16 июн 2012, 19:42 ] | ||
Заголовок сообщения: | Линейная апроксимация | ||
Делаю устройство,которое показывает давление масла в автомобиле. Датчик ММ393А меняет свое сопротивление от 315 Ом(при 0 кгс/см^2) до 5 Ом(при 8 кгс/см^2).Идею взял отсюда: http://www.bezkz.su/...metr/11-1-0-399 . После калибровки получаю массив в EEPROM который потом загоняю в массив в оперативке buf_ram[].Не знаю как сделать линейную апроксимацию показаний, т.е. чтобы показания на индикатор шли с учетом данных из массива buf_ram[].
|
Автор: | aui2002 [ 17 июн 2012, 13:35 ] |
Заголовок сообщения: | Re: Линейная апроксимация |
А вопрос-то в чем? В математике или в программировании? Если в математике, то, как я понял из исходника, есть 5 калибровочных точек, т.е. 5 пар значений Давление (P) - Сопротивление (R). По этим пяти точкам нужно сделать линейную аппроксимацию (учебник математики в помощь). Результатом аппроксимации будет нахождение коэффициентов уравнения P=a*R+b. (т.е. a и b) После этого a и b пихаем в EEPROM, а 5 пар калибровочных значений множим на ноль (в смысле они больше не нужны). Теперь, когда в рабочем режиме снимается значение сопротивления R, его нужно умножить на a и прибавить b. Результат (P) вывести на индикатор. Аппроксимация - это, по сути, набор операций с матрицами (массивами): умножение, транспонироввание и т.п. Как мне кажется (могу ошибаться), штука довольно ресурсоемкая, особенно, если еще коэффициент детерминированности считать (это критерий точности аппроксимации). Хватит ли на это ресурсов выбранного Вами МК? Еще вопрос: как я понял, калибровка производится один раз при установке девайса на авто? Ну а потом может через год или через два при ТО? Есть ли смысл тогда пихать аппроксимацию в МК? Может проще, чтобы в режиме калибровки эти 5 пар просто выводились на экран, откуда их можно списать на бумажку (или считать их программатором из EEPROM). Потом засунуть в тот же Excel и в два тычка сделать аппроксимацию там. Коэффициенты a и b, полученные в Excel, либо ввести в прошивку в виде констант, либо через элементы ввода (кнопки и т.п.) скормить девайсу без ковыряния в прошивке? |
Автор: | avrmastak [ 19 июн 2012, 22:41 ] | ||
Заголовок сообщения: | Re: Линейная апроксимация | ||
Забил на калибровку. Хочу просто вывести на индикатор реальные показания давления от 0 до 8 с десятыми.Сегодня замерял сопротивление датчика(табличка в архиве). В Exel сделал апроксимацию и нашел уравнение моей кривой. Что с ним делать дальше? Куда его вписать в программе?
|
Автор: | aui2002 [ 19 июн 2012, 23:31 ] | ||
Заголовок сообщения: | Re: Линейная апроксимация | ||
|
Автор: | avrmastak [ 21 июн 2012, 00:26 ] | ||
Заголовок сообщения: | Re: Линейная апроксимация | ||
Если делаю, как Вы советуете, на индикаторе какая-то еруна. Умножал и делил на 10,100,1000 - показания 600-400 и постоянно прыгают. Сделал ADC=f(P), а потом выразил из него Р,получилось Р=(983-adc)/92. Единицы давления совпадают все, кроме 0. 0 включается аж при 340 Ом. Десятые доли давления живут своей жизнью,скажем если взять диапазон 7-8 кгс получается: 44 Ом - 8,0. 55 Ом - 7,6. 57 Ом - 7,0. 74 Ом - 7,0. и никаких промежуточных значений. Подскажите,пожалуйста,как сделать чтобы 0 стал на место(если в формуле Р=(983-adc)/92, 983 меняю на 920 ноль становится на место,но все показания смещаются на 1) и что не так с десятыми долями.
|
Автор: | aui2002 [ 21 июн 2012, 02:19 ] | |||
Заголовок сообщения: | Re: Линейная апроксимация | |||
|
Автор: | aui2002 [ 21 июн 2012, 02:25 ] |
Заголовок сообщения: | Re: Линейная апроксимация |
Продолжаем разговор.... ![]() Я бы сделал так. 1) Получаем значение АЦП. 2) Если АЦП = 220, выводим на экран 8,0. 3) Если АЦП = 920, выводим 0,0. 4) Если 220< АЦП<920, по любому из предложенных уравнений считаем P. 5) Округляем P до 10-х долей и выводим. P.S. Если я ничего не путаю, деление округляет целые числа вниз. В Вашем уравнении деление есть, может из-за этого и скачут десятые доли? |
Автор: | avrmastak [ 22 июн 2012, 00:38 ] | ||
Заголовок сообщения: | Re: Линейная апроксимация | ||
Наконец-то получилось! Показания на индикаторе для P=f(ADC) и ADC=f(P) практически совпадают: 0 - 1,3 1 - 1,6 2 - 2 3 - 2,9 4 - 4,2 5 - 5,4 6 - 6,3 7 - 7 8 - 8 Немного с погрешностью, но это ерунда. Если пишу Р=982.67-adc/92.333 десятки отображаютя как надо,а если округляю Р=983-adc/92,то получается ерунда.
|
Автор: | aui2002 [ 22 июн 2012, 01:37 ] |
Заголовок сообщения: | Re: Линейная апроксимация |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |