Перейти к содержанию
    

можешь хотя бы примерно рассказать про данный метод? или, хотя бы, алгоритм если есть.

Метод - просто какой-либо НЧ фильтр в цифре.

Простейший НЧ фильтр 1-го порядка: Yi = a * Yi-1 + b * Xi, a+b = 1

Т.е.

Y = a * Y + b * X;

Для целочисленной арифметики удобно делать a=c/2^N, b=(2^N-c)/2^N.

Чтобы не набегала погрешность при обработке, разрядность Y должна быть не менее (разрядность X) + N.

 

Найдите что-нибудь вроде "Цифровые фильтры" Р. Хемминга - там все доступно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как я понял - это просто среднее какое-то значение. блин, и там погрешность, и тут ...

 

Найдите что-нибудь вроде "Цифровые фильтры" Р. Хемминга - там все доступно.

:07: :wacko:

:help: я умер от этой книги. ничего не понял. мне проще стабилизировать опорное напряжение и питание, чем разобраться в этих греческих символах

Нашел вот что.Я смотрю там через операционник подают измеряемое напряжение. Только я не понял зачем там обратная связь в операционнике?

Изменено пользователем Lost_Viking

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как я понял - это просто среднее какое-то значение. блин, и там погрешность, и тут ...

Вряд ли погрешность обработки превысит погрешность АЦП АВР :).

:help: я умер от этой книги. ничего не понял. мне проще стабилизировать опорное напряжение и питание, чем разобраться в этих греческих символах

u16_t Yavg;

for(;;)
{
   Yavg -= Yavg/256;
   Yavg += ADCH;
}

Запуск и готовность АЦП за Вами.

Утверждается, что в старшем байте Yavg получим фильтр НЧ с частотой среза = частоте запуска АЦП/256 с погрешностью обработки <0.5 LSB, по АФЧХ эквивалентный RC цепочке с такой же частотой среза. Почему? Хемминг уже рассказал, у меня лучше не получится :).

Нашел вот что.Я смотрю там через операционник подают измеряемое напряжение. Только я не понял зачем там обратная связь в операционнике?

Операционник включен повторителем и согласует входной делитель со входом АЦП. Использование в нем LM358 и заявление "3. Входное напряжение – 0..100В" оставим на совести автора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Операционник включен повторителем и согласует входной делитель со входом АЦП. Использование в нем LM358 и заявление "3. Входное напряжение – 0..100В" оставим на совести автора.

:lol: там и на 1000 вольт есть, если поищешь.

 

Короче, вот мои соображения:

  1. на вход АЦП повесить ФНЧ из RC цепочки с частотой среза примерно 50Гц.
  2. использовать внешний ИОН на каком-либо стабилизаторе
  3. использовать КР514ИД2 по совету kipmaster'а
  4. наконец перенести все с макетной платы на печатку, предварительно подумав о развязке земли
  5. если все это не поможет, то использовать опцию "подавитель шумов"
  6. если и это не поможет, то использовать цифровой фильтр
подскажите пожалуйста как грамотно отделить питание аналоговой части от цифровой?
Изменено пользователем Lost_Viking

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:lol: там и на 1000 вольт есть, если поищешь.

 

Короче, вот мои соображения:

  1. на вход АЦП повесить ФНЧ из RC цепочки с частотой среза примерно 50Гц.
  2. использовать внешний ИОН на каком-либо стабилизаторе
  3. использовать КР514ИД2 по совету kipmaster'а
  4. наконец перенести все с макетной платы на печатку, предварительно подумав о развязке земли
  5. если все это не поможет, то использовать опцию "подавитель шумов"
  6. если и это не поможет, то использовать цифровой фильтр
подскажите пожалуйста как грамотно отделить питание аналоговой части от цифровой?

Через LC фильтр, землю цифровую и аналоговую соединить в одной точке, допустим на конденсаторе фильтра после выпрямителя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:lol: там и на 1000 вольт есть, если поищешь.

Проблема не верхнем пределе, а в нижнем. LM358 не является ОУ с диапазоном rail-to-rail ни по входу, ни по выходу.

[*]использовать КР514ИД2 по совету kipmaster'а

имхо, при разумной смехотехнике и трассировке достаточно отключать индикаторы на время преобразования АЦП.

[*]если все это не поможет, то использовать опцию "подавитель шумов"

Вы собираетесь биться за 9 честный бит? А "внешний ИОН на каком-либо стабилизаторе" у Вас какую точность опоры обеспечит? А где брать в розницу резисторы 0.25% Вы уже знаете?

Или это задача для души? Тогда все-таки начните с теории.

[*]если и это не поможет, то использовать цифровой фильтр

Не поможет от чего? От мельтешения младшего разряда на индикаторе? Да тупо пропустите сигнал с АЦП через цифровой ФНЧ с частотой среза в 0.5 Гц - будет мельтешить не чаще раза в секунду. Только точности это не добавит, хотя и не убавит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Метод - просто какой-либо НЧ фильтр в цифре.

Простейший НЧ фильтр 1-го порядка: Yi = a * Yi-1 + b * Xi, a+b = 1

Т.е.

Y = a * Y + b * X;

Для целочисленной арифметики удобно делать a=c/2^N, b=(2^N-c)/2^N.

что такое a и b? для чего они нужны?

как я понял - это Взвешенное скользящее среднее (WMA), взято от сюда

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что такое a и b? для чего они нужны?

как я понял - это Взвешенное скользящее среднее (WMA), взято от сюда

Нет, это Экспоненциальное скользящее среднее (EMA) Yi = Yi-1 + A*(Xi - Yi-1).

С помощью несложных преобразований можно показать, что a = 1 - A, b = A.

оттуда же

В случае EMA, коэффициент A - параметр фильтра, определяющий степень сглаживания. Чем он меньше, тем сильнее будет сглаживаться входной временной ряд. При A=0 фильтр перестает реагировать на изменения входного ряда, а при A=1 он будет повторять входной временной ряд.

Попробуйте смоделировать (хоть в ёкселе) реакцию фильтра на единичный скачок (x=0 при i<0, x=1 при i>=0), поиграйтесь с A, и все станет просто и понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да тупо пропустите сигнал с АЦП через цифровой ФНЧ с частотой среза в 0.5 Гц - будет мельтешить не чаще раза в секунду. Только точности это не добавит, хотя и не убавит.
Извиняюсь, что вмешиваюсь, но мельтешение на индикаторе убирается уменьшением частоты вывода на индикацию. Я считаю, что чаще чем 3 раза в секунду обновлять показания вообще нет смысла. Это связано с инерционностью человеческого мозга при обработке визуальной информации. В большинстве измерительных приборов период обновления показаний - 1 секунда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может даласовские датчики поставить и не мучиться? +/-1оС точность - лечится калибровкой, дискретность - где-то полградуса...

Хотя, если хочется повозиться с АЦП, то флаг в руки...

post-33646-1217588286.png

Опора не оказывает влияния на результат (только нестабильность резисторов)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может даласовские датчики поставить и не мучиться? +/-1оС точность - лечится калибровкой, дискретность - где-то полградуса...

Хотя, если хочется повозиться с АЦП, то флаг в руки...

ДАЛАСОВСКИЕ? DS которые? Они у них диапозон до 120градусов. Мне нужно 160 градусов. У меня такой даласовский лежит уже, купил не прочитав даташит.

post-33646-1217588286.png

Опора не оказывает влияния на результат (только нестабильность резисторов)

 

Как это опора не оказывает влияние на результат? :07: Ведь если Uоп = 5В, а Uвх = 2.5В, то 10битный ADC выдаст 512. А если опора 10В, то выдаст 256.

 

Заметил вот что: записал в ADMUX:

REFS1    REFS0    ADLAR    MUX4    MUX3    MUX2    MUX1    MUX0
0    0    1    0    0    0    0    0

Циферки перестали бегать, а АЦП все еще мерял что-то. Короче, получилось тоже самое, что и с внутренним ИОН, но только стабильнее. На AREF у меня всего лишь кондер висит, и никакого опорного напряжения не подводится.

 

Объясните мне в чем секрет? Я в чудеса не верю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как это опора не оказывает влияние на результат? :07: Ведь если Uоп = 5В, а Uвх = 2.5В, то 10битный ADC выдаст 512. А если опора 10В, то выдаст 256.

При таком включении Rt = Nadc * Rоп / (Nadc_max - Nadc),

где

Nadc - результат преобразования АЦП

Nadc_max - максимальное значение АЦП (0x3ff для однополярного 10-битного АЦП)

Заметил вот что: записал в ADMUX:

REFS1    REFS0    ADLAR    MUX4    MUX3    MUX2    MUX1    MUX0
0    0    1    0    0    0    0    0

Циферки перестали бегать, а АЦП все еще мерял что-то. Короче, получилось тоже самое, что и с внутренним ИОН, но только стабильнее. На AREF у меня всего лишь кондер висит, и никакого опорного напряжения не подводится.

 

Объясните мне в чем секрет? Я в чудеса не верю

Вы забыли еще помолиться и свечку затеплить - без этого цифирки все равно иногда будут бегать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как это опора не оказывает влияние на результат? :07: Ведь если Uоп = 5В, а Uвх = 2.5В, то 10битный ADC выдаст 512. А если опора 10В, то выдаст 256.
Это называется ратиометрическим способом измерения, от слова ratio - отношение. На вход опоры можно подавать Vcc напрямую, если конечно это допустимо. Либо можно поставить буфер и вход опоры и делитель запитывать от него (т.к. ток по входу опоры в несколько раз выше, чем по входу АЦП). Либо использовать внутреннюю опору и выход опоры использовать для запитки делителя Rоп-Rt. В общем когда резистивный делитель запитывается от того же напряжения что и опора, то через оба резистора протекает один и тот же ток (соединение-то последовательное). Поэтому результат преобразования уже не зависит от величины напряжения, а только от отношения величин резисторов, ну и соответственно от временнОй и температурной стабильности опорного резистора. Результат преобразования АЦП является функцией отношения этих резисторов. Следует это отсюда

Ut=Rt/(Rt+Rоп)*Uref

Поскольку Ut мы получаем в виде результата преобразования АЦП (кодАЦП), а Uref соответствует максимальному коду АЦП = 1023, то получаем что

кодАЦП=Rt/(Rt+Rоп)*1023.

После простейших метематических преобразования получаем формулу

Rt=Rоп*кодАЦП/(1023-кодАЦП).

Где величина опоры никак не участвует, а играет роль только сопротивление опорного резистора Rоп. Конечно же превышать максимально допустимое для АЦП и опоры напряжение нельзя. Так что про "если опора 10В" это вы погорячились :)

 

Update. Кстати при вычислениях в последней формуле существует вероятная ситуация исключения - деление на нуль, когда кодАЦП=1023. На практике это означает, что Rt>>Rоп (Rt много больше, на несколько порядков больше Rоп) или просто обрыв в цепи измеряемого сопротивления.

Изменено пользователем rezident

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...