实验1:arduino pwm的简单调用

我之前打算用来驱动无刷电机的PCA9685这块芯片的PMW输出频率很低,最高只有1500Hz左右,而且通讯接口是I2c,要想生成一个自己想要的pwm波形,没有几十条语句下不来的。然后也没有找到其他能够替代PCA9685的类似的IC,所以入手了Arduino mega2560(就是冲着它的多路高速pwm输出来的),高达31.25KHz的频率,驱动电机可以避免人耳可闻的噪音(当然如果你要尝试用电机演奏音乐,这个频率太高了),而且编程调用也很简单,唯一麻烦的就是搞清楚哪些针脚对应哪个计时器控制寄存器,哪个计时器支持哪种频率。这里我参考了这个文章,地址:http://blog.csdn.net/EAIBOT/article/details/51499453


程序代码:

void setup() {

TCCR4B = (TCCR4B & 0xF8)|0x01;

pinMode(6,OUTPUT);

pinMode(7,OUTPUT);

pinMode(8,OUTPUT);

}

void loop() {

analogWrite(6,100);

analogWrite(7,150);

analogWrite(8,200);

}


setup()里对timer4进行了设置,设置频率为31.25KHz,timer4有三个输出针脚,分别是6、7、8。loop()里面的100,150,200是用来设置占空比的,100%对应255,大家可以看看波形图分析一下对应我图中测试的是哪个针脚。


下面是各种图:

这是用来测量波形的示波器,usb接口的,配合电脑上的软件就是个电子示波器,2个通道,淘宝收的。

图片发自App

这是极简的测试电路

图片发自App

这是看测试结果的示波器软件

图片发自App

你可能感兴趣的:(实验1:arduino pwm的简单调用)