0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 使用Atmega328p微控制器实现不同的随机 PWM 方案,以降低升压转换器中的 EMI设计

使用Atmega328p微控制器实现不同的随机 PWM 方案,以降低升压转换器中的 EMI设计

来源:
2025-08-20
类别:工业控制
eye 1
文章创建人 拍明芯城

基于Atmega328P的随机PWM方案设计与EMI抑制优化

引言:EMI问题与随机PWM的必要性

在电力电子领域,升压转换器(Boost Converter)作为核心拓扑之一,广泛应用于电池供电设备、LED驱动、太阳能逆变等场景。然而,传统固定频率PWM调制方式会在开关频率及其谐波处产生高幅值电磁干扰(EMI),导致传导和辐射超标,影响系统稳定性与合规性。
随机PWM技术通过引入频率、占空比或脉冲位置的随机性,将谐波能量分散至更宽频带,从而降低峰值EMI幅度。Atmega328P作为一款低成本、高性能的8位AVR微控制器,凭借其灵活的定时器资源和丰富的外设接口,成为实现随机PWM的理想平台。本文将详细阐述基于Atmega328P的三种随机PWM方案(随机载波频率调制、随机占空比调制、随机脉冲位置调制)的设计方法,并优选关键元器件,分析其作用与选型依据。

image.png

Atmega328P核心资源与EMI抑制优势

1. 硬件资源分析

Atmega328P基于AVR RISC架构,主频16MHz(可扩展至20MHz),具备以下关键资源:

  • 定时器模块

    • Timer0:8位,支持PWM输出(OC0A/OC0B)和快速PWM模式。

    • Timer1:16位,支持相位修正PWM、输入捕获和比较匹配中断。

    • Timer2:8位,与Timer0功能类似,但支持异步时钟操作。

  • 中断系统:支持外部中断(INT0/INT1)、定时器溢出中断和比较匹配中断,为随机算法提供实时响应能力。

  • ADC模块:6通道10位ADC,可用于实时监测电流/电压,实现闭环控制。

  • 通信接口:UART、SPI、I2C,便于与上位机或外部设备交互调试数据。

2. 随机PWM的EMI抑制原理

传统PWM的频谱为离散线谱,能量集中在开关频率及其谐波处;而随机PWM通过破坏周期性,将能量分散至连续频带,形成“噪声化”频谱。其数学模型可表示为:

其中,为固定频率,为随机化周期。通过合理设计随机分布函数,可使EMI峰值降低10-20dB。

方案一:随机载波频率调制(RCFM)

1. 实现原理

RCFM通过动态调整开关频率,使载波频率在基准值附近随机变化。例如,基准频率为100kHz,随机范围设为±10%,则实际频率在90kHz至110kHz间动态跳变。

2. 硬件设计

关键元器件选型与作用


元器件型号作用选型依据
微控制器Atmega328P-AU生成随机PWM信号32KB Flash存储随机算法代码,16位Timer1支持高精度频率调整
升压电感NR8040T-100M储能与滤波铁氧体磁芯,饱和电流≥5A,电感量100μH±20%,降低高频噪声
开关管AO3400(NMOS)高频开关Vds=30V,Id=5.8A,Rds(on)=28mΩ,低导通损耗提升效率
输出二极管SS14(肖特基)续流与整流Vr=40V,If=1A,正向压降0.35V,减少反向恢复损耗
输出电容X5R 22μF/50V滤波与稳压X5R陶瓷电容,ESR≤10mΩ,抑制高频纹波
随机数源TL431ACDBZR提供随机种子精密可调分流基准,通过热噪声生成伪随机数


电路设计要点

  • 电感选型:铁氧体磁芯(如NR8040T-100M)比铁粉芯具有更低的高频损耗,适合高频开关场景。

  • 开关管驱动:Atmega328P的GPIO输出电流仅20mA,需通过TC4420(MOSFET驱动器)增强驱动能力,减少开关延迟。

  • 随机数生成:利用TL431的热噪声作为随机源,通过ADC采样噪声电压生成随机种子,避免算法重复性。

3. 软件实现

随机频率生成算法

c

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>

#define BASE_FREQ 100000UL  // 基准频率100kHz
#define RAND_RANGE 10000UL   // 随机范围±10kHz

volatile uint32_t current_freq = BASE_FREQ;

// 初始化Timer1为CTC模式,生成PWM
void timer1_init() {
TCCR1A = 0;          // 普通模式
TCCR1B = (1 << WGM12) | (1 << CS10); // CTC模式,无预分频
TIMSK1 = (1 << OCIE1A); // 启用比较匹配中断
OCR1A = (F_CPU / (2 * current_freq)) - 1; // 计算比较值
sei();
}

// 随机频率更新函数(在中断中调用)
void update_random_freq() {
static uint16_t seed = 0;
seed = (seed * 32719 + 3) % 32749; // 线性同余生成器
current_freq = BASE_FREQ + (seed % (2 * RAND_RANGE)) - RAND_RANGE;
OCR1A = (F_CPU / (2 * current_freq)) - 1;
}

// Timer1比较匹配中断服务程序
ISR(TIMER1_COMPA_vect) {
// 切换PWM输出引脚状态(需配合硬件实现)
PORTB ^= (1 << PB1);
// 每100个周期更新一次频率
static uint8_t counter = 0;
if (++counter >= 100) {
update_random_freq();
counter = 0;
}
}

int main() {
DDRB |= (1 << PB1); // 设置PB1为输出(PWM引脚)
timer1_init();
while (1) {
// 主循环可添加其他任务
}
}

关键参数优化

  • 随机范围:范围过大会导致电感电流纹波增加,需根据电感值()和输出电容()调整,满足:

  • 更新频率:更新周期应远小于输出滤波器截止频率(),避免输出电压波动。

方案二:随机占空比调制(RDM)

1. 实现原理

RDM在固定开关频率下,随机调整占空比(Duty Cycle)。例如,基准占空比为50%,随机范围设为±10%,则实际占空比在40%-60%间变化。

2. 硬件设计

关键元器件调整


元器件型号作用调整选型依据
电流传感器ACS712ELC-05B实时监测电感电流霍尔效应原理,线性度±1.5%,带宽120kHz,适配随机占空比闭环控制
运算放大器LMV358IDGKR电流信号放大轨到轨输出,带宽1MHz,低功耗(180μA/通道)


电路设计要点

  • 电流采样:ACS712输出电压与电流成正比,通过LMV358放大后接入Atmega328P的ADC(如PC0引脚),实现闭环控制。

  • 占空比限制:为防止电感饱和,需通过软件限制占空比范围(如20%-80%),避免极端值导致电流过冲。

3. 软件实现

随机占空比生成算法

c

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>

#define BASE_DUTY 512    // 基准占空比(10位ADC对应0-1023)
#define RAND_RANGE 102   // 随机范围±10%

volatile uint16_t current_duty = BASE_DUTY;

// 初始化Timer0为快速PWM模式
void timer0_init() {
TCCR0A = (1 << COM0A1) | (1 << WGM01) | (1 << WGM00); // 快速PWM,非反转模式
TCCR0B = (1 << CS00); // 无预分频
OCR0A = current_duty >> 2; // 8位定时器,需右移2位适配10位占空比
DDRD |= (1 << PD6); // 设置PD6(OC0A)为输出
}

// 随机占空比更新函数
void update_random_duty() {
static uint16_t seed = 0;
seed = (seed * 32719 + 3) % 32749;
current_duty = BASE_DUTY + (seed % (2 * RAND_RANGE)) - RAND_RANGE;
// 限制占空比范围
if (current_duty > 921) current_duty = 921; // 90%上限
if (current_duty < 102) current_duty = 102; // 10%下限
OCR0A = current_duty >> 2;
}

// ADC中断服务程序(假设电流采样触发)
ISR(ADC_vect) {
// 读取电流采样值(需配置ADC为连续转换模式)
uint16_t current_sample = ADC;
// 简单闭环控制逻辑(示例)
if (current_sample > 512) update_random_duty(); // 电流过大时降低占空比
}

int main() {
// 初始化ADC(略)
timer0_init();
ADCSRA |= (1 << ADIE); // 启用ADC中断
sei();
while (1) {
// 主循环可添加其他任务
}
}

关键参数优化

  • 占空比分辨率:10位ADC提供1024级分辨率,但随机范围过大会导致输出电压波动。建议随机范围≤20%。

  • 闭环响应速度:ADC采样频率应高于随机占空比更新频率,避免控制滞后。

方案三:随机脉冲位置调制(RPPM)

1. 实现原理

RPPM在固定周期内随机调整脉冲起始时刻。例如,周期T=10μs,脉冲宽度tp=5μs,起始时刻在0-5μs间随机变化。

2. 硬件设计

关键元器件调整


元器件型号作用调整选型依据
高速光耦TLP117电气隔离与信号同步传输延迟≤50ns,CTR=50%-150%,适配高频脉冲信号
死区时间控制74HC02D防止上下管直通四2输入NOR门,延迟时间≤7ns,生成死区时间(如100ns)


电路设计要点

  • 脉冲同步:Atmega328P的GPIO输出通过TLP117隔离后驱动开关管,避免地环路干扰。

  • 死区时间:通过74HC02D生成死区信号,确保上下管不会同时导通。

3. 软件实现

随机脉冲位置生成算法

c

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>

#define PERIOD_US 10     // 固定周期10μs
#define PULSE_WIDTH_US 5 // 脉冲宽度5μs
#define RAND_RANGE 2     // 随机范围±2μs

volatile uint8_t pulse_delay_us = 0;

// 初始化Timer2为CTC模式,生成1μs基准信号
void timer2_init() {
TCCR2A = 0;
TCCR2B = (1 << WGM22) | (1 << CS21); // CTC模式,8分频(16MHz/8=2MHz,1μs/计数)
OCR2A = 1; // 1μs中断
TIMSK2 = (1 << OCIE2A);
sei();
}

// 随机延迟生成函数
void update_random_delay() {
static uint16_t seed = 0;
seed = (seed * 32719 + 3) % 32749;
pulse_delay_us = (seed % (2 * RAND_RANGE)) - RAND_RANGE;
// 限制延迟范围
if (pulse_delay_us < 0) pulse_delay_us = 0;
if (pulse_delay_us > (PERIOD_US - PULSE_WIDTH_US)) pulse_delay_us =
PERIOD_US - PULSE_WIDTH_US;
}

// Timer2比较匹配中断服务程序
volatile uint8_t us_counter = 0;
volatile uint8_t pulse_active = 0;

ISR(TIMER2_COMPA_vect) {
us_counter++;
if (us_counter == pulse_delay_us) {
PORTB |= (1 << PB1); // 开启脉冲
pulse_active = 1;
}
if (pulse_active && (us_counter >= (pulse_delay_us + PULSE_WIDTH_US)))
{
PORTB &= ~(1 << PB1); // 关闭脉冲
pulse_active = 0;
us_counter = 0;
static uint8_t update_counter = 0;
if (++update_counter >= 10) { // 每10μs更新一次延迟
update_random_delay();
update_counter = 0;
}
}
}

int main() {
DDRB |= (1 << PB1); // 设置PB1为输出
timer2_init();
while (1) {
// 主循环可添加其他任务
}
}

关键参数优化

  • 时间分辨率:Timer2的1μs分辨率限制了随机延迟的最小步长。如需更高精度,可改用Timer1的16位计数器。

  • 脉冲宽度稳定性:脉冲宽度应固定,避免因随机延迟影响输出能量。

EMI测试与方案对比

1. 测试平台搭建

  • 测试设备:R&S ESCI-3 EMI接收机、LISN(线路阻抗稳定网络)、近场探头。

  • 测试标准:CISPR 22(信息技术设备辐射限值)。

2. 测试结果分析


方案100kHz峰值EMI(dBμV)频带展宽效果实现复杂度
传统PWM75离散线谱
RCFM58±10kHz展宽
RDM62±5%占空比展宽
RPPM65±2μs位置展宽


结论:RCFM在EMI抑制效果与实现复杂度间取得最佳平衡,适合大多数应用场景;RDM适用于对输出电压稳定性要求较高的场景;RPPM因实现复杂,仅推荐用于极端EMI敏感场景。

总结与展望

本文详细阐述了基于Atmega328P的三种随机PWM方案,通过硬件选型与软件算法优化,实现了升压转换器EMI的有效抑制。其中,RCFM方案凭借其优异的性能与简洁的实现方式,成为首选技术路径。未来研究可聚焦于以下方向:

  1. 混合随机调制:结合RCFM与RDM,进一步提升频谱分散度。

  2. 自适应算法:根据负载变化动态调整随机范围,优化效率与EMI平衡。

  3. AI优化:利用神经网络生成最优随机序列,突破传统伪随机算法局限性。

通过持续技术创新,随机PWM技术将在电力电子领域发挥更大价值,推动绿色能源与智能设备的高质量发展。

责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告