27.07.2010, 03:46 | #41 (permalink) |
Member
Регистрация: 23.11.2008
Сообщений: 1,084
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 460
|
Какой именно уход в минус? Я не могу представить тут такую ситуацию. Переполнение да, тогда будет держать максимально возможное значение. При минусе скорее всего будет сбрасываться в ноль, но это по месту надо смотреть. Возможно там что-то другое будет предпочтительнее... |
27.07.2010, 04:19 | #42 (permalink) |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
У меня есть предложение по четырем значениям вычислять скорость и ускорение.
Тогда регулятор будет работать еще точнее. Поясню - можно будет с большой точностью узнать, что намеряет АЦП на следующем отсчете, и выдать соответствующую поправку. |
27.07.2010, 11:10 | #43 (permalink) |
Member
Регистрация: 23.11.2008
Сообщений: 1,084
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 460
|
По скорости уже реализовано. По ускорению думаю лишнее. Точность от этого только пострадает. Там ведь шум будет. Каждый результат будет отклонятся фиг знает куда и фиг знает насколько от реальной величины. Этому мудрёному алгоритму такое может не понравится, и недостатков будет больше чем преимуществ...
Но на будущее, как именно предлагаешь организовать анализ ускорения? Опиши алгоритм. Вот есть число, и есть несколько предыдущих чисел. Нужно получить число уже с учётом всех поправок, при этом не допустить ошибок переполнения, минуса и т.п. Как это реализуется? |
27.07.2010, 14:42 | #44 (permalink) |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
Что касается погрешностей - чем больше точек известно, тем меньше погрешность измерения влияет на результат.
Сначала несколько комментариев по тому алгоритму, который уже есть. Обозначим три последовательных измерения буквами A,B,С. Примененный алгоритм выглядит как C=2B-A. (Чтобы узнать будущее значение, удваиваем текущее и вычитаем предыдущее). Есть вот такая формула (A-2B+C)/h=U``. Эта формула выражает вторую производную функции во второй точке(в этой точке мы получаем значение B). Из нее как раз и получается имеющийся алгоритм: если положить, что вторая производная равна 0, то как раз и получается С=2B-A. То есть данный алгоритм будет хорошо работать при линейном характере изменения функции U. Когда в нем будет уход в минус? При резком броске вниз, т.е когда A>>B, получим уход. Теперь рассмотрим такую задачу: есть несколько семплов некой величины, нужно узнать последующие. Задача носит название "задача об экстраполяции функции". Вкратце, идея состоит в том, чтобы по известным точкам построить некую функцию, а затем вычислить ее значение в неизвестной точке. Хорошо эта задача решается, если приблизительно известен характер изменения функции, или ее производная. В простом случае, составляется интерполяционный полином (по четырем - пяти точкам). А затем по этому полиному вычисляется значение в нужной точке. По поводу вычислительного процесса - если обеспечивается запас по точности и известен интервал входных данных, всегда можно гарантировать отсутствие переполнений. При необходимости можно составить детальный алгоритм. |
28.07.2010, 00:42 | #45 (permalink) |
Member
Регистрация: 23.11.2008
Сообщений: 1,084
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 460
|
Думаю всё это лишнее. Одна только операция деления жрёт сотни тактов, за более сложные алгоритмы уже молчу. Хватит там и примитива. Линейные системы вообще без этих "гаданий" отлично работают и никого своими бросками на динамических нагрузках не беспокоят. А у меня вообще нагрузка почти статична (температурный дрейф и всё)...
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
14.01.2015, 17:17 | #47 (permalink) |
Member
Регистрация: 15.12.2011
Сообщений: 97
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 24
|
Всем Привет!, Собираю "MIDI pedal switch controller" на PIC16F877 http://www.electronics.dit.ie/staff....dal.htm
http://s014.radikal.ru/i329/1501/d4/7f3fb60ef405.png фото 1 (прошивка .ASM в архиве. "1") В схеме есть только MIDI OUT, но нет MIDI IN, а он нужен... Но есть и другая схема "MIDI channel changer" , то-же на PIC16F877 находящаяся на этом-же сайте http://www.electronics.dit.ie/staff....ger.htm http://s017.radikal.ru/i430/1501/23/e372e27629dc.png фото 2 (прошивка .ASM в архиве. "2") В ней есть MIDI IN Можно ли из второго кода прошивки вырезать кусок кода (касаемо MIDI IN) и вставить его в первый код прошивки???? Т.е получить "MIDI PEDAL" с OUT и IN... Схема будет иметь такой вид (MIDI IN к 26 ноге МК) http://s50.radikal.ru/i130/1501/de/408b0012c9d0.png фото 3 помогите пожалуйста.... Архив .rar с прошивкой прикрепил |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|