Разработать Програму для контроллера на основе mega avr реализующего: функцию измерителя расчитывающего rms входного сигнала

23 Июл 2020 в 19:42
427 +1
0
Ответы
1

Для реализации программы для контроллера на основе Mega AVR, которая будет осуществлять измерение RMS входного сигнала, можно воспользоваться следующим кодом:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <math.h>
volatile unsigned long accRMS = 0; // переменная для накопления сумм квадратов входного сигнала
volatile unsigned int samples = 0; // переменная для подсчета количества сэмплов
#define SAMPLES 1024 // количество отсчетов для расчета RMS
ISR(ADC_vect)
{
unsigned int val = ADC;
accRMS += ((unsigned long)val * val);
samples++;
if (samples >= SAMPLES)
{
unsigned int rmsVal = sqrt(accRMS / SAMPLES);
// Дальнейшая обработка значения rmsVal
// Например, выводить его на LCD дисплей или передавать по UART
accRMS = 0;
samples = 0;
}
}
void init_ADC()
{
// Настройка АЦП
ADMUX = (0 << REFS1) | (1 << REFS0); // опорное напряжение - AVCC
ADCSRA = (1 << ADEN) | (1 << ADIE) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // включение АЦП, разрешение прерываний, делитель частоты 128
ADCSRB = 0;
ADCSRA |= (1 << ADSC); // запуск преобразования
}
int main(void)
{
init_ADC();
sei(); // разрешение прерываний
while (1)
{
// основной код программы
}
return 0;
}

Этот код инициализирует АЦП контроллера и настраивает его для измерения входного аналогового сигнала. После считывания каждого значения и его квадрата, оно добавляется к накопленной сумме, и в конечном итоге вычисляется RMS значение для последних SAMPLES сэмплов. Полученное значение можно далее использовать в программе по вашему усмотрению.

18 Апр в 10:44
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир