技术文档

AT带pWM单片机 带你从软硬件两方面来分析Atmega16单片机

小编 2025-07-12 技术文档 23 0

带你从软硬件两方面来分析Atmega16单片机

1. Atmega16单片机简介

今天我们的主题是单片机,说道单片机你可能最先想到的是51单片机,然后通过外接的数字电路和模拟电路来控制外围的硬件,比如PWM,ADC,I2C等等。那么今天我们所说的Atmega16单片机和51单片机的区别是什么那?其实你把Atmega16单片机当成51单片机来使用即可,只不过是Atmega16单片机的外围接口更丰富,那么它都有什么外设资源那?

ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器,由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达1 MIPS/MHz。ATmega16常用片上资源有定时器、PWM、外部中断、SPI总线、两线串行接口TWI、EEPROM、USART、模拟比较器、ADC转换、IEEE(JTAG)边界扫描等。如何去学习Atmega16单片机那?我们从硬件和软件两方面分析。

2. Atmega16单片机硬件原理图(最小系统)

从上述的最小系统板子上们可以看到它分为如下几个部分:

电源电路:5V电源

复位电路:上电复位(电容),手动按键复位。

晶振电路:Atmega16单片机内部自带RC震荡电路,但是自带的震荡电路不够精确,所以这里就外接了一个8MHZ的晶振。

下载程序接口ISP:ISP串行的下载程序的接口

Atmega16单片机:8位avr单片机。

1. Atmega16单片机编程

AVR单片机的编译软件有GCC AVR和ICC AVR等,通常使用较多的是ICC AVR,也比较好用,本书以ICC AVR6.31版本为例介绍编译软件的使用。启动ICC AVR,界面如下图所示。如何使用avr单片机控制最小系统上的led灯那?代码如下:

AVR ATmega16 流水灯C程序

/**************************************************************************/

#include //包含单片机型号头文件

#include //包含"位"操作头文件

void delay(void) //自定义延时函数

{

unsigned char i,j;

for(i=0;i<255;i++)

for(j=0;j<10;j++)

;

}

void cpu_init(void) //单片机初始化函数

{

PORTA = 0x00; //PA口输出值都定义为0

DDRA = 0x00; //PA口输出允许关

PORTB = 0x00; //PB口输出值都定义为0

DDRB = 0x00; //PB口输出允许关

PORTC = 0x00; //PC口输出值都定义为0

DDRC = 0x00; //PC口输出允许关

PORTD = 0x00; //PD口输出值都定义为0

DDRD = 0x00; //PD口输出允许关

}

void main(void)

{

cpu_init(); //初始化单片机

while(1)

{

PORTA=0X00; /*点亮led灯,由最小系统的外部电路决定单片机输出

低电平时流水灯点亮*/

DDRA=0XFF; /*允许输出,此时PORTA的赋值才有效,这事AVR比51高级的地方*/

//由于其他端口没有接外围设备先不用定义

delay();

DDRA=0X00; //关闭led灯

delay();

}

}

「PWM」干货|详解白光LED的PWM驱动方式

赢一个双肩 背包

有多难?

戳一下试试看!

→_→

长摁识别

白光LED的电学特性具有很强的离散性,而且白光LED是一种同态电光源,是一种半导体照明器件。它具有体积小、机械强度大、功耗低、寿命长,便于调节和控制以及无污染等特征,是一种有极大发展前景的新型光源产品。但由于白光LED正向伏安特性非常陡,为其供电比较困难,白色LED工作电压的较小波动就会导致工作电流的急剧变化,甚至可能烧坏LED。为了保持LED工作电流稳定,保证LED能正常可靠的工作,驱动电路设计至关重要。这里设计一种基于PWM的可调光LED驱动电路,可提供LED所需的电压和电流,且具有色温高、经济实用、寿命长的特点。

1 白光LED的电特性

1.1 LED发光强度与电流的关系

LED器件在极限工作电流范围内发光强度随正向电流的增加而增加,但不同半导体材料制成的LED器件,其发光强度与正向电流的变化关系有所不同。从总体上看,发光强度Ir都是随着正向电流If的增加而增加的。

Ir与If的关系曲线描述为达到所需的发光强度,LED应该用多大的电流来驱动。LED发光强度与正向电流的关系如图l所示。图1中的曲线以红色发光LED为例,当正向电流约40 mA时,红色LED的发光强度几乎不再发生变化。也就是说,只要控制红色LED阵列的正向电流达到一定值,其发光强度也就趋向饱和。

1.2 温度对白光LED正向电流的影响

白光LED的正向电流的大小也随温度的变化而变化的,图2是常用白光LED的允许正向电流随温度的变化曲线。

2 LED的PWM驱动方式

2.1 PWM信号的原理和形成

PWM调光基于人眼对亮度闪烁不够敏感的特性,使负载LED时亮时暗,如果亮暗的频率超过100 Hz,人眼看到的就是平均亮度,而不是LED的闪烁。PWM调光通过调整亮和暗的时间比例实现调整亮度。这种方法通过把可调占空比和固定频率的数字信号加到调整亮和暗时间比例的引脚即可实现调光,但调光的范围取决于器件内部电路软启动或恢复正常工作的速度,因而范围不是很宽。

PWM原理是以一固定直流电压经过以一定频率打开与闭合的开关K,从而控制改变LED上的电压。设当LED接通时的最大电流为Imax。开关开闭周期为T,每次闭合时间为t,则当占空比为D=t/T时,LED的平均电流为:

由(1)式可知,当T不变(即开关的开关频率同定)时,只要改变导通时间t,就可以改变LED两端的平均电流。从而改变LED的亮度。

脉冲调宽信号的形成电路有3种:1)可用电压-脉宽变换器产生,即硬件产生脉宽调制信号;2)由软件定时产生,由定时器定时,定时时间受软件控制,并从脉宽信号的输出口P1.0或其他口输出脉宽可调信号;3)由单片机控制外接定时/计数器(如8253)硬件电路产生脉宽调制信号,只需用两个计数器分别工作于方式l和方式2,通过硬件连接便可以产生脉宽调制信号。其中,第1种是硬件电路实现,电路复杂。第2种使用定时器TO,但由于系统计数器不足,必须扩展。第3种是利用8253,非常方便,而且占用的软件时间少。

Atmega 16单片机带有4通道PWM,而且有快速PWM模式、相位修正PWM模式等多种工作模式。考虑到成本及整个系统的简化,本设计直接利用Atmega 16单片机产生脉宽调制信号。

2.2 PWM驱动白光LED

LED的发光强度基本上正比于通过LED器件的电流,这说明脉冲电流的平均电流与直流电流相同的条件下,LED的发光亮度一样。另外,用高幅值的脉冲电流驱动LED,然后通过调节脉冲的占空比获得较合适的平均电流,这样可以降低功耗。因为当LED工作在脉冲状态时,人眼觉察到的LED亮度值是介于峰值亮度与平均亮度值之间的。因此,脉冲电流驱动LED可比直接恒流驱动的LED更亮,即获得同样的发光亮度,脉冲电流驱动方式比直流电流驱动方式所需要的平均电流值更小。

其次,对于LED,如果采用脉冲电路驱动,其控制部分采用脉宽调制方式,与恒流控制方式相比,控制部分的控制效率会有比较大的提升,另外还可去掉限流电阻或减小其值。因此,从节能的角度出发,采用脉冲电源驱动方式更好。

脉冲驱动方式是利用人眼的视觉惰性,采用重复向LED器件通断供电的方式使之点亮的。但采用这种驱动方式通常需考虑脉冲电流幅值的确定和重复频率的选择。要获得与直流驱动方式相当的发光强度,脉冲驱动电流的平均值Ia应与直流驱动的电流值相同。如图3所示,平均电流是瞬间电流i的时间积分。

对于矩形波,有

式中,Ic为直流驱动电流值,Ia为脉冲驱动电流平均值,IF为脉冲电流幅值,ton/T是占空比。

为了使脉冲驱动方式下的平均电流Ia与直流驱动电流Ic相同,则需使其脉冲电流幅值IF满足

可见脉冲驱动时,脉冲电流的幅值是直流驱动电路的电流幅值的T/ton倍。需注意驱动器件的工作频率,当频率超过一定范同,器件将无法正常工作,因为器件无法正常导通和关断。LED的工作频率是10 MHz到几百MHz范围内。

3 LED照明电路设计

3.1 白光LED供电电源

LM317是可调三端正电压稳压器,输出电压范嗣为1.2~37 V时能提供超过1.5 A的电流。此稳压器易于使用,只通过2个外部电阻设置输出电压。工作时,LM317建立并保持输出与调节端之间1.25 V的标称参考电压(Vref),该参考电压由R1转换为编程电流,该电流经R2到地,如图4所示。

因为此处调节端的电流IADj控制小于100μA,这一误差可忽略。一个白光LED需要3.3 V直流电压,本设计为3个白光LED串联,需LM317输出9.6 V直流电压,由于LED与场效应管串联,故除去场效应管的压降,可得LM317输出的电压约10V。先确定R1的电阻为220Ω,得出电位器R2的电阻值为1.4 kΩ。

3.2 白光LED的驱动电路

本设计是PWM信号经过三极管VQ1的基极连接到P沟道功率MOSFET IRF9540的栅极上。P沟道功率MOSFET的栅极驱动采用简单的NPN三极管驱动放大电路,以改善MOSFET的导通过程,减少驱动电源的功率。当驱动电路直接驱动功率MOSFET时会引起被驱动功率MOSFET的快速开通和关断,这就可能造成被驱动功率MOSFET漏源极间电压的振荡。一则引起射频干扰;二则有可能造成功率MOSFET遭受过高的电压而击穿损坏。为解决这一问题,需在被驱动功率MOSFET的栅极与驱动电路的输出之间串联一只无感电阻R1。当PWM波输出高电平时,三极管VQ1导通,从而使MOSFET的栅极电压低于源极电压,MOSFET的源极和漏极导通,LED点亮;当PWM波输出低电平时,VQ1截止,LED熄灭。当PWM频率超过100 Hz时,人眼可视平均LED的导通和截止时间,产生LED亮度变化的感觉,其亮度与LED导通周期成正比,如图5所示。

4 结束语

白色LED具有寿命长、可低压驱动、安全稳定等优良特性,因而成为极具发展潜力的新型光源,但LED的半导体特性使其供电系统设计比较困难。为了获得较高的发光效率和调光效果,设计了一个PWM驱动的LED照明电路。利用所设计的LED驱动电路不但方便控制LED的亮度,而且与普通的驱动方式相比,可以极大调高色温。

相关问答

atmega16 单片机 输出 pwm 驱动电机?

比如快速PWM方式,定点使用ICP寄存器,这时改变ICP的值,就改变了PWM频率,当然占空比也跟着变化了,需要你重新调整。Atmega16的OC1A和OC1B输出两路PWM的程序,...

单片机 有多少 PWM 输出的引脚 - 懂得

不是哪,PWM简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。能够有PWM输出只是单片机的个别引脚,这些引脚能够配...

如何实现一块 单片机 (机器人),控制4个以上的伺服电机(单独运行)?

要实现单独的4路舵机控制的话,我建议使用具有至少4路PWM的单片机。比如AVR系列的有Atmega128,可同时产生6路12位的PWM。51系列的有STC12C5410AD带4路PWM。具体...

stc15 单片机pwm 工作原理?

STC15W内部集成了一个15位的PWM模块,可以6路独立输出.此外PWM模块每一路都有两个用于控制波形翻转的计数器T1和T2,可以灵活地控制每路PWM的高低电平宽度,...

at 89s51 单片机 内包含多少rom和RAM?

AT89S51是一款8位单片机,它内部包含4KB的ROM和128B的RAM。其中,ROM用于存储程序和数据,而RAM则用于存储程序运行时的临时数据。在使用AT89S51时,您可以将程序...

如何将 单片机 输出的 PWM 控制信号,变成可以带负载的变化的电压?

单片机输出的PWM为控制信号,需要加入控制器件才可以驱动负载单片机输出的PWM驱动能比较弱,不能直接驱动负载,需要三极管、MOS管参与才可以控制负载的功率,比...

树莓派和 单片机 的区别 - 懂得

区别:树莓派只有一个PWM;单片机可以有十几路PWM;树莓派是微型卡片计算机,单片机是单芯片计算机。电脑使用技巧:1、电脑经常会出现“此windows副本不...

怎么用 单片机 的P2口控制步进电机驱动模块?电机控制模块评价...

我们采用AVR的高端单片机ATMEGA128来实现对步进电机的控制,同时采用高性价比的L298驱动芯片来驱动步进电机。这就要藉由碳刷及整流子。故我们使用AT...

51 单片机 怎么控制麦克纳姆轮?

51单片机是利用PWM脉冲信号来驱动麦克纳姆轮进行全方位运行。51单片机是利用PWM脉冲信号来驱动麦克纳姆轮进行全方位运行。

单片机pwm 能获得0电位吗?

应该不可以,零电位就没有Pwm了,因为占空间比是零,就是低电平。应该不可以,零电位就没有Pwm了,因为占空间比是零,就是低电平。

猜你喜欢