Jump to content

    

терморегулятор

Бугагага:

// SMA - Simple Moving Average

// EMA - Exponential Moving Average

// WMA - Weighted Moving Average

// DEMA - Double Exponential Moving Average

// TEMA - Triple Exponential Moving Average

// TRIMA - Triangular Moving Average

// KAMA - Kaufman Adaptive Moving Average

// MAMA - MESA Adaptive Moving Average

// T3 - Triple Exponential Moving Average

А вообще говоря, имея в виду обобщенное среднее, можно этих средних придумать бесконечно много...

A=Sum(a(i)*b(i)/Sum(b(i)) Или интеграл вместо суммы...

Share this post


Link to post
Share on other sites

Усреднение не всегда есть хорошо.

Если есть время( а оно у автора есть) лучше применить вероятностный метод

(не знаю как он называтся по научному)

 

мз массива оцифрованных значенний выбрать наиболее часто встречающееся.

Share this post


Link to post
Share on other sites
мз массива оцифрованных значенний выбрать наиболее часто встречающееся.
Медианная фильтрация?

Share this post


Link to post
Share on other sites
Кстати, EMA эквивалентно установке RC-цепи на входе измерителя.

 

Я уже заметил =).

Share this post


Link to post
Share on other sites

Да нет, похоже не медианная.

Share this post


Link to post
Share on other sites
Да нет, похоже не медианная.
Почему не похоже? Если вашу фразу продолжить

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

Share this post


Link to post
Share on other sites
Усреднение не всегда есть хорошо.

Если есть время( а оно у автора есть) лучше применить вероятностный метод

(не знаю как он называтся по научному)

 

мз массива оцифрованных значенний выбрать наиболее часто встречающееся.

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

Если выборка содержит выбросы (ну, н-р, АЦП не вовремя прочитали), то их, как уже отметил ув. rezident, можно попробовать отрезать медианным фильтром.

Но:

1) нужны ли такие навороты в придумываемой коробочке?

2) готов ли автор (которого пугают греческие буквы:)) лезть в теорию измерений? Там этих буковок...

Share this post


Link to post
Share on other sites
Попробовал сделать осреднение результата АЦП. Примерно так:

[*]АЦП в режиме постоянного преобразования (free run)

[*]По совпадению таймера с OCR0 вызывается прерывание, при помощи которого реализована дин.индикация

[*]В этом же обработчике прерывания:

Блин, всю свадьбу пропустил... Вот мне одно непонятно: как можно так мощно дрыгать ногами в динамич. индикации и не отбрасывать значения АЦП, полученные за период, в котором было переключение ног ?

Я так понимаю, что у нас должно быть прерывание во free run, и прерывание по OCR0, если угодно.

В gcc-шной нотации где-то так:

volatile uint8_t bad_adc; // used as flag
volatile uint8_t ad_cnt;   //counter
volatile uint32_t ad_sum;
volatile uint16_t ad_result;
ISR(SIG_ADC)
{
if(!bad_adc)
{
    ad_sum+=(uint32_t) ADC;
    if(ad_cnt++ == 0) 
     {
       ad_result = (ad_sum >>8) & 1023;
            ad_sum = 0;
     }
}
else
{
   bad_adc = 0;
}
}

ISR(SIG_OUTPUT_COMPARE0)
{
/* здесь динамическая индикация*/
/* и обязательно пометка о плохих измерениях */
bad_adc = 1;
}

Share this post


Link to post
Share on other sites
Вы предлагаете построить гистограмму выборки? Могу предположить, что закон распределения для выборки, не очень искаженной какими-либо неприличными факторами, будет близок к нормальному, и, соответственно, максимум распределения совпадет со средним значением выборки. Если же закон распределения будет даже несимметричен, то имеет смысл сначала проверить смехотехнику и программу, а потом уж пускаться во всякие тяжкие.

Если выборка содержит выбросы (ну, н-р, АЦП не вовремя прочитали), то их, как уже отметил ув. rezident, можно попробовать отрезать медианным фильтром.

Но:

1) нужны ли такие навороты в придумываемой коробочке?

2) готов ли автор (которого пугают греческие буквы:)) лезть в теорию измерений? Там этих буковок...

Автору же точность нужна и пусть тренируется.

Share this post


Link to post
Share on other sites
Блин, всю свадьбу пропустил... Вот мне одно непонятно: как можно так мощно дрыгать ногами в динамич. индикации и не отбрасывать значения АЦП, полученные за период, в котором было переключение ног ?

Я так понимаю, что у нас должно быть прерывание во free run, и прерывание по OCR0, если угодно.

А зачем freerun? Пусть хочется вывести 4 десятичных разряда для индикации с частотой обновления 100 Гц (2.5 мс на разряд). Пусть АЦП стоит в single shot с частотой 100 кГц (135 мкс на преобразование). Вывели все разряды, погасили индикаторы, запустили АЦП (хоть с noise canceller'ом), проснулись и поехали дальше индицировать.

 

Автору же точность нужна и пусть тренируется.

:bb-offtopic: Автору сначала нужно понять, что такое точность. От того, что он выведет на индикатор 10 бит, зафильтрованные по дальше некуда, точность не увеличится.

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

Share this post


Link to post
Share on other sites

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

Кстати, я решил вынести с платы все транзисторы, кнопки... Все это будет на другой плате, куда будет впаян индикатор. Точность в пределе градуса обеспечивается. Все же зависит от типа датчика и опорного напряжения + шумы. :|

Share this post


Link to post
Share on other sites
А зачем freerun? Пусть хочется вывести 4 десятичных разряда для индикации с частотой обновления 100 Гц (2.5 мс на разряд). Пусть АЦП стоит в single shot с частотой 100 кГц (135 мкс на преобразование). Вывели все разряды, погасили индикаторы, запустили АЦП (хоть с noise canceller'ом), проснулись и поехали дальше индицировать.

:bb-offtopic: Автору сначала нужно понять, что такое точность. От того, что он выведет на индикатор 10 бит, зафильтрованные по дальше некуда, точность не увеличится.

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

Согласен

Lost_Viking-у стоило сперва сделать АЦП без динамической индикации, а потом усовершенствовать индикацию.

Я думаю 3 индикатора с 514ИДх - подошло бы.

Share this post


Link to post
Share on other sites

Lost_Viking как устройство, получилось?

Вот _http://www.kosmodrom.com.ua/data/kty.php_ вроде неплохие датчики для вашего устройства, а вот это устройство сделано на этих датчиках _http://www.radiokot.ru/lab/controller/21/ .

Может вам будет интересно. Данный термометр я сейчас изготавливаю, жду когда приедут датчики. Прошу прощения может чего-то недосмотрел где можно посмотреть схему вашего устройства.

Share this post


Link to post
Share on other sites

Всем привет. Не стал создавать новую тему. У меня собственно тоже терморегулятор только на ATtiny88. И проблема с АЦП. Как видно на скриншоте не соответствуют значения. Это идет самое первое измерение после включения. Второе уже показывает правильно. Вопрос почему значение BuffADC после присвоения не равно значению ADC?

 

 

read_adc.jpg

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this