Views: 815
УСРЕДНЕНИЕ – извечная проблема, кода данные на входе пляшут и надо выделить среднее значение.
Классически такая задача решается когда, в каком то массиве накапливаются данные, а потом находиться среднее из полученных данных. Но наличие массива может быть ограниченно размерам памяти микроконтроллера. поэму я в Инете нашел новый принцип и доработал его для этой задачи.
Суть заключается в чем:
Мы получаем данные, затем берем, например 1,5 часть. Из переменной СРЕДНЕЕ мы также вычитаем из нее её 1,5 часть, а затем прибавляем к СРЕДНЕЕ 1,5 измеренного из нового параметра. получается маленький компактный код, который можно применить на 8 битных контроллерах даже где нет операции аппаратного деления, для этого можно использовать функции сдвига.
в СИ он будет выглядеть такт:
//====================================================================================== // subroutine: среднее число // входные данные staroe - старое значение переменой, // novoe - новое измеряемое значение // старое значение уменьшается на коэффициент INTEG // а затем увеличивается на величину нового/INTEG signed int averageg (signed int staroe, signed int novoe) { if(staroe<=INTEG && staroe>0) { staroe=staroe-1; } else staroe=staroe-staroe/INTEG; staroe=staroe-(staroe/INTEG); staroe=staroe+(novoe/INTEG); return staroe; }//
ну не забудь добавить константу (чаще всего константы достаточно)
#define INTEG 10 // глубина интеграции
Вариант вычисление среднего для микроконтроллеров с малым объемов памяти например PIC10.
void averaging (void) { /*уменьшаем базовому уровень на 2^avdepth*/ avtemp=average; // divide(); // average-=avtemp; // /*получаем часть от freq 2^avdepth* и добавляем его к базовому уровню*/ avtemp=freq; // текущая частота divide(); // average+=avtemp; // }
/*деление 2^n*/ void divide (void) { char a; for(a=0;a<avdepth;a++) { avtemp>>=1; } }
где average – средняя величина которая вычисляется от переменной freq. степень усреднения зависит от константы avdepth
чем больше avdepth – тем медленнее будет расти average от изменения freq. Но не стоит её выбирать очень большой в пределе от 2 до 5 вполне приемлемо для многих проектов, где необходимо сгладить, усреднить, какие то данные например, с АЦП или с емкостного сенсора.
Это может быть интересно
Altium Designer my Libraries, Project templates, System settings by Catcatcat V23.09
Views: 502 September 2023 component base update. Release updates V. – 23_09 added new components. Changed the structure of the database. Configuration file name – DXPPreferences1.DXPPrf. Added project CLUBBEST_50_Light. …Kitchen timer with contactless gesture control
Views: 686 Кухонний таймер з безконтактним керуванням жестами дозволяє встановити необхідний період часу для приготування страв, не торкаючись пристрою. Дуже зручно під час приготування їжі, коли руки забрудниться. Усі …CLUBBEST-50-Light
Views: 382 CLUBBEST-50-LIGHT Зміст Короткий опис проекту. 1 Опис схемотехніки візуалізатора музики. 2 Аудіо вхід. 3 MCU. 4 Цифровий вихід. 5 Схема живлення MCU. 6 Складання пристрою. 7 Список …Гаджеты для домашней автоматики – Датчик движения
Views: 1471 Управление светодиодным освещением – Датчик движения. Данный гаджет предназначен для управления освещением рабочих столов (кухонных столов), освещение прихожих, освещение зеркал в прихожих, автоматическое включение света в коридорах. Датчик позволяет …Development of temperature control and management systems
Views: 170 Catcatcat Electronics Пошта для контакту e-mail: catcatcat.electronics@gmail.comNS108-5050-16bit от Newstar
Views: 627 Кто уже использует в своих проектах адресуемые светодиоды хорошо знакомы с такими как WS2812 и им подобные. Эти светодиоды для управления используют однопроводную шину. Из-за этого пропускная способность …Проект с использованием MCC часть 11
Views: 934 Можно несколько облагородить программу вынести наши процедуры обработки нажатия кнопок в отдельные функции. Но вы должны понимать, что это хоть и не значительно, но будет тормозить общую скорость …The art of DJ
Views: 173 The art of DJ. The art of DJ has gained wide popularity. Today, a DJ is not just someone whose task is to mix tracks; a DJ is …Проект с использованием MCC часть 12-2
Views: 1125 Настало время для изучения шины I2C. Изучать будем на примере работы с индикатором RET012864E. Что изменили со старой схемы: В прошлой теме я затупил и не добавил подтягивающие резисторы …Гаджеты для домашней автоматики – Датчик приближения
Views: 2129 Управление светодиодным освещением – Датчик приближения. Данный гаджет предназначен для управления внутренним освещением мебели. Датчик позволяет определить закрытие или открытие дверцы или ящика и при этом включать или …