我之前打算用來驅動無刷電機的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