前言
又到了電路小課堂的時間,也是最近項目遇到的需求,想著正好做個電路記錄總結。
當然本文的電路以前我也不是全部用過,但是既然寫了,那么我肯定給他畫個實際的板子,每個都測試一遍。
本次的電路小課堂主要內容就是:使用單片機如何實現 0 ~ 10V 的信號輸出。
更新說明:文中電路我已經全部測試過了,都是可行的。
我是矜辰所致,全網同名,盡量用心寫好每一系列文章,不浮夸,不將就,認真對待學知識的我們,矜辰所致,金石為開!
第一種方式,利用單片機自帶的DAC模塊,現在很多的單片機都自帶了 DAC 模塊,我們可以直接使用 DAC 模塊的輸出進行實現。
比如我們最常見的單片機供電系統為:0 ~ 3.3V。那么我們就可以將 0 ~ 3.3 V 放大 3倍,實現 0~ 10V 的輸出。
放大電路當然是使用運放實現,在我的文章里面有總結過運放的常用電路,這個后面有機會分析給發燒友的小伙伴。
這里我們用到的是同相比例運放電路,如下圖:
DAC1 為單片機的 DAC 輸出,0 ~ 3.3V ,放大 3 倍。
R2 選擇 3.3K 還是因為運放的對稱性,選擇與 R4 和 R3 并聯電阻相等的阻值。
本文是電路總結記錄,至于電路的效果,我需要看一看是否需要后續補充到文中,因為除了專用芯片,這種用 單電源供電的 普通運放 搭建的電路多少會存在一些問題,最典型的一個問題就是能否輸出 0 V。
更新測試效果,第一種使用 DAC 直接放大3倍,感覺直接看起來還是挺滿意的,直接上測試圖:
上面我通過自己手動設置 DAC 的值,輸出的不同狀態效果。
二、PWM 加濾波電路
第二種方式,使用 PWM 加濾波電路。
2.1 PWM 輸出 DAC
如何讓 PWM 波形變成模擬量輸出,那就是加上濾波電路,經過一個濾波電路,可以使得PWM變成DAC輸出。如下圖:
對于具體的 濾波器的基礎分析,我應該會單獨寫一篇文章來說明,這里我們只是提一下,知道使用 RC 濾波器可以使得 PWM 輸出變成模擬電壓。
上圖只使用一個 RC 的濾波電路稱為一階濾波電路。
為了使得輸出更加平滑,我們會使用二階甚至多階濾波電路。
為了使得帶載能力更強,我們會使用后面接電壓跟隨器等運放電路。
2.2 PWM 接濾波器的RC值選擇說明
對于 RC 濾波器的 RC值選擇,是新手難以理解處理的一個點,這也是濾波器設計的重點之一。
我們都知道,RC低通濾波電路的截止頻率:
fc=1/2πRC
這個公式非常重要,了解 RC 濾波器必須牢記的公式,截止頻率公式。
截止頻率實際上是輸入信號幅度降低 3dB 的頻率。截止頻率也稱為 -3 dB頻率
簡單幾點說明(當然,如果要具體算式分析,可自行網上搜索,博主還沒有寫過 RC 濾波器的文章 = =!):
R 越小,輸出損耗越大
R 越大,噪聲紋波越大
C 越小(比如到達 pf 級別后),越容易被寄生電容影響
C 越大(比如比較大的 uf 級別后),因為電容越大,普通情況下就只能使用電解電容,但是電解電容的高頻特性很差,在 RC 濾波器中盡量不要使用電解電容。
說來說去,這不是這也不行那也不行?= =!實際上就是這樣,這種低成本的電路沒有完美的,我們總做的就是一個權衡,在有限的成本規定范圍內,設計出一個滿足需要的電路。
對于本文我們的 ?PWM 而言,其本質上是一種高頻脈沖信號,其中的高頻分量會被低通濾波器濾掉,只有低頻分量才能通過濾波器,形成模擬信號輸出。我們要保證 PWM 的頻率 遠大于 RC 低通濾波器的截止頻率,至少在 10 倍以上甚至數十倍,因為越往上的頻率信號,濾波的效果越來越好。
很遺憾在給 PWM 信號做濾波的時候并沒有一個完美的固定值范圍告訴大家,一般來說 ,保持電阻在 K 級別,數百歐姆到 K級別都可以,然后電容 nf 級別,nf 到 1uf,當然這只是普通情況,還是具體情況具體分析。
涉及到的細節需要經過很多的分析,但是大家放心,在一般使用中,即便你不知道如何選擇,根據網上你能找到的參考 “經驗值” ,你也可以完成電路的設計。
重要的是在你按照經驗值設計完電路發現問題了以后知道如何去查找問題,如何去調整參數,這是硬件設計的關鍵所在。
2.3 0~ 3.3V PWM 輸出 ?0 ~10V
方案一:RC 濾波器
上面簡單的說明了一下,那么上一下我們本次測試的電路:
圖中的阻容大家可以根據自己的需求修改。
測試:
在上文我們說過,我們可以算出 RC低通濾波器的截止頻率,我們要保證 PWM 的頻率 遠大于 RC 低通濾波器的截止頻率。
如果 PWM 的頻率比較低會怎樣,比如,我 PWM 周期為 1HZ,然后占空比設置為50% ,直接給大家看一個圖:
進一步的修改一下,把 PWM 的頻率稍微修改一下,對于我測試的其實也就是 定時器的頻率,如下:
根據公式:
Tout = ((arr+1)*(psc+1))/Tclk ; ? // 32MHz 主頻
定時器周期為 1 ms, 其實也就表示頻率為 1KHz,為了方便表示占空比 0~ 100 對應,上面的 arr 改成了100, 實際上也是 1KHz 左右,再來看看效果:
實際上我測試的時候沒有特意的去調整阻容的值,就直觀上看起來效果還是可以的(上圖的毛刺多是因為示波器 GND 的線夾得太遠了)。
方案二:三極管
三極管的方案是參考 B 站 Eric文老師 視頻中的電路,因為某些原因,不放鏈接,大家可以自行搜索,這里也當做借鑒分享給大家!
有一個問題,偏置電壓老師講的圖上好像是 11V ,這個并不好滿足,我使用一個 12 V 串聯一個 二極管測試一下:
因為上圖為借鑒,僅供參考!
如果要保證輸出不超過 10V ,那么偏置電壓最好也選擇 10V ,去掉上面的 D3 比較合適,因為這樣最高接近 12V 輸出了。
三、專用轉換芯片
前面的兩種方式成本相對都比較低,和電平轉換電路一樣,0 ~10V 輸出也有專門的轉換芯片。
但實際上我沒用過,但是既然都要測試了,那也不能落下,那么一下子也不知道什么芯片好,只能去網上搜索(雖然按我的理解是度娘搜索的芯片只能說廣告做得多,并不見得好),但是也沒有其他辦法,于是乎經過一通搜索, 那就是這款芯片了:GP8101 。
看了一下介紹,這個芯片有一個系列,不僅有 PWM 輸入的,還有 I2C 結口的:
這里就不貼太多說明了,大家自行可以搜索,本文也就把他當做一種方案,我們直接根據推薦電路設計電路圖即可:
測試其實和上面一樣,設置不同的占空比,看示波器,結果還是很好的。
結語
本文列出了使用單片機如何實現 0 ~ 10V 輸出電路的不同方案。
要說最穩定省心的,肯定是使用專用芯片,如果確實對成本敏感,那就得結合實際需求考慮了。對于使用 帶 DAC 芯片的小伙伴來說,我感覺 DAC 直接加個運放的電路也是很穩定可靠的。
審核編輯:黃飛
評論
查看更多