在本项目中,我们将使用ATmega32A的功能之一来调整1瓦LED的亮度。用于调整LED速度的方法是PWM(脉冲宽度调制)。该AVR单片机PWM教程详细介绍了PWM的概念和PWM的生成(您也可以检查此简单的PWM发生器电路)。考虑一个如图所示的简单电路。
现在,如果上图中的开关在一段时间内连续闭合,则灯泡将在这段时间内连续打开。如果开关在10ms的周期内闭合8ms并断开2ms,则灯泡仅在8ms的时间内打开。现在,平均终端在10ms的时间内=接通时间/(接通时间+断开时间),这称为占空比,为80%(8 /(8 + 2)),因此输出电压将为电池电压的80%。
在第二种情况下,开关在10ms的时间内闭合5ms,然后断开5ms,因此输出端的平均端电压将为电池电压的50%。假设电池电压为5V,占空比为50%,则平均端子电压为2.5V。
在第三种情况下,占空比为20%,平均端子电压为电池电压的20%。
在ATMEGA32A中,我们有四个PWM通道,分别为OC0,OC1A,OC1B和OC2。在这里,我们将使用OC0 PWM通道来改变LED的亮度。
所需组件
硬件:
ATmega32微控制器
电源(5v)
AVR-ISP编程器
100uF电容器,
1瓦LED
TIP127晶体管
按钮(2个)
100nF(104)电容器(2个),
100Ω和1kΩ电阻器(2个)。
软件:
爱特梅尔工作室6.1
Progisp或闪光魔术
电路图和工作说明
上图显示了带有AVR微控制器的LED调光器的电路图(您也可以检查此简单的LED调光器电路)。
在ATmega中,对于四个PWM通道,我们指定了四个引脚。我们只能在这些引脚上获取PWM输出。由于我们使用PWM0我们应该OC0引脚(PORTB 3采取PWM信号RD PIN)。如图所示,我们将晶体管的基极连接到OC0引脚以驱动电源LED。这里的另一件事是四个PWM通道,两个是8位PWM通道。我们将在这里使用8位PWM通道。
每个按钮上均连接有一个电容器,以避免弹跳。每当按下按钮时,引脚上都会有一些噪音。尽管此噪声在毫秒内稳定下来。对于控制器,稳定之前的尖峰充当触发器。为了简化程序,可以通过软件或硬件消除此影响。我们通过添加去抖电容来使用硬件方法。
电容器消除了按钮弹跳的影响。
在ATMEGA中,有两种生成PWM的方法,它们是:
1.相位校正PWM
2.快速PWM
在这里,我们将使一切保持简单,因此,我们将使用FAST PWM方法生成PWM信号。
首先选择PWM的频率,这通常取决于应用,对于LED,任何大于50Hz的频率都可以。因此,我们选择计数器时钟1MHZ。因此,我们没有选择预分频器。预分频器是一个选择得较小的计数器时钟的数字。例如,如果振荡器时钟为8Mhz,我们可以选择预分频器“ 8”来获得1MHz的时钟作为计数器。根据频率选择预分频器。如果我们想要更多的时间周期脉冲,我们必须选择更高的预分频器。
现在要从ATMEGA中获得50Hz时钟的FAST PWM,我们需要启用“ TCCR0 ”寄存器中的相应位。这是我们唯一需要获得8位FAST PWM的寄存器。
这里,
1. CS00,CS01,CS02(黄色)—选择预分频器以选择计数器时钟。下表显示了适用的预分频器表。因此,对于预分频(振荡器时钟=计数器时钟)。
因此CS00 = 1,其他两位为零。
2.根据下表,更改了WGM01和WGM00以选择波形生成模式,以实现快速PWM。我们有WGM00 = 1和WGM01 = 1;
3.现在我们知道PWM是具有不同占空比或不同打开/关闭时间的信号。到目前为止,我们已经选择了PWM的频率和类型。该项目的主题位于这一部分。为了获得不同的占空比,我们将选择一个介于0和255之间的值(由于8位,因此为2 ^ 8)。假设我们选择一个值180,因为计数器从0开始计数并达到值180,所以可能会触发输出响应。该触发可以是反相的或非反相的。也就是说,可以告诉输出在达到计数时拉高,或者可以告诉输出在达到计数时拉低。
通过CM00和CM01位选择上拉或下拉。
如表所示,在比较时输出为高电平,输出将保持高电平直到最大值(如下图所示)。为此,我们必须选择反相模式,因此COM00 = 1; COM01 = 1。
如下图所示,OCR0(输出比较寄存器0)是存储用户选择值的字节。因此,如果我们更改OCR0 = 180,则当计数器从0达到180时,控制器将触发更改(高电平)。
现在为了改变LED的亮度,我们必须改变PWM信号的占空比。为了更改占空比,我们需要更改OCR0值。当我们更改OCR0的值时,计数器需要花费不同的时间才能到达OCR0。因此,控制器在不同时间将输出拉高。
因此,对于不同占空比的PWM,我们需要更改OCR0值。
在电路中,我们有两个按钮。一个按钮用于增加OCR0值,从而增加PWM信号的占空比,另一按钮用于减小OCR0值,因此增加PWM信号的占空比。