如何使用Atmega32为正弦波逆变器生成PWM

时间:2014-03-05 10:08:51

标签: microcontroller atmega

我目前正在进行正弦波逆变器项目,我需要使用微控制器生成PWM,为此我选择了atmega32,有人可以指导我从哪里开始以及如何使用pwm生成代码来编写代码atmega32,任何回复都将不胜感激,谢谢

2 个答案:

答案 0 :(得分:1)

您需要计算出一系列PWM值,您将定期更改这些值,当使用某些硬件进行过滤时,将为您提供正弦波。

您可以通过创建一个电子表格来完成此操作,该电子表格包含0-359列(以1为单位),然后您可以将其转换为每个角度的正弦值。如果您将其乘以0-2 ^ 16的值(并使用16位定时器的定时器1),您将获得360个不同的PWM值。

然后,您可以使用这些值,例如,更改每个定时器周期的PWM值。您可以让每个PWM值重复几次,并观察正弦波变化的频率。在更改PWM值之前,您只能使用所有其他PWM值,并观察频率加倍。如果更改乘数,您将看到正弦波输出的大小发生变化。

当我谈到PWM值时,我说的是改变PWM输出的标记与空间比的值。使用更先进的处理器(如STM32),您可以在每次PWM周期过后自动执行此操作。使用Mega32,您必须手动执行此操作。 (即在周期结束时定时器中断。)

您需要将PWM的输出分配给一个引脚,然后您可以将RC滤波器连接到该引脚。如果您在该输出处查看范围,您将看到正弦波。 10k / 100n作为启动过滤器非常精细。 (10k与输出引脚串联,100n接地,在RC结上测量)。

对于什么类型的PWM,有一个游戏并说服自己什么是最好的。做一个简单的计数到x,然后变高,然后保持高,直到计数器达到0xFFFF类型,然后尝试居中对齐和任何其他类型。如果您正在驱动三相电机,则中心对中的FWIW可提供最佳EMC结果。

我怀疑您应该研究并阅读数据表以了解如何输出PWM。如果您要成为一名半职业工程师,那么需要才能理解这一点。用勺子喂食代码来做这件事无济于事。

答案 1 :(得分:0)

我认为我可以生成PWM的方法是设置参考值OCR1A = rand(0,255); (使用随机函数)因此,每次循环运行时,它将改变我的参考值,并通过将TCNT0的值从0增加到255然后再返回到0来将其与三角波或斜波进行比较,否则将其从255再次减小到0为了产生三角波。所以这样我可以获得不同占空比的波形,这就是我想要的PWM。

任何建议都将受到赞赏