如何優(yōu)雅的將PWM轉換成DAC?
一、前言
本文引用地址:http://www.biyoush.com/article/202501/466095.htm很多單片機都不具備DAC輸出,但會有多路PWM輸出,下面測試利用PCA芯片,GP8500,將PWM信號轉換成模擬電壓信號。測試一下這個方案,以備之后應用積累經(jīng)驗。
二、電路設計
設計基于STC32G單片機的測試電路。選擇 PWMB中的第四個通道,也就是PWM8 的信號發(fā)送給 GP8500,由它將 PWM信號轉換成模擬電壓。鋪設單面PCB,適合一分鐘制板方法制作測試電路板。
一分鐘之后得到測試電路板,焊接清洗之后 進行測試?,F(xiàn)在電路板工作電源為 5V。
三、測試結果
下載STC32G程序的時候,?選擇內部時鐘為35MHz,?基于此,在PWM初始化的時候,設置時鐘為單片機內部時鐘7分頻,周期為1000。這樣,輸出PWM信號為5kHz,現(xiàn)在設置的占空比為四分之一。
▲ 圖1.3.1 頻率5kHz,占空比為四分之一的PWM波形
此時,測量GP8500模擬電壓輸出,會發(fā)現(xiàn),它上面出現(xiàn)了高頻寄生震蕩波形。平均電壓為 1.25V,符合在占空比為四分之一情況下對應5V的四分之一的電壓。為什么 會出現(xiàn)這個高頻震蕩呢。想起了在焊接電路的時候,GP8500輸出端口的濾波電容,我想當然的使用了手邊的 0.1微法的電容進行濾波。但是,在GP8500器件手冊中,要求 GP8500輸出端口的濾波電容只能在 0 到 100pf之間。是否就是因為這個原因造成了 GP8500輸出震蕩呢?? 為了證實這個怨言,將這個電容去掉,在電路板上不焊接任何電容。重新測量,可以看到,GP8500輸出信號中就不再出現(xiàn)高頻震蕩了。
▲ 圖1.3.2 輸出電壓波形中帶有高頻震蕩
▲ 圖1.3.3 去掉GP8500輸出濾波電容之后,輸出電壓不再震蕩了
下面,每隔一毫秒,更新一次PWM輸出占空比,讓占空比按照正弦規(guī)律進行變化,此時可以看到PCA輸出了正弦波信號。中間的斷續(xù)顯然應該是因為更新的時間間隔比較大。不過,其中還包含有令人不安的波形。比如這里出現(xiàn)了非常細小的毛刺波形。這種毛刺出現(xiàn),好像也不是隨機的。感覺應該是在特殊的輸出數(shù)值中出現(xiàn)的。具體是什么原因,現(xiàn)在一時毫無頭緒。
▲ 圖1.3.4 輸出正弦波的PWM信號
示波器單次捕捉這個毛刺,放大之后,可以看到,這是 STC32G單片機輸出PWM信號出現(xiàn)了抖動。于是乎就破壞了前后兩次的PCA 轉換結果。所以,這個毛刺的問題,應該有 STC32G單片機來背這個鍋。這是另外一次捕捉的毛刺結果,是同樣的問題。那么問題來了,為何STC32G單片機在輸出PWM波形的時候,會出現(xiàn)這種抖動呢?
※ 總結 ※
本文測試了利用STC32G的PWM輸出,通過GP8500產(chǎn)生模擬信號的功能。在測試過程中,發(fā)現(xiàn),GP8500模擬信號輸出端口不能夠并聯(lián) 0.1微法的電容,否則就會出現(xiàn)高頻震蕩。輸出端口可以不焊接任何電容。另外一個意外,那就是STC32G單片機輸出PWM波形中,會出現(xiàn)抖動。這究竟是什么原因,現(xiàn)在還不得而知。
參考資料
[1]如何將GP8101 的工作電壓改為5V?: https://zhuoqing.blog.csdn.net/article/details/136605372
[2]GP8500 PAC 芯片的特性: https://zhuoqing.blog.csdn.net/article/details/136774706
[3]測量GP8500的動態(tài)特性: https://zhuoqing.blog.csdn.net/article/details/137201737
[4]重新測試 GP8500 芯片: https://zhuoqing.blog.csdn.net/article/details/137200037
評論