我之前打算用来驱动无刷电机的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个通道,淘宝收的。
这是极简的测试电路
这是看测试结果的示波器软件