Перейти к блогу GetChip.net - блог        JilTE[1] - в разработке     Модификации устройств - модификации

 
Текущее время: 08 окт 2024, 00:26

Часовой пояс: UTC + 3 часа [ Летнее время ]



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Линейная апроксимация
СообщениеДобавлено: 16 июн 2012, 19:42 
Не в сети

Зарегистрирован: 23 май 2012, 22:07
Сообщения: 38
Делаю устройство,которое показывает давление масла в автомобиле. Датчик ММ393А меняет свое сопротивление от 315 Ом(при 0 кгс/см^2) до 5 Ом(при 8 кгс/см^2).Идею взял отсюда: http://www.bezkz.su/...metr/11-1-0-399 . После калибровки получаю массив в EEPROM который потом загоняю в массив в оперативке buf_ram[].Не знаю как сделать линейную апроксимацию показаний, т.е. чтобы показания на индикатор шли с учетом данных из массива buf_ram[].


Вложения:
example.rar [1.61 КБ]
Скачиваний: 1197
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Линейная апроксимация
СообщениеДобавлено: 17 июн 2012, 13:35 
Не в сети

Зарегистрирован: 20 май 2011, 23:58
Сообщения: 134
Откуда: St.-Petersburg
А вопрос-то в чем?
В математике или в программировании?

Если в математике, то, как я понял из исходника, есть 5 калибровочных точек, т.е. 5 пар значений Давление (P) - Сопротивление (R). По этим пяти точкам нужно сделать линейную аппроксимацию (учебник математики в помощь).

Результатом аппроксимации будет нахождение коэффициентов уравнения P=a*R+b. (т.е. a и b)
После этого a и b пихаем в EEPROM, а 5 пар калибровочных значений множим на ноль (в смысле они больше не нужны).

Теперь, когда в рабочем режиме снимается значение сопротивления R, его нужно умножить на a и прибавить b. Результат (P) вывести на индикатор.

Аппроксимация - это, по сути, набор операций с матрицами (массивами): умножение, транспонироввание и т.п.
Как мне кажется (могу ошибаться), штука довольно ресурсоемкая, особенно, если еще коэффициент детерминированности считать (это критерий точности аппроксимации).
Хватит ли на это ресурсов выбранного Вами МК?

Еще вопрос: как я понял, калибровка производится один раз при установке девайса на авто? Ну а потом может через год или через два при ТО? Есть ли смысл тогда пихать аппроксимацию в МК?

Может проще, чтобы в режиме калибровки эти 5 пар просто выводились на экран, откуда их можно списать на бумажку (или считать их программатором из EEPROM). Потом засунуть в тот же Excel и в два тычка сделать аппроксимацию там. Коэффициенты a и b, полученные в Excel, либо ввести в прошивку в виде констант, либо через элементы ввода (кнопки и т.п.) скормить девайсу без ковыряния в прошивке?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Линейная апроксимация
СообщениеДобавлено: 19 июн 2012, 22:41 
Не в сети

Зарегистрирован: 23 май 2012, 22:07
Сообщения: 38
Забил на калибровку. Хочу просто вывести на индикатор реальные показания давления от 0 до 8 с десятыми.Сегодня замерял сопротивление датчика(табличка в архиве). В Exel сделал апроксимацию и нашел уравнение моей кривой. Что с ним делать дальше? Куда его вписать в программе?


Вложения:
Example.rar [3.58 КБ]
Скачиваний: 1217
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Линейная апроксимация
СообщениеДобавлено: 19 июн 2012, 23:31 
Не в сети

Зарегистрирован: 20 май 2011, 23:58
Сообщения: 134
Откуда: St.-Petersburg


Вложения:
Комментарий к файлу: см. сразу же на первом листе
appr.xls [24 КБ]
Скачиваний: 1208
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Линейная апроксимация
СообщениеДобавлено: 21 июн 2012, 00:26 
Не в сети

Зарегистрирован: 23 май 2012, 22:07
Сообщения: 38
Если делаю, как Вы советуете, на индикаторе какая-то еруна. Умножал и делил на 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) и что не так с десятыми долями.


Вложения:
Example.rar [3.25 КБ]
Скачиваний: 1203
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Линейная апроксимация
СообщениеДобавлено: 21 июн 2012, 02:19 
Не в сети

Зарегистрирован: 20 май 2011, 23:58
Сообщения: 134
Откуда: St.-Petersburg


Вложения:
Exel.xls [35 КБ]
Скачиваний: 1231
eqv.JPG
eqv.JPG [ 21.69 КБ | Просмотров: 22560 ]


Последний раз редактировалось aui2002 21 июн 2012, 02:31, всего редактировалось 5 раз(а).
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Линейная апроксимация
СообщениеДобавлено: 21 июн 2012, 02:25 
Не в сети

Зарегистрирован: 20 май 2011, 23:58
Сообщения: 134
Откуда: St.-Petersburg
Продолжаем разговор.... :mrgreen:

Я бы сделал так.
1) Получаем значение АЦП.
2) Если АЦП = 220, выводим на экран 8,0.
3) Если АЦП = 920, выводим 0,0.
4) Если 220< АЦП<920, по любому из предложенных уравнений считаем P.
5) Округляем P до 10-х долей и выводим.

P.S.
Если я ничего не путаю, деление округляет целые числа вниз. В Вашем уравнении деление есть, может из-за этого и скачут десятые доли?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Линейная апроксимация
СообщениеДобавлено: 22 июн 2012, 00:38 
Не в сети

Зарегистрирован: 23 май 2012, 22:07
Сообщения: 38
Наконец-то получилось! Показания на индикаторе для 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,то получается ерунда.


Вложения:
Example.rar [3.69 КБ]
Скачиваний: 1237
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Линейная апроксимация
СообщениеДобавлено: 22 июн 2012, 00:45 
Не в сети

Зарегистрирован: 23 май 2012, 22:07
Сообщения: 38
По Вашему варианту P=f(R) на нижнем и верхнем пределе должно получиться точнее. Да, я в формулу подставлял значение АЦП,поэтому и получалась какая-то лажа. Есть делитель ( Фото007.jpg
Фото007.jpg [ 208.28 КБ | Просмотров: 22536 ]
)
Vout=Vin*R2/R1+R2; R2-сопротивление датчика.
ADC=Vout*1024/Vref; Vref-2.56В.
Мне нужно из первой формулы выразить R2 и подставить во вторую? Я правильно понял?
Если так делаю,получается страшная формула R=0.926*adc/(524288-2.56*adc).Потом подставляю в P = -0,0272R + 8,8315.Получается еще страшнее. На экране 0,7 стоит и не меняется.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Линейная апроксимация
СообщениеДобавлено: 22 июн 2012, 01:37 
Не в сети

Зарегистрирован: 20 май 2011, 23:58
Сообщения: 134
Откуда: St.-Petersburg


Последний раз редактировалось aui2002 22 июн 2012, 04:59, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB