有一個專案,需要用到幾十路PWM,每路頻率100-4000Hz實時變動可調。打算畫一個16路PWM輸出的板子。
手里有microchip的16系列單片機,最大只支持32M晶振,指令周期0.125us,最多只支持3路不同頻率的硬體PWM。想用定時中斷軟體模擬實作,但算了一下,PWM頻率太高,模擬不出來。
網上查了一些外掛的PWM發生器,NXP的PCA9685支持16路硬體PWM,但每一路的頻率都是一樣的,每通道頻率不能獨立設定,而且頻率也達不到4000Hz。
有什么好的解決方案或芯片推薦嗎 ?謝謝!
uj5u.com熱心網友回復:
LZ做PWM輸出,一般改變脈寬就好,改變PWM的頻率是什么原因?uj5u.com熱心網友回復:
實際上在同一時鐘下編程 PWM 不同的高低電平寬度就能改變PWM的頻率。PWM時鐘頻率越高,PWM可編程的顆粒度越細,精度越高。uj5u.com熱心網友回復:
驅動電機用的,電機有PWM介面,通過調頻變速,不調占空比。
uj5u.com熱心網友回復:
頻率0-4000Hz可調,做成100級變化,每級就是40Hz。
第100級,頻率F=4000Hz,周期T=250us。第99級,頻率F=3960Hz,周期T=252.5us
兩級之間相差時間:T99-T100=2.5us,也就是說我要做2.5us的定時中斷,才能實作100級變化。
中斷程式里還要放幾十行代碼,包括16路PWM計數,比較,賦值,引腳高低電平配置代碼等等。
單片機配32M晶振,指令周期是0.125us,2.5us的定時中斷,相當于20條指令周期。中斷里還有幾十條代碼,單片機根本處理不過來。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/250827.html
標籤:硬件設計
下一篇:esp-01
